12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #include <stdint.h>
- #include <stddef.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <errno.h>
-
- FILE_LICENCE ( GPL2_OR_LATER );
-
- /**
- * Write a formatted string to newly allocated memory.
- *
- * @v strp Pointer to hold allocated string
- * @v fmt Format string
- * @v args Arguments corresponding to the format string
- * @ret len Length of formatted string
- */
- int vasprintf ( char **strp, const char *fmt, va_list args ) {
- size_t len;
- va_list args_tmp;
-
- /* Calculate length needed for string */
- va_copy ( args_tmp, args );
- len = ( vsnprintf ( NULL, 0, fmt, args_tmp ) + 1 );
- va_end ( args_tmp );
-
- /* Allocate and fill string */
- *strp = malloc ( len );
- if ( ! *strp )
- return -ENOMEM;
- return vsnprintf ( *strp, len, fmt, args );
- }
-
- /**
- * Write a formatted string to newly allocated memory.
- *
- * @v strp Pointer to hold allocated string
- * @v fmt Format string
- * @v ... Arguments corresponding to the format string
- * @ret len Length of formatted string
- */
- int asprintf ( char **strp, const char *fmt, ... ) {
- va_list args;
- int len;
-
- va_start ( args, fmt );
- len = vasprintf ( strp, fmt, args );
- va_end ( args );
- return len;
- }
|