Date: Sat, 12 Aug 2006 07:15:35 +0300 From: Giorgos Keramidas <keramida@FreeBSD.org> To: Julian Elischer <julian@elischer.org> Cc: current@FreeBSD.org Subject: Re: suggested addition to 'date' Message-ID: <20060812041535.GA82669@gothmog.pc> In-Reply-To: <44DD50FF.5040406@elischer.org> References: <44DD4510.5070002@elischer.org> <20060812033607.GB80768@gothmog.pc> <44DD50FF.5040406@elischer.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 2006-08-11 20:54, Julian Elischer <julian@elischer.org> wrote: > Yes I said I hacked it in :-) > In my app you will never have such long lines.. > basically you need something that reads lines and tells you how much it > read.. > (I have no idea WHY fgets need sto return the START.. you already KNOW > that!) > it'd be nice if you didn't have to to a strlen() on each line. Perhaps the solution Sam proposed is much better then? To read one character at-a-time and only special-case the '\n' characters? Maybe something like this? if (sflag) { int ch; time_t otval = 0; while ((ch = getchar()) != EOF) { putchar(ch); if (ch != '\n') continue; if (rlfag == 0 && time(&tval) == -1) err(1, "time"); if (tval != otval) { lt = *localtime(&tval); badv = vary_apply(v, <); if (badv) { fprintf(stderr, "%s: Cannot apply date adjustment\n", badv->arg); vary_destroy(v); usage(); } (void)strftime(buf, sizeof(buf), format, <); otval = tval; } (void)printf("%s", buf); if (fflush(stdout)) err(1, "stdout"); } } ...
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20060812041535.GA82669>