]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix uses of ctype functions (ex: isspace()) on signed characters in test
authordrh <drh@noemail.net>
Thu, 29 Oct 2015 13:48:15 +0000 (13:48 +0000)
committerdrh <drh@noemail.net>
Thu, 29 Oct 2015 13:48:15 +0000 (13:48 +0000)
programs and in some obscure extensions.  No changes to the core.

FossilOrigin-Name: 34eb6911afee09e779318b79baf953f616200128

19 files changed:
autoconf/tea/win/nmakehlp.c
ext/fts1/fts1.c
ext/fts1/simple_tokenizer.c
ext/misc/amatch.c
ext/misc/closure.c
ext/misc/spellfix.c
manifest
manifest.uuid
mptest/mptest.c
test/fuzzcheck.c
test/speedtest1.c
test/wordcount.c
tool/fuzzershell.c
tool/lemon.c
tool/showdb.c
tool/showstat4.c
tool/showwal.c
tool/speedtest16.c
tool/speedtest8inst1.c

index 2868857efd62776f0d3fc2c7d6b6c033b25cdc7a..e00f1b49965d07d0ac4862354131776bdaf714eb 100644 (file)
@@ -603,8 +603,8 @@ SubstituteFile(
        sp = fopen(substitutions, "rt");
        if (sp != NULL) {
            while (fgets(szBuffer, cbBuffer, sp) != NULL) {
-               char *ks, *ke, *vs, *ve;
-               ks = szBuffer;
+               unsigned char *ks, *ke, *vs, *ve;
+               ks = (unsigned char*)szBuffer;
                while (ks && *ks && isspace(*ks)) ++ks;
                ke = ks;
                while (ke && *ke && !isspace(*ke)) ++ke;
@@ -613,7 +613,7 @@ SubstituteFile(
                ve = vs;
                while (ve && *ve && !(*ve == '\r' || *ve == '\n')) ++ve;
                *ke = 0, *ve = 0;
-               list_insert(&substPtr, ks, vs);
+               list_insert(&substPtr, (char*)ks, (char*)vs);
            }
            fclose(sp);
        }
index 482cf759ba1d176e004dc0c33ab08a6cc8297665..77fa9e23f595cbb62948f3440ca10fd99aa123b6 100644 (file)
@@ -205,13 +205,13 @@ static int getVarint32(const char *p, int *pi){
 */
 /* TODO(shess) Is __isascii() a portable version of (c&0x80)==0? */
 static int safe_isspace(char c){
-  return (c&0x80)==0 ? isspace(c) : 0;
+  return (c&0x80)==0 ? isspace((unsigned char)c) : 0;
 }
 static int safe_tolower(char c){
-  return (c&0x80)==0 ? tolower(c) : c;
+  return (c&0x80)==0 ? tolower((unsigned char)c) : c;
 }
 static int safe_isalnum(char c){
-  return (c&0x80)==0 ? isalnum(c) : 0;
+  return (c&0x80)==0 ? isalnum((unsigned char)c) : 0;
 }
 
 typedef enum DocListType {
index d00a77089d871ccbd6528a943ab79045b0445a3a..0ddc7055af74588431deb6a78c045dd26274919c 100644 (file)
@@ -138,7 +138,7 @@ static int simpleNext(
         ** case-insensitivity.
         */
         char ch = c->pCurrent[ii];
-        c->zToken[ii] = (unsigned char)ch<0x80 ? tolower(ch) : ch;
+        c->zToken[ii] = (unsigned char)ch<0x80 ? tolower((unsigned char)ch):ch;
       }
       c->zToken[n] = '\0';
       *ppToken = c->zToken;
index d08ef57aad80f93a6fff0d4d4cb9372026de3882..852491988aa0e606e91928569977e1d0a7765037 100644 (file)
@@ -816,10 +816,10 @@ static const char *amatchValueOfKey(const char *zKey, const char *zStr){
   int i;
   if( nStr<nKey+1 ) return 0;
   if( memcmp(zStr, zKey, nKey)!=0 ) return 0;
-  for(i=nKey; isspace(zStr[i]); i++){}
+  for(i=nKey; isspace((unsigned char)zStr[i]); i++){}
   if( zStr[i]!='=' ) return 0;
   i++;
-  while( isspace(zStr[i]) ){ i++; }
+  while( isspace((unsigned char)zStr[i]) ){ i++; }
   return zStr+i;
 }
 
index 30c812d2201cd2d08a5d1a5c3464dbdfbed52fb1..510c46ec9086b604ca8f1fb87842057687955ab2 100644 (file)
@@ -486,10 +486,10 @@ static const char *closureValueOfKey(const char *zKey, const char *zStr){
   int i;
   if( nStr<nKey+1 ) return 0;
   if( memcmp(zStr, zKey, nKey)!=0 ) return 0;
-  for(i=nKey; isspace(zStr[i]); i++){}
+  for(i=nKey; isspace((unsigned char)zStr[i]); i++){}
   if( zStr[i]!='=' ) return 0;
   i++;
-  while( isspace(zStr[i]) ){ i++; }
+  while( isspace((unsigned char)zStr[i]) ){ i++; }
   return zStr+i;
 }
 
index 336203433ecea59dab6efbd0d48343b919845b64..0515b7bc6c9e781ce07c6e1f5975a12baa27c34e 100644 (file)
@@ -1851,7 +1851,7 @@ static char *spellfix1Dequote(const char *zIn){
   char *zOut;
   int i, j;
   char c;
-  while( isspace(zIn[0]) ) zIn++;
+  while( isspace((unsigned char)zIn[0]) ) zIn++;
   zOut = sqlite3_mprintf("%s", zIn);
   if( zOut==0 ) return 0;
   i = (int)strlen(zOut);
index 8948b0157f186431371dc53e741dadf22cc62c3e..d4263de73a6697a64d79274b30b492497414bdcd 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Enhance\scomments\sin\sthe\sMSVC\sbatch\sbuild\stool.
-D 2015-10-29T01:11:39.776
+C Fix\suses\sof\sctype\sfunctions\s(ex:\sisspace())\son\ssigned\scharacters\sin\stest\nprograms\sand\sin\ssome\sobscure\sextensions.\s\sNo\schanges\sto\sthe\score.
+D 2015-10-29T13:48:15.235
 F Makefile.in 2ea961bc09e441874eb3d1bf7398e04feb24f3ee
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 702d3e98f3afc6587a78481257f3c4c900efc3a4
@@ -30,7 +30,7 @@ F autoconf/tea/pkgIndex.tcl.in 3ef61715cf1c7bdcff56947ffadb26bc991ca39d
 F autoconf/tea/tclconfig/install-sh bdd5e293591621ae60d9824d86a4b1c5f22c3d00
 F autoconf/tea/tclconfig/tcl.m4 66ddf0a5d5e4b1d29bff472c0985fd7fa89d0fb5
 F autoconf/tea/win/makefile.vc f89d0184d0eee5f7e356ea407964dcd139939928
-F autoconf/tea/win/nmakehlp.c 2070e086f39866b353a482d3a14dedaf26196506
+F autoconf/tea/win/nmakehlp.c 247538ad8e8c508f33c03ec1fbd67d3a07ef6291
 F autoconf/tea/win/rules.vc c511f222b80064096b705dbeb97060ee1d6b6d63
 F config.guess 226d9a188c6196f3033ffc651cbc9dcee1a42977
 F config.h.in 42b71ad3fe21c9e88fa59e8458ca1a6bc72eb0c0
@@ -48,7 +48,7 @@ F ext/async/sqlite3async.h f489b080af7e72aec0e1ee6f1d98ab6cf2e4dcef
 F ext/fts1/README.txt 20ac73b006a70bcfd80069bdaf59214b6cf1db5e
 F ext/fts1/ft_hash.c 3927bd880e65329bdc6f506555b228b28924921b
 F ext/fts1/ft_hash.h 06df7bba40dadd19597aa400a875dbc2fed705ea
-F ext/fts1/fts1.c f7739dc37500a613cc0dab8fc04d1b5577d02998
+F ext/fts1/fts1.c a39f7d21c2994d27c959ef9c3505c81542c81432
 F ext/fts1/fts1.h 6060b8f62c1d925ea8356cb1a6598073eb9159a6
 F ext/fts1/fts1_hash.c 3196cee866edbebb1c0521e21672e6d599965114
 F ext/fts1/fts1_hash.h e7f0d761353996a8175eda351104acfde23afcb0
@@ -57,7 +57,7 @@ F ext/fts1/fts1_tokenizer.h fdea722c38a9f82ed921642981234f666e47919c
 F ext/fts1/fts1_tokenizer1.c fd00d1fe4dc30dfc5c64cba695ce34f4af20d2fa
 F ext/fts1/fulltext.c 37698e1909584f6d8ea67d1485e3ad39dbf42d19
 F ext/fts1/fulltext.h 08525a47852d1d62a0be81d3fc3fe2d23b094efd
-F ext/fts1/simple_tokenizer.c 1844d72f7194c3fd3d7e4173053911bf0661b70d
+F ext/fts1/simple_tokenizer.c bbfa4e3b2a26ef17d4edc6d98cd4a3f5396d998a
 F ext/fts1/tokenizer.h 0c53421b832366d20d720d21ea3e1f6e66a36ef9
 F ext/fts2/README.tokenizers 21e3684ea5a095b55d70f6878b4ce6af5932dfb7
 F ext/fts2/README.txt 8c18f41574404623b76917b9da66fcb0ab38328d
@@ -190,8 +190,8 @@ F ext/fts5/tool/showfts5.tcl d54da0e067306663e2d5d523965ca487698e722c
 F ext/icu/README.txt d9fbbad0c2f647c3fdf715fc9fd64af53aedfc43
 F ext/icu/icu.c b2732aef0b076e4276d9b39b5a33cec7a05e1413
 F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37
-F ext/misc/amatch.c 27b9b601fb1453084e18a3432ea0240d7af8decb
-F ext/misc/closure.c 636024302cde41b2bf0c542f81c40c624cfb7012
+F ext/misc/amatch.c a1a8f66c29d40bd71b075546ddeddb477b17a2bb
+F ext/misc/closure.c 0d2a038df8fbae7f19de42e7c7d71f2e4dc88704
 F ext/misc/compress.c 122faa92d25033d6c3f07c39231de074ab3d2e83
 F ext/misc/eval.c f971962e92ebb8b0a4e6b62949463ee454d88fa2
 F ext/misc/fileio.c d4171c815d6543a9edef8308aab2951413cd8d0f
@@ -204,7 +204,7 @@ F ext/misc/regexp.c af92cdaa5058fcec1451e49becc7ba44dba023dc
 F ext/misc/rot13.c 1ac6f95f99b575907b9b09c81a349114cf9be45a
 F ext/misc/series.c b8fb7befd85b3a9b4a10e701b30b2b79ca92b6d4
 F ext/misc/showauth.c 732578f0fe4ce42d577e1c86dc89dd14a006ab52
-F ext/misc/spellfix.c 86998fb73aefb7b5dc346ba8a58912f312da4996
+F ext/misc/spellfix.c b9065af7ab1f2597b505a8aa9892620866d502fc
 F ext/misc/totype.c 4a167594e791abeed95e0a8db028822b5e8fe512
 F ext/misc/vfslog.c fe40fab5c077a40477f7e5eba994309ecac6cc95
 F ext/misc/vtshim.c babb0dc2bf116029e3e7c9a618b8a1377045303e
@@ -269,7 +269,7 @@ F mptest/config01.test 3c6adcbc50b991866855f1977ff172eb6d901271
 F mptest/config02.test 4415dfe36c48785f751e16e32c20b077c28ae504
 F mptest/crash01.test 61e61469e257df0850df4293d7d4d6c2af301421
 F mptest/crash02.subtest f4ef05adcd15d60e5d2bd654204f2c008b519df8
-F mptest/mptest.c fca59f0a922e03f95ed17c44b1515ed37a841c81
+F mptest/mptest.c e7b499cb0cf8c3de65eaf24dec9b36daa4e013e4
 F mptest/multiwrite01.test dab5c5f8f9534971efce679152c5146da265222d
 F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
@@ -752,7 +752,7 @@ F test/fuzz2.test 76dc35b32b6d6f965259508508abce75a6c4d7e1
 F test/fuzz3.test 53fabcd5f0f430f8b221282f6c12c4d0903c21eb
 F test/fuzz_common.tcl a87dfbb88c2a6b08a38e9a070dabd129e617b45b
 F test/fuzz_malloc.test 328f70aaca63adf29b4c6f06505ed0cf57ca7c26
-F test/fuzzcheck.c c84086021a514360268190a1bc6ae8ed78d7c94f
+F test/fuzzcheck.c ee926f1d4090d053ed542899720d4e4d30811bcc
 F test/fuzzdata1.db 7ee3227bad0e7ccdeb08a9e6822916777073c664
 F test/fuzzdata2.db f03a420d3b822cc82e4f894ca957618fbe9c4973
 F test/fuzzdata3.db c6586d3e3cef0fbc18108f9bb649aa77bfc38aba
@@ -1030,7 +1030,7 @@ F test/speed3.test d32043614c08c53eafdc80f33191d5bd9b920523
 F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715
 F test/speed4p.explain 6b5f104ebeb34a038b2f714150f51d01143e59aa
 F test/speed4p.test 0e51908951677de5a969b723e03a27a1c45db38b
-F test/speedtest1.c 857439869d1cb4db35e1c720ee9c2756eb9ea2a0
+F test/speedtest1.c f8bf04214e7b5f745feea99f7bde68b1c4870666
 F test/spellfix.test 0597065ff57042df1f138e6a2611ae19c2698135
 F test/spellfix2.test dfc8f519a3fc204cb2dfa8b4f29821ae90f6f8c3
 F test/sqldiff1.test 8f6bc7c6a5b3585d350d779c6078869ba402f8f5
@@ -1333,7 +1333,7 @@ F test/without_rowid3.test aad4f9d383e199349b6c7e508a778f7dff5dff79
 F test/without_rowid4.test 4e08bcbaee0399f35d58b5581881e7a6243d458a
 F test/without_rowid5.test 61256715b686359df48ca1742db50cc7e3e7b862
 F test/without_rowid6.test 1f99644e6508447fb050f73697350c7ceca3392e
-F test/wordcount.c 9915e06cb33d8ca8109b8700791afe80d305afda
+F test/wordcount.c 2a0a6c0d0e8e8bbbac1f06d72a6791828c37c0cf
 F test/zeroblob.test 3857870fe681b8185654414a9bccfde80b62a0fa
 F test/zerodamage.test cf6748bad89553cc1632be51a6f54e487e4039ac
 F tool/GetFile.cs a15e08acb5dd7539b75ba23501581d7c2b462cb5
@@ -1345,11 +1345,11 @@ F tool/checkSpacing.c 810e51703529a204fc4e1eb060e9ab663e3c06d2
 F tool/extract.c 054069d81b095fbdc189a6f5d4466e40380505e2
 F tool/fast_vacuum.c 5ba0d6f5963a0a63bdc42840f678bad75b2ebce1
 F tool/fragck.tcl 5265a95126abcf6ab357f7efa544787e5963f439
-F tool/fuzzershell.c b36096cdbcb4af985a2d6c20093d61e55b49bfe1
+F tool/fuzzershell.c 94019b185caceffc9f7c7b678a6489e42bc2aefa
 F tool/genfkey.README cf68fddd4643bbe3ff8e31b8b6d8b0a1b85e20f4
 F tool/genfkey.test 4196a8928b78f51d54ef58e99e99401ab2f0a7e5
 F tool/getlock.c f4c39b651370156cae979501a7b156bdba50e7ce
-F tool/lemon.c 039f813b520b9395740c52f9cbf36c90b5d8df03
+F tool/lemon.c 799e73e19a33b8dd7767a7fa34618ed2a9c2397d
 F tool/lempar.c 3617143ddb9b176c3605defe6a9c798793280120
 F tool/loadfts.c c3c64e4d5e90e8ba41159232c2189dba4be7b862
 F tool/logest.c eef612f8adf4d0993dafed0416064cf50d5d33c6
@@ -1371,18 +1371,18 @@ F tool/pagesig.c ff0ca355fd3c2398e933da5e22439bbff89b803b
 F tool/replace.tcl 7727c60a04299b65a92f5e1590896fea0f25b9e0
 F tool/restore_jrnl.tcl 6957a34f8f1f0f8285e07536225ec3b292a9024a
 F tool/rollback-test.c 9fc98427d1e23e84429d7e6d07d9094fbdec65a5
-F tool/showdb.c b1e16174385d5bd0815823a7fda1ecc82ed6088b
+F tool/showdb.c d4476e000a64eca9f5e2c2f68741e747b9778e8d
 F tool/showjournal.c 5bad7ae8784a43d2b270d953060423b8bd480818
 F tool/showlocks.c 9920bcc64f58378ff1118caead34147201f48c68
-F tool/showstat4.c 9515faa8ec176599d4a8288293ba8ec61f7b728a
-F tool/showwal.c 85cb36d4fe3e93e2fbd63e786e0d1ce42d0c4fad
+F tool/showstat4.c bda40d6e395df7edb6e9ea630784d3d762c35b4b
+F tool/showwal.c ec79959834f7b21f1e0a2aa52bb7c056d2203977
 F tool/soak1.tcl 8d407956e1a45b485a8e072470a3e629a27037fe
 F tool/spaceanal.tcl 93c1fdc9733c525b17a2024c7df193daa002e037
 F tool/speedtest.tcl 06c76698485ccf597b9e7dbb1ac70706eb873355
-F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
+F tool/speedtest16.c ecb6542862151c3e6509bbc00509b234562ae81e
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
-F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
+F tool/speedtest8inst1.c 7ce07da76b5e745783e703a834417d725b7d45fd
 F tool/split-sqlite3c.tcl d9be87f1c340285a3e081eb19b4a247981ed290c
 F tool/sqldiff.c b318efc2eaf7a7fac4d281a0ce736193cb2506df
 F tool/stack_usage.tcl f8e71b92cdb099a147dad572375595eae55eca43
@@ -1395,7 +1395,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P b10ab59fb8a696d11a269f3904e799c687246aea
-R cc38e20a3bed22c727ef2060f0363586
-U mistachkin
-Z f9c898158c1864e737c38818df859932
+P 2964ce25864e8aec86272af741caf49c23c86590
+R 108548c0deac3f928b4d6bf600bf3b5a
+U drh
+Z 9e7ef25aa5af86f6161b757cd0b4f721
index 2101e8fe3651855fd29bf6829b7a99ea84bfe1e4..bb3991b9015287755b6bc3cbb298e32b3e5a0c8d 100644 (file)
@@ -1 +1 @@
-2964ce25864e8aec86272af741caf49c23c86590
\ No newline at end of file
+34eb6911afee09e779318b79baf953f616200128
\ No newline at end of file
index f81ffb5ca09995384aa69845f5d21f32da8d6ff3..5a9c8bf6b4e56b527eb6b06f841f5f26d847d322 100644 (file)
@@ -46,6 +46,9 @@
 #include <assert.h>
 #include <ctype.h>
 
+#define ISSPACE(X) isspace((unsigned char)(X))
+#define ISDIGIT(X) isdigit((unsigned char)(X))
+
 /* The suffix to append to the child command lines, if any */
 #if defined(_WIN32)
 # define GETPID (int)GetCurrentProcessId
@@ -187,10 +190,10 @@ int strglob(const char *zGlob, const char *z){
       }
       if( c2==0 || (seen ^ invert)==0 ) return 0;
     }else if( c=='#' ){
-      if( (z[0]=='-' || z[0]=='+') && isdigit(z[1]) ) z++;
-      if( !isdigit(z[0]) ) return 0;
+      if( (z[0]=='-' || z[0]=='+') && ISDIGIT(z[1]) ) z++;
+      if( !ISDIGIT(z[0]) ) return 0;
       z++;
-      while( isdigit(z[0]) ){ z++; }
+      while( ISDIGIT(z[0]) ){ z++; }
     }else{
       if( c!=(*(z++)) ) return 0;
     }
@@ -289,7 +292,7 @@ static void logMessage(const char *zFormat, ...){
 */
 static int clipLength(const char *z){
   int n = (int)strlen(z);
-  while( n>0 && isspace(z[n-1]) ){ n--; }
+  while( n>0 && ISSPACE(z[n-1]) ){ n--; }
   return n;
 }
 
@@ -444,7 +447,7 @@ static void stringAppendTerm(String *p, const char *z){
     stringAppend(p, "nil", 3);
     return;
   }
-  for(i=0; z[i] && !isspace(z[i]); i++){}
+  for(i=0; z[i] && !ISSPACE(z[i]); i++){}
   if( i>0 && z[i]==0 ){
     stringAppend(p, z, i);
     return;
@@ -699,7 +702,7 @@ static char *readFile(const char *zFilename){
 */
 static int tokenLength(const char *z, int *pnLine){
   int n = 0;
-  if( isspace(z[0]) || (z[0]=='/' && z[1]=='*') ){
+  if( ISSPACE(z[0]) || (z[0]=='/' && z[1]=='*') ){
     int inC = 0;
     int c;
     if( z[0]=='/' ){
@@ -708,7 +711,7 @@ static int tokenLength(const char *z, int *pnLine){
     }
     while( (c = z[n++])!=0 ){
       if( c=='\n' ) (*pnLine)++;
-      if( isspace(c) ) continue;
+      if( ISSPACE(c) ) continue;
       if( inC && c=='*' && z[n]=='/' ){
         n++;
         inC = 0;
@@ -734,7 +737,7 @@ static int tokenLength(const char *z, int *pnLine){
     }
   }else{
     int c;
-    for(n=1; (c = z[n])!=0 && !isspace(c) && c!='"' && c!='\'' && c!=';'; n++){}
+    for(n=1; (c = z[n])!=0 && !ISSPACE(c) && c!='"' && c!='\'' && c!=';'; n++){}
   }
   return n;
 }
@@ -748,7 +751,7 @@ static int extractToken(const char *zIn, int nIn, char *zOut, int nOut){
     zOut[0] = 0;
     return 0;
   }
-  for(i=0; i<nIn && i<nOut-1 && !isspace(zIn[i]); i++){ zOut[i] = zIn[i]; }
+  for(i=0; i<nIn && i<nOut-1 && !ISSPACE(zIn[i]); i++){ zOut[i] = zIn[i]; }
   zOut[i] = 0;
   return i;
 }
@@ -758,7 +761,7 @@ static int extractToken(const char *zIn, int nIn, char *zOut, int nOut){
 */
 static int findEnd(const char *z, int *pnLine){
   int n = 0;
-  while( z[n] && (strncmp(z+n,"--end",5) || !isspace(z[n+5])) ){
+  while( z[n] && (strncmp(z+n,"--end",5) || !ISSPACE(z[n+5])) ){
     n += tokenLength(z+n, pnLine);
   }
   return n;
@@ -773,12 +776,12 @@ static int findEndif(const char *z, int stopAtElse, int *pnLine){
   int n = 0;
   while( z[n] ){
     int len = tokenLength(z+n, pnLine);
-    if( (strncmp(z+n,"--endif",7)==0 && isspace(z[n+7]))
-     || (stopAtElse && strncmp(z+n,"--else",6)==0 && isspace(z[n+6]))
+    if( (strncmp(z+n,"--endif",7)==0 && ISSPACE(z[n+7]))
+     || (stopAtElse && strncmp(z+n,"--else",6)==0 && ISSPACE(z[n+6]))
     ){
       return n+len;
     }
-    if( strncmp(z+n,"--if",4)==0 && isspace(z[n+4]) ){
+    if( strncmp(z+n,"--if",4)==0 && ISSPACE(z[n+4]) ){
       int skip = findEndif(z+n+len, 0, pnLine);
       n += skip + len;
     }else{
@@ -888,7 +891,7 @@ static void runScript(
   while( (c = zScript[ii])!=0 ){
     prevLine = lineno;
     len = tokenLength(zScript+ii, &lineno);
-    if( isspace(c) || (c=='/' && zScript[ii+1]=='*') ){
+    if( ISSPACE(c) || (c=='/' && zScript[ii+1]=='*') ){
       ii += len;
       continue;
     }
@@ -909,7 +912,7 @@ static void runScript(
     if( g.iTrace>=2 ) logMessage("%.*s", len, zScript+ii);
     n = extractToken(zScript+ii+2, len-2, zCmd, sizeof(zCmd));
     for(nArg=0; n<len-2 && nArg<MX_ARG; nArg++){
-      while( n<len-2 && isspace(zScript[ii+2+n]) ){ n++; }
+      while( n<len-2 && ISSPACE(zScript[ii+2+n]) ){ n++; }
       if( n>=len-2 ) break;
       n += extractToken(zScript+ii+2+n, len-2-n,
                         azArg[nArg], sizeof(azArg[nArg]));
@@ -976,7 +979,7 @@ static void runScript(
     if( strcmp(zCmd, "match")==0 ){
       int jj;
       char *zAns = zScript+ii;
-      for(jj=7; jj<len-1 && isspace(zAns[jj]); jj++){}
+      for(jj=7; jj<len-1 && ISSPACE(zAns[jj]); jj++){}
       zAns += jj;
       if( len-jj-1!=sResult.n || strncmp(sResult.z, zAns, len-jj-1) ){
         errorMessage("line %d of %s:\nExpected [%.*s]\n     Got [%s]",
@@ -998,7 +1001,7 @@ static void runScript(
       char *zAns = zScript+ii;
       char *zCopy;
       int isGlob = (zCmd[0]=='g');
-      for(jj=9-3*isGlob; jj<len-1 && isspace(zAns[jj]); jj++){}
+      for(jj=9-3*isGlob; jj<len-1 && ISSPACE(zAns[jj]); jj++){}
       zAns += jj;
       zCopy = sqlite3_mprintf("%.*s", len-jj-1, zAns);
       if( (sqlite3_strglob(zCopy, sResult.z)==0)^isGlob ){
@@ -1050,7 +1053,7 @@ static void runScript(
     */
     if( strcmp(zCmd, "print")==0 ){
       int jj;
-      for(jj=7; jj<len && isspace(zScript[ii+jj]); jj++){}
+      for(jj=7; jj<len && ISSPACE(zScript[ii+jj]); jj++){}
       logMessage("%.*s", len-jj, zScript+ii+jj);
     }else
 
@@ -1062,7 +1065,7 @@ static void runScript(
     if( strcmp(zCmd, "if")==0 ){
       int jj, rc;
       sqlite3_stmt *pStmt;
-      for(jj=4; jj<len && isspace(zScript[ii+jj]); jj++){}
+      for(jj=4; jj<len && ISSPACE(zScript[ii+jj]); jj++){}
       pStmt = prepareSql("SELECT %.*s", len-jj, zScript+ii+jj);
       rc = sqlite3_step(pStmt);
       if( rc!=SQLITE_ROW || sqlite3_column_int(pStmt, 0)==0 ){
index 15ddd09eedf26128d199743e32a106cef02e698c..19995684e496d51674ff846bcd1457120dbf4934 100644 (file)
@@ -70,6 +70,9 @@
 #include <stdarg.h>
 #include <ctype.h>
 #include "sqlite3.h"
+#define ISSPACE(X) isspace((unsigned char)(X))
+#define ISDIGIT(X) isdigit((unsigned char)(X))
+
 
 #ifdef __unix__
 # include <signal.h>
@@ -633,9 +636,9 @@ static void runSql(sqlite3 *db, const char *zSql, unsigned  runFlags){
     if( runFlags & SQL_TRACE ){
       const char *z = zSql;
       int n;
-      while( z<zMore && isspace(z[0]) ) z++;
+      while( z<zMore && ISSPACE(z[0]) ) z++;
       n = (int)(zMore - z);
-      while( n>0 && isspace(z[n-1]) ) n--;
+      while( n>0 && ISSPACE(z[n-1]) ) n--;
       if( n==0 ) break;
       if( pStmt==0 ){
         printf("TRACE: %.*s (error: %s)\n", n, z, sqlite3_errmsg(db));
@@ -757,7 +760,7 @@ static int integerValue(const char *zArg){
       zArg++;
     }
   }else{
-    while( isdigit(zArg[0]) ){
+    while( ISDIGIT(zArg[0]) ){
       v = v*10 + zArg[0] - '0';
       zArg++;
     }
index b34dae65aedf8255c7833fda7b717d95801a144d..b41c732053c15e1a978a8151bac49bfabc92aaeb 100644 (file)
@@ -47,6 +47,8 @@ static const char zHelp[] =
 #include <stdarg.h>
 #include <string.h>
 #include <ctype.h>
+#define ISSPACE(X) isspace((unsigned char)(X))
+#define ISDIGIT(X) isdigit((unsigned char)(X))
 
 #if SQLITE_VERSION_NUMBER<3005000
 # define sqlite3_int64 sqlite_int64
@@ -315,7 +317,7 @@ void speedtest1_final(void){
 /* Print an SQL statement to standard output */
 static void printSql(const char *zSql){
   int n = (int)strlen(zSql);
-  while( n>0 && (zSql[n-1]==';' || isspace(zSql[n-1])) ){ n--; }
+  while( n>0 && (zSql[n-1]==';' || ISSPACE(zSql[n-1])) ){ n--; }
   if( g.bExplain ) printf("EXPLAIN ");
   printf("%.*s;\n", n, zSql);
   if( g.bExplain
@@ -414,7 +416,7 @@ void speedtest1_run(void){
 /* The sqlite3_trace() callback function */
 static void traceCallback(void *NotUsed, const char *zSql){
   int n = (int)strlen(zSql);
-  while( n>0 && (zSql[n-1]==';' || isspace(zSql[n-1])) ) n--;
+  while( n>0 && (zSql[n-1]==';' || ISSPACE(zSql[n-1])) ) n--;
   fprintf(stderr,"%.*s;\n", n, zSql);
 }
 
index cf63e983c253e6f63071eabaa6801145151c863a..72aa6b2f0b0ad26809abc58effc28814a01e215f 100644 (file)
@@ -80,6 +80,7 @@
 #include <stdlib.h>
 #include <stdarg.h>
 #include "sqlite3.h"
+#define ISALPHA(X) isalpha((unsigned char)(X))
 
 /* Return the current wall-clock time */
 static sqlite3_int64 realTime(void){
@@ -392,8 +393,8 @@ int main(int argc, char **argv){
   /* Process the input file */
   while( fgets(zInput, sizeof(zInput), in) ){
     for(i=0; zInput[i]; i++){
-      if( !isalpha(zInput[i]) ) continue;
-      for(j=i+1; isalpha(zInput[j]); j++){}
+      if( !ISALPHA(zInput[i]) ) continue;
+      for(j=i+1; ISALPHA(zInput[j]); j++){}
 
       /* Found a new word at zInput[i] that is j-i bytes long. 
       ** Process it into the wordcount table.  */
index 6754a071e37a389400b6bd5f5e6bd52f22989d12..2c778bce6e054a54d8320caba05368bbce9fdbc5 100644 (file)
@@ -67,6 +67,7 @@
 #include <stdarg.h>
 #include <ctype.h>
 #include "sqlite3.h"
+#define ISDIGIT(X) isdigit((unsigned char)(X))
 
 /*
 ** All global variables are gathered into the "g" singleton.
@@ -383,7 +384,7 @@ static int integerValue(const char *zArg){
       zArg++;
     }
   }else{
-    while( isdigit(zArg[0]) ){
+    while( ISDIGIT(zArg[0]) ){
       v = v*10 + zArg[0] - '0';
       zArg++;
     }
index 2e8054b5ccb819d0f0522b79bde269c2d6e092fe..d704deb624d42b39ca455db5bc5617e2197d62d9 100644 (file)
 #include <stdlib.h>
 #include <assert.h>
 
+#define ISSPACE(X) isspace((unsigned char)(X))
+#define ISDIGIT(X) isdigit((unsigned char)(X))
+#define ISALNUM(X) isalnum((unsigned char)(X))
+#define ISALPHA(X) isalpha((unsigned char)(X))
+#define ISUPPER(X) isupper((unsigned char)(X))
+#define ISLOWER(X) islower((unsigned char)(X))
+
+
 #ifndef __WIN32__
 #   if defined(_WIN32) || defined(WIN32)
 #       define __WIN32__
@@ -93,9 +101,9 @@ static int lemon_vsprintf(char *str, const char *zFormat, va_list ap){
       int iWidth = 0;
       lemon_addtext(str, &nUsed, &zFormat[j], i-j, 0);
       c = zFormat[++i];
-      if( isdigit(c) || (c=='-' && isdigit(zFormat[i+1])) ){
+      if( ISDIGIT(c) || (c=='-' && ISDIGIT(zFormat[i+1])) ){
         if( c=='-' ) i++;
-        while( isdigit(zFormat[i]) ) iWidth = iWidth*10 + zFormat[i++] - '0';
+        while( ISDIGIT(zFormat[i]) ) iWidth = iWidth*10 + zFormat[i++] - '0';
         if( c=='-' ) iWidth = -iWidth;
         c = zFormat[i];
       }
@@ -1578,7 +1586,7 @@ int main(int argc, char **argv)
   while( lem.symbols[i-1]->type==MULTITERMINAL ){ i--; }
   assert( strcmp(lem.symbols[i-1]->name,"{default}")==0 );
   lem.nsymbol = i - 1;
-  for(i=1; isupper(lem.symbols[i]->name[0]); i++);
+  for(i=1; ISUPPER(lem.symbols[i]->name[0]); i++);
   lem.nterminal = i;
 
   /* Generate a reprint of the grammar, if requested on the command line */
@@ -2121,7 +2129,7 @@ static void parseonetoken(struct pstate *psp)
     case WAITING_FOR_DECL_OR_RULE:
       if( x[0]=='%' ){
         psp->state = WAITING_FOR_DECL_KEYWORD;
-      }else if( islower(x[0]) ){
+      }else if( ISLOWER(x[0]) ){
         psp->lhs = Symbol_new(x);
         psp->nrhs = 0;
         psp->lhsalias = 0;
@@ -2151,7 +2159,7 @@ to follow the previous rule.");
       }
       break;
     case PRECEDENCE_MARK_1:
-      if( !isupper(x[0]) ){
+      if( !ISUPPER(x[0]) ){
         ErrorMsg(psp->filename,psp->tokenlineno,
           "The precedence symbol must be a terminal.");
         psp->errorcnt++;
@@ -2191,7 +2199,7 @@ to follow the previous rule.");
       }
       break;
     case LHS_ALIAS_1:
-      if( isalpha(x[0]) ){
+      if( ISALPHA(x[0]) ){
         psp->lhsalias = x;
         psp->state = LHS_ALIAS_2;
       }else{
@@ -2260,7 +2268,7 @@ to follow the previous rule.");
           psp->prevrule = rp;
         }
         psp->state = WAITING_FOR_DECL_OR_RULE;
-      }else if( isalpha(x[0]) ){
+      }else if( ISALPHA(x[0]) ){
         if( psp->nrhs>=MAXRHS ){
           ErrorMsg(psp->filename,psp->tokenlineno,
             "Too many symbols on RHS of rule beginning at \"%s\".",
@@ -2289,7 +2297,7 @@ to follow the previous rule.");
         msp->subsym = (struct symbol **) realloc(msp->subsym,
           sizeof(struct symbol*)*msp->nsubsym);
         msp->subsym[msp->nsubsym-1] = Symbol_new(&x[1]);
-        if( islower(x[1]) || islower(msp->subsym[0]->name[0]) ){
+        if( ISLOWER(x[1]) || ISLOWER(msp->subsym[0]->name[0]) ){
           ErrorMsg(psp->filename,psp->tokenlineno,
             "Cannot form a compound containing a non-terminal");
           psp->errorcnt++;
@@ -2304,7 +2312,7 @@ to follow the previous rule.");
       }
       break;
     case RHS_ALIAS_1:
-      if( isalpha(x[0]) ){
+      if( ISALPHA(x[0]) ){
         psp->alias[psp->nrhs-1] = x;
         psp->state = RHS_ALIAS_2;
       }else{
@@ -2326,7 +2334,7 @@ to follow the previous rule.");
       }
       break;
     case WAITING_FOR_DECL_KEYWORD:
-      if( isalpha(x[0]) ){
+      if( ISALPHA(x[0]) ){
         psp->declkeyword = x;
         psp->declargslot = 0;
         psp->decllinenoslot = 0;
@@ -2406,7 +2414,7 @@ to follow the previous rule.");
       }
       break;
     case WAITING_FOR_DESTRUCTOR_SYMBOL:
-      if( !isalpha(x[0]) ){
+      if( !ISALPHA(x[0]) ){
         ErrorMsg(psp->filename,psp->tokenlineno,
           "Symbol name missing after %%destructor keyword");
         psp->errorcnt++;
@@ -2420,7 +2428,7 @@ to follow the previous rule.");
       }
       break;
     case WAITING_FOR_DATATYPE_SYMBOL:
-      if( !isalpha(x[0]) ){
+      if( !ISALPHA(x[0]) ){
         ErrorMsg(psp->filename,psp->tokenlineno,
           "Symbol name missing after %%type keyword");
         psp->errorcnt++;
@@ -2445,7 +2453,7 @@ to follow the previous rule.");
     case WAITING_FOR_PRECEDENCE_SYMBOL:
       if( x[0]=='.' ){
         psp->state = WAITING_FOR_DECL_OR_RULE;
-      }else if( isupper(x[0]) ){
+      }else if( ISUPPER(x[0]) ){
         struct symbol *sp;
         sp = Symbol_new(x);
         if( sp->prec>=0 ){
@@ -2463,7 +2471,7 @@ to follow the previous rule.");
       }
       break;
     case WAITING_FOR_DECL_ARG:
-      if( x[0]=='{' || x[0]=='\"' || isalnum(x[0]) ){
+      if( x[0]=='{' || x[0]=='\"' || ISALNUM(x[0]) ){
         const char *zOld, *zNew;
         char *zBuf, *z;
         int nOld, n, nLine = 0, nNew, nBack;
@@ -2524,7 +2532,7 @@ to follow the previous rule.");
     case WAITING_FOR_FALLBACK_ID:
       if( x[0]=='.' ){
         psp->state = WAITING_FOR_DECL_OR_RULE;
-      }else if( !isupper(x[0]) ){
+      }else if( !ISUPPER(x[0]) ){
         ErrorMsg(psp->filename, psp->tokenlineno,
           "%%fallback argument \"%s\" should be a token", x);
         psp->errorcnt++;
@@ -2545,7 +2553,7 @@ to follow the previous rule.");
     case WAITING_FOR_WILDCARD_ID:
       if( x[0]=='.' ){
         psp->state = WAITING_FOR_DECL_OR_RULE;
-      }else if( !isupper(x[0]) ){
+      }else if( !ISUPPER(x[0]) ){
         ErrorMsg(psp->filename, psp->tokenlineno,
           "%%wildcard argument \"%s\" should be a token", x);
         psp->errorcnt++;
@@ -2561,7 +2569,7 @@ to follow the previous rule.");
       }
       break;
     case WAITING_FOR_CLASS_ID:
-      if( !islower(x[0]) ){
+      if( !ISLOWER(x[0]) ){
         ErrorMsg(psp->filename, psp->tokenlineno,
           "%%token_class must be followed by an identifier: ", x);
         psp->errorcnt++;
@@ -2580,12 +2588,12 @@ to follow the previous rule.");
     case WAITING_FOR_CLASS_TOKEN:
       if( x[0]=='.' ){
         psp->state = WAITING_FOR_DECL_OR_RULE;
-      }else if( isupper(x[0]) || ((x[0]=='|' || x[0]=='/') && isupper(x[1])) ){
+      }else if( ISUPPER(x[0]) || ((x[0]=='|' || x[0]=='/') && ISUPPER(x[1])) ){
         struct symbol *msp = psp->tkclass;
         msp->nsubsym++;
         msp->subsym = (struct symbol **) realloc(msp->subsym,
           sizeof(struct symbol*)*msp->nsubsym);
-        if( !isupper(x[0]) ) x++;
+        if( !ISUPPER(x[0]) ) x++;
         msp->subsym[msp->nsubsym-1] = Symbol_new(x);
       }else{
         ErrorMsg(psp->filename, psp->tokenlineno,
@@ -2618,7 +2626,7 @@ static void preprocess_input(char *z){
   for(i=0; z[i]; i++){
     if( z[i]=='\n' ) lineno++;
     if( z[i]!='%' || (i>0 && z[i-1]!='\n') ) continue;
-    if( strncmp(&z[i],"%endif",6)==0 && isspace(z[i+6]) ){
+    if( strncmp(&z[i],"%endif",6)==0 && ISSPACE(z[i+6]) ){
       if( exclude ){
         exclude--;
         if( exclude==0 ){
@@ -2626,13 +2634,13 @@ static void preprocess_input(char *z){
         }
       }
       for(j=i; z[j] && z[j]!='\n'; j++) z[j] = ' ';
-    }else if( (strncmp(&z[i],"%ifdef",6)==0 && isspace(z[i+6]))
-          || (strncmp(&z[i],"%ifndef",7)==0 && isspace(z[i+7])) ){
+    }else if( (strncmp(&z[i],"%ifdef",6)==0 && ISSPACE(z[i+6]))
+          || (strncmp(&z[i],"%ifndef",7)==0 && ISSPACE(z[i+7])) ){
       if( exclude ){
         exclude++;
       }else{
-        for(j=i+7; isspace(z[j]); j++){}
-        for(n=0; z[j+n] && !isspace(z[j+n]); n++){}
+        for(j=i+7; ISSPACE(z[j]); j++){}
+        for(n=0; z[j+n] && !ISSPACE(z[j+n]); n++){}
         exclude = 1;
         for(k=0; k<nDefine; k++){
           if( strncmp(azDefine[k],&z[j],n)==0 && lemonStrlen(azDefine[k])==n ){
@@ -2712,7 +2720,7 @@ void Parse(struct lemon *gp)
   lineno = 1;
   for(cp=filebuf; (c= *cp)!=0; ){
     if( c=='\n' ) lineno++;              /* Keep track of the line number */
-    if( isspace(c) ){ cp++; continue; }  /* Skip all white space */
+    if( ISSPACE(c) ){ cp++; continue; }  /* Skip all white space */
     if( c=='/' && cp[1]=='/' ){          /* Skip C++ style comments */
       cp+=2;
       while( (c= *cp)!=0 && c!='\n' ) cp++;
@@ -2782,15 +2790,15 @@ void Parse(struct lemon *gp)
       }else{
         nextcp = cp+1;
       }
-    }else if( isalnum(c) ){          /* Identifiers */
-      while( (c= *cp)!=0 && (isalnum(c) || c=='_') ) cp++;
+    }else if( ISALNUM(c) ){          /* Identifiers */
+      while( (c= *cp)!=0 && (ISALNUM(c) || c=='_') ) cp++;
       nextcp = cp;
     }else if( c==':' && cp[1]==':' && cp[2]=='=' ){ /* The operator "::=" */
       cp += 3;
       nextcp = cp;
-    }else if( (c=='/' || c=='|') && isalpha(cp[1]) ){
+    }else if( (c=='/' || c=='|') && ISALPHA(cp[1]) ){
       cp += 2;
-      while( (c = *cp)!=0 && (isalnum(c) || c=='_') ) cp++;
+      while( (c = *cp)!=0 && (ISALNUM(c) || c=='_') ) cp++;
       nextcp = cp;
     }else{                          /* All other (one character) operators */
       cp++;
@@ -3241,7 +3249,7 @@ PRIVATE void tplt_xfer(char *name, FILE *in, FILE *out, int *lineno)
     if( name ){
       for(i=0; line[i]; i++){
         if( line[i]=='P' && strncmp(&line[i],"Parse",5)==0
-          && (i==0 || !isalpha(line[i-1]))
+          && (i==0 || !ISALPHA(line[i-1]))
         ){
           if( i>iStart ) fprintf(out,"%.*s",i-iStart,&line[iStart]);
           fprintf(out,"%s",name);
@@ -3478,9 +3486,9 @@ PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){
 
   /* This const cast is wrong but harmless, if we're careful. */
   for(cp=(char *)rp->code; *cp; cp++){
-    if( isalpha(*cp) && (cp==rp->code || (!isalnum(cp[-1]) && cp[-1]!='_')) ){
+    if( ISALPHA(*cp) && (cp==rp->code || (!ISALNUM(cp[-1]) && cp[-1]!='_')) ){
       char saved;
-      for(xp= &cp[1]; isalnum(*xp) || *xp=='_'; xp++);
+      for(xp= &cp[1]; ISALNUM(*xp) || *xp=='_'; xp++);
       saved = *xp;
       *xp = 0;
       if( rp->lhsalias && strcmp(cp,rp->lhsalias)==0 ){
@@ -3645,9 +3653,9 @@ void print_stack_union(
     cp = sp->datatype;
     if( cp==0 ) cp = lemp->vartype;
     j = 0;
-    while( isspace(*cp) ) cp++;
+    while( ISSPACE(*cp) ) cp++;
     while( *cp ) stddt[j++] = *cp++;
-    while( j>0 && isspace(stddt[j-1]) ) j--;
+    while( j>0 && ISSPACE(stddt[j-1]) ) j--;
     stddt[j] = 0;
     if( lemp->tokentype && strcmp(stddt, lemp->tokentype)==0 ){
       sp->dtnum = 0;
@@ -3857,8 +3865,8 @@ void ReportTable(
   name = lemp->name ? lemp->name : "Parse";
   if( lemp->arg && lemp->arg[0] ){
     i = lemonStrlen(lemp->arg);
-    while( i>=1 && isspace(lemp->arg[i-1]) ) i--;
-    while( i>=1 && (isalnum(lemp->arg[i-1]) || lemp->arg[i-1]=='_') ) i--;
+    while( i>=1 && ISSPACE(lemp->arg[i-1]) ) i--;
+    while( i>=1 && (ISALNUM(lemp->arg[i-1]) || lemp->arg[i-1]=='_') ) i--;
     fprintf(out,"#define %sARG_SDECL %s;\n",name,lemp->arg);  lineno++;
     fprintf(out,"#define %sARG_PDECL ,%s\n",name,lemp->arg);  lineno++;
     fprintf(out,"#define %sARG_FETCH %s = yypParser->%s\n",
@@ -4666,7 +4674,7 @@ struct symbol *Symbol_new(const char *x)
     sp = (struct symbol *)calloc(1, sizeof(struct symbol) );
     MemoryCheck(sp);
     sp->name = Strsafe(x);
-    sp->type = isupper(*x) ? TERMINAL : NONTERMINAL;
+    sp->type = ISUPPER(*x) ? TERMINAL : NONTERMINAL;
     sp->rule = 0;
     sp->fallback = 0;
     sp->prec = -1;
index 892cacd5520f10e638ed60783dab51ba2ca16ceb..38b92f1f7d0c01fae44c84e700f8ca142f8fc9a5 100644 (file)
@@ -3,6 +3,8 @@
 */
 #include <stdio.h>
 #include <ctype.h>
+#define ISDIGIT(X) isdigit((unsigned char)(X))
+#define ISPRINT(X) isprint((unsigned char)(X))
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
@@ -217,7 +219,7 @@ static unsigned char *print_byte_range(
       if( i+j>nByte ){
         fprintf(stdout, " ");
       }else{
-        fprintf(stdout,"%c", isprint(aData[i+j]) ? aData[i+j] : '.');
+        fprintf(stdout,"%c", ISPRINT(aData[i+j]) ? aData[i+j] : '.');
       }
     }
     fprintf(stdout,"\n");
@@ -600,7 +602,7 @@ static void decodeCell(
          }else{
            zConst[0] = '\'';
            for(ii=1, jj=0; jj<szCol[i] && ii<24; jj++, ii++){
-             zConst[ii] = isprint(pData[jj]) ? pData[jj] : '.';
+             zConst[ii] = ISPRINT(pData[jj]) ? pData[jj] : '.';
            }
            zConst[ii] = 0;
          }
@@ -653,11 +655,11 @@ static void decode_btree_page(
       case 'c': showCellContent = 1;  break;
       case 'm': showMap = 1;          break;
       case 'd': {
-        if( !isdigit(zArgs[1]) ){
+        if( !ISDIGIT(zArgs[1]) ){
           cellToDecode = -1;
         }else{
           cellToDecode = 0;
-          while( isdigit(zArgs[1]) ){
+          while( ISDIGIT(zArgs[1]) ){
             zArgs++;
             cellToDecode = cellToDecode*10 + zArgs[0] - '0';
           }
@@ -1123,7 +1125,7 @@ int main(int argc, char **argv){
         usage(zPrg);
         continue;
       }
-      if( !isdigit(azArg[i][0]) ){
+      if( !ISDIGIT(azArg[i][0]) ){
         fprintf(stderr, "%s: unknown option: [%s]\n", zPrg, azArg[i]);
         continue;
       }
index 215962919ed0798f3b28f9116d78106410fbedd6..c7f9b10fbc2eff34341ff57a1cb1a90e29699069 100644 (file)
@@ -9,6 +9,8 @@
 #include <ctype.h>
 #include "sqlite3.h"
 
+#define ISPRINT(X)  isprint((unsigned char)(X))
+
 typedef sqlite3_int64 i64;   /* 64-bit signed integer type */
 
 
@@ -131,7 +133,7 @@ int main(int argc, char **argv){
         printf("%s\"", zSep);
         for(j=0; j<sz; j++){
           char c = (char)aSample[y+j];
-          if( isprint(c) ){
+          if( ISPRINT(c) ){
             if( c=='"' || c=='\\' ) putchar('\\');
             putchar(c);
           }else if( c=='\n' ){
index 35810c66a96ff875612068bf179995f43279ff77..33cc21896b4e2a3c9b615b5e63953ae52e39d83b 100644 (file)
@@ -7,6 +7,9 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
+#define ISDIGIT(X)  isdigit((unsigned char)(X))
+#define ISPRINT(X)  isprint((unsigned char)(X))
+
 #if !defined(_MSC_VER)
 #include <unistd.h>
 #else
@@ -159,7 +162,7 @@ static void print_byte_range(
       if( i+j>nByte ){
         fprintf(stdout, " ");
       }else{
-        fprintf(stdout,"%c", isprint(aData[i+j]) ? aData[i+j] : '.');
+        fprintf(stdout,"%c", ISPRINT(aData[i+j]) ? aData[i+j] : '.');
       }
     }
     fprintf(stdout,"\n");
@@ -550,7 +553,7 @@ int main(int argc, char **argv){
         print_wal_header(0);
         continue;
       }
-      if( !isdigit(argv[i][0]) ){
+      if( !ISDIGIT(argv[i][0]) ){
         fprintf(stderr, "%s: unknown option: [%s]\n", argv[0], argv[i]);
         continue;
       }
index e81f1a6dba0e067fbd84677ad6ba7fa5a5c4ec66..993cc1926840bd3b68fc0ff12ac41d769d0f9e45 100644 (file)
@@ -29,6 +29,8 @@
 #include <unistd.h>
 #include "sqlite3.h"
 
+#define ISSPACE(X)  isspace((unsigned char)(X))
+
 /* 
 ** hwtime.h contains inline assembler code for implementing 
 ** high-performance timing routines.
@@ -140,7 +142,7 @@ int main(int argc, char **argv){
       zSql[j+1] = c;
       if( isComplete ){
         zSql[j] = 0;
-        while( i<j && isspace(zSql[i]) ){ i++; }
+        while( i<j && ISSPACE(zSql[i]) ){ i++; }
         if( i<j ){
           nStmt++;
           nByte += j-i;
index f0cb544c81e99b879c7c529c0642271733de7ada..ceaeca0f167bb4fbabf89f3a47e08d12766f520a 100644 (file)
@@ -29,6 +29,8 @@
 #include <stdarg.h>
 #include "sqlite3.h"
 
+#define ISSPACE(X)  isspace((unsigned char)(X))
+
 #include "test_osinst.c"
 
 /*
@@ -197,7 +199,7 @@ int main(int argc, char **argv){
       zSql[j+1] = c;
       if( isComplete ){
         zSql[j] = 0;
-        while( i<j && isspace(zSql[i]) ){ i++; }
+        while( i<j && ISSPACE(zSql[i]) ){ i++; }
         if( i<j ){
           prepareAndRun(pInstVfs, db, &zSql[i]);
         }