📄 do_ls1.c~
字号:
#include"globals.h"void do_ls1(const char *dir, const struct flg opt_flg){ int n,i,total; total=0; struct dirent **namelist; int maxlen; if(opt_flg.aflg==3) print_name1(dir,opt_flg); else { switch(opt_flg.oflg) { case 0: n=scandir(dir, &namelist, 0, alphasort);break; case 1: n=scandir(dir, &namelist, 0, ctimesort);break; case 2: n=scandir(dir, &namelist, 0, blocksort);break; case 3: n=scandir(dir, &namelist, 0, mtimesort);break; case 4: n=scandir(dir, &namelist, 0, atimesort);break; case 5: n=scandir(dir, &namelist, 0, revalpsort);break; } if(n<0) perror(dir); else { if(opt_flg.aflg==0) for(i=0; i<n; i++){ if(namelist[i]->d_name[0]!='.') //不显示'.', '..'和以'.'开头的文件 print_name1(namelist[i]->d_name, opt_flg); free(namelist[i]); } else if(opt_flg.aflg==1) { for(i=0;i<n;i++){ print_name1(namelist[i]->d_name, opt_flg); free(namelist[i]); } } else if(opt_flg.aflg==2) { for(i=0;i<n;i++){ if(strcmp(namelist[i]->d_name, ".")!=0&&strcmp(namelist[i]->d_name, "..")!=0) print_name1(namelist[i]->d_name, opt_flg); free(namelist[i]); } } printf("\n"); free(namelist); } } }void print_name1(const char *dir, const struct flg opt_flg){ struct stat info; static int n=1; int m=strlen(dir); int v=5; if(stat(dir,&info)==-1) fprintf(stderr, "Couldn't stat %s",dir); if(opt_flg.iflg==1){ printf("%8d ", info.st_ino); v=3; m+=9; } if(opt_flg.sflg==1){ int blocks; if(S_ISDIR(info.st_mode)) blocks=4; else blocks=getblocks((long)info.st_size); printf("%4d ",blocks); v=3; m+=5; } print_filename(dir, info.st_mode); if(n%v==0) printf("\n"); else { int i; for(i=0;i<80/v-m;i++) printf(" "); } n++;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -