comparison th_string.c @ 287:eb74097b73f5

Make th_vputch() and th_vputs() return a boolean value for success and failure respectively. Also fix a grave bug in th_growbuf().
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 11 Jun 2011 01:09:27 +0300
parents 3dc86d8eb0a9
children f1049f487987
comparison
equal deleted inserted replaced
285:b765f15f9895 287:eb74097b73f5
465 assert(buf != NULL); 465 assert(buf != NULL);
466 assert(bufsize != NULL); 466 assert(bufsize != NULL);
467 assert(len != NULL); 467 assert(len != NULL);
468 468
469 if (*buf == NULL) 469 if (*buf == NULL)
470 *bufsize = 0; 470 *bufsize = *len = 0;
471 471
472 if (*buf == NULL || *len + grow >= *bufsize) { 472 if (*buf == NULL || *len + grow >= *bufsize) {
473 *bufsize += grow + TH_BUFGROW; 473 *bufsize += grow + TH_BUFGROW;
474 *buf = (char *) th_realloc(*buf, *bufsize); 474 *buf = (char *) th_realloc(*buf, *bufsize);
475 if (*buf == NULL) 475 if (*buf == NULL)
477 } 477 }
478 return TRUE; 478 return TRUE;
479 } 479 }
480 480
481 481
482 void th_vputch(char **buf, size_t *bufsize, size_t *len, const char ch) 482 BOOL th_vputch(char **buf, size_t *bufsize, size_t *len, const char ch)
483 { 483 {
484 if (!th_growbuf(buf, bufsize, len, 1)) 484 if (!th_growbuf(buf, bufsize, len, 1))
485 return; 485 return FALSE;
486 486
487 (*buf)[*len] = ch; 487 (*buf)[*len] = ch;
488 (*len)++; 488 (*len)++;
489 } 489
490 490 return TRUE;
491 491 }
492 void th_vputs(char **buf, size_t *bufsize, size_t *len, const char *str) 492
493
494 BOOL th_vputs(char **buf, size_t *bufsize, size_t *len, const char *str)
493 { 495 {
494 size_t slen; 496 size_t slen;
495 if (str == NULL) 497 if (str == NULL)
496 return; 498 return FALSE;
497 499
498 slen = strlen(str); 500 slen = strlen(str);
499 if (!th_growbuf(buf, bufsize, len, slen)) 501 if (!th_growbuf(buf, bufsize, len, slen))
500 return; 502 return FALSE;
501 503
502 strcat(*buf + *len, str); 504 strcat(*buf + *len, str);
503 (*len) += slen; 505 (*len) += slen;
504 } 506
505 507 return TRUE;
508 }
509