aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2011-10-02 17:44:32 +0200
committerAlon Zakai <alonzakai@gmail.com>2011-10-02 17:44:32 +0200
commitfea282c5d45daf83170bff821aa0b3be7abd3499 (patch)
treed6031150cba28b1802498bdf3da741f8845d1ff3
parent1b17d7ef860b127d3a2bd6862f1684990d510d2c (diff)
fix langinfo
-rwxr-xr-xemscripten.py8
-rw-r--r--src/library.js110
-rw-r--r--system/include/libc/langinfo.h118
-rw-r--r--tests/runner.py2
4 files changed, 122 insertions, 116 deletions
diff --git a/emscripten.py b/emscripten.py
index 8a1fb03e..32be4450 100755
--- a/emscripten.py
+++ b/emscripten.py
@@ -178,8 +178,14 @@ def main(args):
for line in open(header, 'r'):
line = line.replace('\t', ' ')
m = re.match('^ *# *define +(?P<name>[-\w_.]+) +\(?(?P<value>[-\w_.|]+)\)?.*', line)
+ if not m:
+ # Catch enum defines of a very limited sort
+ m = re.match('^ +(?P<name>[A-Z_\d]+) += +(?P<value>\d+).*', line)
if m:
- defines[m.group('name')] = m.group('value')
+ if m.group('name') != m.group('value'):
+ defines[m.group('name')] = m.group('value')
+ #else:
+ # print 'Warning: %s #defined to itself' % m.group('name') # XXX this can happen if we are set to be equal to an enum (with the same name)
m = re.match('^ *# *include *["<](?P<name>[\w_.-/]+)[">].*', line)
if m:
# Find this file
diff --git a/src/library.js b/src/library.js
index b9da8b3c..42449952 100644
--- a/src/library.js
+++ b/src/library.js
@@ -4960,163 +4960,163 @@ LibraryManager.library = {
// http://pubs.opengroup.org/onlinepubs/000095399/functions/nl_langinfo.html
var result;
switch (item) {
- case 0xE: // CODESET
+ case {{{ cDefine('CODESET') }}}:
result = 'ANSI_X3.4-1968';
break;
- case 0x20028: // D_T_FMT
+ case {{{ cDefine('D_T_FMT') }}}:
result = '%a %b %e %H:%M:%S %Y';
break;
- case 0x20029: // D_FMT
+ case {{{ cDefine('D_FMT') }}}:
result = '%m/%d/%y';
break;
- case 0x2002A: // T_FMT
+ case {{{ cDefine('T_FMT') }}}:
result = '%H:%M:%S';
break;
- case 0x2002B: // T_FMT_AMPM
+ case {{{ cDefine('T_FMT_AMPM') }}}:
result = '%I:%M:%S %p';
break;
- case 0x20026: // AM_STR
+ case {{{ cDefine('AM_STR') }}}:
result = 'AM';
break;
- case 0x20027: // PM_STR
+ case {{{ cDefine('PM_STR') }}}:
result = 'PM';
break;
- case 0x20007: // DAY_1
+ case {{{ cDefine('DAY_1') }}}:
result = 'Sunday';
break;
- case 0x20008: // DAY_2
+ case {{{ cDefine('DAY_2') }}}:
result = 'Monday';
break;
- case 0x20009: // DAY_3
+ case {{{ cDefine('DAY_3') }}}:
result = 'Tuesday';
break;
- case 0x2000A: // DAY_4
+ case {{{ cDefine('DAY_4') }}}:
result = 'Wednesday';
break;
- case 0x2000B: // DAY_5
+ case {{{ cDefine('DAY_5') }}}:
result = 'Thursday';
break;
- case 0x2000C: // DAY_6
+ case {{{ cDefine('DAY_6') }}}:
result = 'Friday';
break;
- case 0x2000D: // DAY_7
+ case {{{ cDefine('DAY_7') }}}:
result = 'Saturday';
break;
- case 0x20000: // ABDAY_1
+ case {{{ cDefine('ABDAY_1') }}}:
result = 'Sun';
break;
- case 0x20001: // ABDAY_2
+ case {{{ cDefine('ABDAY_2') }}}:
result = 'Mon';
break;
- case 0x20002: // ABDAY_3
+ case {{{ cDefine('ABDAY_3') }}}:
result = 'Tue';
break;
- case 0x20003: // ABDAY_4
+ case {{{ cDefine('ABDAY_4') }}}:
result = 'Wed';
break;
- case 0x20004: // ABDAY_5
+ case {{{ cDefine('ABDAY_5') }}}:
result = 'Thu';
break;
- case 0x20005: // ABDAY_6
+ case {{{ cDefine('ABDAY_6') }}}:
result = 'Fri';
break;
- case 0x20006: // ABDAY_7
+ case {{{ cDefine('ABDAY_7') }}}:
result = 'Sat';
break;
- case 0x2001A: // MON_1
+ case {{{ cDefine('MON_1') }}}:
result = 'January';
break;
- case 0x2001B: // MON_2
+ case {{{ cDefine('MON_2') }}}:
result = 'February';
break;
- case 0x2001C: // MON_3
+ case {{{ cDefine('MON_3') }}}:
result = 'March';
break;
- case 0x2001D: // MON_4
+ case {{{ cDefine('MON_4') }}}:
result = 'April';
break;
- case 0x2001E: // MON_5
+ case {{{ cDefine('MON_5') }}}:
result = 'May';
break;
- case 0x2001F: // MON_6
+ case {{{ cDefine('MON_6') }}}:
result = 'June';
break;
- case 0x20020: // MON_7
+ case {{{ cDefine('MON_7') }}}:
result = 'July';
break;
- case 0x20021: // MON_8
+ case {{{ cDefine('MON_8') }}}:
result = 'August';
break;
- case 0x20022: // MON_9
+ case {{{ cDefine('MON_9') }}}:
result = 'September';
break;
- case 0x20023: // MON_10
+ case {{{ cDefine('MON_10') }}}:
result = 'October';
break;
- case 0x20024: // MON_11
+ case {{{ cDefine('MON_11') }}}:
result = 'November';
break;
- case 0x20025: // MON_12
+ case {{{ cDefine('MON_12') }}}:
result = 'December';
break;
- case 0x2000E: // ABMON_1
+ case {{{ cDefine('ABMON_1') }}}:
result = 'Jan';
break;
- case 0x2000F: // ABMON_2
+ case {{{ cDefine('ABMON_2') }}}:
result = 'Feb';
break;
- case 0x20010: // ABMON_3
+ case {{{ cDefine('ABMON_3') }}}:
result = 'Mar';
break;
- case 0x20011: // ABMON_4
+ case {{{ cDefine('ABMON_4') }}}:
result = 'Apr';
break;
- case 0x20012: // ABMON_5
+ case {{{ cDefine('ABMON_5') }}}:
result = 'May';
break;
- case 0x20013: // ABMON_6
+ case {{{ cDefine('ABMON_6') }}}:
result = 'Jun';
break;
- case 0x20014: // ABMON_7
+ case {{{ cDefine('ABMON_7') }}}:
result = 'Jul';
break;
- case 0x20015: // ABMON_8
+ case {{{ cDefine('ABMON_8') }}}:
result = 'Aug';
break;
- case 0x20016: // ABMON_9
+ case {{{ cDefine('ABMON_9') }}}:
result = 'Sep';
break;
- case 0x20017: // ABMON_10
+ case {{{ cDefine('ABMON_10') }}}:
result = 'Oct';
break;
- case 0x20018: // ABMON_11
+ case {{{ cDefine('ABMON_11') }}}:
result = 'Nov';
break;
- case 0x20019: // ABMON_12
+ case {{{ cDefine('ABMON_12') }}}:
result = 'Dec';
break;
- case 0x2002F: // ALT_DIGITS
+ case {{{ cDefine('ALT_DIGITS') }}}:
result = '';
break;
- case 0x10000: // RADIXCHAR
+ case {{{ cDefine('RADIXCHAR') }}}:
result = '.';
break;
- case 0x10001: // THOUSEP
+ case {{{ cDefine('THOUSEP') }}}:
result = '';
break;
- case 0x50000: // YESEXPR
+ case {{{ cDefine('YESEXPR') }}}:
result = '^[yY]';
break;
- case 0x50001: // NOEXPR
+ case {{{ cDefine('NOEXPR') }}}:
result = '^[nN]';
break;
- case 0x4000F: // CRNCYSTR
+ case {{{ cDefine('CRNCYSTR') }}}:
result = '-';
break;
- case 0x2002C: // ERA
- case 0x2002E: // ERA_D_FMT
- case 0x20030: // ERA_D_T_FMT
- case 0x20031: // ERA_T_FMT
+ case {{{ cDefine('ERA') }}}:
+ case {{{ cDefine('ERA_D_FMT') }}}:
+ case {{{ cDefine('ERA_D_T_FMT') }}}:
+ case {{{ cDefine('ERA_T_FMT') }}}:
default:
result = '';
break;
diff --git a/system/include/libc/langinfo.h b/system/include/libc/langinfo.h
index 9040adef..23bddb96 100644
--- a/system/include/libc/langinfo.h
+++ b/system/include/libc/langinfo.h
@@ -41,140 +41,140 @@ enum __nl_item
to maintain backward compatibility. */
_NL_CTYPE_CODESET_NAME = 0, /* codeset name */
#define CODESET _NL_CTYPE_CODESET_NAME
- D_T_FMT, /* string for formatting date and time */
+ D_T_FMT = 1, /* string for formatting date and time */
#define D_T_FMT D_T_FMT
- D_FMT, /* date format string */
+ D_FMT = 2, /* date format string */
#define D_FMT D_FMT
- T_FMT, /* time format string */
+ T_FMT = 3, /* time format string */
#define T_FMT T_FMT
- T_FMT_AMPM, /* a.m. or p.m. time formatting string */
+ T_FMT_AMPM = 4, /* a.m. or p.m. time formatting string */
#define T_FMT_AMPM T_FMT_AMPM
- AM_STR, /* Ante Meridian affix */
+ AM_STR = 5, /* Ante Meridian affix */
#define AM_STR AM_STR
- PM_STR, /* Post Meridian affix */
+ PM_STR = 6, /* Post Meridian affix */
#define PM_STR PM_STR
/* week day names */
- DAY_1,
+ DAY_1 = 7,
#define DAY_1 DAY_1
- DAY_2,
+ DAY_2 = 8,
#define DAY_2 DAY_2
- DAY_3,
+ DAY_3 = 9,
#define DAY_3 DAY_3
- DAY_4,
+ DAY_4 = 10,
#define DAY_4 DAY_4
- DAY_5,
+ DAY_5 = 11,
#define DAY_5 DAY_5
- DAY_6,
+ DAY_6 = 12,
#define DAY_6 DAY_6
- DAY_7,
+ DAY_7 = 13,
#define DAY_7 DAY_7
/* abbreviated week day names */
- ABDAY_1,
+ ABDAY_1 = 14,
#define ABDAY_1 ABDAY_1
- ABDAY_2,
+ ABDAY_2 = 15,
#define ABDAY_2 ABDAY_2
- ABDAY_3,
+ ABDAY_3 = 16,
#define ABDAY_3 ABDAY_3
- ABDAY_4,
+ ABDAY_4 = 17,
#define ABDAY_4 ABDAY_4
- ABDAY_5,
+ ABDAY_5 = 18,
#define ABDAY_5 ABDAY_5
- ABDAY_6,
+ ABDAY_6 = 19,
#define ABDAY_6 ABDAY_6
- ABDAY_7,
+ ABDAY_7 = 20,
#define ABDAY_7 ABDAY_7
/* month names */
- MON_1,
+ MON_1 = 21,
#define MON_1 MON_1
- MON_2,
+ MON_2 = 22,
#define MON_2 MON_2
- MON_3,
+ MON_3 = 23,
#define MON_3 MON_3
- MON_4,
+ MON_4 = 24,
#define MON_4 MON_4
- MON_5,
+ MON_5 = 25,
#define MON_5 MON_5
- MON_6,
+ MON_6 = 26,
#define MON_6 MON_6
- MON_7,
+ MON_7 = 27,
#define MON_7 MON_7
- MON_8,
+ MON_8 = 28,
#define MON_8 MON_8
- MON_9,
+ MON_9 = 29,
#define MON_9 MON_9
- MON_10,
+ MON_10 = 30,
#define MON_10 MON_10
- MON_11,
+ MON_11 = 31,
#define MON_11 MON_11
- MON_12,
+ MON_12 = 32,
#define MON_12 MON_12
/* abbreviated month names */
- ABMON_1,
+ ABMON_1 = 33,
#define ABMON_1 ABMON_1
- ABMON_2,
+ ABMON_2 = 34,
#define ABMON_2 ABMON_2
- ABMON_3,
+ ABMON_3 = 35,
#define ABMON_3 ABMON_3
- ABMON_4,
+ ABMON_4 = 36,
#define ABMON_4 ABMON_4
- ABMON_5,
+ ABMON_5 = 37,
#define ABMON_5 ABMON_5
- ABMON_6,
+ ABMON_6 = 38,
#define ABMON_6 ABMON_6
- ABMON_7,
+ ABMON_7 = 39,
#define ABMON_7 ABMON_7
- ABMON_8,
+ ABMON_8 = 40,
#define ABMON_8 ABMON_8
- ABMON_9,
+ ABMON_9 = 41,
#define ABMON_9 ABMON_9
- ABMON_10,
+ ABMON_10 = 42,
#define ABMON_10 ABMON_10
- ABMON_11,
+ ABMON_11 = 43,
#define ABMON_11 ABMON_11
- ABMON_12,
+ ABMON_12 = 44,
#define ABMON_12 ABMON_12
- ERA, /* era description segments */
+ ERA = 45, /* era description segments */
#define ERA ERA
- ERA_D_FMT, /* era date format string */
+ ERA_D_FMT = 46, /* era date format string */
#define ERA_D_FMT ERA_D_FMT
- ERA_D_T_FMT, /* era date and time format string */
+ ERA_D_T_FMT = 47, /* era date and time format string */
#define ERA_D_T_FMT ERA_D_T_FMT
- ERA_T_FMT, /* era time format string */
+ ERA_T_FMT = 48, /* era time format string */
#define ERA_T_FMT ERA_T_FMT
- ALT_DIGITS, /* alternative symbols for digits */
+ ALT_DIGITS = 49, /* alternative symbols for digits */
#define ALT_DIGITS ALT_DIGITS
- RADIXCHAR, /* radix char */
+ RADIXCHAR = 50, /* radix char */
#define RADIXCHAR RADIXCHAR
- THOUSEP, /* separator for thousands */
+ THOUSEP = 51, /* separator for thousands */
#define THOUSEP THOUSEP
- YESEXPR, /* affirmative response expression */
+ YESEXPR = 52, /* affirmative response expression */
#define YESEXPR YESEXPR
- NOEXPR, /* negative response expression */
+ NOEXPR = 53, /* negative response expression */
#define NOEXPR NOEXPR
- YESSTR, /* affirmative response for yes/no queries */
+ YESSTR = 54, /* affirmative response for yes/no queries */
#define YESSTR YESSTR
- NOSTR, /* negative response for yes/no queries */
+ NOSTR = 55, /* negative response for yes/no queries */
#define NOSTR NOSTR
- CRNCYSTR, /* currency symbol */
+ CRNCYSTR = 56, /* currency symbol */
#define CRNCYSTR CRNCYSTR
- D_MD_ORDER, /* month/day order (BSD extension) */
+ D_MD_ORDER = 57, /* month/day order (BSD extension) */
#define D_MD_ORDER D_MD_ORDER
_NL_TIME_DATE_FMT = 84, /* date fmt used by date(1) (GNU extension) */
#define _DATE_FMT _NL_TIME_DATE_FMT
#ifdef __HAVE_LOCALE_INFO__
- _NL_CTYPE_MB_CUR_MAX,
- _NL_MESSAGES_CODESET,
+ _NL_CTYPE_MB_CUR_MAX = 85,
+ _NL_MESSAGES_CODESET = 86,
#ifdef __HAVE_LOCALE_INFO_EXTENDED__
diff --git a/tests/runner.py b/tests/runner.py
index f6d29e2a..549f63f1 100644
--- a/tests/runner.py
+++ b/tests/runner.py
@@ -2380,7 +2380,7 @@ if 'benchmark' not in str(sys.argv):
def test_langinfo(self):
src = open(path_from_root('tests', 'langinfo', 'test.c'), 'r').read()
expected = open(path_from_root('tests', 'langinfo', 'output.txt'), 'r').read()
- self.do_test(src, expected)
+ self.do_test(src, expected, extra_emscripten_args=['-H', 'libc/langinfo.h'])
def test_files(self):
global CORRECT_SIGNS; CORRECT_SIGNS = 1 # Just so our output is what we expect. Can flip them both.