summaryrefslogtreecommitdiffstats
path: root/generic/tclScan.c
diff options
context:
space:
mode:
authorjan.nijtmans <nijtmans@users.sourceforge.net>2024-05-31 09:16:52 (GMT)
committerjan.nijtmans <nijtmans@users.sourceforge.net>2024-05-31 09:16:52 (GMT)
commitdab97b07424213f14d3122ba1936e388a97de5e4 (patch)
tree3184ee1f27ba57151b547c30167a47b33a08f4ff /generic/tclScan.c
parent67c2088e87cd31193d5f8844338e2a25747a31b1 (diff)
downloadtcl-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.c20
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)) {