aboutsummaryrefslogtreecommitdiff
path: root/src/os/unix
diff options
context:
space:
mode:
Diffstat (limited to 'src/os/unix')
-rw-r--r--src/os/unix/ngx_errno.h3
-rw-r--r--src/os/unix/ngx_files.c14
-rw-r--r--src/os/unix/ngx_files.h54
-rw-r--r--src/os/unix/ngx_types.h8
4 files changed, 61 insertions, 18 deletions
diff --git a/src/os/unix/ngx_errno.h b/src/os/unix/ngx_errno.h
index feb9e4a08..d0f255a4e 100644
--- a/src/os/unix/ngx_errno.h
+++ b/src/os/unix/ngx_errno.h
@@ -19,10 +19,13 @@ typedef int ngx_err_t;
#define NGX_ECONNRESET ECONNRESET
#define NGX_ETIMEDOUT ETIMEDOUT
#define NGX_ECANCELED ECANCELED
+#define NGX_ENOMOREFILES 0
+
#define ngx_errno errno
#define ngx_socket_errno errno
+#define ngx_set_errno(err) errno = err
#define ngx_set_socket_errno(err) errno = err
#if 0
diff --git a/src/os/unix/ngx_files.c b/src/os/unix/ngx_files.c
index 1fd69fc4c..76b86a035 100644
--- a/src/os/unix/ngx_files.c
+++ b/src/os/unix/ngx_files.c
@@ -169,6 +169,20 @@ ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl,
}
+int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir)
+{
+ dir->dir = opendir(name->data);
+
+ if (dir->dir == NULL) {
+ return NGX_ERROR;
+ }
+
+ dir->info_valid = 0;
+
+ return NGX_OK;
+}
+
+
#if 0
ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset)
diff --git a/src/os/unix/ngx_files.h b/src/os/unix/ngx_files.h
index f83cc6a0c..09fc856a4 100644
--- a/src/os/unix/ngx_files.h
+++ b/src/os/unix/ngx_files.h
@@ -49,37 +49,59 @@ ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *ce,
off_t offset, ngx_pool_t *pool);
-#define ngx_rename_file(from, to, pool) rename(from->data, to->data)
+#define ngx_rename_file rename
#define ngx_rename_file_n "rename"
-#define ngx_open_dir opendir
+#define ngx_file_info(file, sb) stat(file, sb)
+#define ngx_file_info_n "stat()"
+
+#define ngx_fd_info(fd, sb) fstat(fd, sb)
+#define ngx_fd_info_n "fstat()"
+
+#define ngx_is_dir(sb) (S_ISDIR((sb)->st_mode))
+#define ngx_is_file(sb) (S_ISREG((sb)->st_mode))
+#define ngx_file_size(sb) (sb)->st_size
+#define ngx_file_mtime(sb) (sb)->st_mtime
+#define ngx_file_uniq(sb) (sb)->st_ino
+
+
+#define NGX_DIR_MASK_LEN 0
+
+
+int ngx_open_dir(ngx_str_t *name, ngx_dir_t *dir);
#define ngx_open_dir_n "opendir()"
-#define ngx_read_dir readdir
+#define ngx_close_dir(d) closedir((d)->dir)
+#define ngx_close_dir_n "closedir()"
+
+
+#define ngx_read_dir(d) \
+ (((d)->de = readdir((d)->dir)) ? NGX_OK : NGX_ERROR)
#define ngx_read_dir_n "readdir()"
-#define ngx_mkdir(name) mkdir(name, 0700)
-#define ngx_mkdir_n "mkdir()"
+#define ngx_create_dir(name) mkdir(name, 0700)
+#define ngx_create_dir_n "mkdir()"
#define ngx_delete_dir rmdir
#define ngx_delete_dir_n "rmdir()"
-#define ngx_file_type(file, sb) stat(file, sb)
-#define ngx_file_type_n "stat()"
-
-#define ngx_stat_fd(fd, sb) fstat(fd, sb)
-#define ngx_stat_fd_n "fstat()"
-
-#define ngx_is_dir(sb) (S_ISDIR(sb->st_mode))
-#define ngx_is_file(sb) (S_ISREG(sb->st_mode))
-#define ngx_file_size(sb) sb->st_size
-#define ngx_file_mtime(sb) sb->st_mtime
-#define ngx_file_uniq(sb) sb->st_ino
+#define ngx_de_name(dir) (dir)->de->d_name
+#ifdef __FreeBSD__
+#define ngx_de_namelen(dir) (dir)->de->d_namlen
+#else
+#define ngx_de_namelen(dir) ngx_strlen((dir)->de->d_name)
+#endif
+#define ngx_de_info(name, dir) stat(name, &(dir)->info)
+#define ngx_de_info_n "stat()"
+#define ngx_de_is_dir(dir) (S_ISDIR((dir)->info.st_mode))
+#define ngx_de_is_file(dir) (S_ISREG((dir)->info.st_mode))
+#define ngx_de_size(dir) (dir)->info.st_size
+#define ngx_de_mtime(dir) (dir)->info.st_mtime
#endif /* _NGX_FILES_H_INCLUDED_ */
diff --git a/src/os/unix/ngx_types.h b/src/os/unix/ngx_types.h
index e2622c557..bdad25dd7 100644
--- a/src/os/unix/ngx_types.h
+++ b/src/os/unix/ngx_types.h
@@ -9,8 +9,12 @@ typedef int ngx_fd_t;
typedef struct stat ngx_file_info_t;
typedef ino_t ngx_file_uniq_t;
-typedef DIR ngx_dir_t;
-typedef struct dirent ngx_dirent_t;
+typedef struct {
+ DIR *dir;
+ struct dirent *de;
+ struct stat info;
+ unsigned info_valid;
+} ngx_dir_t;
#endif /* _NGX_TYPES_H_INCLUDED_ */