X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fhelper%2Fmembuf.c;h=766364a88e7066dbdba5281927012c1f1c9fbe49;hp=30b653c26f2e6668c9fd70b2f2bd1d9fd911222f;hb=f2cbaba3cc4af99db7b4f2682c2e0dd4467655e3;hpb=3324841558e39cd3d40cf4eed96b5ad8fb2678fb diff --git a/src/helper/membuf.c b/src/helper/membuf.c index 30b653c26f..766364a88e 100644 --- a/src/helper/membuf.c +++ b/src/helper/membuf.c @@ -20,7 +20,7 @@ #include #include -#include +#include #include #include "membuf.h" @@ -29,7 +29,7 @@ struct membuf { // buflen is alway "+1" bigger then // what is shown here, the +1 is for // the NULL string terminator -#define DEFAULT_BUFSIZE 100 +#define DEFAULT_BUFSIZE 100 size_t maxlen; // allocated size size_t curlen; // where we are inserting at char *_strtoklast; @@ -37,35 +37,37 @@ struct membuf { }; -#define space_avail( pBuf ) (pBuf->maxlen - pBuf->curlen) -#define dataend( pBuf ) ( ((char *)(pBuf->buf)) + pBuf->curlen ) +#define space_avail(pBuf) (pBuf->maxlen - pBuf->curlen) +#define dataend(pBuf) (((char *)(pBuf->buf)) + pBuf->curlen) -size_t -membuf_len( struct membuf *pBuf ) +size_t +membuf_len(struct membuf *pBuf) { return pBuf->curlen; } const void * -membuf_datapointer( struct membuf *pBuf ) +membuf_datapointer(struct membuf *pBuf) { return ((void *)(pBuf->buf)); } const char * -membuf_strtok( struct membuf *pBuf, const char *sep, void **pLast ) +membuf_strtok(struct membuf *pBuf, const char *sep, void **pLast) { - if( pBuf ){ + if (pBuf) { pBuf->_strtoklast = NULL; *pLast = pBuf; - return strtok_r( ((char *)(pBuf->buf)), sep, &(pBuf->_strtoklast) ); + // this should be "strtok_r()" but windows lacks */ + return strtok(((char *)(pBuf->buf)), sep); } else { // recover our pBuf pBuf = *((struct membuf **)(pLast)); - return strtok_r( NULL, sep, &(pBuf->_strtoklast) ); + // this should be "strtok_r()" but windows lacks */ + return strtok( NULL, sep); } } - + struct membuf * @@ -74,11 +76,11 @@ membuf_new(void) // by default - parameters are zero. struct membuf *pBuf; - pBuf = calloc( 1, sizeof(*pBuf) ); - if( pBuf ){ + pBuf = calloc(1, sizeof(*pBuf)); + if (pBuf) { // we *ALWAYS* allocate +1 for null terminator. - pBuf->buf = calloc( DEFAULT_BUFSIZE+1, sizeof(char)); - if( pBuf->buf == NULL ){ + pBuf->buf = calloc(DEFAULT_BUFSIZE + 1, sizeof(char)); + if (pBuf->buf == NULL) { free(pBuf); pBuf = NULL; } else { @@ -90,7 +92,7 @@ membuf_new(void) struct membuf * -membuf_grow( struct membuf *pBuf, int n ) +membuf_grow(struct membuf *pBuf, int n) { void *vp; signed int newsize; @@ -99,13 +101,13 @@ membuf_grow( struct membuf *pBuf, int n ) newsize = ((int)(pBuf->maxlen)) + n; // do not go negative, or too small - if( newsize < DEFAULT_BUFSIZE ){ + if (newsize < DEFAULT_BUFSIZE) { newsize = DEFAULT_BUFSIZE; } // always alloc +1 for the null terminator - vp = realloc( pBuf->buf, newsize+1 ); - if( vp ){ + vp = realloc(pBuf->buf, newsize + 1); + if (vp) { pBuf->buf = vp; pBuf->maxlen = newsize; return pBuf; @@ -115,16 +117,16 @@ membuf_grow( struct membuf *pBuf, int n ) } -void membuf_reset( struct membuf *pBuf ) +void membuf_reset(struct membuf *pBuf) { pBuf->curlen = 0; } -void membuf_delete( struct membuf *pBuf ) +void membuf_delete(struct membuf *pBuf) { - if( pBuf ){ - if( pBuf->buf){ + if (pBuf) { + if (pBuf->buf) { // wack data so it cannot be reused memset(pBuf->buf,0,pBuf->maxlen); free(pBuf->buf); @@ -136,18 +138,18 @@ void membuf_delete( struct membuf *pBuf ) } int -membuf_sprintf( struct membuf *pBuf , const char *fmt, ... ) +membuf_sprintf(struct membuf *pBuf , const char *fmt, ...) { int r; va_list ap; - va_start( ap, fmt ); - r = membuf_vsprintf( pBuf, fmt, ap ); + va_start(ap, fmt); + r = membuf_vsprintf(pBuf, fmt, ap); va_end(ap); return r; } int -membuf_vsprintf( struct membuf *pBuf, const char *fmt, va_list ap ) +membuf_vsprintf(struct membuf *pBuf, const char *fmt, va_list ap) { int r; size_t sa; @@ -155,15 +157,15 @@ membuf_vsprintf( struct membuf *pBuf, const char *fmt, va_list ap ) grew = 0; - for(;;) { + for (;;) { sa = space_avail(pBuf); // do work - r = vsnprintf( dataend( pBuf ), + r = vsnprintf(dataend(pBuf), sa, - fmt, - ap ); - if( (r > 0) && (((size_t)(r)) < sa) ){ + fmt, + ap); + if ((r > 0) && (((size_t)(r)) < sa)) { // Success! pBuf->curlen += ((size_t)(r)); // remember: We always alloc'ed +1 @@ -174,7 +176,7 @@ membuf_vsprintf( struct membuf *pBuf, const char *fmt, va_list ap ) } // failure - if( r < 0 ){ + if (r < 0) { // Option(A) format error // Option(B) glibc2.0 bug // assume (B). @@ -182,13 +184,13 @@ membuf_vsprintf( struct membuf *pBuf, const char *fmt, va_list ap ) } // don't do this again - if( grew ){ + if (grew) { r = -1; break; } grew = 1; - pBuf = membuf_grow( pBuf, r ); - if(pBuf == NULL){ + pBuf = membuf_grow(pBuf, r); + if (pBuf == NULL) { // grow failed r = -1; break; @@ -198,35 +200,35 @@ membuf_vsprintf( struct membuf *pBuf, const char *fmt, va_list ap ) } struct membuf * -membuf_strcat( struct membuf *pBuf, const char *pStr ) +membuf_strcat(struct membuf *pBuf, const char *pStr) { - return membuf_append( pBuf, pStr, strlen( pStr ) ); + return membuf_append(pBuf, pStr, strlen(pStr)); } struct membuf * -membuf_append( struct membuf *pBuf, const void *pData, size_t len ) +membuf_append(struct membuf *pBuf, const void *pData, size_t len) { size_t sa; int r; // how much room is there? - sa = space_avail( pBuf ); + sa = space_avail(pBuf); // will it fit? - if( sa < len ){ + if (sa < len) { // if not, how much do we need? r = ((int)(sa - len)); // do the grow. - pBuf = membuf_grow( pBuf, r ); + pBuf = membuf_grow(pBuf, r); // failed? - if(pBuf==NULL){ + if (pBuf == NULL) { return pBuf; } } // append - memcpy( dataend(pBuf), + memcpy(dataend(pBuf), pData, - len ); + len); pBuf->curlen += len; return pBuf; }