Lines Matching refs:sp
210 static void gmtload P((struct state * sp));
236 const struct state * sp, struct tm * tmp));
241 static int tzload P((const char * name, struct state * sp,
243 static int tzparse P((const char * name, struct state * sp,
319 register struct state * const sp = lclptr; in settzname() local
332 if (sp == NULL) { in settzname()
337 for (i = 0; i < sp->typecnt; ++i) { in settzname()
338 register const struct ttinfo * const ttisp = &sp->ttis[i]; in settzname()
341 &sp->chars[ttisp->tt_abbrind]; in settzname()
356 for (i = 0; i < sp->timecnt; ++i) { in settzname()
358 &sp->ttis[ in settzname()
359 sp->types[i]]; in settzname()
362 &sp->chars[ttisp->tt_abbrind]; in settzname()
368 for (i = 0; i < sp->charcnt; ++i) in settzname()
369 if (strchr(TZ_ABBR_CHAR_SET, sp->chars[i]) == NULL) in settzname()
370 sp->chars[i] = TZ_ABBR_ERR_CHAR; in settzname()
374 for (i = 0; i < sp->typecnt; ++i) { in settzname()
375 register const struct ttinfo * const ttisp = &sp->ttis[i]; in settzname()
376 register char * cp = &sp->chars[ttisp->tt_abbrind]; in settzname()
404 tzload(name, sp, doextend) in tzload() argument
406 register struct state * const sp;
417 2 * sizeof *sp +
518 sp->leapcnt = (int) detzcode(u.tzhead.tzh_leapcnt);
519 sp->timecnt = (int) detzcode(u.tzhead.tzh_timecnt);
520 sp->typecnt = (int) detzcode(u.tzhead.tzh_typecnt);
521 sp->charcnt = (int) detzcode(u.tzhead.tzh_charcnt);
523 if (sp->leapcnt < 0 || sp->leapcnt > TZ_MAX_LEAPS ||
524 sp->typecnt <= 0 || sp->typecnt > TZ_MAX_TYPES ||
525 sp->timecnt < 0 || sp->timecnt > TZ_MAX_TIMES ||
526 sp->charcnt < 0 || sp->charcnt > TZ_MAX_CHARS ||
527 (ttisstdcnt != sp->typecnt && ttisstdcnt != 0) ||
528 (ttisgmtcnt != sp->typecnt && ttisgmtcnt != 0))
531 sp->timecnt * stored + /* ats */
532 sp->timecnt + /* types */
533 sp->typecnt * 6 + /* ttinfos */
534 sp->charcnt + /* chars */
535 sp->leapcnt * (stored + 4) + /* lsinfos */
539 for (i = 0; i < sp->timecnt; ++i) {
540 sp->ats[i] = (stored == 4) ?
544 for (i = 0; i < sp->timecnt; ++i) {
545 sp->types[i] = (unsigned char) *p++;
546 if (sp->types[i] >= sp->typecnt)
549 for (i = 0; i < sp->typecnt; ++i) {
552 ttisp = &sp->ttis[i];
560 ttisp->tt_abbrind > sp->charcnt)
563 for (i = 0; i < sp->charcnt; ++i)
564 sp->chars[i] = *p++;
565 sp->chars[i] = '\0'; /* ensure '\0' at end */
566 for (i = 0; i < sp->leapcnt; ++i) {
569 lsisp = &sp->lsis[i];
576 for (i = 0; i < sp->typecnt; ++i) {
579 ttisp = &sp->ttis[i];
589 for (i = 0; i < sp->typecnt; ++i) {
592 ttisp = &sp->ttis[i];
607 for (i = 0; i < sp->timecnt - 2; ++i)
608 if (sp->ats[i] > sp->ats[i + 1]) {
614 sp->timecnt = i;
621 for (j = 0; j + i < sp->timecnt; ++j) {
622 sp->ats[j] = sp->ats[j + i];
623 sp->types[j] = sp->types[j + i];
625 sp->timecnt = j;
645 sp->typecnt + 2 <= TZ_MAX_TYPES) {
652 sp->charcnt + ts.charcnt <= TZ_MAX_CHARS) {
655 sp->charcnt;
657 sp->chars[sp->charcnt++] =
662 sp->ats[sp->timecnt - 1])
665 sp->timecnt < TZ_MAX_TIMES) {
666 sp->ats[sp->timecnt] =
668 sp->types[sp->timecnt] =
669 sp->typecnt +
671 ++sp->timecnt;
674 sp->ttis[sp->typecnt++] = ts.ttis[0];
675 sp->ttis[sp->typecnt++] = ts.ttis[1];
679 sp->goback = sp->goahead = sp->timecnt > i;
680 sp->goback &= sp->types[i] == sp->types[0] &&
681 differ_by_repeat(sp->ats[i], sp->ats[0]);
682 sp->goahead &=
683 sp->types[sp->timecnt - 1] == sp->types[sp->timecnt - 1 - i] &&
684 differ_by_repeat(sp->ats[sp->timecnt - 1],
685 sp->ats[sp->timecnt - 1 - i]);
995 tzparse(name, sp, lastditch) in tzparse() argument
997 register struct state * const sp;
1016 if (stdlen >= sizeof sp->chars)
1017 stdlen = (sizeof sp->chars) - 1;
1038 load_result = tzload(TZDEFRULES, sp, FALSE);
1040 sp->leapcnt = 0; /* so, we're off a little */
1041 sp->timecnt = 0;
1079 sp->typecnt = 2; /* standard time and DST */
1083 sp->ttis[0].tt_gmtoff = -dstoffset;
1084 sp->ttis[0].tt_isdst = 1;
1085 sp->ttis[0].tt_abbrind = stdlen + 1;
1086 sp->ttis[1].tt_gmtoff = -stdoffset;
1087 sp->ttis[1].tt_isdst = 0;
1088 sp->ttis[1].tt_abbrind = 0;
1089 atp = sp->ats;
1090 typep = sp->types;
1093 sp->timecnt + 2 <= TZ_MAX_TIMES;
1112 sp->timecnt += 2;
1134 for (i = 0; i < sp->timecnt; ++i) {
1135 j = sp->types[i];
1136 if (!sp->ttis[j].tt_isdst) {
1138 -sp->ttis[j].tt_gmtoff;
1143 for (i = 0; i < sp->timecnt; ++i) {
1144 j = sp->types[i];
1145 if (sp->ttis[j].tt_isdst) {
1147 -sp->ttis[j].tt_gmtoff;
1160 for (i = 0; i < sp->timecnt; ++i) {
1161 j = sp->types[i];
1162 sp->types[i] = sp->ttis[j].tt_isdst;
1163 if (sp->ttis[j].tt_ttisgmt) {
1180 if (isdst && !sp->ttis[j].tt_ttisstd) {
1181 sp->ats[i] += dstoffset -
1184 sp->ats[i] += stdoffset -
1188 theiroffset = -sp->ttis[j].tt_gmtoff;
1189 if (sp->ttis[j].tt_isdst)
1197 sp->ttis[0].tt_gmtoff = -stdoffset;
1198 sp->ttis[0].tt_isdst = FALSE;
1199 sp->ttis[0].tt_abbrind = 0;
1200 sp->ttis[1].tt_gmtoff = -dstoffset;
1201 sp->ttis[1].tt_isdst = TRUE;
1202 sp->ttis[1].tt_abbrind = stdlen + 1;
1203 sp->typecnt = 2;
1207 sp->typecnt = 1; /* only standard time */
1208 sp->timecnt = 0;
1209 sp->ttis[0].tt_gmtoff = -stdoffset;
1210 sp->ttis[0].tt_isdst = 0;
1211 sp->ttis[0].tt_abbrind = 0;
1213 sp->charcnt = stdlen + 1;
1215 sp->charcnt += dstlen + 1;
1216 if ((size_t) sp->charcnt > sizeof sp->chars)
1218 cp = sp->chars;
1230 gmtload(sp) in gmtload() argument
1231 struct state * const sp; in gmtload()
1233 if (tzload(gmt, sp, TRUE) != 0)
1234 (void) tzparse(gmt, sp, TRUE);
1331 register struct state * sp; local
1337 sp = lclptr;
1339 if (sp == NULL)
1342 if ((sp->goback && t < sp->ats[0]) ||
1343 (sp->goahead && t > sp->ats[sp->timecnt - 1])) {
1349 if (t < sp->ats[0])
1350 seconds = sp->ats[0] - t;
1351 else seconds = t - sp->ats[sp->timecnt - 1];
1361 if (t < sp->ats[0])
1364 if (newt < sp->ats[0] ||
1365 newt > sp->ats[sp->timecnt - 1])
1372 if (t < sp->ats[0])
1381 if (sp->timecnt == 0 || t < sp->ats[0]) {
1383 while (sp->ttis[i].tt_isdst)
1384 if (++i >= sp->typecnt) {
1390 register int hi = sp->timecnt;
1395 if (t < sp->ats[mid])
1399 i = (int) sp->types[lo - 1];
1401 ttisp = &sp->ttis[i];
1408 result = timesub(&t, ttisp->tt_gmtoff, sp, tmp);
1410 tzname[tmp->tm_isdst] = &sp->chars[ttisp->tt_abbrind];
1412 tmp->TM_ZONE = &sp->chars[ttisp->tt_abbrind];
1537 timesub(timep, offset, sp, tmp) in timesub() argument
1540 register const struct state * const sp;
1556 i = (sp == NULL) ? 0 : sp->leapcnt;
1559 i = sp->leapcnt;
1562 lp = &sp->lsis[i];
1566 lp->ls_corr > sp->lsis[i - 1].ls_corr);
1569 sp->lsis[i].ls_trans ==
1570 sp->lsis[i - 1].ls_trans + 1 &&
1571 sp->lsis[i].ls_corr ==
1572 sp->lsis[i - 1].ls_corr + 1) {
1798 register const struct state * sp; local
1938 sp = (const struct state *)
1942 if (sp == NULL)
1945 for (i = sp->typecnt - 1; i >= 0; --i) {
1946 if (sp->ttis[i].tt_isdst != yourtm.tm_isdst)
1948 for (j = sp->typecnt - 1; j >= 0; --j) {
1949 if (sp->ttis[j].tt_isdst == yourtm.tm_isdst)
1951 newt = t + sp->ttis[j].tt_gmtoff -
1952 sp->ttis[i].tt_gmtoff;
2003 register const struct state * sp; local
2037 sp = (const struct state *) (((void *) funcp == (void *) localsub) ?
2040 if (sp == NULL)
2043 for (i = 0; i < sp->typecnt; ++i)
2046 for (i = sp->timecnt - 1; i >= 0; --i)
2047 if (!seen[sp->types[i]]) {
2048 seen[sp->types[i]] = TRUE;
2049 types[nseen++] = sp->types[i];
2053 if (sp->ttis[samei].tt_isdst != tmp->tm_isdst)
2057 if (sp->ttis[otheri].tt_isdst == tmp->tm_isdst)
2059 tmp->tm_sec += sp->ttis[otheri].tt_gmtoff -
2060 sp->ttis[samei].tt_gmtoff;
2065 tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff -
2066 sp->ttis[samei].tt_gmtoff;
2164 register struct state * sp; local
2168 sp = lclptr;
2169 i = sp->leapcnt;
2171 lp = &sp->lsis[i];