summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1997-08-26 20:39:54 (GMT)
committerGuido van Rossum <guido@python.org>1997-08-26 20:39:54 (GMT)
commite20aef574a1373139ae17c6c4a02d83fe5668164 (patch)
tree9212d7b645e5a2e1b77d6ff5c68673b8515d3a01
parentab0abdcef8dac933d838cb584dd4b728c2474b1e (diff)
downloadcpython-e20aef574a1373139ae17c6c4a02d83fe5668164.zip
cpython-e20aef574a1373139ae17c6c4a02d83fe5668164.tar.gz
cpython-e20aef574a1373139ae17c6c4a02d83fe5668164.tar.bz2
Ignore whitespace between formats (not internal to a count+format).
-rw-r--r--Doc/lib/libstruct.tex3
-rw-r--r--Doc/libstruct.tex3
-rw-r--r--Modules/structmodule.c7
3 files changed, 13 insertions, 0 deletions
diff --git a/Doc/lib/libstruct.tex b/Doc/lib/libstruct.tex
index d57a2b7..af2e6d2 100644
--- a/Doc/lib/libstruct.tex
+++ b/Doc/lib/libstruct.tex
@@ -61,6 +61,9 @@ and Python values should be obvious given their types:
A format character may be preceded by an integral repeat count; e.g.\
the format string \code{'4h'} means exactly the same as \code{'hhhh'}.
+Whitespace characters between formats are ignored; a count and its
+format must not contain whitespace though.
+
For the \code{'s'} format character, the count is interpreted as the
size of the string, not a repeat count like for the other format
characters; e.g. \code{'10s'} means a single 10-byte string, while
diff --git a/Doc/libstruct.tex b/Doc/libstruct.tex
index d57a2b7..af2e6d2 100644
--- a/Doc/libstruct.tex
+++ b/Doc/libstruct.tex
@@ -61,6 +61,9 @@ and Python values should be obvious given their types:
A format character may be preceded by an integral repeat count; e.g.\
the format string \code{'4h'} means exactly the same as \code{'hhhh'}.
+Whitespace characters between formats are ignored; a count and its
+format must not contain whitespace though.
+
For the \code{'s'} format character, the count is interpreted as the
size of the string, not a repeat count like for the other format
characters; e.g. \code{'10s'} means a single 10-byte string, while
diff --git a/Modules/structmodule.c b/Modules/structmodule.c
index dbba9b4..54ca631 100644
--- a/Modules/structmodule.c
+++ b/Modules/structmodule.c
@@ -38,6 +38,7 @@ PERFORMANCE OF THIS SOFTWARE.
#include "mymath.h"
#include <limits.h>
+#include <ctype.h>
/* Exception */
@@ -981,6 +982,8 @@ calcsize(fmt, f)
s = fmt;
size = 0;
while ((c = *s++) != '\0') {
+ if (isspace(c))
+ continue;
if ('0' <= c && c <= '9') {
num = c - '0';
while ('0' <= (c = *s++) && c <= '9') {
@@ -1075,6 +1078,8 @@ struct_pack(self, args)
res = restart = PyString_AsString(result);
while ((c = *s++) != '\0') {
+ if (isspace(c))
+ continue;
if ('0' <= c && c <= '9') {
num = c - '0';
while ('0' <= (c = *s++) && c <= '9')
@@ -1179,6 +1184,8 @@ struct_unpack(self, args)
str = start;
s = fmt;
while ((c = *s++) != '\0') {
+ if (isspace(c))
+ continue;
if ('0' <= c && c <= '9') {
num = c - '0';
while ('0' <= (c = *s++) && c <= '9')