Index: cat.c =================================================================== RCS file: /usr/ncvs/src/bin/cat/cat.c,v retrieving revision 1.32 diff -u -r1.32 cat.c --- cat.c 10 Jan 2005 08:39:20 -0000 1.32 +++ cat.c 2 Sep 2006 03:08:58 -0000 @@ -67,6 +67,7 @@ int bflag, eflag, nflag, sflag, tflag, vflag; int rval; const char *filename; +const char *datefmt; static void usage(void); static void scanfiles(char *argv[], int cooked); @@ -84,7 +85,7 @@ setlocale(LC_CTYPE, ""); - while ((ch = getopt(argc, argv, "benstuv")) != -1) + while ((ch = getopt(argc, argv, "benp:stuv")) != -1) switch (ch) { case 'b': bflag = nflag = 1; /* -b implies -n */ @@ -95,6 +96,8 @@ case 'n': nflag = 1; break; + case 'p': + datefmt = optarg; case 's': sflag = 1; break; @@ -177,6 +180,8 @@ cook_cat(FILE *fp) { int ch, gobble, line, prev; + char datebuf[1024]; + time_t now; /* Reset EOF condition on stdin. */ if (fp == stdin && feof(stdin)) @@ -198,6 +203,14 @@ if (ferror(stdout)) break; } + if (datefmt != NULL) { + time(&now); + strftime(datebuf, sizeof(datebuf), datefmt, + localtime(&now)); + (void)fputs(datebuf, stdout); + if (ferror(stdout)) + break; + } } if (ch == '\n') { if (eflag && putchar('$') == EOF)