diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-11-16 10:53:58 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2020-11-16 10:53:58 (GMT) |
| commit | a3a070b13cb5312958d8193be0e406362776a528 (patch) | |
| tree | 22ad3b847ba97bce3f54cbd223fcc8354a855510 /generic/tclBinary.c | |
| parent | dac1c2f4f24933af8d0514068a93e9808f74f886 (diff) | |
| parent | d9737c5991ba61c51f807ee3a63dd19d59ca9b9f (diff) | |
| download | tcl-a3a070b13cb5312958d8193be0e406362776a528.zip tcl-a3a070b13cb5312958d8193be0e406362776a528.tar.gz tcl-a3a070b13cb5312958d8193be0e406362776a528.tar.bz2 | |
TIP #586 implementation: C String Parsing Support for binary scan
Diffstat (limited to 'generic/tclBinary.c')
| -rw-r--r-- | generic/tclBinary.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/generic/tclBinary.c b/generic/tclBinary.c index f53c707..8a3541b 100644 --- a/generic/tclBinary.c +++ b/generic/tclBinary.c @@ -1518,7 +1518,8 @@ BinaryScanCmd( } switch (cmd) { case 'a': - case 'A': { + case 'A': + case 'C': { unsigned char *src; if (arg >= objc) { @@ -1540,10 +1541,18 @@ BinaryScanCmd( size = count; /* - * Trim trailing nulls and spaces, if necessary. + * Apply C string semantics or trim trailing + * nulls and spaces, if necessary. */ - if (cmd == 'A') { + if (cmd == 'C') { + for (i = 0; i < size; i++) { + if (src[i] == '\0') { + size = i; + break; + } + } + } else if (cmd == 'A') { while (size > 0) { if (src[size - 1] != '\0' && src[size - 1] != ' ') { break; |
