diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-05-31 09:16:52 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2024-05-31 09:16:52 (GMT) |
| commit | dab97b07424213f14d3122ba1936e388a97de5e4 (patch) | |
| tree | 3184ee1f27ba57151b547c30167a47b33a08f4ff /generic/tclScan.c | |
| parent | 67c2088e87cd31193d5f8844338e2a25747a31b1 (diff) | |
| download | tcl-dab97b07424213f14d3122ba1936e388a97de5e4.zip tcl-dab97b07424213f14d3122ba1936e388a97de5e4.tar.gz tcl-dab97b07424213f14d3122ba1936e388a97de5e4.tar.bz2 | |
Make a start with new TIP implementation, handling '%d' for 'format' and '%d'/'L'/'z'/'t'/'q'/'j' for 'scan'
Diffstat (limited to 'generic/tclScan.c')
| -rw-r--r-- | generic/tclScan.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/generic/tclScan.c b/generic/tclScan.c index cccdd7a..ca27f77 100644 --- a/generic/tclScan.c +++ b/generic/tclScan.c @@ -379,6 +379,17 @@ ValidateFormat( */ switch (ch) { + case 'z': + case 't': + if (sizeof(void *) > sizeof(int)) { + flags |= SCAN_LONGER; + } + format += TclUtfToUniChar(format, &ch); + break; + case 'L': + flags |= SCAN_BIG; + format += TclUtfToUniChar(format, &ch); + break; case 'l': if (*format == 'l') { flags |= SCAN_BIG; @@ -387,7 +398,8 @@ ValidateFormat( break; } /* FALLTHRU */ - case 'L': + case 'j': + case 'q': flags |= SCAN_LONGER; /* FALLTHRU */ case 'h': @@ -986,11 +998,11 @@ Tcl_ScanObjCmd( } } } else { - if (TclGetLongFromObj(NULL, objPtr, &value) != TCL_OK) { + if (TclGetIntFromObj(NULL, objPtr, &value) != TCL_OK) { if (TclGetString(objPtr)[0] == '-') { - value = LONG_MIN; + value = INT_MIN; } else { - value = LONG_MAX; + value = INT_MAX; } } if ((flags & SCAN_UNSIGNED) && (value < 0)) { |
