summaryrefslogtreecommitdiff
path: root/src/common/utils.c
diff options
context:
space:
mode:
authorFlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-09-20 11:09:36 +0000
committerFlavioJS <FlavioJS@54d463be-8e91-2dee-dedb-b68131a5f0ec>2007-09-20 11:09:36 +0000
commit5245e666a09df5f401c1329bf5ee1fc1b09b1d16 (patch)
treedcf032743e890fddd400b268b75a0868976b0a0b /src/common/utils.c
parentd23c508bcc38520970156e5e25f14b03714878eb (diff)
downloadhercules-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.c154
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) );
}