Lines Matching defs:sp

218 static void     gmtload P((struct state * sp));
244 const struct state * sp, struct tm * tmp));
249 static int tzload P((const char * name, struct state * sp,
251 static int tzparse P((const char * name, struct state * sp,
327 register struct state * const sp = lclptr;
340 if (sp == NULL) {
345 for (i = 0; i < sp->typecnt; ++i) {
346 register const struct ttinfo * const ttisp = &sp->ttis[i];
349 &sp->chars[ttisp->tt_abbrind];
364 for (i = 0; i < sp->timecnt; ++i) {
366 &sp->ttis[
367 sp->types[i]];
370 &sp->chars[ttisp->tt_abbrind];
376 for (i = 0; i < sp->charcnt; ++i)
377 if (strchr(TZ_ABBR_CHAR_SET, sp->chars[i]) == NULL)
378 sp->chars[i] = TZ_ABBR_ERR_CHAR;
382 for (i = 0; i < sp->typecnt; ++i) {
383 register const struct ttinfo * const ttisp = &sp->ttis[i];
384 register char * cp = &sp->chars[ttisp->tt_abbrind];
412 tzload(name, sp, doextend)
414 register struct state * const sp;
425 2 * sizeof *sp +
526 sp->leapcnt = (int) detzcode(u.tzhead.tzh_leapcnt);
527 sp->timecnt = (int) detzcode(u.tzhead.tzh_timecnt);
528 sp->typecnt = (int) detzcode(u.tzhead.tzh_typecnt);
529 sp->charcnt = (int) detzcode(u.tzhead.tzh_charcnt);
531 if (sp->leapcnt < 0 || sp->leapcnt > TZ_MAX_LEAPS ||
532 sp->typecnt <= 0 || sp->typecnt > TZ_MAX_TYPES ||
533 sp->timecnt < 0 || sp->timecnt > TZ_MAX_TIMES ||
534 sp->charcnt < 0 || sp->charcnt > TZ_MAX_CHARS ||
535 (ttisstdcnt != sp->typecnt && ttisstdcnt != 0) ||
536 (ttisgmtcnt != sp->typecnt && ttisgmtcnt != 0))
539 sp->timecnt * stored + /* ats */
540 sp->timecnt + /* types */
541 sp->typecnt * 6 + /* ttinfos */
542 sp->charcnt + /* chars */
543 sp->leapcnt * (stored + 4) + /* lsinfos */
547 for (i = 0; i < sp->timecnt; ++i) {
548 sp->ats[i] = (stored == 4) ?
552 for (i = 0; i < sp->timecnt; ++i) {
553 sp->types[i] = (unsigned char) *p++;
554 if (sp->types[i] >= sp->typecnt)
557 for (i = 0; i < sp->typecnt; ++i) {
560 ttisp = &sp->ttis[i];
568 ttisp->tt_abbrind > sp->charcnt)
571 for (i = 0; i < sp->charcnt; ++i)
572 sp->chars[i] = *p++;
573 sp->chars[i] = '\0'; /* ensure '\0' at end */
574 for (i = 0; i < sp->leapcnt; ++i) {
577 lsisp = &sp->lsis[i];
584 for (i = 0; i < sp->typecnt; ++i) {
587 ttisp = &sp->ttis[i];
597 for (i = 0; i < sp->typecnt; ++i) {
600 ttisp = &sp->ttis[i];
615 for (i = 0; i < sp->timecnt - 2; ++i)
616 if (sp->ats[i] > sp->ats[i + 1]) {
622 sp->timecnt = i;
629 for (j = 0; j + i < sp->timecnt; ++j) {
630 sp->ats[j] = sp->ats[j + i];
631 sp->types[j] = sp->types[j + i];
633 sp->timecnt = j;
653 sp->typecnt + 2 <= TZ_MAX_TYPES) {
660 sp->charcnt + ts.charcnt <= TZ_MAX_CHARS) {
663 sp->charcnt;
665 sp->chars[sp->charcnt++] =
670 sp->ats[sp->timecnt - 1])
673 sp->timecnt < TZ_MAX_TIMES) {
674 sp->ats[sp->timecnt] =
676 sp->types[sp->timecnt] =
677 sp->typecnt +
679 ++sp->timecnt;
682 sp->ttis[sp->typecnt++] = ts.ttis[0];
683 sp->ttis[sp->typecnt++] = ts.ttis[1];
687 sp->goback = sp->goahead = sp->timecnt > i;
688 sp->goback &= sp->types[i] == sp->types[0] &&
689 differ_by_repeat(sp->ats[i], sp->ats[0]);
690 sp->goahead &=
691 sp->types[sp->timecnt - 1] == sp->types[sp->timecnt - 1 - i] &&
692 differ_by_repeat(sp->ats[sp->timecnt - 1],
693 sp->ats[sp->timecnt - 1 - i]);
1003 tzparse(name, sp, lastditch)
1005 register struct state * const sp;
1024 if (stdlen >= sizeof sp->chars)
1025 stdlen = (sizeof sp->chars) - 1;
1046 load_result = tzload(TZDEFRULES, sp, FALSE);
1048 sp->leapcnt = 0; /* so, we're off a little */
1049 sp->timecnt = 0;
1087 sp->typecnt = 2; /* standard time and DST */
1091 sp->ttis[0].tt_gmtoff = -dstoffset;
1092 sp->ttis[0].tt_isdst = 1;
1093 sp->ttis[0].tt_abbrind = stdlen + 1;
1094 sp->ttis[1].tt_gmtoff = -stdoffset;
1095 sp->ttis[1].tt_isdst = 0;
1096 sp->ttis[1].tt_abbrind = 0;
1097 atp = sp->ats;
1098 typep = sp->types;
1101 sp->timecnt + 2 <= TZ_MAX_TIMES;
1120 sp->timecnt += 2;
1142 for (i = 0; i < sp->timecnt; ++i) {
1143 j = sp->types[i];
1144 if (!sp->ttis[j].tt_isdst) {
1146 -sp->ttis[j].tt_gmtoff;
1151 for (i = 0; i < sp->timecnt; ++i) {
1152 j = sp->types[i];
1153 if (sp->ttis[j].tt_isdst) {
1155 -sp->ttis[j].tt_gmtoff;
1168 for (i = 0; i < sp->timecnt; ++i) {
1169 j = sp->types[i];
1170 sp->types[i] = sp->ttis[j].tt_isdst;
1171 if (sp->ttis[j].tt_ttisgmt) {
1188 if (isdst && !sp->ttis[j].tt_ttisstd) {
1189 sp->ats[i] += dstoffset -
1192 sp->ats[i] += stdoffset -
1196 theiroffset = -sp->ttis[j].tt_gmtoff;
1197 if (sp->ttis[j].tt_isdst)
1205 sp->ttis[0].tt_gmtoff = -stdoffset;
1206 sp->ttis[0].tt_isdst = FALSE;
1207 sp->ttis[0].tt_abbrind = 0;
1208 sp->ttis[1].tt_gmtoff = -dstoffset;
1209 sp->ttis[1].tt_isdst = TRUE;
1210 sp->ttis[1].tt_abbrind = stdlen + 1;
1211 sp->typecnt = 2;
1215 sp->typecnt = 1; /* only standard time */
1216 sp->timecnt = 0;
1217 sp->ttis[0].tt_gmtoff = -stdoffset;
1218 sp->ttis[0].tt_isdst = 0;
1219 sp->ttis[0].tt_abbrind = 0;
1221 sp->charcnt = stdlen + 1;
1223 sp->charcnt += dstlen + 1;
1224 if ((size_t) sp->charcnt > sizeof sp->chars)
1226 cp = sp->chars;
1238 gmtload(sp)
1239 struct state * const sp;
1241 if (tzload(gmt, sp, TRUE) != 0)
1242 (void) tzparse(gmt, sp, TRUE);
1339 register struct state * sp;
1345 sp = lclptr;
1347 if (sp == NULL)
1350 if ((sp->goback && t < sp->ats[0]) ||
1351 (sp->goahead && t > sp->ats[sp->timecnt - 1])) {
1357 if (t < sp->ats[0])
1358 seconds = sp->ats[0] - t;
1359 else seconds = t - sp->ats[sp->timecnt - 1];
1369 if (t < sp->ats[0])
1372 if (newt < sp->ats[0] ||
1373 newt > sp->ats[sp->timecnt - 1])
1380 if (t < sp->ats[0])
1389 if (sp->timecnt == 0 || t < sp->ats[0]) {
1391 while (sp->ttis[i].tt_isdst)
1392 if (++i >= sp->typecnt) {
1398 register int hi = sp->timecnt;
1403 if (t < sp->ats[mid])
1407 i = (int) sp->types[lo - 1];
1409 ttisp = &sp->ttis[i];
1414 ** timesub(&t, 0L, sp, tmp);
1416 result = timesub(&t, ttisp->tt_gmtoff, sp, tmp);
1418 tzname[tmp->tm_isdst] = &sp->chars[ttisp->tt_abbrind];
1420 tmp->TM_ZONE = &sp->chars[ttisp->tt_abbrind];
1545 timesub(timep, offset, sp, tmp)
1548 register const struct state * const sp;
1564 i = (sp == NULL) ? 0 : sp->leapcnt;
1567 i = sp->leapcnt;
1570 lp = &sp->lsis[i];
1574 lp->ls_corr > sp->lsis[i - 1].ls_corr);
1577 sp->lsis[i].ls_trans ==
1578 sp->lsis[i - 1].ls_trans + 1 &&
1579 sp->lsis[i].ls_corr ==
1580 sp->lsis[i - 1].ls_corr + 1) {
1806 register const struct state * sp;
1946 sp = (const struct state *)
1950 if (sp == NULL)
1953 for (i = sp->typecnt - 1; i >= 0; --i) {
1954 if (sp->ttis[i].tt_isdst != yourtm.tm_isdst)
1956 for (j = sp->typecnt - 1; j >= 0; --j) {
1957 if (sp->ttis[j].tt_isdst == yourtm.tm_isdst)
1959 newt = t + sp->ttis[j].tt_gmtoff -
1960 sp->ttis[i].tt_gmtoff;
2011 register const struct state * sp;
2045 sp = (const struct state *) (((void *) funcp == (void *) localsub) ?
2048 if (sp == NULL)
2051 for (i = 0; i < sp->typecnt; ++i)
2054 for (i = sp->timecnt - 1; i >= 0; --i)
2055 if (!seen[sp->types[i]]) {
2056 seen[sp->types[i]] = TRUE;
2057 types[nseen++] = sp->types[i];
2061 if (sp->ttis[samei].tt_isdst != tmp->tm_isdst)
2065 if (sp->ttis[otheri].tt_isdst == tmp->tm_isdst)
2067 tmp->tm_sec += sp->ttis[otheri].tt_gmtoff -
2068 sp->ttis[samei].tt_gmtoff;
2073 tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff -
2074 sp->ttis[samei].tt_gmtoff;
2174 register struct state * sp;
2178 sp = lclptr;
2179 i = sp->leapcnt;
2181 lp = &sp->lsis[i];