Changes in uspace/lib/posix/src/stdio.c [694ca3d6:163e34c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/posix/src/stdio.c
r694ca3d6 r163e34c 232 232 * @return The number of written characters. 233 233 */ 234 static int _dprintf_str_write(const char *str, size_t size, void *fd)234 static errno_t _dprintf_str_write(const char *str, size_t size, void *fd) 235 235 { 236 236 const int fildes = *(int *) fd; 237 237 size_t wr; 238 if (failed(vfs_write(fildes, &posix_pos[fildes], str, size, &wr))) 239 return -1; 240 return str_nlength(str, wr); 241 } 242 243 /** 244 * Write wide string to the opened file. 245 * 246 * @param str String to be written. 247 * @param size Size of the string (in bytes). 248 * @param fd File descriptor of the opened file. 249 * @return The number of written characters. 250 */ 251 static int _dprintf_wstr_write(const char32_t *str, size_t size, void *fd) 252 { 253 size_t offset = 0; 254 size_t chars = 0; 255 size_t sz; 256 char buf[4]; 257 258 while (offset < size) { 259 sz = 0; 260 if (chr_encode(str[chars], buf, &sz, sizeof(buf)) != EOK) { 261 break; 262 } 263 264 const int fildes = *(int *) fd; 265 size_t nwr; 266 if (vfs_write(fildes, &posix_pos[fildes], buf, sz, &nwr) != EOK) 267 break; 268 269 chars++; 270 offset += sizeof(char32_t); 271 } 272 273 return chars; 238 return vfs_write(fildes, &posix_pos[fildes], str, size, &wr); 274 239 } 275 240 … … 285 250 { 286 251 printf_spec_t spec = { 287 .str_write = _dprintf_str_write, 288 .wstr_write = _dprintf_wstr_write, 252 .write = _dprintf_str_write, 289 253 .data = &fildes 290 254 };
Note:
See TracChangeset
for help on using the changeset viewer.