Mercurial > hg > sidinfo
changeset 143:e481947fd051
Improve format string parsing.
author | Matti Hamalainen <ccr@tnsp.org> |
---|---|
date | Tue, 13 Jun 2017 01:24:38 +0300 |
parents | da29f147afcb |
children | 6418286a7e4c |
files | sidinfo.c |
diffstat | 1 files changed, 30 insertions(+), 23 deletions(-) [+] |
line wrap: on
line diff
--- a/sidinfo.c Mon Jun 05 09:31:57 2017 +0300 +++ b/sidinfo.c Tue Jun 13 01:24:38 2017 +0300 @@ -296,36 +296,43 @@ break; case 1: - if (*fmt == '@') + if (*fmt != '@') + { + if (*fmt == 0) + mode = -1; + fmt++; + break; + } + + if (fmt - start == 0) { - if (fmt - start == 0) + item.cmd = -2; + item.str = NULL; + item.chr = '@'; + if (!siStackAddItem(stack, &item)) + return FALSE; + } + else + { + char *field = th_strndup_trim(start, fmt - start, TH_TRIM_BOTH); + + int ret = argMatchPSFieldError(field); + if (ret >= 0) { - item.cmd = -2; + item.cmd = ret; + item.flags = 0; item.str = NULL; - item.chr = '@'; + if (!siStackAddItem(stack, &item)) - return FALSE; + rval = FALSE; } else - { - char *field = th_strndup_trim(start, fmt - start, TH_TRIM_BOTH); - int ret = argMatchPSFieldError(field); - th_free(field); - if (ret >= 0) - { - item.cmd = ret; - item.str = NULL; - if (!siStackAddItem(stack, &item)) - return FALSE; - } - else - rval = FALSE; - } - mode = 0; + rval = FALSE; + + th_free(field); } - else - if (*fmt == 0) - mode = -1; + + mode = 0; fmt++; break;