Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /****************************************************************************/
- /* This code snippet has been released under the CC0 1.0 Universal license! */
- /****************************************************************************/
- #define _CRT_SECURE_NO_WARNINGS /*stfu*/
- #include <stdio.h>
- char *vasprintf(const char *const fmt, va_list ap)
- {
- int result;
- char *buffer;
- const int str_len = _vscprintf(fmt, ap);
- if (str_len < 1)
- {
- return NULL;
- }
- if (!(buffer = (char*) malloc(sizeof(char) * (((size_t)str_len) + 1U))))
- {
- return NULL;
- }
- if ((result = _vsnprintf(buffer, ((size_t)str_len) + 1U, fmt, ap)) < 1)
- {
- free(buffer);
- buffer = NULL;
- }
- return buffer;
- }
- char *asprintf(const char *const fmt, ...)
- {
- char *buffer;
- va_list ap;
- va_start(ap, fmt);
- buffer = vasprintf(fmt, ap);
- va_end(ap);
- return buffer;
- }
- wchar_t *vaswprintf(const wchar_t *const fmt, va_list ap)
- {
- int result;
- wchar_t *buffer;
- const int str_len = _vscwprintf(fmt, ap);
- if (str_len < 1)
- {
- return NULL;
- }
- if (!(buffer = (wchar_t*) malloc(sizeof(wchar_t) * (((size_t)str_len) + 1U))))
- {
- return NULL;
- }
- if ((result = _vsnwprintf(buffer, ((size_t)str_len) + 1U, fmt, ap)) < 1)
- {
- free(buffer);
- buffer = NULL;
- }
- return buffer;
- }
- wchar_t *aswprintf(const wchar_t *const fmt, ...)
- {
- wchar_t *buffer;
- va_list ap;
- va_start(ap, fmt);
- buffer = vaswprintf(fmt, ap);
- va_end(ap);
- return buffer;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement