os.h revision 059f354a6b7b116e4469ff7fe99c1142affa0ad6
97a9a944b5887e91042b019776c41d5dd74557aferikabele/* ====================================================================
97a9a944b5887e91042b019776c41d5dd74557aferikabele * The Apache Software License, Version 1.1
97a9a944b5887e91042b019776c41d5dd74557aferikabele *
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive * Copyright (c) 2000 The Apache Software Foundation. All rights
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive * reserved.
a945f35eff8b6a88009ce73de6d4c862ce58de3cslive *
5a58787efeb02a1c3f06569d019ad81fd2efa06end * Redistribution and use in source and binary forms, with or without
5a58787efeb02a1c3f06569d019ad81fd2efa06end * modification, are permitted provided that the following conditions
5a58787efeb02a1c3f06569d019ad81fd2efa06end * are met:
5a58787efeb02a1c3f06569d019ad81fd2efa06end *
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * 1. Redistributions of source code must retain the above copyright
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * notice, this list of conditions and the following disclaimer.
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen *
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen * 2. Redistributions in binary form must reproduce the above copyright
5a58787efeb02a1c3f06569d019ad81fd2efa06end * notice, this list of conditions and the following disclaimer in
5a58787efeb02a1c3f06569d019ad81fd2efa06end * the documentation and/or other materials provided with the
5a58787efeb02a1c3f06569d019ad81fd2efa06end * distribution.
d229f940abfb2490dee17979e9a5ff31b7012eb5rbowen *
3f08db06526d6901aa08c110b5bc7dde6bc39905nd * 3. The end-user documentation included with the redistribution,
5a58787efeb02a1c3f06569d019ad81fd2efa06end * if any, must include the following acknowledgment:
5a58787efeb02a1c3f06569d019ad81fd2efa06end * "This product includes software developed by the
5a58787efeb02a1c3f06569d019ad81fd2efa06end * Apache Software Foundation (http://www.apache.org/)."
3f08db06526d6901aa08c110b5bc7dde6bc39905nd * Alternately, this acknowledgment may appear in the software itself,
5a58787efeb02a1c3f06569d019ad81fd2efa06end * if and wherever such third-party acknowledgments normally appear.
a63f0ab647ad2ab72efc9bea7a66e24e9ebc5cc2nd *
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd * 4. The names "Apache" and "Apache Software Foundation" must
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd * not be used to endorse or promote products derived from this
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd * software without prior written permission. For written
e1e8390280254f7f0580d701e583f670643d4f3fnilgun * permission, please contact apache@apache.org.
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung *
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd * 5. Products derived from this software may not be called "Apache",
5a58787efeb02a1c3f06569d019ad81fd2efa06end * nor may "Apache" appear in their name, without prior written
5a58787efeb02a1c3f06569d019ad81fd2efa06end * permission of the Apache Software Foundation.
5a58787efeb02a1c3f06569d019ad81fd2efa06end *
5a58787efeb02a1c3f06569d019ad81fd2efa06end * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
5a58787efeb02a1c3f06569d019ad81fd2efa06end * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
5a58787efeb02a1c3f06569d019ad81fd2efa06end * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
5a58787efeb02a1c3f06569d019ad81fd2efa06end * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
06ba4a61654b3763ad65f52283832ebf058fdf1cslive * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
ced7ef1f8c0df1805da0e87dbc5a1b6282910573nd * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
ced7ef1f8c0df1805da0e87dbc5a1b6282910573nd * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
b21197dc8e6b8c764fdcc24d4bae8b0eebb6bc4end * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive * SUCH DAMAGE.
97a9a944b5887e91042b019776c41d5dd74557aferikabele * ====================================================================
f8396ed8364b56ec8adeaa49cac35a929758a29eslive *
ffb01336be79c64046b636e59fa8ddca8ec029edsf * This software consists of voluntary contributions made by many
f8396ed8364b56ec8adeaa49cac35a929758a29eslive * individuals on behalf of the Apache Software Foundation. For more
f8396ed8364b56ec8adeaa49cac35a929758a29eslive * information on the Apache Software Foundation, please see
5a58787efeb02a1c3f06569d019ad81fd2efa06end * <http://www.apache.org/>.
5a58787efeb02a1c3f06569d019ad81fd2efa06end *
5a58787efeb02a1c3f06569d019ad81fd2efa06end * Portions of this software are based upon public domain software
5a58787efeb02a1c3f06569d019ad81fd2efa06end * originally written at the National Center for Supercomputing Applications,
deeee6bb6fd94c0ba5f3730b58abd9d299c89ccdnd * University of Illinois, Urbana-Champaign.
4db28ee269aa06f7c6232e11cd01f58c3349af23noodl */
117c1f888a14e73cdd821dc6c23eb0411144a41cnd
117c1f888a14e73cdd821dc6c23eb0411144a41cnd#ifndef APACHE_OS_H
4a31db3c3a0202003c1b9f87affa7cc143e120e5sf#define APACHE_OS_H
117c1f888a14e73cdd821dc6c23eb0411144a41cnd/*
ffb01336be79c64046b636e59fa8ddca8ec029edsf * Compile the server including all the Windows NT 4.0 header files by
117c1f888a14e73cdd821dc6c23eb0411144a41cnd * default. We still want the server to run on Win95/98 so use
117c1f888a14e73cdd821dc6c23eb0411144a41cnd * runtime checks before calling NT specific functions to verify we are
117c1f888a14e73cdd821dc6c23eb0411144a41cnd * really running on an NT system.
2bc7f1cf720973a67f8ff7a8d523e40569ae5b6cnd */
117c1f888a14e73cdd821dc6c23eb0411144a41cnd#define _WIN32_WINNT 0x0400
117c1f888a14e73cdd821dc6c23eb0411144a41cnd#include "apr_general.h"
117c1f888a14e73cdd821dc6c23eb0411144a41cnd#include <windows.h>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd#include <winsock2.h>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd#include <mswsock.h>
117c1f888a14e73cdd821dc6c23eb0411144a41cnd#include <process.h>
87ffb6e33f3cbef3b9bb406cc2d27039fa336eaatrawick#include <malloc.h>
4db28ee269aa06f7c6232e11cd01f58c3349af23noodl#include <io.h>
5a58787efeb02a1c3f06569d019ad81fd2efa06end#include <fcntl.h>
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end#define PLATFORM "Win32"
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end/*
5a58787efeb02a1c3f06569d019ad81fd2efa06end * This file in included in all Apache source code. It contains definitions
654d8eb036bedc99e90e11910ee02d3421417697rbowen * of facilities available on _this_ operating system (HAVE_* macros),
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh * and prototypes of OS specific functions defined in os.c
5a58787efeb02a1c3f06569d019ad81fd2efa06end */
5a58787efeb02a1c3f06569d019ad81fd2efa06end
5a58787efeb02a1c3f06569d019ad81fd2efa06end/* temporarily replace crypt */
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf/* char *crypt(const char *pw, const char *salt); */
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#define crypt(buf,salt) (buf)
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick/* Although DIR_TYPE is dirent (see nt/readdir.h) we need direct.h for
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick chdir() */
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#include <direct.h>
654d8eb036bedc99e90e11910ee02d3421417697rbowen
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define STATUS
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#ifndef STRICT
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define STRICT
92510838f2eb125726e15c5eb4f7a23c7a0396e4slive#endif
97a9a944b5887e91042b019776c41d5dd74557aferikabele#define CASE_BLIND_FILESYSTEM
654d8eb036bedc99e90e11910ee02d3421417697rbowen#define NO_WRITEV
92510838f2eb125726e15c5eb4f7a23c7a0396e4slive#define NO_USE_SIGACTION
97a9a944b5887e91042b019776c41d5dd74557aferikabele/* #undef HAVE_TIMES */
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive/* #undef HAVE_GETTIMEOFDAY */
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive#define USE_LONGJMP
92510838f2eb125726e15c5eb4f7a23c7a0396e4slive#define HAVE_MMAP
92510838f2eb125726e15c5eb4f7a23c7a0396e4slive#define USE_MMAP_SCOREBOARD
ffb01336be79c64046b636e59fa8ddca8ec029edsf#define HAVE_CANONICAL_FILENAME
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#define HAVE_DRIVE_LETTERS
ffb01336be79c64046b636e59fa8ddca8ec029edsf#define HAVE_SENDFILE
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawicktypedef int uid_t;
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawicktypedef int gid_t;
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawicktypedef int pid_t;
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawicktypedef int mode_t;
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsftypedef char * caddr_t;
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf/*
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsfDefine export types. API_EXPORT_NONSTD is a nasty hack to avoid having to declare
ffb01336be79c64046b636e59fa8ddca8ec029edsfevery configuration function as __stdcall.
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick*/
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#if 0 /* Handled by APR... */
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#ifdef SHARED_MODULE
77c77cf89621f21c8e2bbad63058b5eaa5f88d4ajim# define API_VAR_EXPORT __declspec(dllimport)
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick# define API_EXPORT(type) __declspec(dllimport) type __stdcall
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf# define API_EXPORT_NONSTD(type) __declspec(dllimport) type
ced7ef1f8c0df1805da0e87dbc5a1b6282910573nd#else
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick# define API_VAR_EXPORT __declspec(dllexport)
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf# define API_EXPORT(type) __declspec(dllexport) type __stdcall
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf# define API_EXPORT_NONSTD(type) __declspec(dllexport) type
9a58dc6a2b26ec128b1270cf48810e705f1a90dbsf#endif
ced7ef1f8c0df1805da0e87dbc5a1b6282910573nd#endif
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#define MODULE_VAR_EXPORT __declspec(dllexport)
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick
4a31db3c3a0202003c1b9f87affa7cc143e120e5sf#define strcasecmp(s1, s2) stricmp(s1, s2)
4a31db3c3a0202003c1b9f87affa7cc143e120e5sf#define strncasecmp(s1, s2, n) strnicmp(s1, s2, n)
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#define lstat(x, y) stat(x, y)
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#define S_ISLNK(m) (0)
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#define S_ISREG(m) ((m & _S_IFREG) == _S_IFREG)
ffb01336be79c64046b636e59fa8ddca8ec029edsf#ifndef S_ISDIR
8a6d5edcb07aeccca7afba02a17dd6904d6b206ctrawick#define S_ISDIR(m) (((m) & S_IFDIR) == S_IFDIR)
92510838f2eb125726e15c5eb4f7a23c7a0396e4slive#endif
92510838f2eb125726e15c5eb4f7a23c7a0396e4slive
97a9a944b5887e91042b019776c41d5dd74557aferikabele
92510838f2eb125726e15c5eb4f7a23c7a0396e4slive#define STDIN_FILENO 0
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic#define STDOUT_FILENO 1
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic#define STDERR_FILENO 2
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic#define JMP_BUF jmp_buf
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic#define O_CREAT _O_CREAT
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic#define O_RDWR _O_RDWR
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic/* Seems Windows is not a subgenius */
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic#define NO_SLACK
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic#include <stddef.h>
f0fa55ff14fa0bf8fd72d989f6625de6dc3260c8igalic
06ba4a61654b3763ad65f52283832ebf058fdf1cslive__inline int ap_os_is_path_absolute(const char *file)
e8d485701957d5c6de870111c112e168a894d49and{
e8d485701957d5c6de870111c112e168a894d49and /* For now, just do the same check that http_request.c and mod_alias.c
654d8eb036bedc99e90e11910ee02d3421417697rbowen * do.
654d8eb036bedc99e90e11910ee02d3421417697rbowen */
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive return file[0] == '/' || file[1] == ':';
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive}
9bcfc3697a91b5215893a7d0206865b13fc72148nd
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7slive/* OS-dependent filename routines in util_win32.c */
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7sliveAPI_EXPORT(char *) ap_os_canonical_filename(ap_context_t *p, const char *file);
06ba4a61654b3763ad65f52283832ebf058fdf1csliveAPI_EXPORT(char *) ap_os_case_canonical_filename(ap_context_t *pPool, const char *szFile);
4a31db3c3a0202003c1b9f87affa7cc143e120e5sfAPI_EXPORT(char *) ap_os_systemcase_filename(ap_context_t *pPool, const char *szFile);
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7sliveint ap_os_is_filename_valid(const char *file);
9b6a3a558cc90ffdaa0b50bd02546ffec424ded7sliveint os_strftime(char *, size_t , const char *, const struct tm *);
709e3a21ba73b8433462959cd56c773454b34441trawick
709e3a21ba73b8433462959cd56c773454b34441trawick/* Abstractions for dealing with shared object files (DLLs on Win32).
709e3a21ba73b8433462959cd56c773454b34441trawick * These are used by mod_so.c
709e3a21ba73b8433462959cd56c773454b34441trawick * ToDo: This need to be migrated to APR
709e3a21ba73b8433462959cd56c773454b34441trawick */
709e3a21ba73b8433462959cd56c773454b34441trawick
709e3a21ba73b8433462959cd56c773454b34441trawick#define ap_os_dso_handle_t HINSTANCE
5a58787efeb02a1c3f06569d019ad81fd2efa06end#define ap_os_dso_init()
5a58787efeb02a1c3f06569d019ad81fd2efa06end#define ap_os_dso_load(l) LoadLibraryEx(l, NULL, LOAD_WITH_ALTERED_SEARCH_PATH)
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd#define ap_os_dso_unload(l) FreeLibrary(l)
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd#define ap_os_dso_sym(h,s) GetProcAddress(h,s)
ad74a0524a06bfe11b7de9e3b4ce7233ab3bd3f7nd#define ap_os_dso_error() "" /* for now */
e1e8390280254f7f0580d701e583f670643d4f3fnilgun
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung/* Other ap_os_ routines not used by this platform */
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh#define ap_os_kill(pid, sig) kill(pid, sig)
19737f4fbef1805f9c3e9e045bb6d710a1e5e10fhumbedooh
0d0ba3a410038e179b695446bb149cce6264e0abndtypedef void thread;
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedoohtypedef void event;
0d0ba3a410038e179b695446bb149cce6264e0abnd
0d0ba3a410038e179b695446bb149cce6264e0abnd
0d0ba3a410038e179b695446bb149cce6264e0abnd#endif /* ! APACHE_OS_H */
0d0ba3a410038e179b695446bb149cce6264e0abnd