void add_monetary_str(wchar_t *wcs) { char *str; if ((str = to_mb_string(wcs)) == NULL) { INTERR; return; } free(wcs); switch (last_kw) { case T_INT_CURR_SYMBOL: mon.int_curr_symbol = str; break; case T_CURRENCY_SYMBOL: mon.currency_symbol = str; break; case T_MON_DECIMAL_POINT: mon.mon_decimal_point = str; break; case T_MON_THOUSANDS_SEP: mon.mon_thousands_sep = str; break; case T_POSITIVE_SIGN: mon.positive_sign = str; break; case T_NEGATIVE_SIGN: mon.negative_sign = str; break; default: free(str); INTERR; break; } }
void add_time_list(wchar_t *wcs) { char *str; if ((str = to_mb_string(wcs)) == NULL) { INTERR; return; } free(wcs); switch (last_kw) { case T_ABMON: add_list(tm.mon, str, 12); break; case T_MON: add_list(tm.month, str, 12); break; case T_ABDAY: add_list(tm.wday, str, 7); break; case T_DAY: add_list(tm.weekday, str, 7); break; case T_AM_PM: if (tm.am == NULL) { tm.am = str; } else if (tm.pm == NULL) { tm.pm = str; } else { fprintf(stderr,"too many list elements"); free(str); } break; case T_ALT_DIGITS: case T_ERA: free(str); break; default: free(str); INTERR; break; } }
void add_time_str(wchar_t *wcs) { char *str; if ((str = to_mb_string(wcs)) == NULL) { INTERR; return; } free(wcs); switch (last_kw) { case T_D_T_FMT: tm.c_fmt = str; break; case T_D_FMT: tm.x_fmt = str; break; case T_T_FMT: tm.X_fmt = str; break; case T_T_FMT_AMPM: tm.ampm_fmt = str; break; case T_DATE_FMT: /* * This one is a Solaris extension, Too bad date just * doesn't use %c, which would be simpler. */ tm.date_fmt = str; break; case T_ERA_D_FMT: case T_ERA_T_FMT: case T_ERA_D_T_FMT: /* Silently ignore it. */ free(str); break; default: free(str); INTERR; break; } }
void add_numeric_str(wchar_t *wcs) { char *str; if ((str = to_mb_string(wcs)) == NULL) { INTERR; return; } free(wcs); switch (last_kw) { case T_DECIMAL_POINT: numeric.decimal_point = str; break; case T_THOUSANDS_SEP: numeric.thousands_sep = str; break; default: free(str); INTERR; break; } }