Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
d444b270
Commit
d444b270
authored
Feb 23, 2013
by
Petri Lehtinen
Browse files
Options
Browse Files
Download
Plain Diff
Issue #16121: Fix line number accounting in shlex
parents
b3fd8575
80975cc7
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
27 additions
and
1 deletion
+27
-1
Lib/shlex.py
Lib/shlex.py
+15
-1
Lib/test/test_shlex.py
Lib/test/test_shlex.py
+8
-0
Misc/ACKS
Misc/ACKS
+1
-0
Misc/NEWS
Misc/NEWS
+3
-0
No files found.
Lib/shlex.py
View file @
d444b270
...
...
@@ -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
=
' '
...
...
Lib/test/test_shlex.py
View file @
d444b270
...
...
@@ -189,6 +189,14 @@ class ShlexTest(unittest.TestCase):
self
.
assertEqual
(
shlex
.
quote
(
"test%s'name'"
%
u
),
"'test%s'
\
"
'
\
"
'name'
\
"
'
\
"
''"
%
u
)
def
testLineNumbers
(
self
):
data
=
'"a
\
n
b
\
n
c"
\
n
"x"
\
n
"y"'
for
is_posix
in
(
True
,
False
):
s
=
shlex
.
shlex
(
data
,
posix
=
is_posix
)
for
i
in
(
1
,
4
,
5
):
s
.
read_token
()
self
.
assertEqual
(
s
.
lineno
,
i
)
# Allow this test to be used with old shlex.py
if
not
getattr
(
shlex
,
"split"
,
None
):
...
...
Misc/ACKS
View file @
d444b270
...
...
@@ -862,6 +862,7 @@ Jonathan Niehof
Gustavo Niemeyer
Oscar Nierstrasz
Hrvoje Niksic
Birk Nilson
Gregory Nofi
Jesse Noller
Bill Noon
...
...
Misc/NEWS
View file @
d444b270
...
...
@@ -260,6 +260,9 @@ Core and Builtins
Library
-------
-
Issue
#
16121
:
Fix
line
number
accounting
in
shlex
.
Patch
by
Birk
Nilson
.
-
Issue
#
14720
:
sqlite3
:
Convert
datetime
microseconds
correctly
.
Patch
by
Lowe
Thiderman
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment