]> granicus.if.org Git - apache/blob - os/win32/os.h
9f4b2e59277ce44cfc46ca1d043ffa1a334b2228
[apache] / os / win32 / os.h
1 /* ====================================================================
2  * The Apache Software License, Version 1.1
3  *
4  * Copyright (c) 2000 The Apache Software Foundation.  All rights
5  * reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  *
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in
16  *    the documentation and/or other materials provided with the
17  *    distribution.
18  *
19  * 3. The end-user documentation included with the redistribution,
20  *    if any, must include the following acknowledgment:
21  *       "This product includes software developed by the
22  *        Apache Software Foundation (http://www.apache.org/)."
23  *    Alternately, this acknowledgment may appear in the software itself,
24  *    if and wherever such third-party acknowledgments normally appear.
25  *
26  * 4. The names "Apache" and "Apache Software Foundation" must
27  *    not be used to endorse or promote products derived from this
28  *    software without prior written permission. For written
29  *    permission, please contact apache@apache.org.
30  *
31  * 5. Products derived from this software may not be called "Apache",
32  *    nor may "Apache" appear in their name, without prior written
33  *    permission of the Apache Software Foundation.
34  *
35  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
36  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
37  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
38  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
39  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
40  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
41  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
42  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
43  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
44  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
45  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
46  * SUCH DAMAGE.
47  * ====================================================================
48  *
49  * This software consists of voluntary contributions made by many
50  * individuals on behalf of the Apache Software Foundation.  For more
51  * information on the Apache Software Foundation, please see
52  * <http://www.apache.org/>.
53  *
54  * Portions of this software are based upon public domain software
55  * originally written at the National Center for Supercomputing Applications,
56  * University of Illinois, Urbana-Champaign.
57  */
58
59 #ifndef APACHE_OS_H
60 #define APACHE_OS_H
61 /* 
62  * Compile the server including all the Windows NT 4.0 header files by 
63  * default. We still want the server to run on Win95/98 so use 
64  * runtime checks before calling NT specific functions to verify we are 
65  * really running on an NT system.
66  */
67 #define _WIN32_WINNT 0x0400
68 #include "apr_general.h"
69 #include <windows.h>
70 #include <winsock2.h>
71 #include <mswsock.h>
72 #include <process.h>
73 #include <malloc.h>
74 #include <io.h>
75 #include <fcntl.h>
76
77 #define PLATFORM "Win32"
78
79 /*
80  * This file in included in all Apache source code. It contains definitions
81  * of facilities available on _this_ operating system (HAVE_* macros),
82  * and prototypes of OS specific functions defined in os.c
83  */
84
85 /* temporarily replace crypt */
86 /* char *crypt(const char *pw, const char *salt); */
87 #define crypt(buf,salt)     (buf)
88
89 /* Although DIR_TYPE is dirent (see nt/readdir.h) we need direct.h for
90    chdir() */
91 #include <direct.h>
92
93 #define STATUS
94 #ifndef STRICT
95 #define STRICT
96 #endif
97 #define CASE_BLIND_FILESYSTEM
98 #define NO_WRITEV
99 #define NO_USE_SIGACTION
100 /* #undef HAVE_TIMES */
101 /* #undef HAVE_GETTIMEOFDAY */
102 #define USE_LONGJMP
103 #define HAVE_MMAP
104 #define USE_MMAP_SCOREBOARD
105 #define HAVE_CANONICAL_FILENAME
106 #define HAVE_DRIVE_LETTERS
107 #define HAVE_SENDFILE
108
109 typedef int uid_t;
110 typedef int gid_t;
111 typedef int pid_t;
112 typedef int mode_t;
113 typedef char * caddr_t;
114
115 /*
116 Define export types. API_EXPORT_NONSTD is a nasty hack to avoid having to declare
117 every configuration function as __stdcall.
118 */
119
120 #if 0 /* Handled by APR... */
121 #ifdef SHARED_MODULE
122 # define API_VAR_EXPORT         __declspec(dllimport)
123 # define API_EXPORT(type)    __declspec(dllimport) type __stdcall
124 # define API_EXPORT_NONSTD(type)    __declspec(dllimport) type
125 #else
126 # define API_VAR_EXPORT         __declspec(dllexport)
127 # define API_EXPORT(type)    __declspec(dllexport) type __stdcall
128 # define API_EXPORT_NONSTD(type)    __declspec(dllexport) type
129 #endif
130 #endif
131
132 #define MODULE_VAR_EXPORT   __declspec(dllexport)
133
134 #define strcasecmp(s1, s2) stricmp(s1, s2)
135 #define strncasecmp(s1, s2, n) strnicmp(s1, s2, n)
136 #define lstat(x, y) stat(x, y)
137 #define S_ISLNK(m) (0)
138 #define S_ISREG(m) ((m & _S_IFREG) == _S_IFREG)
139 #ifndef S_ISDIR
140 #define S_ISDIR(m) (((m) & S_IFDIR) == S_IFDIR)
141 #endif
142
143
144 #define STDIN_FILENO  0
145 #define STDOUT_FILENO 1
146 #define STDERR_FILENO 2
147 #define JMP_BUF jmp_buf
148 #define O_CREAT _O_CREAT
149 #define O_RDWR _O_RDWR
150 /* Seems Windows is not a subgenius */
151 #define NO_SLACK
152 #include <stddef.h>
153
154 __inline int ap_os_is_path_absolute(const char *file)
155 {
156   /* For now, just do the same check that http_request.c and mod_alias.c
157    * do. 
158    */
159   return file[0] == '/' || file[1] == ':';
160 }
161
162 /* OS-dependent filename routines in util_win32.c */
163 API_EXPORT(char *) ap_os_canonical_filename(ap_pool_t *p, const char *file);
164 API_EXPORT(char *) ap_os_case_canonical_filename(ap_pool_t *pPool, const char *szFile);
165 API_EXPORT(char *) ap_os_systemcase_filename(ap_pool_t *pPool, const char *szFile);
166 int ap_os_is_filename_valid(const char *file);
167 int os_strftime(char *, size_t , const char *, const struct tm *);
168
169 #define ap_os_dso_error()   ""  /* for now */
170 /* Other ap_os_ routines not used by this platform */
171 #define ap_os_kill(pid, sig)                kill(pid, sig)
172
173 typedef void thread;
174 typedef void event;
175
176
177 #endif   /* ! APACHE_OS_H */