os.h revision 1ccd992d37d62c8cb2056126f2234f64ec189bfd
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* ====================================================================
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * The Apache Software License, Version 1.1
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * Copyright (c) 2000 The Apache Software Foundation. All rights
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * reserved.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * Redistribution and use in source and binary forms, with or without
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * modification, are permitted provided that the following conditions
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * are met:
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * 1. Redistributions of source code must retain the above copyright
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * notice, this list of conditions and the following disclaimer.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * 2. Redistributions in binary form must reproduce the above copyright
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * notice, this list of conditions and the following disclaimer in
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * the documentation and/or other materials provided with the
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * distribution.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * 3. The end-user documentation included with the redistribution,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * if any, must include the following acknowledgment:
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * "This product includes software developed by the
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * Apache Software Foundation (http://www.apache.org/)."
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * Alternately, this acknowledgment may appear in the software itself,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * if and wherever such third-party acknowledgments normally appear.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * 4. The names "Apache" and "Apache Software Foundation" must
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * not be used to endorse or promote products derived from this
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * software without prior written permission. For written
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * permission, please contact apache@apache.org.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * 5. Products derived from this software may not be called "Apache",
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * nor may "Apache" appear in their name, without prior written
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * permission of the Apache Software Foundation.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * SUCH DAMAGE.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * ====================================================================
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * This software consists of voluntary contributions made by many
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * individuals on behalf of the Apache Software Foundation. For more
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * information on the Apache Software Foundation, please see
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * <http://www.apache.org/>.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * Portions of this software are based upon public domain software
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * originally written at the National Center for Supercomputing Applications,
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * University of Illinois, Urbana-Champaign.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#ifndef APACHE_OS_H
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define APACHE_OS_H
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/*
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * Compile the server including all the Windows NT 4.0 header files by
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * default. We still want the server to run on Win95/98 so use
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * runtime checks before calling NT specific functions to verify we are
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * really running on an NT system.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering *
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * Delegate windows include to the apr.h header, if USER or GDI declarations
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * are required (for a window rather than console application), include
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * windows.h prior to any other Apache header files.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#ifndef _WIN32
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define _WIN32
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#endif
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#include "apr_general.h"
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#include <process.h>
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#include <malloc.h>
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#include <io.h>
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#include <fcntl.h>
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define PLATFORM "Win32"
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/*
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * This file in included in all Apache source code. It contains definitions
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * of facilities available on _this_ operating system (HAVE_* macros),
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * and prototypes of OS specific functions defined in os.c
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* temporarily replace crypt */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* char *crypt(const char *pw, const char *salt); */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define crypt(buf,salt) (buf)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* Although DIR_TYPE is dirent (see nt/readdir.h) we need direct.h for
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering chdir() */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#include <direct.h>
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define STATUS
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#ifndef STRICT
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define STRICT
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#endif
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define CASE_BLIND_FILESYSTEM
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define NO_WRITEV
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define NO_USE_SIGACTION
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* #undef HAVE_TIMES */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define USE_LONGJMP
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define HAVE_CANONICAL_FILENAME
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define HAVE_DRIVE_LETTERS
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define HAVE_SENDFILE
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringtypedef int uid_t;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringtypedef int gid_t;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringtypedef int pid_t;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringtypedef int mode_t;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringtypedef char * caddr_t;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define HAVE_MEMMOVE
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define S_ISLNK(m) (0)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define S_ISREG(m) ((m & _S_IFREG) == _S_IFREG)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#ifndef S_ISDIR
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define S_ISDIR(m) (((m) & S_IFDIR) == S_IFDIR)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#endif
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define STDIN_FILENO 0
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define STDOUT_FILENO 1
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define STDERR_FILENO 2
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define JMP_BUF jmp_buf
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define O_CREAT _O_CREAT
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define O_RDWR _O_RDWR
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* Seems Windows is not a subgenius */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define NO_SLACK
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define APACHE_MPM_DIR "modules/mpm/winnt" /* generated on unix */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#include <stddef.h>
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering__inline int ap_os_is_path_absolute(const char *file)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering{
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering /* For now, just do the same check that http_request.c and mod_alias.c
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering * do.
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering return file[0] == '/' || file[1] == ':';
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering}
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* OS-dependent filename routines in util_win32.c */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart PoetteringAPI_EXPORT(char *) ap_os_canonical_filename(apr_pool_t *p, const char *file);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart PoetteringAPI_EXPORT(char *) ap_os_case_canonical_filename(apr_pool_t *pPool, const char *szFile);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart PoetteringAPI_EXPORT(char *) ap_os_systemcase_filename(apr_pool_t *pPool, const char *szFile);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart PoetteringAPI_EXPORT(int) ap_os_is_filename_valid(const char *file);
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define ap_os_dso_error() "" /* for now */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering/* Other ap_os_ routines not used by this platform */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#define ap_os_kill(pid, sig) kill(pid, sig)
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringtypedef void thread;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poetteringtypedef void event;
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering#endif /* ! APACHE_OS_H */
7a8f63251df2202e59a76e537a688fe7500cb1adLennart Poettering