C言語でlsを実装してみた

C言語で何か書きたいと思って、lsコマンドの簡易版を実装してみました。

今回新しい試みとして一切ぐぐらずにやってみたら、意外とあっさりできました。
man 3 opendir
man 3 readdir
とmanを見るだけで必要な情報は得られました。

ソースコードはGithubにも置いておきますのでご自由にお使いください。
https://github.com/DQNEO/c-ls
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <string.h>

/**
 * 実行方法: gcc ls.c && ./a.out /tmp
 */
int main(int argc, char *argv[])
{
    DIR *dir;
    struct dirent *ent;
    char dirname[256];

    if (argc == 1) {
        strcpy(dirname, ".");
    } else {
        strcpy(dirname, argv[1]);
    }

    dir = opendir(dirname);
    if (dir == NULL) {
        fprintf(stderr, "unable to opendir %s\n", dirname);
        return 1;
    }

    while ((ent = readdir(dir)) != NULL) {
        if (ent->d_name[0] == '.') {
            continue;
        }

        printf("%s  ", ent->d_name);
    }
    printf("\n");

    closedir(dir);
    return 0;
}
エラー処理とかがちょと甘いかもしれません。
ご利用は自己責任でお願いします。
カテゴリ: