X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fhelper%2Fmembuf.c;h=766364a88e7066dbdba5281927012c1f1c9fbe49;hp=8d8c54dad2410957a52829b98ad267d322123c5d;hb=984bf158213b7cc040975c52aada4830d8d98e79;hpb=f11b1ff485a6669efb903a69f187b1c7168f1486 diff --git a/src/helper/membuf.c b/src/helper/membuf.c index 8d8c54dad2..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; @@ -40,7 +40,7 @@ struct membuf { #define space_avail(pBuf) (pBuf->maxlen - pBuf->curlen) #define dataend(pBuf) (((char *)(pBuf->buf)) + pBuf->curlen) -size_t +size_t membuf_len(struct membuf *pBuf) { return pBuf->curlen; @@ -55,17 +55,19 @@ membuf_datapointer(struct membuf *pBuf) const char * 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 * @@ -75,10 +77,10 @@ membuf_new(void) struct membuf *pBuf; pBuf = calloc(1, sizeof(*pBuf)); - if (pBuf){ + if (pBuf) { // we *ALWAYS* allocate +1 for null terminator. pBuf->buf = calloc(DEFAULT_BUFSIZE + 1, sizeof(char)); - if (pBuf->buf == NULL){ + if (pBuf->buf == NULL) { free(pBuf); pBuf = NULL; } else { @@ -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){ + if (vp) { pBuf->buf = vp; pBuf->maxlen = newsize; return pBuf; @@ -123,8 +125,8 @@ void membuf_reset(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); @@ -161,9 +163,9 @@ membuf_vsprintf(struct membuf *pBuf, const char *fmt, va_list ap) // do work r = vsnprintf(dataend(pBuf), sa, - fmt, + fmt, ap); - if ((r > 0) && (((size_t)(r)) < sa)){ + 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){ + if (pBuf == NULL) { // grow failed r = -1; break; @@ -213,13 +215,13 @@ membuf_append(struct membuf *pBuf, const void *pData, size_t len) 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); // failed? - if (pBuf == NULL){ + if (pBuf == NULL) { return pBuf; } }