#ifndef _NGX_FILES_H_INCLUDED_
#define _NGX_FILES_H_INCLUDED_


#include <ngx_config.h>

#include <ngx_types.h>
#include <ngx_file.h>


/* INVALID_FILE_ATTRIBUTES specified but never defined at least in VC6SP2 */
#ifndef INVALID_FILE_ATTRIBUTES
#define INVALID_FILE_ATTRIBUTES  0xFFFFFFFF
#endif

#define NGX_INVALID_FILE            INVALID_HANDLE_VALUE
#define NGX_FILE_ERROR              0



#define ngx_open_file(name, flags)                                          \
            CreateFile(name, flags,                                         \
                       FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,  \
                       NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL)
/*
                       NULL, OPEN_EXISTING, 0, NULL)
*/

#define ngx_open_tempfile(name, persistent)                                 \
            CreateFile(name,                                                \
                    GENERIC_READ|GENERIC_WRITE,                             \
                    FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,     \
                    NULL,                                                   \
                    CREATE_NEW,                                             \
                    persistent ? 0:                                         \
                        FILE_ATTRIBUTE_TEMPORARY|FILE_FLAG_DELETE_ON_CLOSE, \
                    NULL);

#define ngx_open_tempfile_n         "CreateFile()"



#define ngx_open_file_n             "CreateFile()"

#define NGX_FILE_RDONLY             GENERIC_READ

#define ngx_close_file              CloseHandle
#define ngx_close_file_n            "CloseHandle()"

#define ngx_mkdir(name)             CreateDirectory(name, NULL)
#define ngx_mkdir_n                 "CreateDirectory()"

int ngx_file_type(char *filename, ngx_file_info_t *fi);
#define ngx_file_type_n             "GetFileAttributes"

#define ngx_stat_fd(fd, fi)        GetFileInformationByHandle(fd, fi)
#define ngx_stat_fd_n              "GetFileInformationByHandle"

#define ngx_is_dir(fi)      (fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
#define ngx_is_file(fi)     !(fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

#define ngx_file_size(fi)                                                   \
            (((off_t) fi.nFileSizeHigh << 32) | fi.nFileSizeLow)


/* There are 134774 days between 1 Jan 1970 and 1 Jan 1601,
   11644473600 seconds or 11644473600,000,000,0 100-nanosecond intervals */

#define ngx_file_mtime(fi)                                                  \
   (time_t) (((((unsigned __int64) fi.ftLastWriteTime.dwHighDateTime << 32) \
                                 | fi.ftLastWriteTime.dwLowDateTime)        \
                                          - 116444736000000000) / 10000000)


ssize_t ngx_read_file(ngx_file_t *file, char *buf, size_t size, off_t offset);
#define ngx_read_file_n            "ReadFile()"


#endif /* _NGX_FILES_H_INCLUDED_ */
