split box list preparation from "consumption".

This commit is contained in:
Oswald Buddenhagen 2006-03-21 10:38:30 +00:00
parent 72a2d4b690
commit f90b290650

View File

@ -194,7 +194,7 @@ main( int argc, char **argv )
driver_t *driver[2]; driver_t *driver[2];
store_t *ctx[2]; store_t *ctx[2];
string_list_t *boxes[2], *mbox, *sbox, **mboxp, **sboxp, *cboxes, *chanptr; string_list_t *boxes[2], *mbox, *sbox, **mboxp, **sboxp, *cboxes, *chanptr;
char *config = 0, *channame, *boxlist, *opt, *ochar; char *config = 0, *channame, *boxlist, *boxp, *opt, *ochar;
const char *names[2]; const char *names[2];
int all = 0, list = 0, cops = 0, ops[2] = { 0, 0 }; int all = 0, list = 0, cops = 0, ops[2] = { 0, 0 };
int oind, ret, op, multiple, pseudo = 0, t; int oind, ret, op, multiple, pseudo = 0, t;
@ -495,21 +495,9 @@ main( int argc, char **argv )
goto next; goto next;
} }
} }
if (list && multiple) if (boxlist)
printf( "%s:\n", chan->name ); boxp = boxlist;
if (boxlist) { else if (chan->patterns) {
for (boxlist = strtok( boxlist, ",\n" ); boxlist; boxlist = strtok( 0, ",\n" ))
if (list)
puts( boxlist );
else {
names[M] = names[S] = boxlist;
switch (sync_boxes( ctx, names, chan )) {
case SYNC_BAD(M): t = M; goto screwt;
case SYNC_BAD(S): t = S; goto screwt;
case SYNC_FAIL: ret = 1;
}
}
} else if (chan->patterns) {
for (t = 0; t < 2; t++) { for (t = 0; t < 2; t++) {
if (!ctx[t]->listed) { if (!ctx[t]->listed) {
if (driver[t]->list( ctx[t] ) != DRV_OK) { if (driver[t]->list( ctx[t] ) != DRV_OK) {
@ -536,6 +524,24 @@ main( int argc, char **argv )
mboxp = &mbox->next; mboxp = &mbox->next;
gotdupe: ; gotdupe: ;
} }
}
if (list && multiple)
printf( "%s:\n", chan->name );
if (boxlist) {
while ((names[S] = strsep( &boxp, ",\n" ))) {
if (list)
puts( names[S] );
else {
names[M] = names[S];
switch (sync_boxes( ctx, names, chan )) {
case SYNC_BAD(M): t = M; goto screwt;
case SYNC_BAD(S): t = S; goto screwt;
case SYNC_FAIL: ret = 1;
}
}
}
} else if (chan->patterns) {
for (mbox = cboxes; mbox; mbox = mbox->next) for (mbox = cboxes; mbox; mbox = mbox->next)
if (list) if (list)
puts( mbox->string ); puts( mbox->string );