@@ -104,14 +104,31 @@ export fn vsnprintf(str: [*:0]u8, size: size_t, format: [*:0]const u8, ...) c_in
104
104
str [strlen (format )] = 0 ;
105
105
}
106
106
debug ("TODO: vsnprintf: return str={s}" , .{str });
107
- return @intCast (strlen (format ));
107
+ return @intCast (strlen (format )); // TODO: Should be str?
108
108
}
109
109
110
110
export fn fprintf (stream : * FILE , format : [* :0 ]const u8 , ... ) c_int {
111
111
debug ("fprintf: stream={*}, format={s}" , .{ stream , format });
112
112
return @intCast (strlen (format ));
113
113
}
114
114
115
+ export fn sprintf (str : [* :0 ]u8 , format : [* :0 ]const u8 , ... ) c_int {
116
+ debug ("TODO: sprintf: format={s}" , .{format });
117
+ _ = memcpy (str , format , strlen (format ));
118
+ str [strlen (format )] = 0 ;
119
+ debug ("TODO: sprintf: return str={s}" , .{str });
120
+ return @intCast (strlen (str ));
121
+ }
122
+
123
+ export fn snprintf (str : [* :0 ]u8 , size : size_t , format : [* :0 ]const u8 , ... ) c_int {
124
+ debug ("TODO: snprintf: size={}, format={s}" , .{ size , format });
125
+ // TODO: Catch overflow
126
+ _ = memcpy (str , format , strlen (format ));
127
+ str [strlen (format )] = 0 ;
128
+ debug ("TODO: snprintf: return str={s}" , .{str });
129
+ return @intCast (strlen (str ));
130
+ }
131
+
115
132
const size_t = c_ulong ; // TODO: Should be usize like strlen()?
116
133
const FILE = opaque {};
117
134
@@ -386,12 +403,6 @@ pub export fn remove(_: c_int) c_int {
386
403
pub export fn sem_post (_ : c_int ) c_int {
387
404
@panic ("TODO: sem_post" );
388
405
}
389
- pub export fn snprintf (_ : c_int ) c_int {
390
- @panic ("TODO: snprintf" );
391
- }
392
- pub export fn sprintf (_ : c_int ) c_int {
393
- @panic ("TODO: sprintf" );
394
- }
395
406
pub export fn strcat (_ : c_int ) c_int {
396
407
@panic ("TODO: strcat" );
397
408
}
0 commit comments