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