Mercurial > projects > pwm
diff cmd.c @ 37:e027dd4409c7
Handle empty fields correctly when filtering the list of entries
author | Guido Berhoerster <guido+pwm@berhoerster.name> |
---|---|
date | Thu, 08 Aug 2019 10:31:06 +0200 |
parents | b5ebed168e59 |
children | 8b55f7b1c6b3 |
line wrap: on
line diff
--- a/cmd.c Wed Aug 07 11:28:07 2019 +0200 +++ b/cmd.c Thu Aug 08 10:31:06 2019 +0200 @@ -426,6 +426,11 @@ struct pager *pager = NULL; union list_item **list = NULL; size_t j; + const char *group; + const char *title; + const char *username; + const char *notes; + const char *url; struct record *record; for (i = 1; i < argc; i++) { @@ -482,16 +487,23 @@ pager_printf(pager, "[%s]\n", list[j]->group.group); } else { record = pwfile_get_record(ctx, list[j]->record.id); - if (((group_re == NULL) || (regexec(group_re, - record->group, 0, NULL, 0) == 0)) && - ((title_re == NULL) || (regexec(title_re, - record->title, 0, NULL, 0) == 0)) && - ((username_re == NULL) || (regexec(username_re, - record->username, 0, NULL, 0) == 0)) && - ((notes_re == NULL) || (regexec(notes_re, - record->notes, 0, NULL, 0) == 0)) && - ((url_re == NULL) || (regexec(url_re, - record->url, 0, NULL, 0) == 0))) { + group = (record->group != NULL) ? record->group : ""; + title = (record->title != NULL) ? record->title : ""; + username = (record->username != NULL) ? + record->username : ""; + notes = (record->notes != NULL) ? record->notes : ""; + url = (record->url != NULL) ? record->url : ""; + if (((group_re == NULL) || + (regexec(group_re, group, 0, NULL, 0) == 0)) && + ((title_re == NULL) || + (regexec(title_re, title, 0, NULL, 0) == 0)) && + ((username_re == NULL) || + (regexec(username_re, username, 0, NULL, + 0) == 0)) && + ((notes_re == NULL) || + (regexec(notes_re, notes, 0, NULL, 0) == 0)) && + ((url_re == NULL) || + (regexec(url_re, url, 0, NULL, 0) == 0))) { pager_printf(pager, "%4u %s\n", list[j]->record.id, (list[j]->record.title != NULL) ?