Switch to side-by-side view

--- a/mpd2src/scmakempdsender
+++ b/mpd2src/scmakempdsender
@@ -51,6 +51,9 @@
 # the node name
 upmpdcli_fname = "UpMpd"
 
+def logerr(s):
+    print("%s" % s, file=sys.stderr)
+    
 args = sys.argv[1:]
 opts, args = getopt.getopt(args, "hup:f:e")
 for opt, arg in opts:
@@ -65,7 +68,7 @@
     elif opt in ['-e']:
         externalvolume = True
     else:
-        print("unknown option %s\n"%opt, file=sys.stderr)
+        logerr("unknown option %s\n" % opt)
         usage(sys.stderr)
 
 # Temp fifo name and temporary file for mpd configuration
@@ -81,6 +84,8 @@
 mpdproc = None
 senderproc = None
 upmpdproc = None
+
+parentpid = os.getppid()
 
 def cleanup(xval):
     # Clean up
@@ -143,7 +148,7 @@
     mpdproc = subprocess.Popen(["mpd", "--no-daemon", "--stderr", mpdconf.name],
                                bufsize = -1)
 except Exception as err:
-    print("Can't start mpd: %s"%(err,), file=sys.stderr)
+    logerr("Can't start mpd: %s" % err)
     cleanup(1)
 
 # Wait for the fifo to appear
@@ -162,7 +167,7 @@
                                   stdout=subprocess.PIPE,
                                   bufsize = -1)
 except Exception as err:
-    print("Can't start %s: %s"%(uxsender, err), file=sys.stderr)
+    logerr("Can't start %s: %s" % (uxsender, err))
     cleanup(1)
 
 # Get the Uri and Metadata values from the sender. These get written to stdout
@@ -178,17 +183,21 @@
                                       "-p", "%d"%mpdport,
                                       "-f", upname], bufsize = -1)
     except Exception as err:
-        print("Can't start upmpdcli: %s"%(err,), file=sys.stderr)
+        logerr("Can't start upmpdcli: %s" % err)
         cleanup(1)
 
 # Tell the world we're set
 print("Ok %d %s" % (mpdport, urimeta))
 sys.stdout.flush()
 
-# Wait for either process. 
+# Wait for either process, also checking that our parent is not dead
 while True:
     if mpdproc.poll() is not None or senderproc.poll() is not None:
         break
+    try:
+        os.kill(parentpid, 0)
+    except:
+        break
     time.sleep(0.5)
 
 time.sleep(1)