From 543c5d0de2f3aa649ab0e35df12b8777d7a2b290 Mon Sep 17 00:00:00 2001
From: Patrik Lundin <patrik.lundin.swe@gmail.com>
Date: Sun, 25 Nov 2012 03:24:49 +0100
Subject: [PATCH] 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.
---
 service | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/service b/service
index 355eb2be7c1..3889e4fefe9 100644
--- a/service
+++ b/service
@@ -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.