0001
0002 #include <sys/types.h>
0003 #include <linux/kernel.h>
0004 #include <stdio.h>
0005
0006 int vscnprintf(char *buf, size_t size, const char *fmt, va_list args)
0007 {
0008 int i = vsnprintf(buf, size, fmt, args);
0009 ssize_t ssize = size;
0010
0011 return (i >= ssize) ? (ssize - 1) : i;
0012 }
0013
0014 int scnprintf(char * buf, size_t size, const char * fmt, ...)
0015 {
0016 ssize_t ssize = size;
0017 va_list args;
0018 int i;
0019
0020 va_start(args, fmt);
0021 i = vsnprintf(buf, size, fmt, args);
0022 va_end(args);
0023
0024 return (i >= ssize) ? (ssize - 1) : i;
0025 }
0026
0027 int scnprintf_pad(char * buf, size_t size, const char * fmt, ...)
0028 {
0029 ssize_t ssize = size;
0030 va_list args;
0031 int i;
0032
0033 va_start(args, fmt);
0034 i = vscnprintf(buf, size, fmt, args);
0035 va_end(args);
0036
0037 if (i < (int) size) {
0038 for (; i < (int) size; i++)
0039 buf[i] = ' ';
0040 buf[i] = 0x0;
0041 }
0042
0043 return (i >= ssize) ? (ssize - 1) : i;
0044 }