Skip to content

Instantly share code, notes, and snippets.

@jajmo

jajmo/fts_cmp.c Secret

Created September 29, 2017 16:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jajmo/5e4e7827fd5b52549132a6a6364c4e53 to your computer and use it in GitHub Desktop.
Save jajmo/5e4e7827fd5b52549132a6a6364c4e53 to your computer and use it in GitHub Desktop.
int fts_cmp(const FTSENT **first, const FTSENT **second)
{
struct stat *s1;
struct stat *s2;
s1 = (*first)->fts_statp;
s2 = (*second)->fts_statp;
if (flag_r == FALSE)
{
if (flag_c == TRUE)
{
if (s1->st_ctim.tv_sec != s2->st_ctim.tv_sec)
return s1->st_ctim.tv_sec < s2->st_ctim.tv_sec;
else if (s1->st_ctim.tv_nsec != s2->st_ctim.tv_nsec)
return s1->st_ctim.tv_nsec < s2->st_ctim.tv_nsec;
}
else if (flag_t == TRUE)
{
if (s1->st_mtim.tv_sec != s2->st_mtim.tv_sec)
return s1->st_mtim.tv_sec < s2->st_mtim.tv_sec;
else if (s1->st_mtim.tv_nsec != s2->st_mtim.tv_nsec)
return s1->st_mtim.tv_nsec < s2->st_mtim.tv_nsec;
}
else if (flag_u == TRUE)
{
if (s1->st_atim.tv_sec != s2->st_atim.tv_sec)
return s1->st_atim.tv_sec < s2->st_atim.tv_sec;
else if (s1->st_atim.tv_nsec != s2->st_atim.tv_nsec)
return s1->st_atim.tv_nsec < s2->st_atim.tv_nsec;
}
else if (flag_S == TRUE)
return s1->st_size < s2->st_size;
return strcmp((*first)->fts_name, (*second)->fts_name);
}
else
{
if (flag_c == TRUE)
{
if (s1->st_ctim.tv_sec != s2->st_ctim.tv_sec)
return s1->st_ctim.tv_sec > s2->st_ctim.tv_sec;
else if (s1->st_ctim.tv_nsec != s2->st_ctim.tv_nsec)
return s1->st_ctim.tv_nsec > s2->st_ctim.tv_nsec;
}
else if (flag_t == TRUE)
{
if (s1->st_mtim.tv_sec != s2->st_mtim.tv_sec)
return s1->st_mtim.tv_sec > s2->st_mtim.tv_sec;
else if (s1->st_mtim.tv_nsec != s2->st_mtim.tv_nsec)
return s1->st_mtim.tv_nsec > s2->st_mtim.tv_nsec;
}
else if (flag_u == TRUE)
{
if (s1->st_atim.tv_sec != s2->st_atim.tv_sec)
return s1->st_atim.tv_sec > s2->st_atim.tv_sec;
else if (s1->st_atim.tv_nsec != s2->st_atim.tv_nsec)
return s1->st_atim.tv_nsec > s2->st_atim.tv_nsec;
}
else if (flag_S == TRUE)
return s1->st_size > s2->st_size;
return strcmp((*second)->fts_name, (*first)->fts_name);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment