diff options
author | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-09-20 11:09:36 +0000 |
---|---|---|
committer | FlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec> | 2007-09-20 11:09:36 +0000 |
commit | 5245e666a09df5f401c1329bf5ee1fc1b09b1d16 (patch) | |
tree | dcf032743e890fddd400b268b75a0868976b0a0b /src/common/utils.c | |
parent | d23c508bcc38520970156e5e25f14b03714878eb (diff) | |
download | hercules-5245e666a09df5f401c1329bf5ee1fc1b09b1d16.tar.gz hercules-5245e666a09df5f401c1329bf5ee1fc1b09b1d16.tar.bz2 hercules-5245e666a09df5f401c1329bf5ee1fc1b09b1d16.tar.xz hercules-5245e666a09df5f401c1329bf5ee1fc1b09b1d16.zip |
* Merged the tmpsql branch:
- Abstraction for the sql code (sql.c/h).
- New configure script and makefiles.
- Restored txt zeny logging code. (r10814)
- Rewrote mapserver's sql code - itemdb, mobdb, mapreg, logs. (r10814)
- Fixed a precedence issue (&& and ) in char_sql/char.c. (r10833)
- Improved db reading code a bit for consistency. (r11077)
- Added separate atcommand for mail deletion. (r11077)
- Corrected a few messages that said "new" instead of "unread". (r11077)
- Broadcast (*) messages now use "*" as the target's name (not ""). (r11077)
- Moved StringBuf code from utils.c/h to strlib.c/h. (r11084 r11117)
- Some misc login server cleanups (reformatting etc). (r11136)
- Corrected/modified some header entries. (r11141 r11147 11148)
- Adjusted VS project files. (r11147)
- Adjusted the way the sql charserver does item saving. (r11192)
- Corrected usage of reserved keyword 'friend' in mmo.h. (r11192)
git-svn-id: https://rathena.svn.sourceforge.net/svnroot/rathena/trunk@11245 54d463be-8e91-2dee-dedb-b68131a5f0ec
Diffstat (limited to 'src/common/utils.c')
-rw-r--r-- | src/common/utils.c | 154 |
1 files changed, 25 insertions, 129 deletions
diff --git a/src/common/utils.c b/src/common/utils.c index 15d1d2e68..354bd3814 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -55,118 +55,6 @@ void dump(FILE* fp, const unsigned char* buffer, int length) fprintf(fp, "\n"); } -// Allocate a StringBuf [MouseJstr] -struct StringBuf * StringBuf_Malloc() -{ - struct StringBuf * ret = (struct StringBuf *) aMallocA(sizeof(struct StringBuf)); - StringBuf_Init(ret); - return ret; -} - -// Initialize a previously allocated StringBuf [MouseJstr] -void StringBuf_Init(struct StringBuf * sbuf) { - sbuf->max_ = 1024; - sbuf->ptr_ = sbuf->buf_ = (char *) aMallocA(sbuf->max_ + 1); -} - -// vprintf into a StringBuf, moving the pointer [MouseJstr] -int StringBuf_Vprintf(struct StringBuf *sbuf,const char *fmt,va_list ap) -{ - int n, size, off; - - while (1) { - /* Try to print in the allocated space. */ - size = sbuf->max_ - (sbuf->ptr_ - sbuf->buf_); - n = vsnprintf (sbuf->ptr_, size, fmt, ap); - /* If that worked, return the length. */ - if (n > -1 && n < size) { - sbuf->ptr_ += n; - return (int)(sbuf->ptr_ - sbuf->buf_); - } - /* Else try again with more space. */ - sbuf->max_ *= 2; // twice the old size - off = (int)(sbuf->ptr_ - sbuf->buf_); - sbuf->buf_ = (char *) aRealloc(sbuf->buf_, sbuf->max_ + 1); - sbuf->ptr_ = sbuf->buf_ + off; - } -} - -// printf into a StringBuf, moving the pointer [MouseJstr] -int StringBuf_Printf(struct StringBuf *sbuf,const char *fmt,...) -{ - int len; - va_list ap; - - va_start(ap,fmt); - len = StringBuf_Vprintf(sbuf,fmt,ap); - va_end(ap); - - return len; -} - -// Append buf2 onto the end of buf1 [MouseJstr] -int StringBuf_Append(struct StringBuf *buf1,const struct StringBuf *buf2) -{ - int buf1_avail = buf1->max_ - (buf1->ptr_ - buf1->buf_); - int size2 = (int)(buf2->ptr_ - buf2->buf_); - - if (size2 >= buf1_avail) { - int off = (int)(buf1->ptr_ - buf1->buf_); - buf1->max_ += size2; - buf1->buf_ = (char *) aRealloc(buf1->buf_, buf1->max_ + 1); - buf1->ptr_ = buf1->buf_ + off; - } - - memcpy(buf1->ptr_, buf2->buf_, size2); - buf1->ptr_ += size2; - 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) -{ - aFree(sbuf->buf_); - sbuf->ptr_ = sbuf->buf_ = 0; -} - -// Free a StringBuf returned by StringBuf_Malloc [MouseJstr] -void StringBuf_Free(struct StringBuf *sbuf) -{ - StringBuf_Destroy(sbuf); - aFree(sbuf); -} - -// Return the built string from the StringBuf [MouseJstr] -char * StringBuf_Value(struct StringBuf *sbuf) -{ - *sbuf->ptr_ = '\0'; - return sbuf->buf_; -} #ifdef WIN32 @@ -293,35 +181,43 @@ void findfile(const char *p, const char *pat, void (func)(const char*)) } #endif -uint8 GetByte(uint32 val, size_t num) +uint8 GetByte(uint32 val, int idx) { - switch( num ) + switch( idx ) { - case 0: return (uint8)((val & 0x000000FF) ); - case 1: return (uint8)((val & 0x0000FF00) >> 0x08); - case 2: return (uint8)((val & 0x00FF0000) >> 0x10); - case 3: return (uint8)((val & 0xFF000000) >> 0x18); - default: return 0; //better throw something here + case 0: return (uint8)( (val & 0x000000FF) ); + case 1: return (uint8)( (val & 0x0000FF00) >> 0x08 ); + case 2: return (uint8)( (val & 0x00FF0000) >> 0x10 ); + case 3: return (uint8)( (val & 0xFF000000) >> 0x18 ); + default: +#if defined(DEBUG) + ShowDebug("GetByte: invalid index (idx=%d)\n", idx); +#endif + return 0; } } -uint16 GetWord(uint32 val, size_t num) + +uint16 GetWord(uint32 val, int idx) { - switch( num ) + switch( idx ) { - case 0: return (uint16)((val & 0x0000FFFF) ); - case 1: return (uint16)((val & 0xFFFF0000) >> 0x10); - default: return 0; //better throw something here + case 0: return (uint16)( (val & 0x0000FFFF) ); + case 1: return (uint16)( (val & 0xFFFF0000) >> 0x10 ); + default: +#if defined(DEBUG) + ShowDebug("GetWord: invalid index (idx=%d)\n", idx); +#endif + return 0; } } uint16 MakeWord(uint8 byte0, uint8 byte1) { - return - ((uint16)(byte0 ))| - ((uint16)(byte1 << 0x08)); + return byte0 | (byte1 << 0x08); } + uint32 MakeDWord(uint16 word0, uint16 word1) { return - ((uint32)(word0 ))| - ((uint32)(word1 << 0x10)); + ( (uint32)(word0 ) )| + ( (uint32)(word1 << 0x10) ); } |