rclinfo: handle more malformed input
This commit is contained in:
parent
9246d4e1bd
commit
ab2147b5eb
@ -101,33 +101,47 @@ class InfoSimpleSplitter:
|
|||||||
listout = []
|
listout = []
|
||||||
node_dict = {}
|
node_dict = {}
|
||||||
node = ""
|
node = ""
|
||||||
|
infofile = os.path.basename(filename)
|
||||||
|
nodename = "Unknown"
|
||||||
|
|
||||||
for line in fin:
|
for line in fin:
|
||||||
|
|
||||||
|
# Top of node ?
|
||||||
# It sometimes happens that info --subnodes produces a Node line
|
# It sometimes happens that info --subnodes produces a Node line
|
||||||
# beginning with spaces (it's a bug probably, only seen it once)
|
# beginning with spaces (it's a bug probably, only seen it once)
|
||||||
|
# Maybe we'd actually be better off directly interpreting the
|
||||||
|
# info files
|
||||||
if gotblankline and line.lstrip(" ").startswith("File: "):
|
if gotblankline and line.lstrip(" ").startswith("File: "):
|
||||||
if index != 0:
|
prevnodename = nodename
|
||||||
listout.append((nodename, node))
|
|
||||||
line = line.rstrip("\n\r")
|
line = line.rstrip("\n\r")
|
||||||
pairs = line.split(",")
|
pairs = line.split(",")
|
||||||
up = "Top"
|
up = "Top"
|
||||||
nodename = str(index)
|
nodename = str(index)
|
||||||
infofile = os.path.basename(filename)
|
try:
|
||||||
for pair in pairs:
|
for pair in pairs:
|
||||||
name, value = pair.split(':')
|
name, value = pair.split(':')
|
||||||
name = name.strip(" ")
|
name = name.strip(" ")
|
||||||
value = value.strip(" ")
|
value = value.strip(" ")
|
||||||
if name == "Node":
|
if name == "Node":
|
||||||
nodename = value
|
nodename = value
|
||||||
if name == "Up":
|
if name == "Up":
|
||||||
up = value
|
up = value
|
||||||
if name == "File":
|
if name == "File":
|
||||||
infofile = value
|
infofile = value
|
||||||
|
except:
|
||||||
|
print >> sys.stderr, "rclinfo: bad line in %s: [%s]\n" % \
|
||||||
|
(infofile, line)
|
||||||
|
nodename = prevnodename
|
||||||
|
node += line
|
||||||
|
continue
|
||||||
|
|
||||||
if node_dict.has_key(nodename):
|
if node_dict.has_key(nodename):
|
||||||
print >> sys.stderr, "Info file", filename, \
|
print >> sys.stderr, "Info file", filename, \
|
||||||
"Dup node: ", nodename
|
"Dup node: ", nodename
|
||||||
node_dict[nodename] = up
|
node_dict[nodename] = up
|
||||||
|
|
||||||
|
if index != 0:
|
||||||
|
listout.append((prevnodename, node))
|
||||||
node = ""
|
node = ""
|
||||||
index += 1
|
index += 1
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user