list: only show index line if any filter applied

pull/1/merge
Christian Neukirchen 8 years ago
parent 698789336d
commit 597a035dbf

@ -41,8 +41,9 @@ static int Cflag;
static int iflag;
static long icount;
static long iseen;
static long iunseen;
static long iflagged;
static long imatched;
void
list(char *prefix, char *file)
@ -52,6 +53,7 @@ list(char *prefix, char *file)
char *f = strstr(file, ":2,");
if (!f)
return;
icount++;
f += 3;
while (*f) {
if (flags[(unsigned int)*f] == -1)
@ -68,14 +70,13 @@ list(char *prefix, char *file)
char *f = strstr(file, ":2,");
if (!f)
return;
icount++;
while (*f) {
if (*f == 'S')
iseen++;
if (*f == 'F')
iflagged++;
f++;
}
imatched++;
if (!flagset)
icount++;
if (!strchr(f, 'S'))
iunseen++;
if (strchr(f, 'F'))
iflagged++;
return;
}
@ -197,11 +198,12 @@ main(int argc, char *argv[])
int maildir = 0;
long gcount = icount;
long gseen = iseen;
long gunseen = iunseen;
long gflagged = iflagged;
long gmatched = imatched;
icount = 0;
iseen = 0;
iunseen = 0;
iflagged = 0;
snprintf(subdir, sizeof subdir, "%s/cur", argv[i]);
@ -221,21 +223,22 @@ main(int argc, char *argv[])
if (!maildir)
listdir(argv[i]);
if (iflag && icount)
if (iflag && imatched)
printf("%6ld unseen %3ld flagged %6ld msg %s\n",
icount-iseen, iflagged, icount, argv[i]);
iunseen, iflagged, icount, argv[i]);
icount = gcount;
iseen = gseen;
iunseen = gunseen;
iflagged = gflagged;
imatched = gmatched;
} else if (S_ISREG(st.st_mode)) {
list(0, argv[i]);
}
}
if (icount || iseen || iflagged)
if (iflag && imatched)
printf("%6ld unseen %3ld flagged %6ld msg\n",
icount-iseen, iflagged, icount);
iunseen, iflagged, icount);
exit(0);

Loading…
Cancel
Save