--- /dev/null
+#ifndef IPC_H_INCLUDED
+#define IPC_H_INCLUDED
+#define IPC_H_VERSION "$Id: ipc.h,v 2.0 2002/06/04 14:34:21 jongfoster Exp $"
+/*********************************************************************
+ *
+ * File : $Source: /cvsroot/ijbswa/current/src/ipc.h,v $
+ *
+ * Purpose : Functions to provide portable interprocess
+ * communications: semaphores, sleeping, etc.
+ *
+ * Copyright : Written by and Copyright (C) 2002, 2003 the SourceForge
+ * Privoxy team. http://www.privoxy.org/
+ *
+ * Based on the Internet Junkbuster originally written
+ * by and Copyright (C) 1997 Anonymous Coders and
+ * Junkbusters Corporation. http://www.junkbusters.com
+ *
+ * This program is free software; you can redistribute it
+ * and/or modify it under the terms of the GNU General
+ * Public License as published by the Free Software
+ * Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will
+ * be useful, but WITHOUT ANY WARRANTY; without even the
+ * implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ *
+ * The GNU General Public License should be included with
+ * this file. If not, you can view it at
+ * http://www.gnu.org/copyleft/gpl.html
+ * or write to the Free Software Foundation, Inc., 59
+ * Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Revisions :
+ * $Log: ipc.h,v $
+ *
+ *********************************************************************/
+\f
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*
+ * Here, we define common ways of defining mutual exclusion variables
+ * and the manipulation thereof. We define an alias for the type that
+ * particular OSes like to see, and we have a common model of locking
+ * and unlocking them.
+ */
+
+#ifdef _WIN32
+ #include <windows.h>
+ #define IPC_MUTEX_LOCK HANDLE
+ #define IPC_CREATE_MUTEX(lock) InitializeCriticalSection(&lock)
+ #define IPC_LOCK_MUTEX(lock) EnterCriticalSection(lock)
+ #define IPC_UNLOCK_MUTEX(lock) LeaveCriticalSection(lock)
+ #define IPC_SLEEP_SECONDS(seconds) Sleep(seconds * 1000)
+#elif __OS2__
+ #define INCL_DOSSEMAPHORES
+ #define INCL_DOSPROCESS
+ #include <os2.h>
+ #define IPC_MUTEX_LOCK HMTX
+ #define IPC_CREATE_MUTEX(lock) DosCreateMutexSem(NULL, &lock, 0, FALSE)
+ #define IPC_LOCK_MUTEX(lock) DosRequestMutexSem(lock,SEM_INDEFINITE_WAIT)
+ #define IPC_UNLOCK_MUTEX(lock) DosReleaseMutexSem(lock)
+ #define IPC_SLEEP_SECONDS(seconds) DosSleep(seconds * 1000)
+#else
+ /* Generic unix processing. This will probably need tweaking for variants. */
+ #include <sys/signal.h>
+ #include <pthread.h>
+ #define IPC_MUTEX_LOCK pthread_mutex_t
+ #define IPC_CREATE_MUTEX(lock) pthread_mutex_init(&lock,0)
+ #define IPC_LOCK_MUTEX(lock) pthread_mutex_lock(&lock)
+ #define IPC_UNLOCK_MUTEX(lock) pthread_mutex_unlock(&lock)
+ #define IPC_SLEEP_SECONDS(seconds) sleep(seconds)
+#endif
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif /* ndef IPC_H_INCLUDED */
+
+/*
+ Local Variables:
+ tab-width: 3
+ end:
+*/