Deleted
Added
nxt_file.c (521:93dc4a28dd37) | nxt_file.c (564:762f8c976ead) |
---|---|
1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_main.h> 8 --- 34 unchanged lines hidden (view full) --- 43 44 45void 46nxt_file_close(nxt_task_t *task, nxt_file_t *file) 47{ 48 nxt_debug(task, "close(%FD)", file->fd); 49 50 if (close(file->fd) != 0) { | 1 2/* 3 * Copyright (C) Igor Sysoev 4 * Copyright (C) NGINX, Inc. 5 */ 6 7#include <nxt_main.h> 8 --- 34 unchanged lines hidden (view full) --- 43 44 45void 46nxt_file_close(nxt_task_t *task, nxt_file_t *file) 47{ 48 nxt_debug(task, "close(%FD)", file->fd); 49 50 if (close(file->fd) != 0) { |
51 nxt_log(task, NXT_LOG_CRIT, "close(%FD, \"%FN\") failed %E", 52 file->fd, file->name, nxt_errno); | 51 nxt_alert(task, "close(%FD, \"%FN\") failed %E", 52 file->fd, file->name, nxt_errno); |
53 } 54} 55 56 57ssize_t 58nxt_file_write(nxt_file_t *file, const u_char *buf, size_t size, 59 nxt_off_t offset) 60{ --- 9 unchanged lines hidden (view full) --- 70 71 nxt_log_debug(thr->log, "pwrite(%FD, %p, %uz, %O): %z", 72 file->fd, buf, size, offset, n); 73 74 if (nxt_fast_path(n >= 0)) { 75 return n; 76 } 77 | 53 } 54} 55 56 57ssize_t 58nxt_file_write(nxt_file_t *file, const u_char *buf, size_t size, 59 nxt_off_t offset) 60{ --- 9 unchanged lines hidden (view full) --- 70 71 nxt_log_debug(thr->log, "pwrite(%FD, %p, %uz, %O): %z", 72 file->fd, buf, size, offset, n); 73 74 if (nxt_fast_path(n >= 0)) { 75 return n; 76 } 77 |
78 nxt_thread_log_error(NXT_LOG_CRIT, 79 "pwrite(%FD, \"%FN\", %p, %uz, %O) failed %E", | 78 nxt_thread_log_alert("pwrite(%FD, \"%FN\", %p, %uz, %O) failed %E", |
80 file->fd, file->name, buf, size, 81 offset, file->error); 82 83 return NXT_ERROR; 84} 85 86 87ssize_t --- 11 unchanged lines hidden (view full) --- 99 100 nxt_log_debug(thr->log, "pread(%FD, %p, %uz, %O): %z", 101 file->fd, buf, size, offset, n); 102 103 if (nxt_fast_path(n >= 0)) { 104 return n; 105 } 106 | 79 file->fd, file->name, buf, size, 80 offset, file->error); 81 82 return NXT_ERROR; 83} 84 85 86ssize_t --- 11 unchanged lines hidden (view full) --- 98 99 nxt_log_debug(thr->log, "pread(%FD, %p, %uz, %O): %z", 100 file->fd, buf, size, offset, n); 101 102 if (nxt_fast_path(n >= 0)) { 103 return n; 104 } 105 |
107 nxt_thread_log_error(NXT_LOG_CRIT, 108 "pread(%FD, \"%FN\", %p, %uz, %O) failed %E", | 106 nxt_thread_log_alert("pread(%FD, \"%FN\", %p, %uz, %O) failed %E", |
109 file->fd, file->name, buf, size, 110 offset, file->error); 111 112 return NXT_ERROR; 113} 114 115 116#if (NXT_HAVE_READAHEAD) --- 11 unchanged lines hidden (view full) --- 128 nxt_thread_log_debug("fcntl(%FD, F_READAHEAD, %uz): %d", 129 file->fd, size, ret); 130 131 if (nxt_fast_path(ret != -1)) { 132 (void) nxt_file_read(file, &buf, 1, offset); 133 return; 134 } 135 | 107 file->fd, file->name, buf, size, 108 offset, file->error); 109 110 return NXT_ERROR; 111} 112 113 114#if (NXT_HAVE_READAHEAD) --- 11 unchanged lines hidden (view full) --- 126 nxt_thread_log_debug("fcntl(%FD, F_READAHEAD, %uz): %d", 127 file->fd, size, ret); 128 129 if (nxt_fast_path(ret != -1)) { 130 (void) nxt_file_read(file, &buf, 1, offset); 131 return; 132 } 133 |
136 nxt_thread_log_error(NXT_LOG_CRIT, 137 "fcntl(%FD, \"%FN\", F_READAHEAD, %uz) failed %E", | 134 nxt_thread_log_alert("fcntl(%FD, \"%FN\", F_READAHEAD, %uz) failed %E", |
138 file->fd, file->name, size, nxt_errno); 139} 140 141#elif (NXT_HAVE_POSIX_FADVISE) 142 143/* 144 * POSIX_FADV_SEQUENTIAL 145 * Linux doubles the default readahead window size of a backing device --- 20 unchanged lines hidden (view full) --- 166 nxt_thread_log_debug("posix_fadvise(%FD, \"%FN\", %O, %uz, %d): %d", 167 file->fd, file->name, offset, size, 168 POSIX_FADV_WILLNEED, err); 169 170 if (nxt_fast_path(err == 0)) { 171 return; 172 } 173 | 135 file->fd, file->name, size, nxt_errno); 136} 137 138#elif (NXT_HAVE_POSIX_FADVISE) 139 140/* 141 * POSIX_FADV_SEQUENTIAL 142 * Linux doubles the default readahead window size of a backing device --- 20 unchanged lines hidden (view full) --- 163 nxt_thread_log_debug("posix_fadvise(%FD, \"%FN\", %O, %uz, %d): %d", 164 file->fd, file->name, offset, size, 165 POSIX_FADV_WILLNEED, err); 166 167 if (nxt_fast_path(err == 0)) { 168 return; 169 } 170 |
174 nxt_thread_log_error(NXT_LOG_CRIT, 175 "posix_fadvise(%FD, \"%FN\", %O, %uz, %d) failed %E", | 171 nxt_thread_log_alert("posix_fadvise(%FD, \"%FN\", %O, %uz, %d) failed %E", |
176 file->fd, file->name, offset, size, 177 POSIX_FADV_WILLNEED, err); 178} 179 180#elif (NXT_HAVE_RDAHEAD) 181 182/* MacOSX fcntl(F_RDAHEAD). */ 183 --- 7 unchanged lines hidden (view full) --- 191 192 nxt_thread_log_debug("fcntl(%FD, F_RDAHEAD, 1): %d", file->fd, ret); 193 194 if (nxt_fast_path(ret != -1)) { 195 (void) nxt_file_read(file, &buf, 1, offset); 196 return; 197 } 198 | 172 file->fd, file->name, offset, size, 173 POSIX_FADV_WILLNEED, err); 174} 175 176#elif (NXT_HAVE_RDAHEAD) 177 178/* MacOSX fcntl(F_RDAHEAD). */ 179 --- 7 unchanged lines hidden (view full) --- 187 188 nxt_thread_log_debug("fcntl(%FD, F_RDAHEAD, 1): %d", file->fd, ret); 189 190 if (nxt_fast_path(ret != -1)) { 191 (void) nxt_file_read(file, &buf, 1, offset); 192 return; 193 } 194 |
199 nxt_thread_log_error(NXT_LOG_CRIT, 200 "fcntl(%FD, \"%FN\", F_RDAHEAD, 1) failed %E", | 195 nxt_thread_log_alert("fcntl(%FD, \"%FN\", F_RDAHEAD, 1) failed %E", |
201 file->fd, file->name, nxt_errno); 202} 203 204#else 205 206void 207nxt_file_read_ahead(nxt_file_t *file, nxt_off_t offset, size_t size) 208{ --- 34 unchanged lines hidden (view full) --- 243 file->error = (n != 0) ? nxt_errno : 0; 244 245 nxt_thread_log_debug("fstat(%FD): %d", file->fd, n); 246 247 if (n == 0) { 248 return NXT_OK; 249 } 250 | 196 file->fd, file->name, nxt_errno); 197} 198 199#else 200 201void 202nxt_file_read_ahead(nxt_file_t *file, nxt_off_t offset, size_t size) 203{ --- 34 unchanged lines hidden (view full) --- 238 file->error = (n != 0) ? nxt_errno : 0; 239 240 nxt_thread_log_debug("fstat(%FD): %d", file->fd, n); 241 242 if (n == 0) { 243 return NXT_OK; 244 } 245 |
251 /* Use NXT_LOG_CRIT because fstat() error on open file is strange. */ | 246 /* Use NXT_LOG_ALERT because fstat() error on open file is strange. */ |
252 | 247 |
253 nxt_thread_log_error(NXT_LOG_CRIT, "fstat(%FD, \"%FN\") failed %E", | 248 nxt_thread_log_alert("fstat(%FD, \"%FN\") failed %E", |
254 file->fd, file->name, file->error); 255 256 return NXT_ERROR; 257 } 258} 259 260 261nxt_int_t --- 63 unchanged lines hidden (view full) --- 325 int nb; 326 327 nb = 1; 328 329 if (nxt_fast_path(ioctl(fd, FIONBIO, &nb) != -1)) { 330 return NXT_OK; 331 } 332 | 249 file->fd, file->name, file->error); 250 251 return NXT_ERROR; 252 } 253} 254 255 256nxt_int_t --- 63 unchanged lines hidden (view full) --- 320 int nb; 321 322 nb = 1; 323 324 if (nxt_fast_path(ioctl(fd, FIONBIO, &nb) != -1)) { 325 return NXT_OK; 326 } 327 |
333 nxt_log(task, NXT_LOG_CRIT, "ioctl(%d, FIONBIO) failed %E", fd, nxt_errno); | 328 nxt_alert(task, "ioctl(%d, FIONBIO) failed %E", fd, nxt_errno); |
334 335 return NXT_ERROR; 336 337} 338 339 340nxt_int_t 341nxt_fd_blocking(nxt_task_t *task, nxt_fd_t fd) 342{ 343 int nb; 344 345 nb = 0; 346 347 if (nxt_fast_path(ioctl(fd, FIONBIO, &nb) != -1)) { 348 return NXT_OK; 349 } 350 | 329 330 return NXT_ERROR; 331 332} 333 334 335nxt_int_t 336nxt_fd_blocking(nxt_task_t *task, nxt_fd_t fd) 337{ 338 int nb; 339 340 nb = 0; 341 342 if (nxt_fast_path(ioctl(fd, FIONBIO, &nb) != -1)) { 343 return NXT_OK; 344 } 345 |
351 nxt_log(task, NXT_LOG_CRIT, "ioctl(%d, !FIONBIO) failed %E", fd, nxt_errno); | 346 nxt_alert(task, "ioctl(%d, !FIONBIO) failed %E", fd, nxt_errno); |
352 353 return NXT_ERROR; 354} 355 356#else /* !(NXT_HAVE_FIONBIO) */ 357 358nxt_int_t 359nxt_fd_nonblocking(nxt_task_t *task, nxt_fd_t fd) 360{ 361 int flags; 362 363 flags = fcntl(fd, F_GETFL); 364 365 if (nxt_slow_path(flags == -1)) { | 347 348 return NXT_ERROR; 349} 350 351#else /* !(NXT_HAVE_FIONBIO) */ 352 353nxt_int_t 354nxt_fd_nonblocking(nxt_task_t *task, nxt_fd_t fd) 355{ 356 int flags; 357 358 flags = fcntl(fd, F_GETFL); 359 360 if (nxt_slow_path(flags == -1)) { |
366 nxt_log(task, NXT_LOG_CRIT, "fcntl(%d, F_GETFL) failed %E", 367 fd, nxt_errno); | 361 nxt_alert(task, "fcntl(%d, F_GETFL) failed %E", fd, nxt_errno); |
368 return NXT_ERROR; 369 } 370 371 flags |= O_NONBLOCK; 372 373 if (nxt_slow_path(fcntl(fd, F_SETFL, flags) == -1)) { | 362 return NXT_ERROR; 363 } 364 365 flags |= O_NONBLOCK; 366 367 if (nxt_slow_path(fcntl(fd, F_SETFL, flags) == -1)) { |
374 nxt_log(task, NXT_LOG_CRIT, "fcntl(%d, F_SETFL, O_NONBLOCK) failed %E", 375 fd, nxt_errno); | 368 nxt_alert(task, "fcntl(%d, F_SETFL, O_NONBLOCK) failed %E", 369 fd, nxt_errno); |
376 return NXT_ERROR; 377 } 378 379 return NXT_OK; 380} 381 382 383nxt_int_t 384nxt_fd_blocking(nxt_task_t *task, nxt_fd_t fd) 385{ 386 int flags; 387 388 flags = fcntl(fd, F_GETFL); 389 390 if (nxt_slow_path(flags == -1)) { | 370 return NXT_ERROR; 371 } 372 373 return NXT_OK; 374} 375 376 377nxt_int_t 378nxt_fd_blocking(nxt_task_t *task, nxt_fd_t fd) 379{ 380 int flags; 381 382 flags = fcntl(fd, F_GETFL); 383 384 if (nxt_slow_path(flags == -1)) { |
391 nxt_log(task, NXT_LOG_CRIT, "fcntl(%d, F_GETFL) failed %E", 392 fd, nxt_errno); | 385 nxt_alert(task, "fcntl(%d, F_GETFL) failed %E", fd, nxt_errno); |
393 return NXT_ERROR; 394 } 395 396 flags &= O_NONBLOCK; 397 398 if (nxt_slow_path(fcntl(fd, F_SETFL, flags) == -1)) { | 386 return NXT_ERROR; 387 } 388 389 flags &= O_NONBLOCK; 390 391 if (nxt_slow_path(fcntl(fd, F_SETFL, flags) == -1)) { |
399 nxt_log(task, NXT_LOG_CRIT, "fcntl(%d, F_SETFL, !O_NONBLOCK) failed %E", 400 fd, nxt_errno); | 392 nxt_alert(task, "fcntl(%d, F_SETFL, !O_NONBLOCK) failed %E", 393 fd, nxt_errno); |
401 return NXT_ERROR; 402 } 403 404 return NXT_OK; 405} 406 407#endif /* NXT_HAVE_FIONBIO */ 408 --- 44 unchanged lines hidden (view full) --- 453 454 455void 456nxt_fd_close(nxt_fd_t fd) 457{ 458 nxt_thread_log_debug("close(%FD)", fd); 459 460 if (nxt_slow_path(close(fd) != 0)) { | 394 return NXT_ERROR; 395 } 396 397 return NXT_OK; 398} 399 400#endif /* NXT_HAVE_FIONBIO */ 401 --- 44 unchanged lines hidden (view full) --- 446 447 448void 449nxt_fd_close(nxt_fd_t fd) 450{ 451 nxt_thread_log_debug("close(%FD)", fd); 452 453 if (nxt_slow_path(close(fd) != 0)) { |
461 nxt_thread_log_error(NXT_LOG_CRIT, "close(%FD) failed %E", 462 fd, nxt_errno); | 454 nxt_thread_log_alert("close(%FD) failed %E", fd, nxt_errno); |
463 } 464} 465 466 467/* 468 * nxt_file_redirect() redirects the file to the fd descriptor. 469 * Then the fd descriptor is closed. 470 */ 471 472nxt_int_t 473nxt_file_redirect(nxt_file_t *file, nxt_fd_t fd) 474{ 475 nxt_thread_log_debug("dup2(%FD, %FD, \"%FN\")", fd, file->fd, file->name); 476 477 if (dup2(fd, file->fd) == -1) { | 455 } 456} 457 458 459/* 460 * nxt_file_redirect() redirects the file to the fd descriptor. 461 * Then the fd descriptor is closed. 462 */ 463 464nxt_int_t 465nxt_file_redirect(nxt_file_t *file, nxt_fd_t fd) 466{ 467 nxt_thread_log_debug("dup2(%FD, %FD, \"%FN\")", fd, file->fd, file->name); 468 469 if (dup2(fd, file->fd) == -1) { |
478 nxt_thread_log_error(NXT_LOG_CRIT, "dup2(%FD, %FD, \"%FN\") failed %E", | 470 nxt_thread_log_alert("dup2(%FD, %FD, \"%FN\") failed %E", |
479 fd, file->fd, file->name, nxt_errno); 480 return NXT_ERROR; 481 } 482 483 if (close(fd) != 0) { | 471 fd, file->fd, file->name, nxt_errno); 472 return NXT_ERROR; 473 } 474 475 if (close(fd) != 0) { |
484 nxt_thread_log_error(NXT_LOG_CRIT, "close(%FD, \"%FN\") failed %E", | 476 nxt_thread_log_alert("close(%FD, \"%FN\") failed %E", |
485 fd, file->name, nxt_errno); 486 return NXT_ERROR; 487 } 488 489 return NXT_OK; 490} 491 492 --- 4 unchanged lines hidden (view full) --- 497{ 498 nxt_thread_log_debug("dup2(%FD, %FD, \"%FN\")", 499 file->fd, STDERR_FILENO, file->name); 500 501 if (dup2(file->fd, STDERR_FILENO) != -1) { 502 return NXT_OK; 503 } 504 | 477 fd, file->name, nxt_errno); 478 return NXT_ERROR; 479 } 480 481 return NXT_OK; 482} 483 484 --- 4 unchanged lines hidden (view full) --- 489{ 490 nxt_thread_log_debug("dup2(%FD, %FD, \"%FN\")", 491 file->fd, STDERR_FILENO, file->name); 492 493 if (dup2(file->fd, STDERR_FILENO) != -1) { 494 return NXT_OK; 495 } 496 |
505 nxt_thread_log_error(NXT_LOG_CRIT, "dup2(%FD, %FD, \"%FN\") failed %E", | 497 nxt_thread_log_alert("dup2(%FD, %FD, \"%FN\") failed %E", |
506 file->fd, STDERR_FILENO, file->name, nxt_errno); 507 508 return NXT_ERROR; 509} 510 511 512nxt_int_t 513nxt_stderr_start(void) --- 33 unchanged lines hidden (view full) --- 547} 548 549 550nxt_int_t 551nxt_pipe_create(nxt_task_t *task, nxt_fd_t *pp, nxt_bool_t nbread, 552 nxt_bool_t nbwrite) 553{ 554 if (pipe(pp) != 0) { | 498 file->fd, STDERR_FILENO, file->name, nxt_errno); 499 500 return NXT_ERROR; 501} 502 503 504nxt_int_t 505nxt_stderr_start(void) --- 33 unchanged lines hidden (view full) --- 539} 540 541 542nxt_int_t 543nxt_pipe_create(nxt_task_t *task, nxt_fd_t *pp, nxt_bool_t nbread, 544 nxt_bool_t nbwrite) 545{ 546 if (pipe(pp) != 0) { |
555 nxt_log(task, NXT_LOG_CRIT, "pipe() failed %E", nxt_errno); | 547 nxt_alert(task, "pipe() failed %E", nxt_errno); |
556 557 return NXT_ERROR; 558 } 559 560 nxt_debug(task, "pipe(): %FD:%FD", pp[0], pp[1]); 561 562 if (nbread) { 563 if (nxt_fd_nonblocking(task, pp[0]) != NXT_OK) { --- 12 unchanged lines hidden (view full) --- 576 577 578void 579nxt_pipe_close(nxt_task_t *task, nxt_fd_t *pp) 580{ 581 nxt_debug(task, "pipe close(%FD:%FD)", pp[0], pp[1]); 582 583 if (close(pp[0]) != 0) { | 548 549 return NXT_ERROR; 550 } 551 552 nxt_debug(task, "pipe(): %FD:%FD", pp[0], pp[1]); 553 554 if (nbread) { 555 if (nxt_fd_nonblocking(task, pp[0]) != NXT_OK) { --- 12 unchanged lines hidden (view full) --- 568 569 570void 571nxt_pipe_close(nxt_task_t *task, nxt_fd_t *pp) 572{ 573 nxt_debug(task, "pipe close(%FD:%FD)", pp[0], pp[1]); 574 575 if (close(pp[0]) != 0) { |
584 nxt_log(task, NXT_LOG_CRIT, "pipe close(%FD) failed %E", 585 pp[0], nxt_errno); | 576 nxt_alert(task, "pipe close(%FD) failed %E", pp[0], nxt_errno); |
586 } 587 588 if (close(pp[1]) != 0) { | 577 } 578 579 if (close(pp[1]) != 0) { |
589 nxt_log(task, NXT_LOG_CRIT, "pipe close(%FD) failed %E", 590 pp[1], nxt_errno); | 580 nxt_alert(task, "pipe close(%FD) failed %E", pp[1], nxt_errno); |
591 } 592} 593 594 595size_t 596nxt_dir_current(char *buf, size_t len) 597{ 598 if (nxt_fast_path(getcwd(buf, len) != NULL)) { 599 return nxt_strlen(buf); 600 } 601 602 nxt_thread_log_alert("getcwd(%uz) failed %E", len, nxt_errno); 603 604 return 0; 605} | 581 } 582} 583 584 585size_t 586nxt_dir_current(char *buf, size_t len) 587{ 588 if (nxt_fast_path(getcwd(buf, len) != NULL)) { 589 return nxt_strlen(buf); 590 } 591 592 nxt_thread_log_alert("getcwd(%uz) failed %E", len, nxt_errno); 593 594 return 0; 595} |