/* PSPP - a program for statistical analysis.
- Copyright (C) 2008 Free Software Foundation, Inc.
+ Copyright (C) 2008, 2010 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
/* www */
{ FMT_WKDAY, 1, {DT_WEEKDAY} },
- /* mmm */
- { FMT_MONTH, 1, {DT_MONTH} },
+ /* mmm
+
+ We require a spelled-out English month so that
+ single-character Roman numerals like "i" and "x" don't get
+ detected as months. The latter is particularly common in
+ the password field of /etc/passwd-like files. */
+ { FMT_MONTH, 1, {DT_ENGLISH_MONTH} },
};
/* Number of recognized date syntax formats. */
int c;
/* Skip leading "$" and optional following white space. */
- has_dollar = ss_match_char (&s, '$');
+ has_dollar = ss_match_byte (&s, '$');
if (has_dollar)
ss_ltrim (&s, ss_cstr (CC_SPACES));
/* Skip optional sign. */
- ss_match_char_in (&s, ss_cstr ("+-"));
+ ss_match_byte_in (&s, ss_cstr ("+-"));
/* Skip digits punctuated by commas and dots. We don't know
whether the decimal point is a comma or a dot, so for now we
}
/* Skip the optional exponent. */
- has_exp = ss_match_char_in (&s, ss_cstr ("eEdD")) != EOF;
- has_exp_sign = ss_match_char_in (&s, ss_cstr ("-+")) != EOF;
+ has_exp = ss_match_byte_in (&s, ss_cstr ("eEdD")) != EOF;
+ has_exp_sign = ss_match_byte_in (&s, ss_cstr ("-+")) != EOF;
if (has_exp_sign)
- ss_match_char (&s, ' ');
+ ss_match_byte (&s, ' ');
exp_digits = ss_ltrim (&s, ss_cstr (CC_DIGITS));
if ((has_exp || has_exp_sign) && !exp_digits)
{
}
/* Skip optional '%'. */
- has_percent = ss_match_char (&s, '%');
+ has_percent = ss_match_byte (&s, '%');
if (has_dollar && has_percent)
{
/* A valid number cannot have both '$' and '%'. */
ss_advance (s, 1);
token = recognize_identifier_token (s);
if (token)
- ss_match_char_in (s, ss_cstr (CC_SPACES));
+ ss_match_byte_in (s, ss_cstr (CC_SPACES));
else
token = DT_DELIM | DT_SPACE;
return token;
size_t digit_cnt = ss_get_long (s, &value);
enum date_token token = 0;
- if (ss_match_char (s, settings_get_decimal_char (FMT_F))
+ if (ss_match_byte (s, settings_get_decimal_char (FMT_F))
&& tokens_seen & DT_COLON
&& value <= 59)
{