Changes in uspace/lib/posix/src/stdio.c [1b20da0:a35b458] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/posix/src/stdio.c
r1b20da0 ra35b458 277 277 size_t sz; 278 278 char buf[4]; 279 279 280 280 while (offset < size) { 281 281 sz = 0; … … 283 283 break; 284 284 } 285 285 286 286 const int fildes = *(int *) fd; 287 287 size_t nwr; 288 288 if (vfs_write(fildes, &posix_pos[fildes], buf, sz, &nwr) != EOK) 289 289 break; 290 290 291 291 chars++; 292 292 offset += sizeof(wchar_t); 293 293 } 294 294 295 295 return chars; 296 296 } … … 311 311 .data = &fildes 312 312 }; 313 313 314 314 return printf_core(format, &spec, ap); 315 315 } … … 490 490 { 491 491 assert(L_tmpnam >= strlen("/tmp/tnXXXXXX")); 492 492 493 493 static char buffer[L_tmpnam + 1]; 494 494 if (s == NULL) { 495 495 s = buffer; 496 496 } 497 497 498 498 strcpy(s, "/tmp/tnXXXXXX"); 499 499 mktemp(s); 500 500 501 501 if (*s == '\0') { 502 502 /* Errno set by mktemp(). */ 503 503 return NULL; 504 504 } 505 505 506 506 return s; 507 507 } … … 518 518 /* Sequence number of the filename. */ 519 519 static int seq = 0; 520 520 521 521 size_t dir_len = strlen(dir); 522 522 if (dir[dir_len - 1] == '/') { 523 523 dir_len--; 524 524 } 525 525 526 526 size_t pfx_len = strlen(pfx); 527 527 if (pfx_len > 5) { 528 528 pfx_len = 5; 529 529 } 530 530 531 531 char *result = malloc(dir_len + /* slash*/ 1 + 532 532 pfx_len + /* three-digit seq */ 3 + /* .tmp */ 4 + /* nul */ 1); 533 533 534 534 if (result == NULL) { 535 535 errno = ENOMEM; 536 536 return NULL; 537 537 } 538 538 539 539 char *res_ptr = result; 540 540 strncpy(res_ptr, dir, dir_len); … … 542 542 strncpy(res_ptr, pfx, pfx_len); 543 543 res_ptr += pfx_len; 544 544 545 545 for (; seq < 1000; ++seq) { 546 546 snprintf(res_ptr, 8, "%03d.tmp", seq); 547 547 548 548 int orig_errno = errno; 549 549 errno = EOK; … … 559 559 } 560 560 } 561 561 562 562 if (seq == 1000) { 563 563 free(result); … … 565 565 return NULL; 566 566 } 567 567 568 568 return result; 569 569 } … … 585 585 return NULL; 586 586 } 587 587 588 588 /* Unlink the created file, so that it's removed on close(). */ 589 589 unlink(filename);
Note:
See TracChangeset
for help on using the changeset viewer.