summaryrefslogtreecommitdiff
path: root/myfind/simple_ls/simple_ls.c
blob: 084072df7c399211682760040941e496ba6c743e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <dirent.h>
#include <stdio.h>

int main(int argc, char **argv)
{
    if (argc > 2)
        return 1;

    DIR *d;
    if (argc == 1)
    {
        d = opendir(".");
        if (!d)
        {
            fprintf(stderr, "simple_ls: .: No such file or directory\n");
            return 1;
        }
    }
    else
    {
        d = opendir(argv[1]);
        if (!d)
        {
            fprintf(stderr, "simple_ls: %s: No such file or directory\n",
                    argv[1]);
            return 1;
        }
    }

    struct dirent *dir;
    while ((dir = readdir(d)))
    {
        if (dir->d_name[0] != '.')
            printf("%s\n", dir->d_name);
    }

    if (closedir(d))
        return 1;

    return 0;
}