#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>

int main(int argc, char **argv) {
    char *path;
    DIR *dirp;
    struct dirent *dirent;

    if (argc < 2) {
        fprintf(stderr,
                "USAGE: %s directory\n", argv[0]);
        exit(EXIT_FAILURE);
    }

    path = argv[1];

    dirp = opendir(path);
    if (NULL == dirp) {
        perror("opendir");
        exit(EXIT_FAILURE);
    }

    errno = 0;
    while (dirent = readdir(dirp)) {
        printf("%s\n", dirent->d_name);
    }

    if (0 != errno) {
        perror("readdir");
        exit(EXIT_FAILURE);
    }

    if (-1 == closedir(dirp)) {
        perror("closedir");
        exit(EXIT_FAILURE);
    }

    return EXIT_SUCCESS;
}
