Okay, I tested your latest changes (git 4d83e798). There is one assertion that needs to be #ifdef'ed out for EBCDIC:
$ ./test-c-ctype /path/to/gltests/test-c-ctype.c:62: assertion 'c_isascii (c) == (c >= 0 && c < 0x80)' failed CEE5207E The signal SIGABRT was received. ABORT instruction With that change, test-c-ctype passes. I also tried a run with signed characters (-qchars=signed), and while test-c-ctype passed, a number of other things broke. I'll be preparing and submitting patches for those as well. On Tue, 2015 Sep 22 19:02-0700, Paul Eggert wrote: > > > How would that match occur? c_isalpha() was/is using a "switch" > > statement for EBCDIC. > > Oh, sorry, I was assuming that the substitution was being proposed > for all the functions; but it's being proposed only for c_isascii, > c_iscntrl, c_isgraph, c_isprint, and c_ispunct. These functions > are so rarely used that it probably doesn't matter that much what > we do.... Okay, I understand. The functions that already had a complete "switch" implementation, I left alone; that approach will work pretty much regardless of encoding. > > A simple program could generate tables for all the isxxxxx() > > functions (see below) at compile time. Would you be inclined to do > > it that way? > > I think we can do it without that kind of compile-time hassle, if we > can assume that the compile-time locale is the same as the run-time. > I installed the attached patch, which makes that assumption, and which > I hope does the right thing. I'm a bit uneasy about hard-coding the list of control characters for c_iscntrl() like that. What about having a check in test-c-ctype that compares c_iscntrl() with its system counterpart? If the assumption is that alternate EBCDIC encodings used with Gnulib will agree with EBCDIC-1047 on these characters, then that should be checked. Also, perhaps, that any character for which c_iscntrl() is true should return false from most of the other functions... --Daniel -- Daniel Richard G. || sk...@iskunk.org My ASCII-art .sig got a bad case of Times New Roman.