Switch to unified view

a/mpd2src/scmakempdsender b/mpd2src/scmakempdsender
...
...
49
externalvolume = False
49
externalvolume = False
50
# Upmpdcli friendly-name. Used to compute a Uuid in conjunction with
50
# Upmpdcli friendly-name. Used to compute a Uuid in conjunction with
51
# the node name
51
# the node name
52
upmpdcli_fname = "UpMpd"
52
upmpdcli_fname = "UpMpd"
53
53
54
def logerr(s):
55
    print("%s" % s, file=sys.stderr)
56
    
54
args = sys.argv[1:]
57
args = sys.argv[1:]
55
opts, args = getopt.getopt(args, "hup:f:e")
58
opts, args = getopt.getopt(args, "hup:f:e")
56
for opt, arg in opts:
59
for opt, arg in opts:
57
    if opt in ['-h']:
60
    if opt in ['-h']:
58
        usage(sys.stdout)
61
        usage(sys.stdout)
...
...
63
    elif opt in ['-u']:
66
    elif opt in ['-u']:
64
        upmpdclitoo = True
67
        upmpdclitoo = True
65
    elif opt in ['-e']:
68
    elif opt in ['-e']:
66
        externalvolume = True
69
        externalvolume = True
67
    else:
70
    else:
68
        print("unknown option %s\n"%opt, file=sys.stderr)
71
        logerr("unknown option %s\n" % opt)
69
        usage(sys.stderr)
72
        usage(sys.stderr)
70
73
71
# Temp fifo name and temporary file for mpd configuration
74
# Temp fifo name and temporary file for mpd configuration
72
mpdfifo = tempfile.mktemp(suffix=".fifo")
75
mpdfifo = tempfile.mktemp(suffix=".fifo")
73
mpdconf = tempfile.NamedTemporaryFile()
76
mpdconf = tempfile.NamedTemporaryFile()
...
...
79
sender_name = "%s UxSender" % upmpdcli_fname
82
sender_name = "%s UxSender" % upmpdcli_fname
80
83
81
mpdproc = None
84
mpdproc = None
82
senderproc = None
85
senderproc = None
83
upmpdproc = None
86
upmpdproc = None
87
88
parentpid = os.getppid()
84
89
85
def cleanup(xval):
90
def cleanup(xval):
86
    # Clean up
91
    # Clean up
87
    try:
92
    try:
88
        senderproc.terminate()
93
        senderproc.terminate()
...
...
141
# Start mpd
146
# Start mpd
142
try:
147
try:
143
    mpdproc = subprocess.Popen(["mpd", "--no-daemon", "--stderr", mpdconf.name],
148
    mpdproc = subprocess.Popen(["mpd", "--no-daemon", "--stderr", mpdconf.name],
144
                               bufsize = -1)
149
                               bufsize = -1)
145
except Exception as err:
150
except Exception as err:
146
    print("Can't start mpd: %s"%(err,), file=sys.stderr)
151
    logerr("Can't start mpd: %s" % err)
147
    cleanup(1)
152
    cleanup(1)
148
153
149
# Wait for the fifo to appear
154
# Wait for the fifo to appear
150
while True:
155
while True:
151
    if os.path.exists(mpdfifo):
156
    if os.path.exists(mpdfifo):
...
...
160
                                   "-A", "44100:16:2:1",
165
                                   "-A", "44100:16:2:1",
161
                                   "-u", sender_udn, "-n", sender_name],
166
                                   "-u", sender_udn, "-n", sender_name],
162
                                  stdout=subprocess.PIPE,
167
                                  stdout=subprocess.PIPE,
163
                                  bufsize = -1)
168
                                  bufsize = -1)
164
except Exception as err:
169
except Exception as err:
165
    print("Can't start %s: %s"%(uxsender, err), file=sys.stderr)
170
    logerr("Can't start %s: %s" % (uxsender, err))
166
    cleanup(1)
171
    cleanup(1)
167
172
168
# Get the Uri and Metadata values from the sender. These get written to stdout
173
# Get the Uri and Metadata values from the sender. These get written to stdout
169
urimeta = senderproc.stdout.readline()
174
urimeta = senderproc.stdout.readline()
170
175
...
...
176
    try:
181
    try:
177
        upmpdproc = subprocess.Popen(["upmpdcli", "-c", "", "-h", "localhost",
182
        upmpdproc = subprocess.Popen(["upmpdcli", "-c", "", "-h", "localhost",
178
                                      "-p", "%d"%mpdport,
183
                                      "-p", "%d"%mpdport,
179
                                      "-f", upname], bufsize = -1)
184
                                      "-f", upname], bufsize = -1)
180
    except Exception as err:
185
    except Exception as err:
181
        print("Can't start upmpdcli: %s"%(err,), file=sys.stderr)
186
        logerr("Can't start upmpdcli: %s" % err)
182
        cleanup(1)
187
        cleanup(1)
183
188
184
# Tell the world we're set
189
# Tell the world we're set
185
print("Ok %d %s" % (mpdport, urimeta))
190
print("Ok %d %s" % (mpdport, urimeta))
186
sys.stdout.flush()
191
sys.stdout.flush()
187
192
188
# Wait for either process. 
193
# Wait for either process, also checking that our parent is not dead
189
while True:
194
while True:
190
    if mpdproc.poll() is not None or senderproc.poll() is not None:
195
    if mpdproc.poll() is not None or senderproc.poll() is not None:
191
        break
196
        break
197
    try:
198
        os.kill(parentpid, 0)
199
    except:
200
        break
192
    time.sleep(0.5)
201
    time.sleep(0.5)
193
202
194
time.sleep(1)
203
time.sleep(1)
195
cleanup(0)
204
cleanup(0)