Date: Wed, 27 Jun 2001 16:16:27 -0700 From: Dima Dorfman <dima@unixfreak.org> To: Maxim Konovalov <maxim@macomnet.ru> Cc: freebsd-bugs@FreeBSD.org, thz@lennartz-electronic.de Subject: Re: strptime: %s formatting missing (patch) Message-ID: <20010627231627.55D363E2F@bazooka.unixfreak.org> In-Reply-To: <Pine.BSF.4.33.0106271807360.70033-100000@news1.macomnet.ru>; from maxim@macomnet.ru on "Wed, 27 Jun 2001 18:12:45 %2B0400 (MSD)"
next in thread | previous in thread | raw e-mail | index | archive | help
Maxim Konovalov <maxim@macomnet.ru> writes: > > Just another patch: Perhaps I'm missing something, but what's the [functional] difference between this and the patch in PR 27029? I don't like the "*buf - '0'" in this one; it doesn't look like it's locale-safe. strtol does the same thing, but at least it's abstracted out. The only thing I don't like about the latter is its use of memcpy, but that can be easily fixed with gmtime_r (note to original submitter: I'll make that change myself, don't bother sending another patch :-)). Dima Dorfman dima@unixfreak.org > --- strptime.c.orig Wed Jun 27 16:09:11 2001 > +++ strptime.c Wed Jun 27 17:08:12 2001 > @@ -86,6 +86,7 @@ > static char * > _strptime(const char *buf, const char *fmt, struct tm *tm) > { > + long l; > char c; > const char *ptr; > int i, > @@ -459,6 +460,16 @@ > if (*buf != 0 && isspace((unsigned char)*buf)) > while (*ptr != 0 && !isspace((unsigned char)*ptr)) > ptr++; > + break; > + > + case 's': > + for (l = 0; *buf != 0 && isdigit((unsigned char)*buf); buf++) { > + l *= 10; > + l += *buf - '0'; > + } > + > + (void)localtime_r(&l, tm); > + > break; > > case 'Y': > > -- > Maxim Konovalov, MAcomnet, Internet-Intranet Dept., system engineer > phone: +7 (095) 796-9079, mailto: maxim@macomnet.ru > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010627231627.55D363E2F>