* Added safesnprintf to strlib.c/h (bugreport:372)
git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@11828 54d463be-8e91-2dee-dedb-b68131a5f0ec
This commit is contained in:
parent
d19659bbdd
commit
e207fecd8c
@ -4,6 +4,7 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO
|
|||||||
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
|
||||||
|
|
||||||
2007/11/27
|
2007/11/27
|
||||||
|
* Added safesnprintf to strlib.c/h (bugreport:372) [FlavioJS]
|
||||||
* removed login/char server_fd[] arrays, added server[].fd instead
|
* removed login/char server_fd[] arrays, added server[].fd instead
|
||||||
* TXT/SQL login server code synchronization [ultramage]
|
* TXT/SQL login server code synchronization [ultramage]
|
||||||
- exported several core structures to login.h
|
- exported several core structures to login.h
|
||||||
|
@ -316,6 +316,31 @@ size_t safestrnlen(const char* string, size_t maxlen)
|
|||||||
return ( string != NULL ) ? strnlen(string, maxlen) : 0;
|
return ( string != NULL ) ? strnlen(string, maxlen) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Works like snprintf, but always nul-terminates the buffer.
|
||||||
|
/// Returns the size of the string (without nul-terminator)
|
||||||
|
/// or -1 if the buffer is too small.
|
||||||
|
///
|
||||||
|
/// @param buf Target buffer
|
||||||
|
/// @param sz Size of the buffer (including nul-terminator)
|
||||||
|
/// @param fmt Format string
|
||||||
|
/// @param ... Format arguments
|
||||||
|
/// @return The size of the string or -1 if the buffer is too small
|
||||||
|
int safesnprintf(char* buf, size_t sz, const char* fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
va_start(ap,fmt);
|
||||||
|
ret = vsnprintf(buf, sz, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
if( ret < 0 || (size_t)ret >= sz )
|
||||||
|
{// overflow
|
||||||
|
buf[sz-1] = '\0';// always nul-terminate
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns the line of the target position in the string.
|
/// Returns the line of the target position in the string.
|
||||||
/// Lines start at 1.
|
/// Lines start at 1.
|
||||||
int strline(const char* str, size_t pos)
|
int strline(const char* str, size_t pos)
|
||||||
|
@ -37,6 +37,11 @@ char* safestrncpy(char* dst, const char* src, size_t n);
|
|||||||
/// doesn't crash on null pointer
|
/// doesn't crash on null pointer
|
||||||
size_t safestrnlen(const char* string, size_t maxlen);
|
size_t safestrnlen(const char* string, size_t maxlen);
|
||||||
|
|
||||||
|
/// Works like snprintf, but always nul-terminates the buffer.
|
||||||
|
/// Returns the size of the string (without nul-terminator)
|
||||||
|
/// or -1 if the buffer is too small.
|
||||||
|
int safesnprintf(char* buf, size_t sz, const char* fmt, ...);
|
||||||
|
|
||||||
/// Returns the line of the target position in the string.
|
/// Returns the line of the target position in the string.
|
||||||
/// Lines start at 1.
|
/// Lines start at 1.
|
||||||
int strline(const char* str, size_t pos);
|
int strline(const char* str, size_t pos);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user