タグ

関連タグで絞り込む (2)

タグの絞り込みを解除

cとbsdに関するyheldのブックマーク (3)

  • FreeBSDのlsを読む fts(3)でlsを作ってみよう〜。 - ボクノス

    FreeBSDのlsで使われているfts(3)がやたら便利そうなので、試してみた。環境はFedora6です。 ls.c #include <stdio.h> #include <stdlib.h> #include <fts.h> int main (int argc, char *argv[]) { FTS *ftsp; FTSENT *p; static char dot[] = "."; static char *dotav[] = {dot, NULL}; if (argc == 1) argv = dotav; else argv++; /* 無理矢理 */ ftsp = fts_open(argv, 0, NULL); while((p = fts_read(ftsp)) != NULL) { printf("%s\n", p->fts_path); } fts_close(f

    FreeBSDのlsを読む fts(3)でlsを作ってみよう〜。 - ボクノス
  • FreeBSDのlsを読む -tオプションを追え!! - ボクノス

    ls -tで更新時刻順に並び替えることが出来る。 % ls -tと、昨日知ったので、ls -tでのソート処理を追ってみることにしました。 まずトップダウンで概要を探る。 mainから、vimの*(カーソル下の単語検索)でがが〜っとトップダウンしていく。まずは見るだけ。 cmp.cまで辿り着いた。 cmp.cはその名のとおり、比較関数の定義。mastercmp()から関数ポインタで呼ばれる。 まず、名前順で整列するnamecmpを見る。 int namecmp(const FTSENT *a, const FTSENT *b) { return (strcoll(a->fts_name, b->fts_name)); } strcollはで定義されてる。文字列の比較。Rubyで言うところの<=>演算子。 構造体FTSENTは、で定義されてる。manを参照すべし。 namecmpは、ファイル構

    FreeBSDのlsを読む -tオプションを追え!! - ボクノス
  • 1