C言語入門(40) 実際にプログラムを読んで理解を深めよう ls編(14)

Posted: 2013年05月16日

前回から、ソート関数の解説しています。
今回も他のソート関数を解説していきます。

cmp.c modcmp関数です。

プログラムプログラム:

int
modcmp(const FTSENT *a, const FTSENT *b)
{

    if (b->fts_statp->st_mtim.tv_sec >
        a->fts_statp->st_mtim.tv_sec)
        return (1);
    if (b->fts_statp->st_mtim.tv_sec <
        a->fts_statp->st_mtim.tv_sec)
        return (-1);
    if (b->fts_statp->st_mtim.tv_nsec >
        a->fts_statp->st_mtim.tv_nsec)
        return (1);
    if (b->fts_statp->st_mtim.tv_nsec <
        a->fts_statp->st_mtim.tv_nsec)
        return (-1);
    if (f_samesort)
        return (strcoll(b->fts_name, a->fts_name));
    else
    return (strcoll(a->fts_name, b->fts_name));
}

解説解説:

この関数は、変更日付順に比較する処理をしています。
同じ場合は、ファイル名で比較を行います。

構造体の定義は以下のようになっています。

    struct timespec st_atim;        /* Time of last access.  */
    struct timespec st_mtim;        /* Time of last modification.  */
    struct timespec st_ctim;        /* Time of last status change.  */
カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

コメント