summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_file.c
diff options
context:
space:
mode:
authorAndrew Clayton <a.clayton@nginx.com>2022-12-01 01:39:57 +0000
committerAndrew Clayton <a.clayton@nginx.com>2022-12-10 14:00:20 +0000
commit9466daf9bdafa3e00f521a47f4ce218353bf7f86 (patch)
tree5a2f0959af2a46f09f865511a54daca79034c491 /src/nxt_file.c
parent55b9a5307d705da91d3ef317639356c748853a7c (diff)
downloadunit-9466daf9bdafa3e00f521a47f4ce218353bf7f86.tar.gz
unit-9466daf9bdafa3e00f521a47f4ce218353bf7f86.tar.bz2
Added simple wrappers for fopen(3) and fclose(3).
Add simple wrapper functions for fopen(3) and fclose(3) that are somewhat akin to the nxt_file_open() and nxt_file_close() wrappers that log errors. Suggested-by: Alejandro Colomar <alx@nginx.com> Reviewed-by: Alejandro Colomar <alx@nginx.com> Signed-off-by: Andrew Clayton <a.clayton@nginx.com>
Diffstat (limited to 'src/nxt_file.c')
-rw-r--r--src/nxt_file.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/nxt_file.c b/src/nxt_file.c
index 5d38d57e..a3fcda76 100644
--- a/src/nxt_file.c
+++ b/src/nxt_file.c
@@ -500,6 +500,43 @@ nxt_fd_close(nxt_fd_t fd)
}
+FILE *
+nxt_file_fopen(nxt_task_t *task, const char *pathname, const char *mode)
+{
+ int err;
+ FILE *fp;
+
+#if (NXT_DEBUG)
+ nxt_thread_time_update(task->thread);
+#endif
+
+ fp = fopen(pathname, mode);
+ err = (fp == NULL) ? nxt_errno : 0;
+
+ nxt_debug(task, "fopen(\"%s\", \"%s\"): fp:%p err:%d", pathname, mode, fp,
+ err);
+
+ if (nxt_fast_path(fp != NULL)) {
+ return fp;
+ }
+
+ nxt_alert(task, "fopen(\"%s\") failed %E", pathname, err);
+
+ return NULL;
+}
+
+
+void
+nxt_file_fclose(nxt_task_t *task, FILE *fp)
+{
+ nxt_debug(task, "fclose(%p)", fp);
+
+ if (nxt_slow_path(fclose(fp) == -1)) {
+ nxt_alert(task, "fclose() failed %E", nxt_errno);
+ }
+}
+
+
/*
* nxt_file_redirect() redirects the file to the fd descriptor.
* Then the fd descriptor is closed.