資源簡介
個人寫的一個簡單的 ls命令,可能會有錯誤,希望有興趣的可以交流交流!!

代碼片段和文件信息
#include?“stdio.h“
#include?“unistd.h“
#include?“stdlib.h“
#include?“sys/types.h“
#include?“sys/stat.h“
#include?“fcntl.h“
#include?“pwd.h“
#include?“grp.h“
#include?“dirent.h“
#define?NAME_SIZE?100
typedef?struct?item
{
char?name[NAME_SIZE];
int?length;
struct?stat?st;
struct?item?*next;
}nNode;
#define?MARK_FILE(valueflags)?((flags)?=?(((value)&ALL_FILE)|(flags)))
#define?DEL_FILE(valueflags)??((flags)?=?((~(value))&(flags)))
#define?MARK_INFO(valueflags)?((flags)?=?(((value)&STAT_ALL_INFO)|(flags)))
#define?DEL_INFO(valueflags)??((flags)?=?((~(value))&(flags)))
#define?MARK(valueflags)??????((flags)?=?((value)|(flags)))
#define?DEL(valueflags)???????((flags)?=?((~(value))&(flags)))
#define?FILE_TYPE??0xf8000000
#define?OTH_FILE???0x80000000
#define?DIR_FILE???0x40000000
#define?REG_FILE???0x20000000
#define?BAK_FILE???0x10000000
#define?DOT_FILE???0x08000000
#define?ALL_FILE???0xf8000000
#define?STAT_ALL_INFO???0x07f00000
#define?STAT_GROUP??????0x04000000
#define?STAT_OWNER??????0x02000000
#define?STAT_NUMID??????0x01000000
#define?STAT_SIZE???????0x00800000???//0?present?bytes?1?present?k?or?m?
#define?STAT_INODE??????0x00400000
#define?STAT_TIME???????0x00200000
#define?STAT_PERMISSION?0x00100000
#define?STAT_COLOR??????0x00080000??????
#define?STAT_RECUR??????0x00040000
#define?STAT_HR?????????0x00020000
void?AddnNode(nNode?**headchar?*namestruct?stat?*st);
void?freeNode(nNode?*head?);
void?do_ls(char?*filenameint?flagsnNode?**head);
void?showitem(char?*name?struct?stat?*stint?flags);
void?showfile(nNode?*headint?flags);
void?quitsort(char?**arrayint?highint?low);
void?format_permission(struct?stat?*st)
{
int?mode?=?st->st_mode;
char?buf[12];
memset(buf‘-‘11);
buf[11]=0;
if(S_ISDIR(mode))??buf[0]?=?‘d‘;
else?if(S_ISCHR(mode))??buf[0]?=?‘c‘;
else?if(S_ISBLK(mode))??buf[0]?=?‘b‘;?
else?if(S_ISFIFO(mode))?buf[0]?=?‘p‘;
else?if(S_ISLNK(mode))??buf[0]?=?‘l‘;
else?if(S_ISSOCK(mode))?buf[0]?=?‘s‘;
?????
????if(S_IRUSR&mode)?buf[1]?=?‘r‘;
????if(S_IWUSR&mode)?buf[2]?=?‘w‘;
????if(S_IXUSR&mode)?buf[3]?=?‘x‘;
????if(S_IRGRP&mode)?buf[4]?=?‘r‘;
????if(S_IWGRP&mode)?buf[5]?=?‘w‘;
????if(S_IXGRP&mode)?buf[6]?=?‘x‘;
????if(S_IROTH&mode)?buf[7]?=?‘r‘;
????if(S_IWOTH&mode)?buf[8]?=?‘w‘;
if(S_IXOTH&mode)?buf[9]?=?‘x‘;
if(S_ISUID&mode)?buf[3]?=?‘s‘;
if(S_ISGID&mode)?buf[6]?=?‘s‘;
if(S_ISVTX&mode)?buf[10]?=?‘s‘;
printf(“%s??“buf);
}
void?format_group(struct?stat?*st)
{
int?id?=?st->st_uid;
struct?group?*buf?=?getgrgid(id);
if(buf)
{
printf(“%s??“buf->gr_name);
}else
{
printf(“%d??“id);
}
}
void?format_owner(struct?stat?*st)
{
int?id?=?st->st_gid;
struct?passwd?*buf_pw?=?getpwuid(id);
if(buf_pw)
{
printf(“%s?“buf_pw->pw_name);
}else
{
printf(“%d?“id);
}
}
void?format_time(struct?stat?*st)
{
char?*buf=?ctime(&(st->st_ctime));
buf?+=4;
buf[strlen(buf)-1]=0;
printf(“%s??“buf);
}
void?format_numid(struct?stat?*st)
{
printf(“%d?%d??“st->st_uidst->st_gid);
}
void?main(int?arg
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????292??2009-08-25?14:43??ls\add
?????文件????????574??2009-08-25?14:43??ls\add!
?????文件?????????49??2009-08-25?14:43??ls\hello
?????文件??????11967??2009-08-25?14:43??ls\ls
?????文件???????9900??2009-08-25?14:43??ls\ls.c
?????文件???????5896??2009-08-25?14:43??ls\ls.c.cpy
?????文件???????9900??2009-08-25?14:43??ls\ls.c~
?????文件???????5605??2009-08-25?14:43??ls\quitsort
?????文件????????934??2009-08-25?14:43??ls\quitsort.c
?????文件????????934??2009-08-25?14:43??ls\quitsort.c~
?????文件??????????1??2009-08-25?14:43??ls\quitsort~
?????文件????????659??2009-08-25?14:43??ls\strcmp.c
?????文件????????659??2009-08-25?14:43??ls\strcmp.c~
?????文件???????4931??2009-08-25?14:43??ls\test
?????文件???????1335??2009-08-25?14:43??ls\test.c
?????文件???????1302??2009-08-25?14:43??ls\test.c~
?????文件???????5126??2009-08-25?14:43??ls\testpp
?????文件????????276??2009-08-25?14:43??ls\testpp.c
?????文件????????278??2009-08-25?14:43??ls\testpp.c~
?????目錄??????????0??2009-09-23?13:46??ls
-----------?---------??----------?-----??----
????????????????60618????????????????????20
- 上一篇:員工績效管理系統最終版
- 下一篇:飛機票生成器
評論
共有 條評論