MCPcopy Create free account
hub / github.com/RcppCore/Rcpp / tzparse

Function tzparse

src/date.cpp:965–1199  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

963 */
964
965 static int tzparse(const char * name, struct state * const sp, const int lastditch) {
966 const char * stdname;
967 const char * dstname;
968 size_t stdlen;
969 size_t dstlen;
970 int_fast32_t stdoffset;
971 int_fast32_t dstoffset;
972 char * cp;
973 int load_result;
974 static struct ttinfo zttinfo;
975
976 INITIALIZE(dstname);
977 stdname = name;
978 if (lastditch) {
979 stdlen = strlen(name); /* length of standard zone name */
980 name += stdlen;
981 if (stdlen >= sizeof sp->chars)
982 stdlen = (sizeof sp->chars) - 1;
983 stdoffset = 0;
984 } else {
985 if (*name == '<') {
986 name++;
987 stdname = name;
988 name = getqzname(name, '>');
989 if (*name != '>')
990 return (-1);
991 stdlen = name - stdname;
992 name++;
993 } else {
994 name = getzname(name);
995 stdlen = name - stdname;
996 }
997 if (*name == '\0')
998 return -1;
999 name = getoffset(name, &stdoffset);
1000 if (name == NULL)
1001 return -1;
1002 }
1003 load_result = tzload(TZDEFRULES, sp, FALSE);
1004 if (load_result != 0)
1005 sp->leapcnt = 0; /* so, we're off a little */
1006 if (*name != '\0') {
1007 if (*name == '<') {
1008 dstname = ++name;
1009 name = getqzname(name, '>');
1010 if (*name != '>')
1011 return -1;
1012 dstlen = name - dstname;
1013 name++;
1014 } else {
1015 dstname = name;
1016 name = getzname(name);
1017 dstlen = name - dstname; /* length of DST zone name */
1018 }
1019 if (*name != '\0' && *name != ',' && *name != ';') {
1020 name = getoffset(name, &dstoffset);
1021 if (name == NULL)
1022 return -1;

Callers 2

tzloadFunction · 0.85
gmtloadFunction · 0.85

Calls 7

getqznameFunction · 0.85
getznameFunction · 0.85
getoffsetFunction · 0.85
tzloadFunction · 0.85
getruleFunction · 0.85
transtimeFunction · 0.85
increment_overflow_timeFunction · 0.85

Tested by

no test coverage detected