Re: suggested addition to 'date'

From: Julian Elischer <julian_at_elischer.org>
Date: Sat, 02 Sep 2006 23:33:04 -0700
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