Mercurial > hg > sidinfo
comparison sidinfo.c @ 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 |
comparison
equal
deleted
inserted
replaced
142:da29f147afcb | 143:e481947fd051 |
---|---|
294 } | 294 } |
295 fmt++; | 295 fmt++; |
296 break; | 296 break; |
297 | 297 |
298 case 1: | 298 case 1: |
299 if (*fmt == '@') | 299 if (*fmt != '@') |
300 { | 300 { |
301 if (fmt - start == 0) | 301 if (*fmt == 0) |
302 mode = -1; | |
303 fmt++; | |
304 break; | |
305 } | |
306 | |
307 if (fmt - start == 0) | |
308 { | |
309 item.cmd = -2; | |
310 item.str = NULL; | |
311 item.chr = '@'; | |
312 if (!siStackAddItem(stack, &item)) | |
313 return FALSE; | |
314 } | |
315 else | |
316 { | |
317 char *field = th_strndup_trim(start, fmt - start, TH_TRIM_BOTH); | |
318 | |
319 int ret = argMatchPSFieldError(field); | |
320 if (ret >= 0) | |
302 { | 321 { |
303 item.cmd = -2; | 322 item.cmd = ret; |
323 item.flags = 0; | |
304 item.str = NULL; | 324 item.str = NULL; |
305 item.chr = '@'; | 325 |
306 if (!siStackAddItem(stack, &item)) | 326 if (!siStackAddItem(stack, &item)) |
307 return FALSE; | 327 rval = FALSE; |
308 } | 328 } |
309 else | 329 else |
310 { | 330 rval = FALSE; |
311 char *field = th_strndup_trim(start, fmt - start, TH_TRIM_BOTH); | 331 |
312 int ret = argMatchPSFieldError(field); | 332 th_free(field); |
313 th_free(field); | 333 } |
314 if (ret >= 0) | 334 |
315 { | 335 mode = 0; |
316 item.cmd = ret; | |
317 item.str = NULL; | |
318 if (!siStackAddItem(stack, &item)) | |
319 return FALSE; | |
320 } | |
321 else | |
322 rval = FALSE; | |
323 } | |
324 mode = 0; | |
325 } | |
326 else | |
327 if (*fmt == 0) | |
328 mode = -1; | |
329 fmt++; | 336 fmt++; |
330 break; | 337 break; |
331 | 338 |
332 case 2: | 339 case 2: |
333 if (*fmt == 0 || *fmt == '@') | 340 if (*fmt == 0 || *fmt == '@') |