typedef struct entry {
char *name;
time_t t;
+ uint_t t_nsec; /* Enough to hold nanosec */
off_t size;
blkcnt_t blocks; /* number of 512B blocks allocated */
mode_t mode;
return 1;
if (pb->t < pa->t)
return -1;
+ /* If sec matches, comare nsec */
+ if (pb->t_nsec > pa->t_nsec)
+ return 1;
+ if (pb->t_nsec < pa->t_nsec)
+ return -1;
} else if (cfg.sizeorder) {
if (pb->size > pa->size)
return 1;
off += dentp->nlen;
/* Copy other fields */
- dentp->t = ((cfg.timetype == T_MOD)
- ? sb.st_mtime
- : ((cfg.timetype == T_ACCESS) ? sb.st_atime : sb.st_ctime));
+ if (cfg.timetype == T_MOD) {
+ dentp->t = sb.st_mtime;
+#ifdef __APPLE__
+ dentp->t_nsec = (uint_t)sb.st_mtimespec.tv_nsec;
+#else
+ dentp->t_nsec = (uint_t)sb.st_mtim.tv_nsec;
+#endif
+ } else if (cfg.timetype == T_ACCESS) {
+ dentp->t = sb.st_atime;
+#ifdef __APPLE__
+ dentp->t_nsec = (uint_t)sb.st_atimespec.tv_nsec;
+#else
+ dentp->t_nsec = (uint_t)sb.st_atim.tv_nsec;
+#endif
+ } else {
+ dentp->t = sb.st_ctime;
+#ifdef __APPLE__
+ dentp->t_nsec = (uint_t)sb.st_ctimespec.tv_nsec;
+#else
+ dentp->t_nsec = (uint_t)sb.st_ctim.tv_nsec;
+#endif
+ }
+
#if !(defined(__sun) || defined(__HAIKU__))
if (!flags && dp->d_type == DT_LNK) {
/* Do not add sizes for links */