• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /barrelfish-2018-10-04/lib/tzcode/stdtime/

Lines Matching defs:sp

184 static void		gmtload(struct state * sp);
210 const struct state * sp, struct tm * tmp);
216 static int typesequiv(const struct state * sp, int a, int b);
217 static int tzload(const char * name, struct state * sp,
219 static int tzparse(const char * name, struct state * sp,
300 struct state * sp = lclptr;
313 if (sp == NULL) {
321 for (i = 0; i < sp->typecnt; ++i) {
322 const struct ttinfo * const ttisp = &sp->ttis[sp->types[i]];
325 &sp->chars[ttisp->tt_abbrind];
341 for (i = 0; i < sp->charcnt; ++i)
342 if (strchr(TZ_ABBR_CHAR_SET, sp->chars[i]) == NULL)
343 sp->chars[i] = TZ_ABBR_ERR_CHAR;
347 for (i = 0; i < sp->typecnt; ++i) {
348 register const struct ttinfo * const ttisp = &sp->ttis[i];
349 register char * cp = &sp->chars[ttisp->tt_abbrind];
371 tzload(name, sp, doextend)
373 struct state * const sp;
385 2 * sizeof *sp +
391 sp->goback = sp->goahead = FALSE;
465 sp->leapcnt = (int) detzcode(u->tzhead.tzh_leapcnt);
466 sp->timecnt = (int) detzcode(u->tzhead.tzh_timecnt);
467 sp->typecnt = (int) detzcode(u->tzhead.tzh_typecnt);
468 sp->charcnt = (int) detzcode(u->tzhead.tzh_charcnt);
470 if (sp->leapcnt < 0 || sp->leapcnt > TZ_MAX_LEAPS ||
471 sp->typecnt <= 0 || sp->typecnt > TZ_MAX_TYPES ||
472 sp->timecnt < 0 || sp->timecnt > TZ_MAX_TIMES ||
473 sp->charcnt < 0 || sp->charcnt > TZ_MAX_CHARS ||
474 (ttisstdcnt != sp->typecnt && ttisstdcnt != 0) ||
475 (ttisgmtcnt != sp->typecnt && ttisgmtcnt != 0))
478 sp->timecnt * stored + /* ats */
479 sp->timecnt + /* types */
480 sp->typecnt * 6 + /* ttinfos */
481 sp->charcnt + /* chars */
482 sp->leapcnt * (stored + 4) + /* lsinfos */
486 for (i = 0; i < sp->timecnt; ++i) {
487 sp->ats[i] = (stored == 4) ?
491 for (i = 0; i < sp->timecnt; ++i) {
492 sp->types[i] = (unsigned char) *p++;
493 if (sp->types[i] >= sp->typecnt)
496 for (i = 0; i < sp->typecnt; ++i) {
499 ttisp = &sp->ttis[i];
507 ttisp->tt_abbrind > sp->charcnt)
510 for (i = 0; i < sp->charcnt; ++i)
511 sp->chars[i] = *p++;
512 sp->chars[i] = '\0'; /* ensure '\0' at end */
513 for (i = 0; i < sp->leapcnt; ++i) {
516 lsisp = &sp->lsis[i];
523 for (i = 0; i < sp->typecnt; ++i) {
526 ttisp = &sp->ttis[i];
536 for (i = 0; i < sp->typecnt; ++i) {
539 ttisp = &sp->ttis[i];
554 for (i = 0; i < sp->timecnt - 2; ++i)
555 if (sp->ats[i] > sp->ats[i + 1]) {
561 sp->timecnt = i;
568 for (j = 0; j + i < sp->timecnt; ++j) {
569 sp->ats[j] = sp->ats[j + i];
570 sp->types[j] = sp->types[j + i];
572 sp->timecnt = j;
592 sp->typecnt + 2 <= TZ_MAX_TYPES) {
602 sp->charcnt + ts->charcnt <= TZ_MAX_CHARS) {
605 sp->charcnt;
607 sp->chars[sp->charcnt++] =
612 sp->ats[sp->timecnt - 1])
615 sp->timecnt < TZ_MAX_TIMES) {
616 sp->ats[sp->timecnt] =
618 sp->types[sp->timecnt] =
619 sp->typecnt +
621 ++sp->timecnt;
624 sp->ttis[sp->typecnt++] = ts->ttis[0];
625 sp->ttis[sp->typecnt++] = ts->ttis[1];
629 if (sp->timecnt > 1) {
630 for (i = 1; i < sp->timecnt; ++i)
631 if (typesequiv(sp, sp->types[i], sp->types[0]) &&
632 differ_by_repeat(sp->ats[i], sp->ats[0])) {
633 sp->goback = TRUE;
636 for (i = sp->timecnt - 2; i >= 0; --i)
637 if (typesequiv(sp, sp->types[sp->timecnt - 1],
638 sp->types[i]) &&
639 differ_by_repeat(sp->ats[sp->timecnt - 1],
640 sp->ats[i])) {
641 sp->goahead = TRUE;
652 typesequiv(sp, a, b)
653 const struct state * const sp;
659 if (sp == NULL ||
660 a < 0 || a >= sp->typecnt ||
661 b < 0 || b >= sp->typecnt)
664 register const struct ttinfo * ap = &sp->ttis[a];
665 register const struct ttinfo * bp = &sp->ttis[b];
670 strcmp(&sp->chars[ap->tt_abbrind],
671 &sp->chars[bp->tt_abbrind]) == 0;
981 tzparse(name, sp, lastditch)
983 struct state * const sp;
1002 if (stdlen >= sizeof sp->chars)
1003 stdlen = (sizeof sp->chars) - 1;
1026 load_result = tzload(TZDEFRULES, sp, FALSE);
1028 sp->leapcnt = 0; /* so, we're off a little */
1066 sp->typecnt = 2; /* standard time and DST */
1070 sp->ttis[0].tt_gmtoff = -dstoffset;
1071 sp->ttis[0].tt_isdst = 1;
1072 sp->ttis[0].tt_abbrind = stdlen + 1;
1073 sp->ttis[1].tt_gmtoff = -stdoffset;
1074 sp->ttis[1].tt_isdst = 0;
1075 sp->ttis[1].tt_abbrind = 0;
1076 atp = sp->ats;
1077 typep = sp->types;
1079 sp->timecnt = 0;
1081 sp->timecnt + 2 <= TZ_MAX_TIMES;
1100 sp->timecnt += 2;
1122 for (i = 0; i < sp->timecnt; ++i) {
1123 j = sp->types[i];
1124 if (!sp->ttis[j].tt_isdst) {
1126 -sp->ttis[j].tt_gmtoff;
1131 for (i = 0; i < sp->timecnt; ++i) {
1132 j = sp->types[i];
1133 if (sp->ttis[j].tt_isdst) {
1135 -sp->ttis[j].tt_gmtoff;
1148 for (i = 0; i < sp->timecnt; ++i) {
1149 j = sp->types[i];
1150 sp->types[i] = sp->ttis[j].tt_isdst;
1151 if (sp->ttis[j].tt_ttisgmt) {
1168 if (isdst && !sp->ttis[j].tt_ttisstd) {
1169 sp->ats[i] += dstoffset -
1172 sp->ats[i] += stdoffset -
1176 theiroffset = -sp->ttis[j].tt_gmtoff;
1177 if (sp->ttis[j].tt_isdst)
1185 sp->ttis[0].tt_gmtoff = -stdoffset;
1186 sp->ttis[0].tt_isdst = FALSE;
1187 sp->ttis[0].tt_abbrind = 0;
1188 sp->ttis[1].tt_gmtoff = -dstoffset;
1189 sp->ttis[1].tt_isdst = TRUE;
1190 sp->ttis[1].tt_abbrind = stdlen + 1;
1191 sp->typecnt = 2;
1195 sp->typecnt = 1; /* only standard time */
1196 sp->timecnt = 0;
1197 sp->ttis[0].tt_gmtoff = -stdoffset;
1198 sp->ttis[0].tt_isdst = 0;
1199 sp->ttis[0].tt_abbrind = 0;
1201 sp->charcnt = stdlen + 1;
1203 sp->charcnt += dstlen + 1;
1204 if ((size_t) sp->charcnt > sizeof sp->chars)
1206 cp = sp->chars;
1218 gmtload(struct state *const sp)
1220 if (tzload(gmt, sp, TRUE) != 0)
1221 (void) tzparse(gmt, sp, TRUE);
1343 struct state * sp;
1349 sp = lclptr;
1351 if (sp == NULL)
1354 if ((sp->goback && t < sp->ats[0]) ||
1355 (sp->goahead && t > sp->ats[sp->timecnt - 1])) {
1361 if (t < sp->ats[0])
1362 seconds = sp->ats[0] - t;
1363 else seconds = t - sp->ats[sp->timecnt - 1];
1373 if (t < sp->ats[0])
1376 if (newt < sp->ats[0] ||
1377 newt > sp->ats[sp->timecnt - 1])
1384 if (t < sp->ats[0])
1393 if (sp->timecnt == 0 || t < sp->ats[0]) {
1395 while (sp->ttis[i].tt_isdst)
1396 if (++i >= sp->typecnt) {
1402 register int hi = sp->timecnt;
1407 if (t < sp->ats[mid])
1411 i = (int) sp->types[lo - 1];
1413 ttisp = &sp->ttis[i];
1418 ** timesub(&t, 0L, sp, tmp);
1420 result = timesub(&t, ttisp->tt_gmtoff, sp, tmp);
1422 tzname[tmp->tm_isdst] = &sp->chars[ttisp->tt_abbrind];
1424 tmp->TM_ZONE = &sp->chars[ttisp->tt_abbrind];
1599 timesub(timep, offset, sp, tmp)
1602 const struct state * const sp;
1618 i = (sp == NULL) ? 0 : sp->leapcnt;
1621 i = sp->leapcnt;
1624 lp = &sp->lsis[i];
1628 lp->ls_corr > sp->lsis[i - 1].ls_corr);
1631 sp->lsis[i].ls_trans ==
1632 sp->lsis[i - 1].ls_trans + 1 &&
1633 sp->lsis[i].ls_corr ==
1634 sp->lsis[i - 1].ls_corr + 1) {
1840 const struct state * sp;
1980 sp = (const struct state *)
1983 if (sp == NULL)
1986 for (i = sp->typecnt - 1; i >= 0; --i) {
1987 if (sp->ttis[i].tt_isdst != yourtm.tm_isdst)
1989 for (j = sp->typecnt - 1; j >= 0; --j) {
1990 if (sp->ttis[j].tt_isdst == yourtm.tm_isdst)
1992 newt = t + sp->ttis[j].tt_gmtoff -
1993 sp->ttis[i].tt_gmtoff;
2043 const struct state * sp;
2079 sp = (const struct state *) ((funcp == localsub) ? lclptr : gmtptr);
2081 if (sp == NULL)
2084 for (i = 0; i < sp->typecnt; ++i)
2087 for (i = sp->timecnt - 1; i >= 0; --i)
2088 if (!seen[sp->types[i]]) {
2089 seen[sp->types[i]] = TRUE;
2090 types[nseen++] = sp->types[i];
2094 if (sp->ttis[samei].tt_isdst != tmp->tm_isdst)
2098 if (sp->ttis[otheri].tt_isdst == tmp->tm_isdst)
2100 tmp->tm_sec += sp->ttis[otheri].tt_gmtoff -
2101 sp->ttis[samei].tt_gmtoff;
2106 tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff -
2107 sp->ttis[samei].tt_gmtoff;
2189 struct state * sp;
2193 sp = lclptr;
2194 i = sp->leapcnt;
2196 lp = &sp->lsis[i];