#include <stdarg.h>
#include <limits.h>
#include <assert.h>
+#include <stdlib.h>
-#include "md5.h"
+#include "nettle/md5-compat.h"
#define MAXFN 2048
#define MAXDEPTH 1024
#define CSUMXL 32
-static int quiet=0;
+static int quiet=0, hidectime=0, hideatime=0;
+static int hidedirsizelinkcount=0, hidelinkmtime=0;
+static int filenamefieldsep=' ';
static FILE *errfile;
static void fn_escaped(FILE *f, const char *fn) {
static void csum_file(const char *path) {
FILE *f;
- struct MD5Context mc;
+ MD5_CTX mc;
char db[65536];
unsigned char digest[16];
size_t r;
else linktarg[r]= 0;
}
- printf(" %10lu %4d %4o %10ld %10ld %10lu %10lu %10lu ",
- (unsigned long)stab->st_size,
- (int)stab->st_nlink,
+ if (S_ISDIR(stab->st_mode) && hidedirsizelinkcount)
+ printf(" %10s %4s","dir","dir");
+ else
+ printf(" %10lu %4d",
+ (unsigned long)stab->st_size,
+ (int)stab->st_nlink);
+
+ printf(" %4o %10ld %10ld",
(unsigned)stab->st_mode & 07777U,
(unsigned long)stab->st_uid,
- (unsigned long)stab->st_gid,
- (unsigned long)stab->st_atime,
- (unsigned long)stab->st_mtime,
- (unsigned long)stab->st_ctime);
+ (unsigned long)stab->st_gid);
+
+ if (!hideatime)
+ printf(" %10lu",
+ (unsigned long)stab->st_atime);
+
+ if (S_ISLNK(stab->st_mode) && hidelinkmtime)
+ printf(" %10s","link");
+ else
+ printf(" %10lu",
+ (unsigned long)stab->st_mtime);
+
+ if (!hidectime)
+ printf(" %10lu",
+ (unsigned long)stab->st_ctime);
+ putchar(filenamefieldsep);
fn_escaped(stdout, path);
if (S_ISLNK(stab->st_mode)) {
case 'q':
quiet= 1;
break;
+ case 't':
+ filenamefieldsep= '\t';
+ break;
+ case 'D':
+ hidedirsizelinkcount= 1;
+ break;
+ case 'b':
+ hidelinkmtime= 1;
+ break;
+ case 'C':
+ hidectime= 1;
+ break;
+ case 'A':
+ hideatime= 1;
+ break;
case 'f':
errfile= stdout;
break;