# ls-imitation
C project that reimplements the functionality of the Unix `ls -l` command. The
program parses command-line arguments, retrieves file information, and formats
the output similar to GNU `ls`.
## Features
- Implements `ls -l` style output:
- File type and permissions
- Number of links
- Owner and group
- File size
- Modification time
- Filename
- Handles both files and directories from command-line arguments
- Prints directory headers and separators when multiple directories are listed
- Detects whether output is a terminal (`isatty`) and adjusts formatting
- Maintains a linked-list of file entries with conversion to arrays
- Supports sorting file entries by filename
- Column alignment for neat tabular output
- Edge cases handled (empty input, single file, multiple directories, etc.)
- Simple build system via `Makefile`
## Building
### On Linux
```bash
git clone https://git.scratko.xyz/ls-imitation
cd ls-imitation
make
./ls-imitation
```
## Usage
The program mimics the behavior of `ls -l`. Instead of calling `ls -l`, run:
```bash
./ls-imitation
```
### Examples
```bash
./ls-imitation
./ls-imitation file.txt
./ls-imitation dir1 dir2
./ls-imitation file1.txt dir/
```