From 2009e44d9d8a63a6956cc75f610bd708fad67404 Mon Sep 17 00:00:00 2001 From: Alexandre Ratchov Date: Tue, 15 Dec 2015 12:49:31 +0100 Subject: [PATCH] don't require -U to precede -L --- sndiod/sndiod.1 | 3 --- sndiod/sndiod.c | 13 ++++++++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/sndiod/sndiod.1 b/sndiod/sndiod.1 index 4f1c035..ca0e84f 100644 --- a/sndiod/sndiod.1 +++ b/sndiod/sndiod.1 @@ -291,9 +291,6 @@ used in .Xr sndio 7 device names. The default is 0. -The unit number must be set before any -.Fl L -is used. .It Fl v Ar volume Software volume attenuation of playback. The value must be between 1 and 127, diff --git a/sndiod/sndiod.c b/sndiod/sndiod.c index 66353e2..812bf2c 100644 --- a/sndiod/sndiod.c +++ b/sndiod/sndiod.c @@ -346,6 +346,10 @@ main(int argc, char **argv) struct port *p; struct listen *l; struct passwd *pw; + struct tcpaddr { + char *host; + struct tcpaddr *next; + } *tcpaddr_list = NULL, *ta; atexit(log_flush); @@ -379,14 +383,15 @@ main(int argc, char **argv) background = 0; break; case 'U': - if (listen_list) - errx(1, "-U must come before -L"); unit = strtonum(optarg, 0, 15, &str); if (str) errx(1, "%s: unit number is %s", optarg, str); break; case 'L': - listen_new_tcp(optarg, AUCAT_PORT + unit); + ta = xmalloc(sizeof(struct tcpaddr)); + ta->host = optarg; + ta->next = tcpaddr_list; + tcpaddr_list = ta; break; case 'm': mode = opt_mode(); @@ -479,6 +484,8 @@ main(int argc, char **argv) getbasepath(base, sizeof(base)); snprintf(path, SOCKPATH_MAX, "%s/" SOCKPATH_FILE "%u", base, unit); listen_new_un(path); + for (ta = tcpaddr_list; ta != NULL; ta = ta->next) + listen_new_tcp(ta->host, AUCAT_PORT + unit); if (geteuid() == 0) { if ((pw = getpwnam(SNDIO_USER)) == NULL) errx(1, "unknown user %s", SNDIO_USER);