Lines Matching +full:start +full:- +full:year

4  * This is a plain C recursive-descent translation of an old
5 * public-domain YACC grammar that has been used for parsing dates in
6 * very many open-source projects.
47 /* Daylight-savings mode: on, off, or not yet known. */
78 time_t Year; member
85 * seconds, month/year are counted in months. */
103 if (gds->tokenp[0].token == tUNUMBER in timephrase()
104 && gds->tokenp[1].token == ':' in timephrase()
105 && gds->tokenp[2].token == tUNUMBER in timephrase()
106 && gds->tokenp[3].token == ':' in timephrase()
107 && gds->tokenp[4].token == tUNUMBER) { in timephrase()
109 ++gds->HaveTime; in timephrase()
110 gds->Hour = gds->tokenp[0].value; in timephrase()
111 gds->Minutes = gds->tokenp[2].value; in timephrase()
112 gds->Seconds = gds->tokenp[4].value; in timephrase()
113 gds->tokenp += 5; in timephrase()
115 else if (gds->tokenp[0].token == tUNUMBER in timephrase()
116 && gds->tokenp[1].token == ':' in timephrase()
117 && gds->tokenp[2].token == tUNUMBER) { in timephrase()
119 ++gds->HaveTime; in timephrase()
120 gds->Hour = gds->tokenp[0].value; in timephrase()
121 gds->Minutes = gds->tokenp[2].value; in timephrase()
122 gds->Seconds = 0; in timephrase()
123 gds->tokenp += 3; in timephrase()
125 else if (gds->tokenp[0].token == tUNUMBER in timephrase()
126 && gds->tokenp[1].token == tAMPM) { in timephrase()
128 ++gds->HaveTime; in timephrase()
129 gds->Hour = gds->tokenp[0].value; in timephrase()
130 gds->Minutes = gds->Seconds = 0; in timephrase()
132 gds->tokenp += 1; in timephrase()
138 if (gds->tokenp[0].token == tAMPM) { in timephrase()
140 if (gds->Hour == 12) in timephrase()
141 gds->Hour = 0; in timephrase()
142 if (gds->tokenp[0].value == tPM) in timephrase()
143 gds->Hour += 12; in timephrase()
144 gds->tokenp += 1; in timephrase()
146 if (gds->tokenp[0].token == '+' in timephrase()
147 && gds->tokenp[1].token == tUNUMBER) { in timephrase()
149 gds->HaveZone++; in timephrase()
150 gds->DSTmode = DSToff; in timephrase()
151 gds->Timezone = - ((gds->tokenp[1].value / 100) * HOUR in timephrase()
152 + (gds->tokenp[1].value % 100) * MINUTE); in timephrase()
153 gds->tokenp += 2; in timephrase()
155 if (gds->tokenp[0].token == '-' in timephrase()
156 && gds->tokenp[1].token == tUNUMBER) { in timephrase()
157 /* "19:14:12-0530" */ in timephrase()
158 gds->HaveZone++; in timephrase()
159 gds->DSTmode = DSToff; in timephrase()
160 gds->Timezone = + ((gds->tokenp[1].value / 100) * HOUR in timephrase()
161 + (gds->tokenp[1].value % 100) * MINUTE); in timephrase()
162 gds->tokenp += 2; in timephrase()
173 if (gds->tokenp[0].token == tZONE in zonephrase()
174 && gds->tokenp[1].token == tDST) { in zonephrase()
175 gds->HaveZone++; in zonephrase()
176 gds->Timezone = gds->tokenp[0].value; in zonephrase()
177 gds->DSTmode = DSTon; in zonephrase()
178 gds->tokenp += 1; in zonephrase()
182 if (gds->tokenp[0].token == tZONE) { in zonephrase()
183 gds->HaveZone++; in zonephrase()
184 gds->Timezone = gds->tokenp[0].value; in zonephrase()
185 gds->DSTmode = DSToff; in zonephrase()
186 gds->tokenp += 1; in zonephrase()
190 if (gds->tokenp[0].token == tDAYZONE) { in zonephrase()
191 gds->HaveZone++; in zonephrase()
192 gds->Timezone = gds->tokenp[0].value; in zonephrase()
193 gds->DSTmode = DSTon; in zonephrase()
194 gds->tokenp += 1; in zonephrase()
201 * Year/month/day in various combinations.
206 if (gds->tokenp[0].token == tUNUMBER in datephrase()
207 && gds->tokenp[1].token == '/' in datephrase()
208 && gds->tokenp[2].token == tUNUMBER in datephrase()
209 && gds->tokenp[3].token == '/' in datephrase()
210 && gds->tokenp[4].token == tUNUMBER) { in datephrase()
211 gds->HaveYear++; in datephrase()
212 gds->HaveMonth++; in datephrase()
213 gds->HaveDay++; in datephrase()
214 if (gds->tokenp[0].value >= 13) { in datephrase()
216 gds->Year = gds->tokenp[0].value; in datephrase()
217 gds->Month = gds->tokenp[2].value; in datephrase()
218 gds->Day = gds->tokenp[4].value; in datephrase()
219 } else if ((gds->tokenp[4].value >= 13) in datephrase()
220 || (gds->tokenp[2].value >= 13)) { in datephrase()
223 gds->Month = gds->tokenp[0].value; in datephrase()
224 gds->Day = gds->tokenp[2].value; in datephrase()
225 gds->Year = gds->tokenp[4].value; in datephrase()
228 gds->Month = gds->tokenp[0].value; in datephrase()
229 gds->Day = gds->tokenp[2].value; in datephrase()
230 gds->Year = gds->tokenp[4].value; in datephrase()
232 gds->tokenp += 5; in datephrase()
236 if (gds->tokenp[0].token == tUNUMBER in datephrase()
237 && gds->tokenp[1].token == '/' in datephrase()
238 && gds->tokenp[2].token == tUNUMBER) { in datephrase()
240 gds->HaveMonth++; in datephrase()
241 gds->HaveDay++; in datephrase()
242 gds->Month = gds->tokenp[0].value; in datephrase()
243 gds->Day = gds->tokenp[2].value; in datephrase()
244 gds->tokenp += 3; in datephrase()
248 if (gds->tokenp[0].token == tUNUMBER in datephrase()
249 && gds->tokenp[1].token == '-' in datephrase()
250 && gds->tokenp[2].token == tUNUMBER in datephrase()
251 && gds->tokenp[3].token == '-' in datephrase()
252 && gds->tokenp[4].token == tUNUMBER) { in datephrase()
253 /* ISO 8601 format. yyyy-mm-dd. */ in datephrase()
254 gds->HaveYear++; in datephrase()
255 gds->HaveMonth++; in datephrase()
256 gds->HaveDay++; in datephrase()
257 gds->Year = gds->tokenp[0].value; in datephrase()
258 gds->Month = gds->tokenp[2].value; in datephrase()
259 gds->Day = gds->tokenp[4].value; in datephrase()
260 gds->tokenp += 5; in datephrase()
264 if (gds->tokenp[0].token == tUNUMBER in datephrase()
265 && gds->tokenp[1].token == '-' in datephrase()
266 && gds->tokenp[2].token == tMONTH in datephrase()
267 && gds->tokenp[3].token == '-' in datephrase()
268 && gds->tokenp[4].token == tUNUMBER) { in datephrase()
269 gds->HaveYear++; in datephrase()
270 gds->HaveMonth++; in datephrase()
271 gds->HaveDay++; in datephrase()
272 if (gds->tokenp[0].value > 31) { in datephrase()
273 /* e.g. 1992-Jun-17 */ in datephrase()
274 gds->Year = gds->tokenp[0].value; in datephrase()
275 gds->Month = gds->tokenp[2].value; in datephrase()
276 gds->Day = gds->tokenp[4].value; in datephrase()
278 /* e.g. 17-JUN-1992. */ in datephrase()
279 gds->Day = gds->tokenp[0].value; in datephrase()
280 gds->Month = gds->tokenp[2].value; in datephrase()
281 gds->Year = gds->tokenp[4].value; in datephrase()
283 gds->tokenp += 5; in datephrase()
287 if (gds->tokenp[0].token == tMONTH in datephrase()
288 && gds->tokenp[1].token == tUNUMBER in datephrase()
289 && gds->tokenp[2].token == ',' in datephrase()
290 && gds->tokenp[3].token == tUNUMBER) { in datephrase()
292 gds->HaveYear++; in datephrase()
293 gds->HaveMonth++; in datephrase()
294 gds->HaveDay++; in datephrase()
295 gds->Month = gds->tokenp[0].value; in datephrase()
296 gds->Day = gds->tokenp[1].value; in datephrase()
297 gds->Year = gds->tokenp[3].value; in datephrase()
298 gds->tokenp += 4; in datephrase()
302 if (gds->tokenp[0].token == tMONTH in datephrase()
303 && gds->tokenp[1].token == tUNUMBER) { in datephrase()
305 gds->HaveMonth++; in datephrase()
306 gds->HaveDay++; in datephrase()
307 gds->Month = gds->tokenp[0].value; in datephrase()
308 gds->Day = gds->tokenp[1].value; in datephrase()
309 gds->tokenp += 2; in datephrase()
313 if (gds->tokenp[0].token == tUNUMBER in datephrase()
314 && gds->tokenp[1].token == tMONTH in datephrase()
315 && gds->tokenp[2].token == tUNUMBER) { in datephrase()
317 gds->HaveYear++; in datephrase()
318 gds->HaveMonth++; in datephrase()
319 gds->HaveDay++; in datephrase()
320 gds->Day = gds->tokenp[0].value; in datephrase()
321 gds->Month = gds->tokenp[1].value; in datephrase()
322 gds->Year = gds->tokenp[2].value; in datephrase()
323 gds->tokenp += 3; in datephrase()
327 if (gds->tokenp[0].token == tUNUMBER in datephrase()
328 && gds->tokenp[1].token == tMONTH) { in datephrase()
330 gds->HaveMonth++; in datephrase()
331 gds->HaveDay++; in datephrase()
332 gds->Day = gds->tokenp[0].value; in datephrase()
333 gds->Month = gds->tokenp[1].value; in datephrase()
334 gds->tokenp += 2; in datephrase()
347 if (gds->tokenp[0].token == '-' in relunitphrase()
348 && gds->tokenp[1].token == tUNUMBER in relunitphrase()
349 && gds->tokenp[2].token == tSEC_UNIT) { in relunitphrase()
350 /* "-3 hours" */ in relunitphrase()
351 gds->HaveRel++; in relunitphrase()
352 gds->RelSeconds -= gds->tokenp[1].value * gds->tokenp[2].value; in relunitphrase()
353 gds->tokenp += 3; in relunitphrase()
356 if (gds->tokenp[0].token == '+' in relunitphrase()
357 && gds->tokenp[1].token == tUNUMBER in relunitphrase()
358 && gds->tokenp[2].token == tSEC_UNIT) { in relunitphrase()
360 gds->HaveRel++; in relunitphrase()
361 gds->RelSeconds += gds->tokenp[1].value * gds->tokenp[2].value; in relunitphrase()
362 gds->tokenp += 3; in relunitphrase()
365 if (gds->tokenp[0].token == tUNUMBER in relunitphrase()
366 && gds->tokenp[1].token == tSEC_UNIT) { in relunitphrase()
368 gds->HaveRel++; in relunitphrase()
369 gds->RelSeconds += gds->tokenp[0].value * gds->tokenp[1].value; in relunitphrase()
370 gds->tokenp += 2; in relunitphrase()
373 if (gds->tokenp[0].token == '-' in relunitphrase()
374 && gds->tokenp[1].token == tUNUMBER in relunitphrase()
375 && gds->tokenp[2].token == tMONTH_UNIT) { in relunitphrase()
376 /* "-3 months" */ in relunitphrase()
377 gds->HaveRel++; in relunitphrase()
378 gds->RelMonth -= gds->tokenp[1].value * gds->tokenp[2].value; in relunitphrase()
379 gds->tokenp += 3; in relunitphrase()
382 if (gds->tokenp[0].token == '+' in relunitphrase()
383 && gds->tokenp[1].token == tUNUMBER in relunitphrase()
384 && gds->tokenp[2].token == tMONTH_UNIT) { in relunitphrase()
386 gds->HaveRel++; in relunitphrase()
387 gds->RelMonth += gds->tokenp[1].value * gds->tokenp[2].value; in relunitphrase()
388 gds->tokenp += 3; in relunitphrase()
391 if (gds->tokenp[0].token == tUNUMBER in relunitphrase()
392 && gds->tokenp[1].token == tMONTH_UNIT) { in relunitphrase()
394 gds->HaveRel++; in relunitphrase()
395 gds->RelMonth += gds->tokenp[0].value * gds->tokenp[1].value; in relunitphrase()
396 gds->tokenp += 2; in relunitphrase()
399 if (gds->tokenp[0].token == tSEC_UNIT) { in relunitphrase()
401 gds->HaveRel++; in relunitphrase()
402 gds->RelSeconds += gds->tokenp[0].value; in relunitphrase()
403 gds->tokenp += 1; in relunitphrase()
406 if (gds->tokenp[0].token == tMONTH_UNIT) { in relunitphrase()
408 gds->HaveRel++; in relunitphrase()
409 gds->RelMonth += gds->tokenp[0].value; in relunitphrase()
410 gds->tokenp += 1; in relunitphrase()
422 if (gds->tokenp[0].token == tDAY) { in dayphrase()
424 gds->HaveWeekDay++; in dayphrase()
425 gds->DayOrdinal = 1; in dayphrase()
426 gds->DayNumber = gds->tokenp[0].value; in dayphrase()
427 gds->tokenp += 1; in dayphrase()
428 if (gds->tokenp[0].token == ',') in dayphrase()
429 gds->tokenp += 1; in dayphrase()
432 if (gds->tokenp[0].token == tUNUMBER in dayphrase()
433 && gds->tokenp[1].token == tDAY) { in dayphrase()
435 gds->HaveWeekDay++; in dayphrase()
436 gds->DayOrdinal = gds->tokenp[0].value; in dayphrase()
437 gds->DayNumber = gds->tokenp[1].value; in dayphrase()
438 gds->tokenp += 2; in dayphrase()
460 if (gds->tokenp[0].token == tAGO) { in phrase()
461 gds->RelSeconds = -gds->RelSeconds; in phrase()
462 gds->RelMonth = -gds->RelMonth; in phrase()
463 gds->tokenp += 1; in phrase()
469 if (gds->tokenp[0].token == tUNUMBER) { in phrase()
470 if (gds->HaveTime && !gds->HaveYear && !gds->HaveRel) { in phrase()
471 gds->HaveYear++; in phrase()
472 gds->Year = gds->tokenp[0].value; in phrase()
473 gds->tokenp += 1; in phrase()
477 if(gds->tokenp[0].value > 10000) { in phrase()
479 gds->HaveYear++; in phrase()
480 gds->HaveMonth++; in phrase()
481 gds->HaveDay++; in phrase()
482 gds->Day= (gds->tokenp[0].value)%100; in phrase()
483 gds->Month= (gds->tokenp[0].value/100)%100; in phrase()
484 gds->Year = gds->tokenp[0].value/10000; in phrase()
485 gds->tokenp += 1; in phrase()
489 if (gds->tokenp[0].value < 24) { in phrase()
490 gds->HaveTime++; in phrase()
491 gds->Hour = gds->tokenp[0].value; in phrase()
492 gds->Minutes = 0; in phrase()
493 gds->Seconds = 0; in phrase()
494 gds->tokenp += 1; in phrase()
498 if ((gds->tokenp[0].value / 100 < 24) in phrase()
499 && (gds->tokenp[0].value % 100 < 60)) { in phrase()
501 gds->Hour = gds->tokenp[0].value / 100; in phrase()
502 gds->Minutes = gds->tokenp[0].value % 100; in phrase()
503 gds->Seconds = 0; in phrase()
504 gds->tokenp += 1; in phrase()
576 { 0, "ahst", tZONE, 10*HOUR }, /* Alaska-Hawaii Standard */
579 { 0, "cet", tZONE, -1*HOUR }, /* Central European */
580 { 0, "met", tZONE, -1*HOUR }, /* Middle European */
581 { 0, "mewt", tZONE, -1*HOUR }, /* Middle European Winter */
582 { 0, "mest", tDAYZONE, -1*HOUR }, /* Middle European Summer */
583 { 0, "swt", tZONE, -1*HOUR }, /* Swedish Winter */
584 { 0, "sst", tDAYZONE, -1*HOUR }, /* Swedish Summer */
585 { 0, "fwt", tZONE, -1*HOUR }, /* French Winter */
586 { 0, "fst", tDAYZONE, -1*HOUR }, /* French Summer */
587 { 0, "eet", tZONE, -2*HOUR }, /* Eastern Eur, USSR Zone 1 */
588 { 0, "bt", tZONE, -3*HOUR }, /* Baghdad, USSR Zone 2 */
589 { 0, "it", tZONE, -3*HOUR-30*MINUTE },/* Iran */
590 { 0, "zp4", tZONE, -4*HOUR }, /* USSR Zone 3 */
591 { 0, "zp5", tZONE, -5*HOUR }, /* USSR Zone 4 */
592 { 0, "ist", tZONE, -5*HOUR-30*MINUTE },/* Indian Standard */
593 { 0, "zp6", tZONE, -6*HOUR }, /* USSR Zone 5 */
594 /* { 0, "nst", tZONE, -6.5*HOUR }, */ /* North Sumatra: Conflict */
595 /* { 0, "sst", tZONE, -7*HOUR }, */ /* So Sumatra, USSR 6: Conflict */
596 { 0, "wast", tZONE, -7*HOUR }, /* West Australian Standard */
597 { 0, "wadt", tDAYZONE, -7*HOUR }, /* West Australian Daylight */
598 { 0, "jt", tZONE, -7*HOUR-30*MINUTE },/* Java (3pm in Cronusland!)*/
599 { 0, "cct", tZONE, -8*HOUR }, /* China Coast, USSR Zone 7 */
600 { 0, "jst", tZONE, -9*HOUR }, /* Japan Std, USSR Zone 8 */
601 { 0, "cast", tZONE, -9*HOUR-30*MINUTE },/* Ctrl Australian Std */
602 { 0, "cadt", tDAYZONE, -9*HOUR-30*MINUTE },/* Ctrl Australian Daylt */
603 { 0, "east", tZONE, -10*HOUR }, /* Eastern Australian Std */
604 { 0, "eadt", tDAYZONE, -10*HOUR }, /* Eastern Australian Daylt */
605 { 0, "gst", tZONE, -10*HOUR }, /* Guam Std, USSR Zone 9 */
606 { 0, "nzt", tZONE, -12*HOUR }, /* New Zealand */
607 { 0, "nzst", tZONE, -12*HOUR }, /* New Zealand Standard */
608 { 0, "nzdt", tDAYZONE, -12*HOUR }, /* New Zealand Daylight */
609 { 0, "idle", tZONE, -12*HOUR }, /* Intl Date Line East */
623 /* Relative-time words. */
625 { 0, "yesterday", tSEC_UNIT, -DAY },
628 { 0, "last", tUNUMBER, -1 },
663 { 0, "n", tZONE, -1*HOUR },
664 { 0, "o", tZONE, -2*HOUR },
665 { 0, "p", tZONE, -3*HOUR },
666 { 0, "q", tZONE, -4*HOUR },
667 { 0, "r", tZONE, -5*HOUR },
668 { 0, "s", tZONE, -6*HOUR },
669 { 0, "t", tZONE, -7*HOUR },
670 { 0, "u", tZONE, -8*HOUR },
671 { 0, "v", tZONE, -9*HOUR },
672 { 0, "w", tZONE, -10*HOUR },
673 { 0, "x", tZONE, -11*HOUR },
674 { 0, "y", tZONE, -12*HOUR },
682 * Year is either:
683 * = A number from 0 to 99, which means a year from 1970 to 2069, or
684 * = The actual year (>=100).
687 Convert(time_t Month, time_t Day, time_t Year, in Convert() argument
701 if (Year < 69) in Convert()
702 Year += 2000; in Convert()
703 else if (Year < 100) in Convert()
704 Year += 1900; in Convert()
705 DaysInMonth[1] = Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0) in Convert()
709 if (Year < EPOCH || Year >= 2038 in Convert()
712 || Day < 1 || Day > DaysInMonth[(int)--Month] in Convert()
716 return -1; in Convert()
718 Julian = Day - 1; in Convert()
721 for (i = EPOCH; i < Year; i++) in Convert()
734 || (DSTmode == DSTmaybe && ltime->tm_isdst)) in Convert()
735 Julian -= HOUR; in Convert()
740 DSTcorrect(time_t Start, time_t Future) in DSTcorrect() argument
749 ltime = localtime_s(&tmbuf, &Start) ? NULL : &tmbuf; in DSTcorrect()
751 ltime = localtime_r(&Start, &tmbuf); in DSTcorrect()
753 ltime = localtime(&Start); in DSTcorrect()
755 StartDay = (ltime->tm_hour + 1) % 24; in DSTcorrect()
763 FutureDay = (ltime->tm_hour + 1) % 24; in DSTcorrect()
764 return (Future - Start) + (StartDay - FutureDay) * HOUR; in DSTcorrect()
769 RelativeDate(time_t Start, time_t zone, int dstmode, in RelativeDate() argument
778 t = Start - zone; in RelativeDate()
786 now = Start; in RelativeDate()
787 now += DAY * ((DayNumber - tm->tm_wday + 7) % 7); in RelativeDate()
788 now += 7 * DAY * (DayOrdinal <= 0 ? DayOrdinal : DayOrdinal - 1); in RelativeDate()
790 return DSTcorrect(Start, now); in RelativeDate()
791 return now - Start; in RelativeDate()
796 RelativeMonth(time_t Start, time_t Timezone, time_t RelMonth) in RelativeMonth() argument
800 time_t Year; in RelativeMonth() local
808 tm = localtime_s(&tmbuf, &Start) ? NULL : &tmbuf; in RelativeMonth()
810 tm = localtime_r(&Start, &tmbuf); in RelativeMonth()
812 tm = localtime(&Start); in RelativeMonth()
814 Month = 12 * (tm->tm_year + 1900) + tm->tm_mon + RelMonth; in RelativeMonth()
815 Year = Month / 12; in RelativeMonth()
817 return DSTcorrect(Start, in RelativeMonth()
818 Convert(Month, (time_t)tm->tm_mday, Year, in RelativeMonth()
819 (time_t)tm->tm_hour, (time_t)tm->tm_min, (time_t)tm->tm_sec, in RelativeMonth()
846 Count--; in nexttoken()
861 && i < sizeof(buff)-1) { in nexttoken()
877 for (tp = TimeWords; tp->name; tp++) { in nexttoken()
878 size_t abbrev = tp->abbrev; in nexttoken()
880 abbrev = strlen(tp->name); in nexttoken()
882 && strncmp(tp->name, buff, strlen(buff)) in nexttoken()
887 *value = tp->value; in nexttoken()
888 return tp->type; in nexttoken()
895 * Because '-' and '+' have other special meanings, I in nexttoken()
900 *value = 10 * *value + c - '0'; in nexttoken()
901 (*in)--; in nexttoken()
911 /* Yield A - B, measured in seconds. */
915 int ay = a->tm_year + (TM_YEAR_ORIGIN - 1); in difftm()
916 int by = b->tm_year + (TM_YEAR_ORIGIN - 1); in difftm()
918 /* difference in day of year */ in difftm()
919 a->tm_yday - b->tm_yday in difftm()
921 + ((ay >> 2) - (by >> 2)) in difftm()
922 - (ay/100 - by/100) in difftm()
923 + ((ay/100 >> 2) - (by/100 >> 2)) in difftm()
925 + (long)(ay-by) * 365 in difftm()
927 return (days * DAY + (a->tm_hour - b->tm_hour) * HOUR in difftm()
928 + (a->tm_min - b->tm_min) * MINUTE in difftm()
929 + (a->tm_sec - b->tm_sec)); in difftm()
947 time_t Start; in __archive_get_date() local
967 return -1; in __archive_get_date()
996 while ((lasttoken->token = nexttoken(&p, &lasttoken->value)) != 0) { in __archive_get_date()
999 return -1; in __archive_get_date()
1001 gds->tokenp = tokens; in __archive_get_date()
1004 while (gds->tokenp < lasttoken) { in __archive_get_date()
1006 return -1; in __archive_get_date()
1010 if (!gds->HaveZone) { in __archive_get_date()
1011 gds->Timezone = tzone; in __archive_get_date()
1012 gds->DSTmode = DSTmaybe; in __archive_get_date()
1017 if (gds->HaveZone && gmt_ptr != NULL) { in __archive_get_date()
1018 now -= gds->Timezone; in __archive_get_date()
1028 now += gds->Timezone; in __archive_get_date()
1031 if (!gds->HaveYear) in __archive_get_date()
1032 gds->Year = local.tm_year + 1900; in __archive_get_date()
1033 if (!gds->HaveMonth) in __archive_get_date()
1034 gds->Month = local.tm_mon + 1; in __archive_get_date()
1035 if (!gds->HaveDay) in __archive_get_date()
1036 gds->Day = local.tm_mday; in __archive_get_date()
1040 /* If we saw more than one time, timezone, weekday, year, month, in __archive_get_date()
1042 if (gds->HaveTime > 1 || gds->HaveZone > 1 || gds->HaveWeekDay > 1 in __archive_get_date()
1043 || gds->HaveYear > 1 || gds->HaveMonth > 1 || gds->HaveDay > 1) in __archive_get_date()
1044 return -1; in __archive_get_date()
1048 if (gds->HaveYear || gds->HaveMonth || gds->HaveDay in __archive_get_date()
1049 || gds->HaveTime || gds->HaveWeekDay) { in __archive_get_date()
1050 Start = Convert(gds->Month, gds->Day, gds->Year, in __archive_get_date()
1051 gds->Hour, gds->Minutes, gds->Seconds, in __archive_get_date()
1052 gds->Timezone, gds->DSTmode); in __archive_get_date()
1053 if (Start < 0) in __archive_get_date()
1054 return -1; in __archive_get_date()
1056 Start = now; in __archive_get_date()
1057 if (!gds->HaveRel) in __archive_get_date()
1058 Start -= local.tm_hour * HOUR + local.tm_min * MINUTE in __archive_get_date()
1063 Start += gds->RelSeconds; in __archive_get_date()
1064 Start += RelativeMonth(Start, gds->Timezone, gds->RelMonth); in __archive_get_date()
1066 /* Adjust for day-of-week offsets. */ in __archive_get_date()
1067 if (gds->HaveWeekDay in __archive_get_date()
1068 && !(gds->HaveYear || gds->HaveMonth || gds->HaveDay)) { in __archive_get_date()
1069 tod = RelativeDate(Start, gds->Timezone, in __archive_get_date()
1070 gds->DSTmode, gds->DayOrdinal, gds->DayNumber); in __archive_get_date()
1071 Start += tod; in __archive_get_date()
1074 /* -1 is an error indicator, so return 0 instead of -1 if in __archive_get_date()
1076 return Start == -1 ? 0 : Start; in __archive_get_date()
1092 if (d == -1) in main()
1093 (void)printf("Bad format - couldn't convert.\n"); in main()