diff --git a/ChangeLog b/ChangeLog index f27d54e2e5..d2be57cf96 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +1998-05-15 Ulrich Drepper + + * posix/Makefile (tests): Add runptests. + (distribute): Add PTESTS, PTESTS2C.sed, and ptestcases.h. + (before-compile): Add ptestcases.h. + (ptestscases.h): Add rule to generate from PTESTS. + * posix/runptests.c: New file. + * posix/PTESTS: New file. + * posix/PTESTS2C.sed: New file. + 1998-05-15 Ulrich Drepper * iconv/loop.c: Let user add code to use and set paramaters. diff --git a/iconvdata/iso-2022-jp.c b/iconvdata/iso-2022-jp.c index 900c733552..387298803f 100644 --- a/iconvdata/iso-2022-jp.c +++ b/iconvdata/iso-2022-jp.c @@ -55,10 +55,8 @@ struct gap enum direction dir = ((struct iso2022jp_data *) step->data)->dir; \ enum variant var = ((struct iso2022jp_data *) step->data)->var; \ int save_set; \ - int set = data->statep->count; -#define END_LOOP \ - data->statep->count = set; -#define EXTRA_LOOP_ARGS , var, set + int *setp = &data->statep->count; +#define EXTRA_LOOP_ARGS , var, setp /* Direction of the transformation. */ @@ -177,14 +175,14 @@ gconv_end (struct gconv_step *data) the output state to the initial state. This has to be done during the flushing. */ #define EMIT_SHIFT_TO_INIT \ - if (data->statep->count != 0) \ + if (data->statep->count != ASCII_set) \ { \ enum direction dir = ((struct iso2022jp_data *) step->data)->dir; \ \ if (dir == from_iso2022jp) \ /* It's easy, we don't have to emit anything, we just reset the \ state for the input. */ \ - data->statep->count = 0; \ + data->statep->count = ASCII_set; \ else \ { \ char *outbuf = data->outbuf; \ @@ -201,7 +199,7 @@ gconv_end (struct gconv_step *data) *outbuf++ = '('; \ *outbuf++ = 'B'; \ data->outbuf = outbuf; \ - data->statep->count = 0; \ + data->statep->count = ASCII_set; \ } \ } \ } @@ -211,9 +209,9 @@ gconv_end (struct gconv_step *data) and retore the state. */ #define SAVE_RESET_STATE(Save) \ if (Save) \ - save_set = set; \ + save_set = *setp; \ else \ - set = save_set + *setp = save_set /* First define the conversion function from ISO-2022-JP to UCS4. */ @@ -403,7 +401,9 @@ gconv_end (struct gconv_step *data) \ *((uint32_t *) outptr)++ = ch; \ } -#define EXTRA_LOOP_DECLS , enum variant var, int set +#define EXTRA_LOOP_DECLS , enum variant var, int *setp +#define INIT_PARAMS int set = *setp +#define UPDATE_PARAMS *setp = set #include @@ -691,7 +691,9 @@ gconv_end (struct gconv_step *data) /* Now that we wrote the output increment the input pointer. */ \ inptr += 4; \ } -#define EXTRA_LOOP_DECLS , enum variant var, int set +#define EXTRA_LOOP_DECLS , enum variant var, int *setp +#define INIT_PARAMS int set = *setp +#define UPDATE_PARAMS *setp = set #include diff --git a/iconvdata/iso-2022-kr.c b/iconvdata/iso-2022-kr.c index 6746f9c2ac..b6aee4d933 100644 --- a/iconvdata/iso-2022-kr.c +++ b/iconvdata/iso-2022-kr.c @@ -107,7 +107,7 @@ enum *setp = save_set -/* First define the conversion function from ISO-2022-JP to UCS4. */ +/* First define the conversion function from ISO-2022-KR to UCS4. */ #define MIN_NEEDED_INPUT MIN_NEEDED_FROM #define MAX_NEEDED_INPUT MAX_NEEDED_FROM #define MIN_NEEDED_OUTPUT MIN_NEEDED_TO diff --git a/posix/ptestcases.h b/posix/ptestcases.h new file mode 100644 index 0000000000..0669380853 --- /dev/null +++ b/posix/ptestcases.h @@ -0,0 +1,308 @@ + { 0, 0, "2.8.2 Regular Expression General Requirement", NULL, }, + { 2, 4, "bb*", "abbbc", }, + { 2, 2, "bb*", "ababbbc", }, + { 7, 9, "A#*::", "A:A#:qA::qA#::qA##::q", }, + { 1, 5, "A#*::", "A##::A#::qA::qA#:q", }, + { 0, 0, "2.8.3.1.2 BRE Special Characters", NULL, }, + { 0, 0, "GA108", NULL, }, + { 2, 2, "\\.", "a.c", }, + { 2, 2, "\\[", "a[c", }, + { 2, 2, "\\\\", "a\\c", }, + { 2, 2, "\\*", "a*c", }, + { 2, 2, "\\^", "a^c", }, + { 2, 2, "\\$", "a$c", }, + { 7, 11, "X\\*Y\\*8", "Y*8X*8X*Y*8", }, + { 0, 0, "GA109", NULL, }, + { 2, 2, "[.]", "a.c", }, + { 2, 2, "[[]", "a[c", }, + { -1, -1, "[[]", "ac", }, + { 2, 2, "[\\]", "a\\c", }, + { 1, 1, "[\\a]", "abc", }, + { 2, 2, "[\\.]", "a\\.c", }, + { 2, 2, "[\\.]", "a.\\c", }, + { 2, 2, "[*]", "a*c", }, + { 2, 2, "[$]", "a$c", }, + { 2, 2, "[X*Y8]", "7*8YX", }, + { 0, 0, "GA110", NULL, }, + { 2, 2, "*", "a*c", }, + { 3, 4, "*a", "*b*a*c", }, + { 1, 5, "**9=", "***9=9", }, + { 0, 0, "GA111", NULL, }, + { 1, 1, "^*", "*bc", }, + { -1, -1, "^*", "a*c", }, + { -1, -1, "^*", "^*ab", }, + { 1, 5, "^**9=", "***9=", }, + { -1, -1, "^*5<*9", "5<9*5<*9", }, + { 0, 0, "GA112", NULL, }, + { 2, 3, "\\(*b\\)", "a*b", }, + { -1, -1, "\\(*b\\)", "ac", }, + { 1, 6, "A\\(**9\\)=", "A***9=79", }, + { 0, 0, "GA113(1)", NULL, }, + { 1, 3, "\\(^*ab\\)", "*ab", }, + { -1, -1, "\\(^*ab\\)", "^*ab", }, + { -1, -1, "\\(^*b\\)", "a*b", }, + { -1, -1, "\\(^*b\\)", "^*b", }, + { 0, 0, "GA113(2)", NULL, }, + { -1, -1, "\\(^*ab\\)", "^*ab", }, + { 1, 1, "\\(^*b\\)", "b", }, + { 1, 3, "\\(^*b\\)", "^^b", }, + { 0, 0, "GA114", NULL, }, + { 1, 3, "a^b", "a^b", }, + { 1, 3, "a\\^b", "a^b", }, + { 1, 1, "^^", "^bc", }, + { 2, 2, "\\^", "a^c", }, + { 1, 1, "[c^b]", "^abc", }, + { 1, 1, "[\\^ab]", "^ab", }, + { 2, 2, "[\\^ab]", "c\\d", }, + { -1, -1, "[^^]", "^", }, + { 1, 3, "\\(a^b\\)", "a^b", }, + { 1, 3, "\\(a\\^b\\)", "a^b", }, + { 2, 2, "\\(\\^\\)", "a^b", }, + { 0, 0, "GA115", NULL, }, + { 3, 3, "$$", "ab$", }, + { -1, -1, "$$", "$ab", }, + { 2, 3, "$c", "a$c", }, + { 2, 2, "[$]", "a$c", }, + { 1, 2, "\\$a", "$a", }, + { 3, 3, "\\$$", "ab$", }, + { 2, 6, "A\\([34]$[34]\\)B", "XA4$3BY", }, + { 0, 0, "2.8.3.1.3 Perios in BREs", NULL, }, + { 0, 0, "GA116", NULL, }, + { 1, 1, ".", "abc", }, + { -1, -1, ".ab", "abc", }, + { 1, 3, "ab.", "abc", }, + { 1, 3, "a.b", "a,b", }, + { -1, -1, ".......", "PqRs6", }, + { 1, 7, ".......", "PqRs6T8", }, + { 0, 0, "2.8.3.2 RE Bracket Expression", NULL, }, + { 0, 0, "GA118", NULL, }, + { 2, 2, "[abc]", "xbyz", }, + { -1, -1, "[abc]", "xyz", }, + { 2, 2, "[abc]", "xbay", }, + { 0, 0, "GA119", NULL, }, + { 2, 2, "[^a]", "abc", }, + { 4, 4, "[^]cd]", "cd]ef", }, + { 2, 2, "[^abc]", "axyz", }, + { -1, -1, "[^abc]", "abc", }, + { 3, 3, "[^[.a.]b]", "abc", }, + { 3, 3, "[^[=a=]b]", "abc", }, + { 2, 2, "[^-ac]", "abcde-", }, + { 2, 2, "[^ac-]", "abcde-", }, + { 3, 3, "[^a-b]", "abcde", }, + { 3, 3, "[^a-bd-e]", "dec", }, + { 2, 2, "[^---]", "-ab", }, + { 16, 16, "[^a-zA-Z0-9]", "pqrstVWXYZ23579#", }, + { 0, 0, "GA120(1)", NULL, }, + { 3, 3, "[]a]", "cd]ef", }, + { 1, 1, "[]-a]", "a_b", }, + { 3, 3, "[][.-.]-0]", "ab0-]", }, + { 1, 1, "[]^a-z]", "string", }, + { 0, 0, "GA120(2)", NULL, }, + { 4, 4, "[^]cd]", "cd]ef", }, + { 0, 0, "[^]]*", "]]]]]]]]X", }, + { 0, 0, "[^]]*", "]]]]]]]]", }, + { 9, 9, "[^]]\\{1,\\}", "]]]]]]]]X", }, + { -1, -1, "[^]]\\{1,\\}", "]]]]]]]]", }, + { 0, 0, "GA120(3)", NULL, }, + { 3, 3, "[c[.].]d]", "ab]cd", }, + { 2, 8, "[a-z]*[[.].]][A-Z]*", "Abcd]DEFg", }, + { 0, 0, "GA121", NULL, }, + { 2, 2, "[[.a.]b]", "Abc", }, + { 1, 1, "[[.a.]b]", "aBc", }, + { -1, -1, "[[.a.]b]", "ABc", }, + { 3, 3, "[^[.a.]b]", "abc", }, + { 3, 3, "[][.-.]-0]", "ab0-]", }, + { 3, 3, "[A-[.].]c]", "ab]!", }, + { 0, 0, "GA122", NULL, }, + { -2, -2, "[[.ch]]", "abc", }, + { -2, -2, "[[.ab.][.CD.][.EF.]]", "yZabCDEFQ9", }, + { 0, 0, "GA125", NULL, }, + { 2, 2, "[[=a=]b]", "Abc", }, + { 1, 1, "[[=a=]b]", "aBc", }, + { -1, -1, "[[=a=]b]", "ABc", }, + { 3, 3, "[^[=a=]b]", "abc", }, + { 0, 0, "GA126", NULL, }, + { 2, 7, "[[:alnum:]]*", " aB28gH", }, + { 2, 5, "[^[:alnum:]]*", "2 ,a", }, + { 2, 5, "[[:alpha:]]*", " aBgH2", }, + { 1, 6, "[^[:alpha:]]*", "2 8,a", }, + { 1, 2, "[[:blank:]]*", " ", }, + { 1, 8, "[^[:blank:]]*", "aB28gH, ", }, + { 1, 2, "[[:cntrl:]]*", "  ", }, + { 1, 8, "[^[:cntrl:]]*", "aB2 8gh,", }, + { 2, 3, "[[:digit:]]*", "a28", }, + { 1, 8, "[^[:digit:]]*", "aB gH,", }, + { 1, 7, "[[:graph:]]*", "aB28gH, ", }, + { 1, 3, "[^[:graph:]]*", " ,", }, + { 1, 2, "[[:lower:]]*", "agB", }, + { 1, 8, "[^[:lower:]]*", "B2 8H,a", }, + { 1, 8, "[[:print:]]*", "aB2 8gH, ", }, + { 1, 2, "[^[:print:]]*", "  ", }, + { 2, 2, "[[:punct:]]*", "a,2", }, + { 1, 9, "[^[:punct:]]*", "aB2 8gH", }, + { 1, 3, "[[:space:]]*", " ", }, + { 2, 9, "[^[:space:]]*", " aB28gH, ", }, + { 2, 3, "[[:upper:]]*", "aBH2", }, + { 1, 8, "[^[:upper:]]*", "a2 8g,B", }, + { 2, 5, "[[:xdigit:]]*", "gaB28h", }, + { 2, 7, "[^[:xdigit:]]*", "a gH,2", }, + { 0, 0, "GA127", NULL, }, + { -2, -2, "[b-a]", "abc", }, + { 1, 1, "[a-c]", "bbccde", }, + { 2, 2, "[a-b]", "-bc", }, + { 3, 3, "[a-z0-9]", "AB0", }, + { 3, 3, "[^a-b]", "abcde", }, + { 3, 3, "[^a-bd-e]", "dec", }, + { 1, 1, "[]-a]", "a_b", }, + { 2, 2, "[+--]", "a,b", }, + { 2, 2, "[--/]", "a.b", }, + { 2, 2, "[^---]", "-ab", }, + { 3, 3, "[][.-.]-0]", "ab0-]", }, + { 3, 3, "[A-[.].]c]", "ab]!", }, + { 2, 6, "bc[d-w]xy", "abchxyz", }, + { 0, 0, "GA129", NULL, }, + { 1, 1, "[a-cd-f]", "dbccde", }, + { -1, -1, "[a-ce-f", "dBCCdE", }, + { 2, 4, "b[n-zA-M]Y", "absY9Z", }, + { 2, 4, "b[n-zA-M]Y", "abGY9Z", }, + { 0, 0, "GA130", NULL, }, + { 3, 3, "[-xy]", "ac-", }, + { 2, 4, "[c[-xy]D", "ac-D+", }, + { 2, 2, "[--/]", "a.b", }, + { 2, 4, "c[--/]D", "ac.D+b", }, + { 2, 2, "[^-ac]", "abcde-", }, + { 1, 3, "a[^-ac]c", "abcde-", }, + { 3, 3, "[xy-]", "zc-", }, + { 2, 4, "c[xy-]7", "zc-786", }, + { 2, 2, "[^ac-]", "abcde-", }, + { 2, 4, "a[^ac-]c", "5abcde-", }, + { 2, 2, "[+--]", "a,b", }, + { 2, 4, "a[+--]B", "Xa,By", }, + { 2, 2, "[^---]", "-ab", }, + { 4, 6, "X[^---]Y", "X-YXaYXbY", }, + { 0, 0, "2.8.3.3 BREs Matching Multiple Characters", NULL, }, + { 0, 0, "GA131", NULL, }, + { 3, 4, "cd", "abcdeabcde", }, + { 1, 2, "ag*b", "abcde", }, + { -1, -1, "[a-c][e-f]", "abcdef", }, + { 3, 4, "[a-c][e-f]", "acbedf", }, + { 4, 8, "abc*XYZ", "890abXYZ#*", }, + { 4, 9, "abc*XYZ", "890abcXYZ#*", }, + { 4, 15, "abc*XYZ", "890abccccccccXYZ#*", }, + { -1, -1, "abc*XYZ", "890abc*XYZ#*", }, + { 0, 0, "GA132", NULL, }, + { 2, 4, "\\(*bc\\)", "a*bc", }, + { 1, 2, "\\(ab\\)", "abcde", }, + { 1, 10, "\\(a\\(b\\(c\\(d\\(e\\(f\\(g\\)h\\(i\\(j\\)\\)\\)\\)\\)\\)\\)\\)", "abcdefghijk", }, + { 3, 8, "43\\(2\\(6\\)*0\\)AB", "654320ABCD", }, + { 3, 9, "43\\(2\\(7\\)*0\\)AB", "6543270ABCD", }, + { 3, 12, "43\\(2\\(7\\)*0\\)AB", "6543277770ABCD", }, + { 0, 0, "GA133", NULL, }, + { 1, 10, "\\(a\\(b\\(c\\(d\\(e\\(f\\(g\\)h\\(i\\(j\\)\\)\\)\\)\\)\\)\\)\\)", "abcdefghijk", }, + { -1, -1, "\\(a\\(b\\(c\\(d\\(e\\(f\\(g\\)h\\(i\\(k\\)\\)\\)\\)\\)\\)\\)\\)", "abcdefghijk", }, + { 0, 0, "GA134", NULL, }, + { 2, 4, "\\(bb*\\)", "abbbc", }, + { 2, 2, "\\(bb*\\)", "ababbbc", }, + { 1, 6, "a\\(.*b\\)", "ababbbc", }, + { 1, 2, "a\\(b*\\)", "ababbbc", }, + { 1, 20, "a\\(.*b\\)c", "axcaxbbbcsxbbbbbbbbc", }, + { 0, 0, "GA135", NULL, }, + { 1, 7, "\\(a\\(b\\(c\\(d\\(e\\)\\)\\)\\)\\)\\4", "abcdededede", }, + { 1, 2, "a\\(b\\)*c\\1", "acb", }, + { 1, 11, "\\(a\\(b\\(c\\(d\\(e\\(f\\(g\\)h\\(i\\(j\\)\\)\\)\\)\\)\\)\\)\\)\\9", "abcdefghijjk", }, + { 0, 0, "GA136", NULL, }, + { 1, 2, "a\\(b\\)*c\\1", "acb", }, + { 4, 7, "a\\(b\\(c\\(d\\(f\\)*\\)\\)\\)\\4", "xYzabcdePQRST", }, + { 0, 0, "GA137", NULL, }, + { -2, -2, "\\(a\\(b\\)\\)\\3", "foo", }, + { -2, -2, "\\(a\\(b\\)\\)\\(a\\(b\\)\\)\\5", "foo", }, + { 0, 0, "GA138", NULL, }, + { 1, 2, "ag*b", "abcde", }, + { 1, 10, "a.*b", "abababvbabc", }, + { 2, 5, "b*c", "abbbcdeabbbbbbcde", }, + { 2, 5, "bbb*c", "abbbcdeabbbbbbcde", }, + { 1, 5, "a\\(b\\)*c\\1", "abbcbbb", }, + { -1, -1, "a\\(b\\)*c\\1", "abbdbd", }, + { 0, 0, "\\([a-c]*\\)\\1", "abcacdef", }, + { 1, 6, "\\([a-c]*\\)\\1", "abcabcabcd", }, + { 1, 2, "a^*b", "ab", }, + { 1, 5, "a^*b", "a^^^b", }, + { 0, 0, "GA139", NULL, }, + { 1, 2, "a\\{2\\}", "aaaa", }, + { 1, 7, "\\([a-c]*\\)\\{0,\\}", "aabcaab", }, + { 1, 2, "\\(a\\)\\1\\{1,2\\}", "aabc", }, + { 1, 3, "\\(a\\)010{1,2\\}", "aaaabc", }, + { 1, 4, "\\(\\(a\\)\\1\\)\\{1,2\\}", "aaaabc", }, + { 0, 0, "GA140", NULL, }, + { 1, 2, "a\\{2\\}", "aaaa", }, + { -1, -1, "a\\{2\\}", "abcd", }, + { 0, 0, "a\\{0\\}", "aaaa", }, + { 1, 64, "a\\{64\\}", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", }, + { 0, 0, "GA141", NULL, }, + { 1, 7, "\\([a-c]*\\)\\{0,\\}", "aabcaab", }, + { -1, -1, "\\([a-c]*\\)\\{2,\\}", "abcdefg", }, + { 1, 3, "\\([a-c]*\\)\\{1,\\}", "abcdefg", }, + { -1, -1, "a\\{64,\\}", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", }, + { 0, 0, "GA142", NULL, }, + { 1, 3, "a\\{2,3\\}", "aaaa", }, + { -1, -1, "a\\{2,3\\}", "abcd", }, + { 0, 0, "\\([a-c]*\\)\\{0,0\\}", "foo", }, + { 1, 63, "a\\{1,63\\}", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", }, + { 0, 0, "2.8.3.4 BRE Precdence", NULL, }, + { 0, 0, "GA143", NULL, }, + { 2, 20, "\\^\\[[[.].]]\\\\(\\\\1\\\\)\\\\*\\\\{1,2\\\\}\\$", "a^[]\\(1\\)\\*\\{1,2\\}$b", }, + { 1, 6, "[[=*=]][[=\\=]][[=]=]][[===]][[...]][[:punct:]]", "*\\]=.;", }, + { 1, 6, "[$\\(*\\)1]*", "$\\()*^", }, + { 1, 1, "[\\1]", "1", }, + { 1, 1, "[\\{1,2\\}]", "{", }, + { 2, 2, "\\(*\\)*\\1*", "a*b*11", }, + { 1, 5, "\\(a\\(b\\{1,2\\}\\)\\{1,2\\}\\)", "abbab", }, + { 1, 1, "^\\(^\\(^a$\\)$\\)$", "a", }, + { 1, 2, "\\(a\\)\\1$", "aa", }, + { 1, 3, "ab*", "abb", }, + { 1, 4, "ab\\{2,4\\}", "abbbc", }, + { 0, 0, "2.8.3.5 BRE Expression Anchoring", NULL, }, + { 0, 0, "GA144", NULL, }, + { 1, 1, "^a", "abc", }, + { -1, -1, "^b", "abc", }, + { -1, -1, "^[a-zA-Z]", "99Nine", }, + { 1, 4, "^[a-zA-Z]", "Nine99", }, + { 0, 0, "GA145(1)", NULL, }, + { 1, 2, "\\(^a\\)\\1", "aabc", }, + { -1, -1, "\\(^a\\)\\1", "^a^abc", }, + { 1, 2, "\\(^^a\\)", "^a", }, + { 1, 1, "\\(^^\\)", "^^", }, + { 1, 3, "\\(^abc\\)", "abcdef", }, + { -1, -1, "\\(^def\\)", "abcdef", }, + { 0, 0, "GA145(2)", NULL, }, + { -1, -1, "\\(^a\\)\\1", "aabc", }, + { 1, 4, "\\(^a\\)\\1", "^a^abc", }, + { -1, -1, "\\(^^a\\)", "^a", }, + { 1, 2, "\\(^^\\)", "^^", }, + { 0, 0, "GA146", NULL, }, + { 3, 3, "a$", "cba", }, + { -1, -1, "a$", "abc", }, + { 5, 7, "[a-z]*$", "99ZZxyz", }, + { -1, -1, "[a-z]*$", "99ZZxyz99", }, + { 3, 3, "$$", "ab$", }, + { -1, -1, "$$", "$ab", }, + { 3, 3, "\\$$", "ab$", }, + { 0, 0, "GA147(1)", NULL, }, + { -1, -1, "\\(a$\\)\\1", "bcaa", }, + { -1, -1, "\\(a$\\)\\1", "ba$", }, + { -1, -1, "\\(ab$\\)", "ab$", }, + { 1, 2, "\\(ab$\\)", "ab", }, + { 4, 6, "\\(def$\\)", "abcdef", }, + { -1, -1, "\\(abc$\\)", "abcdef", }, + { 0, 0, "GA147(2)", NULL, }, + { -1, -1, "\\(a$\\)\\1", "bcaa", }, + { 2, 5, "\\(a$\\)\\1", "ba$a$", }, + { -1, -1, "\\(ab$\\)", "ab", }, + { 1, 3, "\\(ab$\\)", "ab$", }, + { 0, 0, "GA148", NULL, }, + { 0, 0, "^$", "", }, + { 1, 3, "^abc$", "abc", }, + { -1, -1, "^xyz$", "^xyz^", }, + { -1, -1, "^234$", "^234$", }, + { 1, 9, "^[a-zA-Z0-9]*$", "2aA3bB9zZ", }, + { -1, -1, "^[a-z0-9]*$", "2aA3b#B9zZ", },