for CoderToHelpU
Write a C program, myls.c, to list files in a given directory. myls takes one optional command line argument specifying the directory path (either absolute or relative path). If the argument is absent, files in current directory will be listed. Typical output should look like:
Case 1: directory argument absent |
Case 2: directory argument present |
$ myls myfile1 myfile2 myfile3 myls |
$ myls . myfile1 myfile2 myfile3 myls |
Remarks:
1. display file names in separate lines, one file each line.
2. exclude current directory entry (.) and parent directory entry (..)
3. error handling. Whenever a system call fails, exit program and display an error message by using perror.
l Bonus:
Extend myls.c to myll.c to display more detailed information about the files listed:
1. Modification time (2%). Hint: ctime() function covert time_t to string. consult time.h functions (Chapter 26.3 at Dr. King’s book).
2. File size (1%).
3. User name (1%). Hint: getpwuid()takes the uid variable in struct stat and return struct passwd which contains user name variable. Detail/example at: http://pubs.opengroup.org/onlinepubs/009695399/functions/getpwuid.html
http://pubs.opengroup.org/onlinepubs/000095399/basedefs/pwd.h.html
remember to include required header files to use these functions.
4. Group name (1%). Hint: getgrgid()takes the gid variable in struct stat and return struct group which contains group name variable. Detail/example at:
http://pubs.opengroup.org/onlinepubs/009695399/functions/getgrgid.html
http://pubs.opengroup.org/onlinepubs/009695399/basedefs/grp.h.html
For more details about the struct stat definition, http://linux.die.net/man/2/stat.
Typical output looks like:
$ myll .
myfile1 myname mygroup 32 Apr 3 01:12
myfile2 myname mygroup 408 Apr 5 11:01
myfile3 myname mygroup 12 Apr 3 23:10
myll myname mygroup 98 Apr 8 01:12