1*344aa361SAndroid Build Coastguard Worker #include <trusty/string.h>
2*344aa361SAndroid Build Coastguard Worker
3*344aa361SAndroid Build Coastguard Worker #include <stdio.h>
4*344aa361SAndroid Build Coastguard Worker #include <stdlib.h>
5*344aa361SAndroid Build Coastguard Worker
scnprintf(char * buf,size_t size,const char * fmt,...)6*344aa361SAndroid Build Coastguard Worker int scnprintf(char* buf, size_t size, const char* fmt, ...) {
7*344aa361SAndroid Build Coastguard Worker va_list args;
8*344aa361SAndroid Build Coastguard Worker
9*344aa361SAndroid Build Coastguard Worker va_start(args, fmt);
10*344aa361SAndroid Build Coastguard Worker int vscn_ret = vscnprintf(buf, size, fmt, args);
11*344aa361SAndroid Build Coastguard Worker va_end(args);
12*344aa361SAndroid Build Coastguard Worker
13*344aa361SAndroid Build Coastguard Worker return vscn_ret;
14*344aa361SAndroid Build Coastguard Worker }
15*344aa361SAndroid Build Coastguard Worker
vscnprintf(char * buf,size_t size,const char * fmt,va_list args)16*344aa361SAndroid Build Coastguard Worker int vscnprintf(char* buf, size_t size, const char* fmt, va_list args) {
17*344aa361SAndroid Build Coastguard Worker if (size == 0) {
18*344aa361SAndroid Build Coastguard Worker return 0;
19*344aa361SAndroid Build Coastguard Worker }
20*344aa361SAndroid Build Coastguard Worker int would_write = vsnprintf(buf, size, fmt, args);
21*344aa361SAndroid Build Coastguard Worker if (would_write < 0) {
22*344aa361SAndroid Build Coastguard Worker return would_write;
23*344aa361SAndroid Build Coastguard Worker }
24*344aa361SAndroid Build Coastguard Worker size_t max_write = size - 1;
25*344aa361SAndroid Build Coastguard Worker if ((size_t)would_write > max_write) {
26*344aa361SAndroid Build Coastguard Worker return (int)max_write;
27*344aa361SAndroid Build Coastguard Worker }
28*344aa361SAndroid Build Coastguard Worker return would_write;
29*344aa361SAndroid Build Coastguard Worker }
30