inline const char *ChrPtr(const StrBuf *Str);
inline int StrLength(const StrBuf *Str);
+long StrBufPeek(StrBuf *Buf, const char* ptr, long nThChar, char PeekValue);
int StrBufTCP_read_line(StrBuf *buf, int *fd, int append, const char **Error);
int StrBufReadBLOB(StrBuf *Buf, int *fd, int append, long nBytes, const char **Error);
void StrBufAppendBufPlain(StrBuf *Buf, const char *AppendBuf, long AppendSize, size_t Offset);
void StrBufAppendBuf(StrBuf *Buf, const StrBuf *AppendBuf, size_t Offset);
+void StrBufAppendPrintf(StrBuf *Buf, const char *format, ...);
#ifdef SHOW_ME_VAPPEND_PRINTF
/* so owe don't create an include depndency, this is just visible on demand. */
void StrBufVAppendPrintf(StrBuf *Buf, const char *format, va_list ap);
return 0;
}
+long StrBufPeek(StrBuf *Buf, const char* ptr, long nThChar, char PeekValue)
+{
+ if (Buf == NULL)
+ return -1;
+ if (ptr != NULL)
+ nThChar = ptr - Buf->buf;
+ if ((nThChar < 0) || (nThChar > Buf->BufUsed))
+ return -1;
+ Buf->buf[nThChar] = PeekValue;
+ return nThChar;
+}
+
+
int StrBufPlain(StrBuf *Buf, const char* ptr, int nChars)
{
size_t Siz = Buf->BufSize;
}
}
+void StrBufAppendPrintf(StrBuf *Buf, const char *format, ...)
+{
+ size_t nWritten = Buf->BufSize + 1;
+ size_t Offset = Buf->BufUsed;
+ size_t newused = Offset + nWritten;
+ va_list arg_ptr;
+
+ while (newused >= Buf->BufSize) {
+ va_start(arg_ptr, format);
+ nWritten = vsnprintf(Buf->buf + Offset,
+ Buf->BufSize - Offset,
+ format, arg_ptr);
+ va_end(arg_ptr);
+ newused = Offset + nWritten;
+ if (newused >= Buf->BufSize)
+ IncreaseBuf(Buf, 1, 0);
+ else
+ Buf->BufUsed = Offset + nWritten ;
+
+ }
+}
+
void StrBufPrintf(StrBuf *Buf, const char *format, ...)
{
size_t nWritten = Buf->BufSize + 1;