diff options
author | Petri Lehtinen <petri@digip.org> | 2013-02-23 21:09:51 (GMT) |
---|---|---|
committer | Petri Lehtinen <petri@digip.org> | 2013-02-23 21:09:51 (GMT) |
commit | 6d61eaa0d0d89b0e035ce75d810280515befc17a (patch) | |
tree | 56e10b05f3fc2465b1dfb6a6b5ac4fc3b93b2f1c /Lib/shlex.py | |
parent | 7de72ad8a02760e0aa385e9024d6c20d7b1fb3de (diff) | |
parent | 7a05113ccf76b077b138d40794e52f6881a57c4c (diff) | |
download | cpython-6d61eaa0d0d89b0e035ce75d810280515befc17a.zip cpython-6d61eaa0d0d89b0e035ce75d810280515befc17a.tar.gz cpython-6d61eaa0d0d89b0e035ce75d810280515befc17a.tar.bz2 |
Issue #16121: Fix line number accounting in shlex
Diffstat (limited to 'Lib/shlex.py')
-rw-r--r-- | Lib/shlex.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/Lib/shlex.py b/Lib/shlex.py index 69f3b45..05e3fbd 100644 --- a/Lib/shlex.py +++ b/Lib/shlex.py @@ -45,6 +45,7 @@ class shlex: self.state = ' ' self.pushback = deque() self.lineno = 1 + self._lines_found = 0 self.debug = 0 self.token = '' self.filestack = deque() @@ -115,12 +116,23 @@ class shlex: return raw def read_token(self): + if self._lines_found: + self.lineno += self._lines_found + self._lines_found = 0 + + i = 0 quoted = False escapedstate = ' ' while True: + i += 1 nextchar = self.instream.read(1) if nextchar == '\n': - self.lineno = self.lineno + 1 + # In case newline is the first character increment lineno + if i == 1: + self.lineno += 1 + else: + self._lines_found += 1 + if self.debug >= 3: print("shlex: in state", repr(self.state), \ "I see character:", repr(nextchar)) @@ -140,6 +152,7 @@ class shlex: continue elif nextchar in self.commenters: self.instream.readline() + # Not considered a token so incrementing lineno directly self.lineno = self.lineno + 1 elif self.posix and nextchar in self.escape: escapedstate = 'a' @@ -207,6 +220,7 @@ class shlex: continue elif nextchar in self.commenters: self.instream.readline() + # Not considered a token so incrementing lineno directly self.lineno = self.lineno + 1 if self.posix: self.state = ' ' |