Changes in uspace/lib/c/generic/io/vprintf.c [163e34c:28a5ebd] in mainline
- File:
-
- 1 edited
-
uspace/lib/c/generic/io/vprintf.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/io/vprintf.c
r163e34c r28a5ebd 35 35 #include <stdarg.h> 36 36 #include <stdio.h> 37 #include < printf_core.h>37 #include <io/printf_core.h> 38 38 #include <fibril_synch.h> 39 39 #include <async.h> … … 42 42 static FIBRIL_MUTEX_INITIALIZE(printf_mutex); 43 43 44 static errno_t vprintf_str_write(const char *str, size_t size, void *stream)44 static int vprintf_str_write(const char *str, size_t size, void *stream) 45 45 { 46 errno_t old_errno = errno; 46 size_t wr = fwrite(str, 1, size, (FILE *) stream); 47 return str_nlength(str, wr); 48 } 47 49 48 errno = EOK; 49 size_t written = fwrite(str, 1, size, (FILE *) stream); 50 static int vprintf_wstr_write(const char32_t *str, size_t size, void *stream) 51 { 52 size_t offset = 0; 53 size_t chars = 0; 50 54 51 if (errno == EOK && written != size) 52 errno = EIO; 55 while (offset < size) { 56 if (fputuc(str[chars], (FILE *) stream) <= 0) 57 break; 53 58 54 if (errno != EOK) 55 return errno; 59 chars++; 60 offset += sizeof(char32_t); 61 } 56 62 57 errno = old_errno; 58 return EOK; 63 return chars; 59 64 } 60 65 … … 72 77 printf_spec_t ps = { 73 78 vprintf_str_write, 79 vprintf_wstr_write, 74 80 stream 75 81 };
Note:
See TracChangeset
for help on using the changeset viewer.
