Use shlex for rc.conf parsing.
This makes the line parsing a lot more robust (and easier to read). Code supplied by @dhozac, thanks! Remove re import because this is not used anywhere.
This commit is contained in:
parent
fde00327b0
commit
d4af9e4c5c
1 changed files with 5 additions and 6 deletions
|
@ -72,8 +72,8 @@ examples:
|
|||
|
||||
import platform
|
||||
import os
|
||||
import re
|
||||
import tempfile
|
||||
import shlex
|
||||
|
||||
class Service(object):
|
||||
"""
|
||||
|
@ -209,11 +209,10 @@ class Service(object):
|
|||
|
||||
# Build a list containing the possibly modified file.
|
||||
for rcline in RCFILE:
|
||||
# Only parse non-comment and non-empty lines.
|
||||
if not re.search('^(#.*)?$', rcline):
|
||||
key = rcline.split('=')[0]
|
||||
# We need to strip any newline and " signs from the value.
|
||||
value = rcline.split('=')[1].strip('\n"')
|
||||
# Parse line removing whitespaces, quotes, etc.
|
||||
rcarray = shlex.split(rcline, comments=True)
|
||||
if len(rcarray) >= 1 and '=' in rcarray[0]:
|
||||
(key, value) = rcarray[0].split("=", 1)
|
||||
if key == self.rcconf_key:
|
||||
if value == self.rcconf_value:
|
||||
# Since the proper entry already exists we can stop iterating.
|
||||
|
|
Loading…
Reference in a new issue