xref: /linux/tools/lib/vsprintf.c (revision e3b2949e3fa2fd8c19cd5fbb0424d38f70a70e9c)
1  // SPDX-License-Identifier: GPL-2.0
2  #include <sys/types.h>
3  #include <linux/kernel.h>
4  #include <stdio.h>
5  
6  int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)
7  {
8         int i = vsnprintf(buf, size, fmt, args);
9         ssize_t ssize = size;
10  
11         return (i >= ssize) ? (ssize - 1) : i;
12  }
13  
14  int scnprintf(char * buf, size_t size, const char * fmt, ...)
15  {
16         ssize_t ssize = size;
17         va_list args;
18         int i;
19  
20         va_start(args, fmt);
21         i = vsnprintf(buf, size, fmt, args);
22         va_end(args);
23  
24         return (i >= ssize) ? (ssize - 1) : i;
25  }
26  
27  int scnprintf_pad(char * buf, size_t size, const char * fmt, ...)
28  {
29  	ssize_t ssize = size;
30  	va_list args;
31  	int i;
32  
33  	va_start(args, fmt);
34  	i = vscnprintf(buf, size, fmt, args);
35  	va_end(args);
36  
37  	if (i < (int) size) {
38  		for (; i < (int) size; i++)
39  			buf[i] = ' ';
40  		buf[i] = 0x0;
41  	}
42  
43  	return (i >= ssize) ? (ssize - 1) : i;
44  }
45