Deleted Added
full compact
strptime.c (71579) strptime.c (72168)
1/*
2 * Powerdog Industries kindly requests feedback from anyone modifying
3 * this function:
4 *
5 * Date: Thu, 05 Jun 1997 23:17:17 -0400
6 * From: Kevin Ruddy <kevin.ruddy@powerdog.com>
7 * To: James FitzGibbon <james@nexis.net>
8 * Subject: Re: Use of your strptime(3) code (fwd)

--- 39 unchanged lines hidden (view full) ---

48 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
49 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
50 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
51 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
52 */
53
54#ifdef LIBC_RCS
55static const char rcsid[] =
1/*
2 * Powerdog Industries kindly requests feedback from anyone modifying
3 * this function:
4 *
5 * Date: Thu, 05 Jun 1997 23:17:17 -0400
6 * From: Kevin Ruddy <kevin.ruddy@powerdog.com>
7 * To: James FitzGibbon <james@nexis.net>
8 * Subject: Re: Use of your strptime(3) code (fwd)

--- 39 unchanged lines hidden (view full) ---

48 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
49 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
50 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
51 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
52 */
53
54#ifdef LIBC_RCS
55static const char rcsid[] =
56 "$FreeBSD: head/lib/libc/stdtime/strptime.c 71579 2001-01-24 13:01:12Z deischen $";
56 "$FreeBSD: head/lib/libc/stdtime/strptime.c 72168 2001-02-08 17:08:13Z phantom $";
57#endif
58
59#ifndef lint
60#ifndef NOID
61static char copyright[] =
62"@(#) Copyright (c) 1994 Powerdog Industries. All rights reserved.";
63static char sccsid[] = "@(#)strptime.c 0.1 (Powerdog) 94/03/27";
64#endif /* !defined NOID */

--- 18 unchanged lines hidden (view full) ---

83static char *
84_strptime(const char *buf, const char *fmt, struct tm *tm)
85{
86 char c;
87 const char *ptr;
88 int i,
89 len;
90 int Ealternative, Oalternative;
57#endif
58
59#ifndef lint
60#ifndef NOID
61static char copyright[] =
62"@(#) Copyright (c) 1994 Powerdog Industries. All rights reserved.";
63static char sccsid[] = "@(#)strptime.c 0.1 (Powerdog) 94/03/27";
64#endif /* !defined NOID */

--- 18 unchanged lines hidden (view full) ---

83static char *
84_strptime(const char *buf, const char *fmt, struct tm *tm)
85{
86 char c;
87 const char *ptr;
88 int i,
89 len;
90 int Ealternative, Oalternative;
91 struct lc_time_T *tptr = __get_current_time_locale();
91
92 ptr = fmt;
93 while (*ptr != 0) {
94 if (*buf == 0)
95 break;
96
97 c = *ptr++;
98

--- 13 unchanged lines hidden (view full) ---

112 switch (c) {
113 case 0:
114 case '%':
115 if (*buf++ != '%')
116 return 0;
117 break;
118
119 case '+':
92
93 ptr = fmt;
94 while (*ptr != 0) {
95 if (*buf == 0)
96 break;
97
98 c = *ptr++;
99

--- 13 unchanged lines hidden (view full) ---

113 switch (c) {
114 case 0:
115 case '%':
116 if (*buf++ != '%')
117 return 0;
118 break;
119
120 case '+':
120 buf = _strptime(buf, Locale->date_fmt, tm);
121 buf = _strptime(buf, tptr->date_fmt, tm);
121 if (buf == 0)
122 return 0;
123 break;
124
125 case 'C':
126 if (!isdigit((unsigned char)*buf))
127 return 0;
128

--- 34 unchanged lines hidden (view full) ---

163 break;
164 Oalternative++;
165 goto label;
166
167 case 'F':
168 case 'f':
169 if (!Ealternative)
170 break;
122 if (buf == 0)
123 return 0;
124 break;
125
126 case 'C':
127 if (!isdigit((unsigned char)*buf))
128 return 0;
129

--- 34 unchanged lines hidden (view full) ---

164 break;
165 Oalternative++;
166 goto label;
167
168 case 'F':
169 case 'f':
170 if (!Ealternative)
171 break;
171 buf = _strptime(buf, (c == 'f') ? Locale->Ef_fmt : Locale->EF_fmt, tm);
172 buf = _strptime(buf, (c == 'f') ? tptr->Ef_fmt : tptr->EF_fmt, tm);
172 if (buf == 0)
173 return 0;
174 break;
175
176 case 'R':
177 buf = _strptime(buf, "%H:%M", tm);
178 if (buf == 0)
179 return 0;

--- 7 unchanged lines hidden (view full) ---

187
188 case 'T':
189 buf = _strptime(buf, "%H:%M:%S", tm);
190 if (buf == 0)
191 return 0;
192 break;
193
194 case 'X':
173 if (buf == 0)
174 return 0;
175 break;
176
177 case 'R':
178 buf = _strptime(buf, "%H:%M", tm);
179 if (buf == 0)
180 return 0;

--- 7 unchanged lines hidden (view full) ---

188
189 case 'T':
190 buf = _strptime(buf, "%H:%M:%S", tm);
191 if (buf == 0)
192 return 0;
193 break;
194
195 case 'X':
195 buf = _strptime(buf, Locale->X_fmt, tm);
196 buf = _strptime(buf, tptr->X_fmt, tm);
196 if (buf == 0)
197 return 0;
198 break;
199
200 case 'x':
197 if (buf == 0)
198 return 0;
199 break;
200
201 case 'x':
201 buf = _strptime(buf, Locale->x_fmt, tm);
202 buf = _strptime(buf, tptr->x_fmt, tm);
202 if (buf == 0)
203 return 0;
204 break;
205
206 case 'j':
207 if (!isdigit((unsigned char)*buf))
208 return 0;
209

--- 73 unchanged lines hidden (view full) ---

283 ptr++;
284 break;
285
286 case 'p':
287 /*
288 * XXX This is bogus if parsed before hour-related
289 * specifiers.
290 */
203 if (buf == 0)
204 return 0;
205 break;
206
207 case 'j':
208 if (!isdigit((unsigned char)*buf))
209 return 0;
210

--- 73 unchanged lines hidden (view full) ---

284 ptr++;
285 break;
286
287 case 'p':
288 /*
289 * XXX This is bogus if parsed before hour-related
290 * specifiers.
291 */
291 len = strlen(Locale->am);
292 if (strncasecmp(buf, Locale->am, len) == 0) {
292 len = strlen(tptr->am);
293 if (strncasecmp(buf, tptr->am, len) == 0) {
293 if (tm->tm_hour > 12)
294 return 0;
295 if (tm->tm_hour == 12)
296 tm->tm_hour = 0;
297 buf += len;
298 break;
299 }
300
294 if (tm->tm_hour > 12)
295 return 0;
296 if (tm->tm_hour == 12)
297 tm->tm_hour = 0;
298 buf += len;
299 break;
300 }
301
301 len = strlen(Locale->pm);
302 if (strncasecmp(buf, Locale->pm, len) == 0) {
302 len = strlen(tptr->pm);
303 if (strncasecmp(buf, tptr->pm, len) == 0) {
303 if (tm->tm_hour > 12)
304 return 0;
305 if (tm->tm_hour != 12)
306 tm->tm_hour += 12;
307 buf += len;
308 break;
309 }
310
311 return 0;
312
313 case 'A':
314 case 'a':
304 if (tm->tm_hour > 12)
305 return 0;
306 if (tm->tm_hour != 12)
307 tm->tm_hour += 12;
308 buf += len;
309 break;
310 }
311
312 return 0;
313
314 case 'A':
315 case 'a':
315 for (i = 0; i < asizeof(Locale->weekday); i++) {
316 for (i = 0; i < asizeof(tptr->weekday); i++) {
316 if (c == 'A') {
317 if (c == 'A') {
317 len = strlen(Locale->weekday[i]);
318 len = strlen(tptr->weekday[i]);
318 if (strncasecmp(buf,
319 if (strncasecmp(buf,
319 Locale->weekday[i],
320 tptr->weekday[i],
320 len) == 0)
321 break;
322 } else {
321 len) == 0)
322 break;
323 } else {
323 len = strlen(Locale->wday[i]);
324 len = strlen(tptr->wday[i]);
324 if (strncasecmp(buf,
325 if (strncasecmp(buf,
325 Locale->wday[i],
326 tptr->wday[i],
326 len) == 0)
327 break;
328 }
329 }
327 len) == 0)
328 break;
329 }
330 }
330 if (i == asizeof(Locale->weekday))
331 if (i == asizeof(tptr->weekday))
331 return 0;
332
333 tm->tm_wday = i;
334 buf += len;
335 break;
336
337 case 'U':
338 case 'W':

--- 62 unchanged lines hidden (view full) ---

401 if (*buf != 0 && isspace((unsigned char)*buf))
402 while (*ptr != 0 && !isspace((unsigned char)*ptr))
403 ptr++;
404 break;
405
406 case 'B':
407 case 'b':
408 case 'h':
332 return 0;
333
334 tm->tm_wday = i;
335 buf += len;
336 break;
337
338 case 'U':
339 case 'W':

--- 62 unchanged lines hidden (view full) ---

402 if (*buf != 0 && isspace((unsigned char)*buf))
403 while (*ptr != 0 && !isspace((unsigned char)*ptr))
404 ptr++;
405 break;
406
407 case 'B':
408 case 'b':
409 case 'h':
409 for (i = 0; i < asizeof(Locale->month); i++) {
410 for (i = 0; i < asizeof(tptr->month); i++) {
410 if (Oalternative) {
411 if (c == 'B') {
411 if (Oalternative) {
412 if (c == 'B') {
412 len = strlen(Locale->alt_month[i]);
413 len = strlen(tptr->alt_month[i]);
413 if (strncasecmp(buf,
414 if (strncasecmp(buf,
414 Locale->alt_month[i],
415 tptr->alt_month[i],
415 len) == 0)
416 break;
417 }
418 } else {
419 if (c == 'B') {
416 len) == 0)
417 break;
418 }
419 } else {
420 if (c == 'B') {
420 len = strlen(Locale->month[i]);
421 len = strlen(tptr->month[i]);
421 if (strncasecmp(buf,
422 if (strncasecmp(buf,
422 Locale->month[i],
423 tptr->month[i],
423 len) == 0)
424 break;
425 } else {
424 len) == 0)
425 break;
426 } else {
426 len = strlen(Locale->mon[i]);
427 len = strlen(tptr->mon[i]);
427 if (strncasecmp(buf,
428 if (strncasecmp(buf,
428 Locale->mon[i],
429 tptr->mon[i],
429 len) == 0)
430 break;
431 }
432 }
433 }
430 len) == 0)
431 break;
432 }
433 }
434 }
434 if (i == asizeof(Locale->month))
435 if (i == asizeof(tptr->month))
435 return 0;
436
437 tm->tm_mon = i;
438 buf += len;
439 break;
440
441 case 'm':
442 if (!isdigit((unsigned char)*buf))

--- 97 unchanged lines hidden ---
436 return 0;
437
438 tm->tm_mon = i;
439 buf += len;
440 break;
441
442 case 'm':
443 if (!isdigit((unsigned char)*buf))

--- 97 unchanged lines hidden ---