vty.py: Fix endl removed when pkt buffer content ends exactly on a newline char
As a result, osmo_interact_vty.py was printing incorrect output:
"""
- <param name='shutdown' doc='Remove the APN from administrative shut-down' />
- </params>
+ <param name='shutdown' doc='Remove the APN from administrative shut-down' /> </params
"""
Change-Id: Ib1dbf39db1b27331ea4c39051e550a87780d9f76
diff --git a/osmopy/osmo_interact/vty.py b/osmopy/osmo_interact/vty.py
index e66ed22..f4b9aff 100755
--- a/osmopy/osmo_interact/vty.py
+++ b/osmopy/osmo_interact/vty.py
@@ -116,9 +116,16 @@
# So we need to jump through hoops to not separate 'abc\n\rdef' as
# [ 'abc', '', 'def' ]; but also not to convert '\r\n\r\n' to '\r\n\n' ('\r{\r\n}\n')
# Simplest is to just drop all the '\r' and only care about the '\n'.
- lines = last_line.replace('\r', '').splitlines()
- received_lines.extend(lines[:-1])
- last_line = lines[-1]
+ last_line = last_line.replace('\r', '')
+ lines = last_line.splitlines()
+ if last_line.endswith('\n'):
+ received_lines.extend(lines)
+ last_line = ""
+ else:
+ # if pkt buffer ends in the middle of a line, we need to keep
+ # last non-finished line:
+ received_lines.extend(lines[:-1])
+ last_line = lines[-1]
match = self.re_prompt.match(last_line)
if not match: