mirror of https://github.com/ericonr/sndio.git
sndioctl: Use (mandatory) group prefix.
This commit is contained in:
parent
d8e69e7e93
commit
9bf7d85e7f
|
@ -150,12 +150,14 @@ vecent(struct info *i, char *vstr, int vunit)
|
||||||
struct info *
|
struct info *
|
||||||
nextgrp(struct info *i)
|
nextgrp(struct info *i)
|
||||||
{
|
{
|
||||||
char *str, *func;
|
char *str, *group, *func;
|
||||||
|
|
||||||
|
group = i->desc.group;
|
||||||
func = i->desc.func;
|
func = i->desc.func;
|
||||||
str = i->desc.chan0.str;
|
str = i->desc.chan0.str;
|
||||||
for (i = i->next; i != NULL; i = i->next) {
|
for (i = i->next; i != NULL; i = i->next) {
|
||||||
if (strcmp(i->desc.chan0.str, str) != 0 ||
|
if (strcmp(i->desc.group, group) != 0 ||
|
||||||
|
strcmp(i->desc.chan0.str, str) != 0 ||
|
||||||
strcmp(i->desc.func, func) != 0)
|
strcmp(i->desc.func, func) != 0)
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
@ -168,14 +170,16 @@ nextgrp(struct info *i)
|
||||||
struct info *
|
struct info *
|
||||||
nextpar(struct info *i)
|
nextpar(struct info *i)
|
||||||
{
|
{
|
||||||
char *str, *func;
|
char *str, *group, *func;
|
||||||
int unit;
|
int unit;
|
||||||
|
|
||||||
|
group = i->desc.group;
|
||||||
func = i->desc.func;
|
func = i->desc.func;
|
||||||
str = i->desc.chan0.str;
|
str = i->desc.chan0.str;
|
||||||
unit = i->desc.chan0.unit;
|
unit = i->desc.chan0.unit;
|
||||||
for (i = i->next; i != NULL; i = i->next) {
|
for (i = i->next; i != NULL; i = i->next) {
|
||||||
if (strcmp(i->desc.chan0.str, str) != 0 ||
|
if (strcmp(i->desc.group, group) != 0 ||
|
||||||
|
strcmp(i->desc.chan0.str, str) != 0 ||
|
||||||
strcmp(i->desc.func, func) != 0)
|
strcmp(i->desc.func, func) != 0)
|
||||||
break;
|
break;
|
||||||
/* XXX: need to check for -1 ? */
|
/* XXX: need to check for -1 ? */
|
||||||
|
@ -191,13 +195,15 @@ nextpar(struct info *i)
|
||||||
struct info *
|
struct info *
|
||||||
firstent(struct info *g, char *vstr)
|
firstent(struct info *g, char *vstr)
|
||||||
{
|
{
|
||||||
char *astr, *func;
|
char *astr, *group, *func;
|
||||||
struct info *i;
|
struct info *i;
|
||||||
|
|
||||||
|
group = g->desc.group;
|
||||||
astr = g->desc.chan0.str;
|
astr = g->desc.chan0.str;
|
||||||
func = g->desc.func;
|
func = g->desc.func;
|
||||||
for (i = g; i != NULL; i = i->next) {
|
for (i = g; i != NULL; i = i->next) {
|
||||||
if (strcmp(i->desc.chan0.str, astr) != 0 ||
|
if (strcmp(i->desc.group, group) != 0 ||
|
||||||
|
strcmp(i->desc.chan0.str, astr) != 0 ||
|
||||||
strcmp(i->desc.func, func) != 0)
|
strcmp(i->desc.func, func) != 0)
|
||||||
break;
|
break;
|
||||||
if (!isdiag(i))
|
if (!isdiag(i))
|
||||||
|
@ -216,14 +222,16 @@ firstent(struct info *g, char *vstr)
|
||||||
struct info *
|
struct info *
|
||||||
nextent(struct info *i, int mono)
|
nextent(struct info *i, int mono)
|
||||||
{
|
{
|
||||||
char *str, *func;
|
char *str, *group, *func;
|
||||||
int unit;
|
int unit;
|
||||||
|
|
||||||
|
group = i->desc.group;
|
||||||
func = i->desc.func;
|
func = i->desc.func;
|
||||||
str = i->desc.chan0.str;
|
str = i->desc.chan0.str;
|
||||||
unit = i->desc.chan0.unit;
|
unit = i->desc.chan0.unit;
|
||||||
for (i = i->next; i != NULL; i = i->next) {
|
for (i = i->next; i != NULL; i = i->next) {
|
||||||
if (strcmp(i->desc.chan0.str, str) != 0 ||
|
if (strcmp(i->desc.group, group) != 0 ||
|
||||||
|
strcmp(i->desc.chan0.str, str) != 0 ||
|
||||||
strcmp(i->desc.func, func) != 0)
|
strcmp(i->desc.func, func) != 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (mono)
|
if (mono)
|
||||||
|
@ -564,11 +572,22 @@ cmd(char *line)
|
||||||
{
|
{
|
||||||
char *pos = line;
|
char *pos = line;
|
||||||
struct info *i, *e, *g;
|
struct info *i, *e, *g;
|
||||||
char func[SIOCTL_NAMEMAX], astr[SIOCTL_NAMEMAX], vstr[SIOCTL_NAMEMAX];
|
char group[SIOCTL_NAMEMAX];
|
||||||
|
char func[SIOCTL_NAMEMAX];
|
||||||
|
char astr[SIOCTL_NAMEMAX], vstr[SIOCTL_NAMEMAX];
|
||||||
int aunit, vunit;
|
int aunit, vunit;
|
||||||
unsigned npar = 0, nent = 0;
|
unsigned npar = 0, nent = 0;
|
||||||
int val, comma, mode;
|
int val, comma, mode;
|
||||||
|
|
||||||
|
if (!parse_name(&pos, group))
|
||||||
|
return 0;
|
||||||
|
if (*pos == '/')
|
||||||
|
pos++;
|
||||||
|
else {
|
||||||
|
/* this was chan string, go backwards and assume no group */
|
||||||
|
pos = line;
|
||||||
|
group[0] = '\0';
|
||||||
|
}
|
||||||
if (!parse_chan(&pos, astr, &aunit))
|
if (!parse_chan(&pos, astr, &aunit))
|
||||||
return 0;
|
return 0;
|
||||||
if (*pos != '.') {
|
if (*pos != '.') {
|
||||||
|
@ -583,7 +602,8 @@ cmd(char *line)
|
||||||
fprintf(stderr, "%s.%s: no such group\n", astr, func);
|
fprintf(stderr, "%s.%s: no such group\n", astr, func);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (strcmp(g->desc.func, func) == 0 &&
|
if (strcmp(g->desc.group, group) == 0 &&
|
||||||
|
strcmp(g->desc.func, func) == 0 &&
|
||||||
strcmp(g->desc.chan0.str, astr) == 0)
|
strcmp(g->desc.chan0.str, astr) == 0)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue