| // SPDX-License-Identifier: GPL-2.0 | 
 | #include <sys/types.h> | 
 | #include <linux/kernel.h> | 
 | #include <stdio.h> | 
 |  | 
 | int vscnprintf(char *buf, size_t size, const char *fmt, va_list args) | 
 | { | 
 |        int i = vsnprintf(buf, size, fmt, args); | 
 |        ssize_t ssize = size; | 
 |  | 
 |        return (i >= ssize) ? (ssize - 1) : i; | 
 | } | 
 |  | 
 | int scnprintf(char * buf, size_t size, const char * fmt, ...) | 
 | { | 
 |        ssize_t ssize = size; | 
 |        va_list args; | 
 |        int i; | 
 |  | 
 |        va_start(args, fmt); | 
 |        i = vsnprintf(buf, size, fmt, args); | 
 |        va_end(args); | 
 |  | 
 |        return (i >= ssize) ? (ssize - 1) : i; | 
 | } | 
 |  | 
 | int scnprintf_pad(char * buf, size_t size, const char * fmt, ...) | 
 | { | 
 | 	ssize_t ssize = size; | 
 | 	va_list args; | 
 | 	int i; | 
 |  | 
 | 	va_start(args, fmt); | 
 | 	i = vscnprintf(buf, size, fmt, args); | 
 | 	va_end(args); | 
 |  | 
 | 	if (i < (int) size) { | 
 | 		for (; i < (int) size; i++) | 
 | 			buf[i] = ' '; | 
 | 		buf[i] = 0x0; | 
 | 	} | 
 |  | 
 | 	return (i >= ssize) ? (ssize - 1) : i; | 
 | } |