#include<stdio.h>
#include<time.h>
#include<sys/types.h>
#include<dirent.h>
#include<sys/stat.h>
#include<stdlib.h>
#include<.h>
 do_ls([]);
 dostat( *);
 show_file_info( *, stat *);
 mode_to_letters(,[]);
 * uid_to_name(uid_t);
 * gid_to_name(gid_t);

 main( argc, *argv[]){
    (argc==)
        do_ls();
    
        printf();
}

 do_ls( dirname[]){
    DIR *dir_ptr;        dirent *direntp;         ((dir_ptr=opendir(dirname))==)
        fprintf(stderr,,dirname);
    {
        ((direntp=readdir(dir_ptr))!=)
            dostat(direntp->d_name);
        closedir(dir_ptr);
    }
}

 dostat( *filename){
     stat info;
    (lstat(filename,&info)==-)
        perror();
    
        show_file_info(filename,&info);
}

 show_file_info( *filename, stat *info_p){
     modestr[];
    mode_to_letters(info_p->st_mode,modestr);
    printf(,modestr);
    printf(,()info_p->st_nlink);
    printf(,uid_to_name(info_p->st_uid));
    printf(,gid_to_name(info_p->st_gid));
    printf(,()info_p->st_size);
    time_t timelong=info_p->st_mtime;
     tm *htime=localtime(&timelong);
    printf(,htime->tm_year+,htime->tm_mon+,htime->tm_mday,htime->tm_hour,htime->tm_min);
    printf(,filename);
}


 mode_to_letters( mode, str[]){
    strcpy(str,);
    (S_ISDIR(mode))   str[]=;
    (S_ISCHR(mode))   str[]=;
    (S_ISBLK(mode))   str[]=;

    (mode & S_IRUSR)  str[]=;
    (mode & S_IWUSR)  str[]=;
    (mode & S_IXUSR)  str[]=;

    (mode & S_IRGRP)  str[]=;
    (mode & S_IWGRP)  str[]=;
    (mode & S_IXGRP)  str[]=;

    (mode & S_IROTH)  str[]=;
    (mode & S_IWOTH)  str[]=;
    (mode & S_IXOTH)  str[]=;
}

#include<pwd.h>      * uid_to_name(uid_t uid){
     passwd *pw_str;
      numstr[];
    ((pw_str=getpwuid(uid))==NULL){
        sprintf(numstr,,uid);                numstr;
    }
    
         pw_str->pw_name;
}

#include<grp.h>
 * gid_to_name(gid_t gid){
     group *grp_ptr;
      numstr[];
    ((grp_ptr=getgrgid(gid))==NULL){
        sprintf(numstr,,gid);
         numstr;
    }
    
         grp_ptr->gr_name;
}

自定义mac的ll命令-LMLPHP

05-10 06:05