version 1.24, 2016/01/08 13:19:34 |
version 1.25, 2016/01/08 13:32:17 |
|
|
{ |
{ |
int c, background, unit; |
int c, background, unit; |
int pmin, pmax, rmin, rmax; |
int pmin, pmax, rmin, rmax; |
char base[SOCKPATH_MAX], path[SOCKPATH_MAX], *tcpaddr; |
char base[SOCKPATH_MAX], path[SOCKPATH_MAX]; |
unsigned int mode, dup, mmc, vol; |
unsigned int mode, dup, mmc, vol; |
unsigned int hold, autovol, bufsz, round, rate; |
unsigned int hold, autovol, bufsz, round, rate; |
const char *str; |
const char *str; |
|
|
struct port *p; |
struct port *p; |
struct listen *l; |
struct listen *l; |
struct passwd *pw; |
struct passwd *pw; |
|
struct tcpaddr { |
|
char *host; |
|
struct tcpaddr *next; |
|
} *tcpaddr_list, *ta; |
int s[2]; |
int s[2]; |
pid_t pid; |
pid_t pid; |
uid_t euid, hpw_uid, wpw_uid; |
uid_t euid, hpw_uid, wpw_uid; |
|
|
rmax = 1; |
rmax = 1; |
aparams_init(&par); |
aparams_init(&par); |
mode = MODE_PLAY | MODE_REC; |
mode = MODE_PLAY | MODE_REC; |
tcpaddr = NULL; |
tcpaddr_list = NULL; |
|
|
while ((c = getopt(argc, argv, "a:b:c:C:de:f:j:L:m:q:r:s:t:U:v:w:x:z:")) != -1) { |
while ((c = getopt(argc, argv, "a:b:c:C:de:f:j:L:m:q:r:s:t:U:v:w:x:z:")) != -1) { |
switch (c) { |
switch (c) { |
|
|
errx(1, "%s: unit number is %s", optarg, str); |
errx(1, "%s: unit number is %s", optarg, str); |
break; |
break; |
case 'L': |
case 'L': |
tcpaddr = optarg; |
ta = xmalloc(sizeof(struct tcpaddr)); |
|
ta->host = optarg; |
|
ta->next = tcpaddr_list; |
|
tcpaddr_list = ta; |
break; |
break; |
case 'm': |
case 'm': |
mode = opt_mode(); |
mode = opt_mode(); |
|
|
base, unit); |
base, unit); |
if (!listen_new_un(path)) |
if (!listen_new_un(path)) |
return 1; |
return 1; |
if (tcpaddr) { |
for (ta = tcpaddr_list; ta != NULL; ta = ta->next) { |
if (!listen_new_tcp(tcpaddr, AUCAT_PORT + unit)) |
if (!listen_new_tcp(ta->host, AUCAT_PORT + unit)) |
return 1; |
return 1; |
} |
} |
for (l = listen_list; l != NULL; l = l->next) { |
for (l = listen_list; l != NULL; l = l->next) { |
|
|
setresuid(wpw_uid, wpw_uid, wpw_uid)) |
setresuid(wpw_uid, wpw_uid, wpw_uid)) |
err(1, "cannot drop privileges"); |
err(1, "cannot drop privileges"); |
} |
} |
if (tcpaddr) { |
if (tcpaddr_list) { |
if (pledge("stdio audio recvfd unix inet", NULL) == -1) |
if (pledge("stdio audio recvfd unix inet", NULL) == -1) |
err(1, "pledge"); |
err(1, "pledge"); |
} else { |
} else { |
|
|
dev_del(dev_list); |
dev_del(dev_list); |
while (port_list) |
while (port_list) |
port_del(port_list); |
port_del(port_list); |
|
while (tcpaddr_list) { |
|
ta = tcpaddr_list; |
|
tcpaddr_list = ta->next; |
|
xfree(ta); |
|
} |
filelist_done(); |
filelist_done(); |
unsetsig(); |
unsetsig(); |
return 0; |
return 0; |