Kyle James Longrich

Recent Project Showcase

ls - unix command

Supported Flags: -R -t -u -l -f -d -G -r -a

  • -R : Recursive function for reading all files and repos within the repo passed
  • -t : Sort files by time last modified using st_mtime , st_mtimespec.tv_nsec , or by lexicographic order
  • -u : Sort files by time last accessed using st_atime , st_atimespec.tv_nsec , or by lexicographic order
  • -l : Long Format prints out metadata consisting of Type , Permissions , Number Of Links, User Owner , Group Owner , File Size , Time Last Modified.
    • Type of file uses: with a stat struct's st_mode as the parameter.
      • S_ISDIR() - Directory
      • S_ISSOCK() - Socket File
      • S_ISFIFO() - FIFO pipe file
      • S_ISCHR() - character special device.
      • S_ISBLK() - Block Devcies
      • S_ISREG() - Regular Files
      • S_ISLNK() - Symbolic Link
    • Permissions: Bitwise check using st_mode and macro value (st_mode & S_IRUSR)
      • S_IRUSR - User Read : 0400
      • S_IWUSR - User Write : 0200
      • S_ISUID - User Set-ID : 04000
      • S_IXUSR - User Execute: 0100
      • S_IRGRP - Group Read: 040
      • S_IWGRP - Group Write: 020
      • S_ISGID - Group Set-ID: 02000
      • S_IXGRP - Group Execute: 010
      • S_IROTH - Other Read: 04
      • S_IWOTH - Other Write: 02
      • S_ISVTX - Sticky Bit: 01000
      • S_IXOTH - Other Excecute: 01
    • Number of Links: Uses the st_nlink value from the stat struct
    • User Owner: Uses getpwuid() with the stat structs value of st_uid for the parameter
    • Group Owner: Uses getgrgid() with the stat structs value of st_gid for the parameter
    • File Size
      • Normal File: Uses the st_size value from the stat struct
      • Character Special Devices or Block Devices: Use makedev() function with major() and minor() return values as a parameters st_rdev value is passed as a paramter for major() and minor() functions used.
        • Example: size = makedev(major(statstruct.st_rdev), minor(statstruct.st_rdev))
    • Time Last Modified: uses the time(NULL) to get current time. Then uses ctime() with the stat structs st_mtime vlaue as a parameter.
      • Not modifed longer than 6 months: Month, Date, Year
      • Modifed within past 6 motnhs: Month, Day, Time
  • -f : Do not sort files. Overrides any sort passed.
  • -d : Print directories name, do not read files from it.
  • -G : Print color depending on file type. Uses ANSI Escape Codes to set color using write
    • Normal Files: No color
    • Directory: BLUE \033[34m
    • Excuctable: RED \033[31m
    • Symbolic Link: MAGENTA \033[35m
    • Socket File: GREEN \033[32m
    • FIFO pipe: YELLOW \033[33m
    • Character Device: BLUE YELLOW \033[34;43m
    • Block Device: BLUE CYAN \033[34;46m
    • Sticky Bit: BLACK GREEN \033[30;42m
    • Is User Set-ID & Excuctable: BLACK RED \033[30;41m
    • Is Group Set-ID & Excuctable: BLACK CYAN \033[30;46m
  • -r : Reverse sort
  • -a : List hidden files