From e828c8642a637a3e3f63450b75ebc93f2bd4bce4 Mon Sep 17 00:00:00 2001 From: FlavioJS Date: Sun, 22 Apr 2007 15:45:37 +0000 Subject: * Extended the functionality of StringBuf - length and appending a string. * menu/select/prompt script functions support grouped and empty options. The selected option number is consistent with them. * More work on ticket #41. git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@10316 54d463be-8e91-2dee-dedb-b68131a5f0ec --- src/common/utils.c | 25 +++++++++++++++++++++++++ src/common/utils.h | 2 ++ 2 files changed, 27 insertions(+) (limited to 'src/common') diff --git a/src/common/utils.c b/src/common/utils.c index d6a017c95..3dc7fea16 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -123,6 +123,31 @@ int StringBuf_Append(struct StringBuf *buf1,const struct StringBuf *buf2) return (int)(buf1->ptr_ - buf1->buf_); } +// Appends str onto the end of buf +int StringBuf_AppendStr(struct StringBuf* sbuf, const char* str) +{ + int available = sbuf->max_ - (sbuf->ptr_ - sbuf->buf_); + int size = (int)strlen(str); + + if( size >= available ) + {// not enough space, expand the buffer (minimum expansion = 1024) + int off = (int)(sbuf->ptr_ - sbuf->buf_); + sbuf->max_ += max(size, 1024); + sbuf->buf_ = (char *) aRealloc(sbuf->buf_, sbuf->max_ + 1); + sbuf->ptr_ = sbuf->buf_ + off; + } + + memcpy(sbuf->ptr_, str, size); + sbuf->ptr_ += size; + return (int)(sbuf->ptr_ - sbuf->buf_); +} + +// Returns the length of the data in a Stringbuf +int StringBuf_Length(struct StringBuf *sbuf) +{ + return (int)(sbuf->ptr_ - sbuf->buf_); +} + // Destroy a StringBuf [MouseJstr] void StringBuf_Destroy(struct StringBuf *sbuf) { diff --git a/src/common/utils.h b/src/common/utils.h index 3ee419c6f..ec9cb5416 100644 --- a/src/common/utils.h +++ b/src/common/utils.h @@ -23,6 +23,8 @@ void StringBuf_Init(struct StringBuf *); int StringBuf_Vprintf(struct StringBuf *,const char *,va_list); int StringBuf_Printf(struct StringBuf *,const char *,...); int StringBuf_Append(struct StringBuf *,const struct StringBuf *); +int StringBuf_AppendStr(struct StringBuf* sbuf, const char* str); +int StringBuf_Length(struct StringBuf* sbuf); char * StringBuf_Value(struct StringBuf *); void StringBuf_Destroy(struct StringBuf *); void StringBuf_Free(struct StringBuf *); -- cgit v1.2.3-70-g09d2