X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Ftrace%2Ftrace_buf.c;h=85b4fbe682e858cbaff1225ff3e33ea1373251bd;hp=4fef57eecedb67d07329ca237c5949d59316165f;hb=a8987e73ec254703634802b4f7ee30d3a485524d;hpb=46722468f47c2b77b3987729b4bcf2321cccfd01 diff --git a/ncurses/trace/trace_buf.c b/ncurses/trace/trace_buf.c index 4fef57ee..85b4fbe6 100644 --- a/ncurses/trace/trace_buf.c +++ b/ncurses/trace/trace_buf.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. * + * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -35,15 +35,15 @@ #include -MODULE_ID("$Id: trace_buf.c,v 1.11 2002/07/14 00:08:08 tom Exp $") +MODULE_ID("$Id: trace_buf.c,v 1.12 2003/03/15 21:21:36 tom Exp $") typedef struct { char *text; size_t size; } LIST; -NCURSES_EXPORT(char *) -_nc_trace_buf(int bufnum, size_t want) +static char * +_nc_trace_alloc(int bufnum, size_t want) { char *result = 0; static LIST *list; @@ -65,8 +65,6 @@ _nc_trace_buf(int bufnum, size_t want) list[bufnum].size = want; } - if (list[bufnum].text != 0) - *(list[bufnum].text) = '\0'; result = list[bufnum].text; } #if NO_LEAKS @@ -82,3 +80,30 @@ _nc_trace_buf(int bufnum, size_t want) #endif return result; } + +/* + * (re)Allocate a buffer big enough for the caller's wants. + */ +NCURSES_EXPORT(char *) +_nc_trace_buf(int bufnum, size_t want) +{ + char *result = _nc_trace_alloc(bufnum, want); + if (result != 0) + *result = '\0'; + return result; +} + +/* + * Append a new string to an existing buffer. + */ +NCURSES_EXPORT(char *) +_nc_trace_bufcat(int bufnum, const char *value) +{ + char *buffer = _nc_trace_alloc(bufnum, 0); + size_t have = strlen(buffer); + + buffer = _nc_trace_alloc(bufnum, 1 + have + strlen(value)); + (void) strcpy(buffer + have, value); + + return buffer; +}