X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fparsetime.c;h=0c2f3f92af771ea2fead9d3cca953e729c2c748c;hb=ed81aafcd615bf6d9aa957e4d9957e460508eaf4;hp=a081d58507ed975e0f739be5c89bc5c10871ec2e;hpb=1f6180d370e99a278608310bb74a0502f346a583;p=rrdtool.git diff --git a/src/parsetime.c b/src/parsetime.c index a081d58..0c2f3f9 100644 --- a/src/parsetime.c +++ b/src/parsetime.c @@ -32,6 +32,9 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +/* NOTE: nothing in here is thread-safe!!!! Not even the localtime + calls ... */ + /* * The BNF-like specification of the time syntax parsed is below: * @@ -450,10 +453,10 @@ token() /* - * expect() gets a token and complins if it's not the token we want + * expect2() gets a token and complins if it's not the token we want */ static char * -expect(int desired, char *complain_fmt, ...) +expect2(int desired, char *complain_fmt, ...) { va_list ap; va_start( ap, complain_fmt ); @@ -463,7 +466,7 @@ expect(int desired, char *complain_fmt, ...) va_end( ap ); return TIME_OK; -} /* expect */ +} /* expect2 */ /* @@ -481,7 +484,7 @@ plus_minus(struct time_value *ptv, int doop) if( doop >= 0 ) { op = doop; - try(expect(NUMBER,"There should be number after '%c'", op == PLUS ? '+' : '-')); + try(expect2(NUMBER,"There should be number after '%c'", op == PLUS ? '+' : '-')); prev_multiplier = -1; /* reset months-minutes guessing mechanics */ } /* if doop is < 0 then we repeat the previous op @@ -581,7 +584,7 @@ tod(struct time_value *ptv) return TIME_OK; } if (sc_tokid == COLON ) { - try(expect(NUMBER, + try(expect2(NUMBER, "Parsing HH:MM syntax, expecting MM as number, got none")); minute = atoi(sc_token); if (minute > 59) { @@ -678,7 +681,7 @@ day(struct time_value *ptv) /* do month mday [year] */ mon = (sc_tokid-JAN); - try(expect(NUMBER, + try(expect2(NUMBER, "the day of the month should follow month name")); mday = atol(sc_token); if (token() == NUMBER) { @@ -734,11 +737,11 @@ day(struct time_value *ptv) if (mon <= 31 && (sc_tokid == SLASH || sc_tokid == DOT)) { int sep; sep = sc_tokid; - try(expect(NUMBER,"there should be %s number after '%c'", + try(expect2(NUMBER,"there should be %s number after '%c'", sep == DOT ? "month" : "day", sep == DOT ? '.' : '/')); mday = atol(sc_token); if (token() == sep) { - try(expect(NUMBER,"there should be year number after '%c'", + try(expect2(NUMBER,"there should be year number after '%c'", sep == DOT ? '.' : '/')); year = atol(sc_token); token();