mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-08-13 08:35:45 -04:00
Added two new functions to libretroshare for writing formatted data to std::string
int rs_sprintf(std::string &str, const char *fmt, ...); int rs_sprintf_append(std::string &str, const char *fmt, ...); git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@5059 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
9951b36092
commit
b32fddb3e0
2 changed files with 59 additions and 0 deletions
|
@ -25,7 +25,10 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#else
|
#else
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <malloc.h>
|
||||||
#endif
|
#endif
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
namespace librs { namespace util {
|
namespace librs { namespace util {
|
||||||
|
|
||||||
|
@ -201,3 +204,56 @@ bool ConvertUtf16ToUtf8(const std::wstring& source, std::string& dest)
|
||||||
}
|
}
|
||||||
|
|
||||||
} } // librs::util
|
} } // librs::util
|
||||||
|
|
||||||
|
#ifdef WINDOWS_SYS
|
||||||
|
// asprintf() and vasprintf() are missing in Win32
|
||||||
|
int vasprintf(char **sptr, const char *fmt, va_list argv)
|
||||||
|
{
|
||||||
|
int wanted = __mingw_vsnprintf(*sptr = NULL, 0, fmt, argv);
|
||||||
|
if ((wanted > 0) && ((*sptr = (char*) malloc(wanted + 1)) != NULL)) {
|
||||||
|
return __mingw_vsprintf(*sptr, fmt, argv);
|
||||||
|
}
|
||||||
|
|
||||||
|
return wanted;
|
||||||
|
}
|
||||||
|
|
||||||
|
//int asprintf(char **sptr, const char *fmt, ...)
|
||||||
|
//{
|
||||||
|
// int retval;
|
||||||
|
// va_list argv;
|
||||||
|
// va_start( argv, fmt );
|
||||||
|
// retval = vasprintf(sptr, fmt, argv);
|
||||||
|
// va_end(argv);
|
||||||
|
// return retval;
|
||||||
|
//}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int rs_sprintf(std::string &str, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
char *buffer;
|
||||||
|
va_list ap;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
int retval = vasprintf(&buffer, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
str = buffer;
|
||||||
|
free(buffer);
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
||||||
|
int rs_sprintf_append(std::string &str, const char *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list ap;
|
||||||
|
char *ret;
|
||||||
|
|
||||||
|
va_start(ap, fmt);
|
||||||
|
int retval = vasprintf(&ret, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
|
||||||
|
str.append(ret);
|
||||||
|
free(ret);
|
||||||
|
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
|
|
@ -31,4 +31,7 @@ bool ConvertUtf16ToUtf8(const std::wstring& source, std::string& dest);
|
||||||
|
|
||||||
} } // librs::util
|
} } // librs::util
|
||||||
|
|
||||||
|
int rs_sprintf(std::string &str, const char *fmt, ...);
|
||||||
|
int rs_sprintf_append(std::string &str, const char *fmt, ...);
|
||||||
|
|
||||||
#endif // RSSTRING_H_
|
#endif // RSSTRING_H_
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue