Peter Jeremy wrote: >On Sat, 2006-Sep-02 09:56:53 +1000, Lucas James wrote: > > >>On Saturday 02 September 2006 03:53, Garance A Drosehn wrote:> >> >> >>>mode. Not ever. Date is a command to set or display dates. >>>It is not a command to filter files. 'cat' would be a more >>> >>> >>appropriate place to add this option. >> >> > >I tend to agree. > > > >>or add an option to cat to prepend each line with an arbitrary string ala: >> >>cat -p `date` file >> >> > >Firstly, we already have this: > sed "s=^=$(date)=" file > >And secondly, this pre-pends a fixed string. What's wanted is a filter >to prepend a time/date stamp (which varies) to the input stream. > >The justification for extending date(1) is that it already has the code >to handle date/time stamps. In reality, this code is all in strftime(3) >and cat(1) already has hooks to insert a string at the beginning of a >line so I believe that the attached patch is more appropriate. (Man >page update on request). > > I look forward to this commit.. (I don't care where I get the capacity from as long as I can datestamp files) puting it in 'tee' is also an option.. timestamping the 'file' output. > > >------------------------------------------------------------------------ > >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 >_at__at_ -67,6 +67,7 _at__at_ > 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); >_at__at_ -84,7 +85,7 _at__at_ > > 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 */ >_at__at_ -95,6 +96,8 _at__at_ > case 'n': > nflag = 1; > break; >+ case 'p': >+ datefmt = optarg; > case 's': > sflag = 1; > break; >_at__at_ -177,6 +180,8 _at__at_ > 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)) >_at__at_ -198,6 +203,14 _at__at_ > 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) > >Received on Sun Sep 03 2006 - 04:33:07 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:59 UTC