nxt_file.c (564:762f8c976ead) nxt_file.c (1855:a946d8cd7f8c)
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 28 unchanged lines hidden (view full) ---

37 nxt_log(task, file->log_level, "open(\"%FN\") failed %E",
38 file->name, file->error);
39 }
40
41 return NXT_ERROR;
42}
43
44
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 28 unchanged lines hidden (view full) ---

37 nxt_log(task, file->log_level, "open(\"%FN\") failed %E",
38 file->name, file->error);
39 }
40
41 return NXT_ERROR;
42}
43
44
45#if (NXT_HAVE_OPENAT2)
46
47nxt_int_t
48nxt_file_openat2(nxt_task_t *task, nxt_file_t *file, nxt_uint_t mode,
49 nxt_uint_t create, nxt_file_access_t access, nxt_fd_t dfd,
50 nxt_uint_t resolve)
51{
52 struct open_how how;
53
54 nxt_memzero(&how, sizeof(how));
55
56 /* O_NONBLOCK is to prevent blocking on FIFOs, special devices, etc. */
57 mode |= (O_NONBLOCK | create);
58
59 how.flags = mode;
60 how.mode = access;
61 how.resolve = resolve;
62
63 file->fd = syscall(SYS_openat2, dfd, file->name, &how, sizeof(how));
64
65 file->error = (file->fd == -1) ? nxt_errno : 0;
66
67#if (NXT_DEBUG)
68 nxt_thread_time_update(task->thread);
69#endif
70
71 nxt_debug(task, "openat2(%FD, \"%FN\"): %FD err:%d", dfd, file->name,
72 file->fd, file->error);
73
74 if (file->fd != -1) {
75 return NXT_OK;
76 }
77
78 if (file->log_level != 0) {
79 nxt_log(task, file->log_level, "openat2(%FD, \"%FN\") failed %E", dfd,
80 file->name, file->error);
81 }
82
83 return NXT_ERROR;
84}
85
86#endif
87
88
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_alert(task, "close(%FD, \"%FN\") failed %E",
52 file->fd, file->name, nxt_errno);

--- 543 unchanged lines hidden ---
89void
90nxt_file_close(nxt_task_t *task, nxt_file_t *file)
91{
92 nxt_debug(task, "close(%FD)", file->fd);
93
94 if (close(file->fd) != 0) {
95 nxt_alert(task, "close(%FD, \"%FN\") failed %E",
96 file->fd, file->name, nxt_errno);

--- 543 unchanged lines hidden ---