Base ready
This commit is contained in:
		
							
								
								
									
										17
									
								
								ops/cookbooks/vendor/mingw/files/default/bash.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								ops/cookbooks/vendor/mingw/files/default/bash.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,17 @@ | ||||
| @echo off | ||||
| set HOME=/home/%USERNAME% | ||||
|  | ||||
| IF "%MSYSTEM%"=="" ( | ||||
|   echo MSYSTEM is NOT defined | ||||
|   exit | ||||
| ) | ||||
|  | ||||
| rem Ask MSYS to initialize with a minimal path by default. | ||||
| rem This will put only the windows system paths into the msys path. | ||||
| set MSYS2_PATH_TYPE=minimal | ||||
|  | ||||
| rem See /etc/profile - it should invoke post-install step 05-home-dir.post | ||||
| rem which uses this environment variable to change directories. | ||||
| set CHERE_INVOKING=1 | ||||
|  | ||||
| %~dp0..\usr\bin\bash.exe -l %* | ||||
							
								
								
									
										23
									
								
								ops/cookbooks/vendor/mingw/files/default/custom-upgrade.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								ops/cookbooks/vendor/mingw/files/default/custom-upgrade.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,23 @@ | ||||
| declare -r CRITICAL_PACKAGES="bash pacman msys2-runtime" | ||||
| declare -r OPTIONAL_PACKAGES="msys2-runtime-devel" | ||||
|  | ||||
| # set pacman command if not already defined | ||||
| PACMAN=${PACMAN:-pacman} | ||||
| # save full path to command as PATH may change when sourcing /etc/profile | ||||
| PACMAN_PATH=$(type -P $PACMAN) | ||||
|  | ||||
| run_pacman() { | ||||
| 	local cmd | ||||
| 	cmd=("$PACMAN_PATH" "$@") | ||||
| 	"${cmd[@]}" | ||||
| } | ||||
|  | ||||
| if ! run_pacman -Sy; then | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| run_pacman -Qu ${CRITICAL_PACKAGES} | ||||
|  | ||||
| if ! run_pacman -S --noconfirm --needed ${CRITICAL_PACKAGES} ${OPTIONAL_PACKAGES}; then | ||||
|   exit 1 | ||||
| fi | ||||
							
								
								
									
										13
									
								
								ops/cookbooks/vendor/mingw/files/default/custom_prefix.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								ops/cookbooks/vendor/mingw/files/default/custom_prefix.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,13 @@ | ||||
| # Prepend values from the parent environment to msys2 environment variables. | ||||
|  | ||||
| export PKG_CONFIG_PATH="${PREMSYS2_PKG_CONFIG_PATH:+${PREMSYS2_PKG_CONFIG_PATH}:}${PKG_CONFIG_PATH}" | ||||
|  | ||||
| # Instead of placing our entire windows path into msys2, we can selectively | ||||
| # prepend just the important parts that we need. This also ensures that | ||||
| # we don't accidentally add other unnecessary chef or git msys2 library | ||||
| # files in the path. | ||||
| export PATH="${PREMSYS2_PATH:+${PREMSYS2_PATH}:}${PATH}" | ||||
|  | ||||
| # TODO: If there are other variabled we want to control like MANPATH or ACLOCALPATH, | ||||
| # add those here. | ||||
|  | ||||
							
								
								
									
										719
									
								
								ops/cookbooks/vendor/mingw/files/default/pthread.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										719
									
								
								ops/cookbooks/vendor/mingw/files/default/pthread.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,719 @@ | ||||
| /* | ||||
|    Copyright (c) 2011-2013 mingw-w64 project | ||||
|  | ||||
|    Permission is hereby granted, free of charge, to any person obtaining a | ||||
|    copy of this software and associated documentation files (the "Software"), | ||||
|    to deal in the Software without restriction, including without limitation | ||||
|    the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||
|    and/or sell copies of the Software, and to permit persons to whom the | ||||
|    Software is furnished to do so, subject to the following conditions: | ||||
|  | ||||
|    The above copyright notice and this permission notice shall be included in | ||||
|    all copies or substantial portions of the Software. | ||||
|  | ||||
|    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
|    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
|    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
|    FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | ||||
|    DEALINGS IN THE SOFTWARE. | ||||
| */ | ||||
|  | ||||
| /* | ||||
|  * Parts of this library are derived by: | ||||
|  * | ||||
|  * Posix Threads library for Microsoft Windows | ||||
|  * | ||||
|  * Use at own risk, there is no implied warranty to this code. | ||||
|  * It uses undocumented features of Microsoft Windows that can change | ||||
|  * at any time in the future. | ||||
|  * | ||||
|  * (C) 2010 Lockless Inc. | ||||
|  * All rights reserved. | ||||
|  * | ||||
|  * Redistribution and use in source and binary forms, with or without modification, | ||||
|  * are permitted provided that the following conditions are met: | ||||
|  * | ||||
|  * | ||||
|  *  * Redistributions of source code must retain the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer. | ||||
|  *  * Redistributions in binary form must reproduce the above copyright notice, | ||||
|  *    this list of conditions and the following disclaimer in the documentation | ||||
|  *    and/or other materials provided with the distribution. | ||||
|  *  * Neither the name of Lockless Inc. nor the names of its contributors may be | ||||
|  *    used to endorse or promote products derived from this software without | ||||
|  *    specific prior written permission. | ||||
|  * | ||||
|  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AN | ||||
|  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||
|  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | ||||
|  * IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | ||||
|  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | ||||
|  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||||
|  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF | ||||
|  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE | ||||
|  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||||
|  * OF THE POSSIBILITY OF SUCH DAMAGE. | ||||
|  */ | ||||
| #ifndef WIN_PTHREADS_H | ||||
| #define WIN_PTHREADS_H | ||||
|  | ||||
| #include <stddef.h> | ||||
| #include <errno.h> | ||||
| #include <sys/types.h> | ||||
|  | ||||
| #include <process.h> | ||||
| #include <limits.h> | ||||
| #include <signal.h> | ||||
|  | ||||
| #include <sys/timeb.h> | ||||
|  | ||||
| #include "pthread_compat.h" | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| extern "C" { | ||||
| #endif | ||||
|  | ||||
| #define __WINPTHREADS_VERSION_MAJOR 0 | ||||
| #define __WINPTHREADS_VERSION_MINOR 5 | ||||
| #define __WINPTHREADS_VERSION_PATCHLEVEL 0 | ||||
|  | ||||
| /* MSB 8-bit major version, 8-bit minor version, 16-bit patch level.  */ | ||||
| #define __WINPTHREADS_VERSION 0x00050000 | ||||
|  | ||||
| #if defined DLL_EXPORT && !defined WINPTHREAD_STATIC | ||||
| #ifdef IN_WINPTHREAD | ||||
| #define WINPTHREAD_API __declspec(dllexport) | ||||
| #else | ||||
| #define WINPTHREAD_API __declspec(dllimport) | ||||
| #endif | ||||
| #else | ||||
| #define WINPTHREAD_API | ||||
| #endif | ||||
|  | ||||
| /* #define WINPTHREAD_DBG 1 */ | ||||
|  | ||||
| /* Compatibility stuff: */ | ||||
| #define RWLS_PER_THREAD						8 | ||||
|  | ||||
| /* Error-codes.  */ | ||||
| #ifndef ETIMEDOUT | ||||
| #define ETIMEDOUT	138 | ||||
| #endif | ||||
| #ifndef ENOTSUP | ||||
| #define ENOTSUP		129 | ||||
| #endif | ||||
| #ifndef EWOULDBLOCK | ||||
| #define EWOULDBLOCK	140 | ||||
| #endif | ||||
|  | ||||
| /* pthread specific defines.  */ | ||||
|  | ||||
| #define PTHREAD_CANCEL_DISABLE 0 | ||||
| #define PTHREAD_CANCEL_ENABLE 0x01 | ||||
|  | ||||
| #define PTHREAD_CANCEL_DEFERRED 0 | ||||
| #define PTHREAD_CANCEL_ASYNCHRONOUS 0x02 | ||||
|  | ||||
| #define PTHREAD_CREATE_JOINABLE 0 | ||||
| #define PTHREAD_CREATE_DETACHED 0x04 | ||||
|  | ||||
| #define PTHREAD_EXPLICIT_SCHED 0 | ||||
| #define PTHREAD_INHERIT_SCHED 0x08 | ||||
|  | ||||
| #define PTHREAD_SCOPE_PROCESS 0 | ||||
| #define PTHREAD_SCOPE_SYSTEM 0x10 | ||||
|  | ||||
| #define PTHREAD_DEFAULT_ATTR (PTHREAD_CANCEL_ENABLE) | ||||
|  | ||||
| #define PTHREAD_CANCELED ((void *) (intptr_t) 0xDEADBEEF) | ||||
|  | ||||
| #define _PTHREAD_NULL_THREAD ((pthread_t) 0) | ||||
|  | ||||
| #define PTHREAD_ONCE_INIT 0 | ||||
|  | ||||
| #define PTHREAD_DESTRUCTOR_ITERATIONS 256 | ||||
| #define PTHREAD_KEYS_MAX (1<<20) | ||||
|  | ||||
| #define PTHREAD_MUTEX_NORMAL 0 | ||||
| #define PTHREAD_MUTEX_ERRORCHECK 1 | ||||
| #define PTHREAD_MUTEX_RECURSIVE 2 | ||||
| #define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL | ||||
|  | ||||
| #define PTHREAD_MUTEX_SHARED 1 | ||||
| #define PTHREAD_MUTEX_PRIVATE 0 | ||||
|  | ||||
| #define PTHREAD_PRIO_NONE 0 | ||||
| #define PTHREAD_PRIO_INHERIT 8 | ||||
| #define PTHREAD_PRIO_PROTECT 16 | ||||
| #define PTHREAD_PRIO_MULT 32 | ||||
| #define PTHREAD_PROCESS_SHARED 1 | ||||
| #define PTHREAD_PROCESS_PRIVATE 0 | ||||
|  | ||||
| #define PTHREAD_MUTEX_FAST_NP		PTHREAD_MUTEX_NORMAL | ||||
| #define PTHREAD_MUTEX_TIMED_NP		PTHREAD_MUTEX_FAST_NP | ||||
| #define PTHREAD_MUTEX_ADAPTIVE_NP	PTHREAD_MUTEX_FAST_NP | ||||
| #define PTHREAD_MUTEX_ERRORCHECK_NP	PTHREAD_MUTEX_ERRORCHECK | ||||
| #define PTHREAD_MUTEX_RECURSIVE_NP	PTHREAD_MUTEX_RECURSIVE | ||||
|  | ||||
| void * WINPTHREAD_API pthread_timechange_handler_np(void * dummy); | ||||
| /* int    WINPTHREAD_API pthread_delay_np (const struct timespec *interval); */ | ||||
| int    WINPTHREAD_API pthread_num_processors_np(void); | ||||
| int    WINPTHREAD_API pthread_set_num_processors_np(int n); | ||||
|  | ||||
| #define PTHREAD_BARRIER_SERIAL_THREAD 1 | ||||
|  | ||||
| /* maximum number of times a read lock may be obtained */ | ||||
| #define	MAX_READ_LOCKS		(INT_MAX - 1) | ||||
|  | ||||
| /* No fork() in windows - so ignore this */ | ||||
| #define pthread_atfork(F1,F2,F3) 0 | ||||
|  | ||||
| /* unsupported stuff: */ | ||||
| #define pthread_mutex_getprioceiling(M, P) ENOTSUP | ||||
| #define pthread_mutex_setprioceiling(M, P) ENOTSUP | ||||
| #define pthread_getcpuclockid(T, C) ENOTSUP | ||||
| #define pthread_attr_getguardsize(A, S) ENOTSUP | ||||
| #define pthread_attr_setgaurdsize(A, S) ENOTSUP | ||||
|  | ||||
| typedef long pthread_once_t; | ||||
| typedef unsigned pthread_mutexattr_t; | ||||
| typedef unsigned pthread_key_t; | ||||
| typedef void *pthread_barrierattr_t; | ||||
| typedef int pthread_condattr_t; | ||||
| typedef int pthread_rwlockattr_t; | ||||
|  | ||||
| /* | ||||
| struct _pthread_v; | ||||
|  | ||||
| typedef struct pthread_t { | ||||
|   struct _pthread_v *p; | ||||
|   int x; | ||||
| } pthread_t; | ||||
| */ | ||||
|  | ||||
| typedef uintptr_t pthread_t; | ||||
|  | ||||
| typedef struct _pthread_cleanup _pthread_cleanup; | ||||
| struct _pthread_cleanup | ||||
| { | ||||
|     void (*func)(void *); | ||||
|     void *arg; | ||||
|     _pthread_cleanup *next; | ||||
| }; | ||||
|  | ||||
| #define pthread_cleanup_push(F, A)\ | ||||
| {\ | ||||
|     const _pthread_cleanup _pthread_cup = {(F), (A), *pthread_getclean()};\ | ||||
|     __sync_synchronize();\ | ||||
|     *pthread_getclean() = (_pthread_cleanup *) &_pthread_cup;\ | ||||
|     __sync_synchronize() | ||||
|  | ||||
| /* Note that if async cancelling is used, then there is a race here */ | ||||
| #define pthread_cleanup_pop(E)\ | ||||
|     (*pthread_getclean() = _pthread_cup.next, (E?_pthread_cup.func((pthread_once_t *)_pthread_cup.arg):0));} | ||||
|  | ||||
| /* ------------------------------------------------------------------- | ||||
|  * CHEF PATCHES | ||||
|  * | ||||
|  * PREVENT REDECLERATION OF timespec | ||||
|  * | ||||
|  * The original header here assumed that struct timespec was not | ||||
|  * available on windows under mingw. So it redeclared timespec itself. | ||||
|  * | ||||
|  * This currently generates and error.  With recent binutils, timespec | ||||
|  * is declared in time.h but in a slightly different manner from the | ||||
|  * traditional posix definition (it involves unions) to account for | ||||
|  * MSVC related issues. | ||||
|  * | ||||
|  * They need to go through a lot of hoops to declare the exact size | ||||
|  * and layout of timespec because MSVC uses a slightly more loltastic | ||||
|  * definition of time_t than everyone else in the universe. | ||||
|  * Traditionally, time_t was an integral quantity that represents the | ||||
|  * number of seconds since the unix epoch and it's 32-bits wide. | ||||
|  * This leads to the Y2038 problem where the timestamp will overflow. | ||||
|  * MSVC "solves" this by changing the definition of time_t to 64-bit | ||||
|  * on 64-bit platforms which wreaks havoc on a large number of | ||||
|  * structs that need to deal with the new layout (including timespec). | ||||
|  * Thankfully, we are using a compiler that sticks to the older | ||||
|  * definition of time_t - so as long as we don't attempt to link it | ||||
|  * to any MSVC generated libraries, we should be ok.  The winpthreads | ||||
|  * compatibility layer that ships with TDM GCC was patched and | ||||
|  * compiled under these assumptions. | ||||
|  * | ||||
|  * Since we are assuming that we aren't going to generally be mixing | ||||
|  * MSVC generated and mingw generated dlls and TDM GCC provides us with | ||||
|  * good old-fashioned system libraries and dlls, we can simply delete | ||||
|  * the declaration of timespec here and use parts/time.h from mingwrt | ||||
|  * instead. | ||||
|  */ | ||||
|  | ||||
| #define __need_time_t | ||||
| #define __need_struct_timespec | ||||
| #define _FAKE_TIME_H_SOURCED 1 | ||||
| #include <parts/time.h> | ||||
|  | ||||
| /* END OF CHEF PATCHES | ||||
|  * ------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #ifndef SCHED_OTHER | ||||
| /* Some POSIX realtime extensions, mostly stubbed */ | ||||
| #define SCHED_OTHER     0 | ||||
| #define SCHED_FIFO      1 | ||||
| #define SCHED_RR        2 | ||||
| #define SCHED_MIN       SCHED_OTHER | ||||
| #define SCHED_MAX       SCHED_RR | ||||
|  | ||||
| struct sched_param { | ||||
|   int sched_priority; | ||||
| }; | ||||
|  | ||||
| int WINPTHREAD_API sched_yield(void); | ||||
| int WINPTHREAD_API sched_get_priority_min(int pol); | ||||
| int WINPTHREAD_API sched_get_priority_max(int pol); | ||||
| int WINPTHREAD_API sched_getscheduler(pid_t pid); | ||||
| int WINPTHREAD_API sched_setscheduler(pid_t pid, int pol, const struct sched_param *param); | ||||
|  | ||||
| #endif | ||||
|  | ||||
| typedef struct pthread_attr_t pthread_attr_t; | ||||
| struct pthread_attr_t | ||||
| { | ||||
|     unsigned p_state; | ||||
|     void *stack; | ||||
|     size_t s_size; | ||||
|     struct sched_param param; | ||||
| }; | ||||
|  | ||||
| int WINPTHREAD_API pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param); | ||||
| int WINPTHREAD_API pthread_attr_getschedparam(const pthread_attr_t *attr, struct sched_param *param); | ||||
| int WINPTHREAD_API pthread_getschedparam(pthread_t thread, int *pol, struct sched_param *param); | ||||
| int WINPTHREAD_API pthread_setschedparam(pthread_t thread, int pol, const struct sched_param *param); | ||||
| int WINPTHREAD_API pthread_attr_setschedpolicy (pthread_attr_t *attr, int pol); | ||||
| int WINPTHREAD_API pthread_attr_getschedpolicy (pthread_attr_t *attr, int *pol); | ||||
|  | ||||
| /* synchronization objects */ | ||||
| typedef void	*pthread_spinlock_t; | ||||
| typedef void	*pthread_mutex_t; | ||||
| typedef void	*pthread_cond_t; | ||||
| typedef void	*pthread_rwlock_t; | ||||
| typedef void	*pthread_barrier_t; | ||||
|  | ||||
| #define PTHREAD_MUTEX_NORMAL 0 | ||||
| #define PTHREAD_MUTEX_ERRORCHECK 1 | ||||
| #define PTHREAD_MUTEX_RECURSIVE 2 | ||||
|  | ||||
| #define GENERIC_INITIALIZER				((void *) (size_t) -1) | ||||
| #define GENERIC_ERRORCHECK_INITIALIZER			((void *) (size_t) -2) | ||||
| #define GENERIC_RECURSIVE_INITIALIZER			((void *) (size_t) -3) | ||||
| #define GENERIC_NORMAL_INITIALIZER			((void *) (size_t) -1) | ||||
| #define PTHREAD_MUTEX_INITIALIZER			(pthread_mutex_t)GENERIC_INITIALIZER | ||||
| #define PTHREAD_RECURSIVE_MUTEX_INITIALIZER		(pthread_mutex_t)GENERIC_RECURSIVE_INITIALIZER | ||||
| #define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER		(pthread_mutex_t)GENERIC_ERRORCHECK_INITIALIZER | ||||
| #define PTHREAD_NORMAL_MUTEX_INITIALIZER		(pthread_mutex_t)GENERIC_NORMAL_INITIALIZER | ||||
| #define PTHREAD_DEFAULT_MUTEX_INITIALIZER		PTHREAD_NORMAL_MUTEX_INITIALIZER | ||||
| #define PTHREAD_COND_INITIALIZER			(pthread_cond_t)GENERIC_INITIALIZER | ||||
| #define PTHREAD_RWLOCK_INITIALIZER			(pthread_rwlock_t)GENERIC_INITIALIZER | ||||
| #define PTHREAD_SPINLOCK_INITIALIZER			(pthread_spinlock_t)GENERIC_INITIALIZER | ||||
|  | ||||
| extern void WINPTHREAD_API (**_pthread_key_dest)(void *); | ||||
| int         WINPTHREAD_API pthread_key_create(pthread_key_t *key, void (* dest)(void *)); | ||||
| int         WINPTHREAD_API pthread_key_delete(pthread_key_t key); | ||||
| void *      WINPTHREAD_API pthread_getspecific(pthread_key_t key); | ||||
| int         WINPTHREAD_API pthread_setspecific(pthread_key_t key, const void *value); | ||||
|  | ||||
| pthread_t WINPTHREAD_API pthread_self(void); | ||||
| int       WINPTHREAD_API pthread_once(pthread_once_t *o, void (*func)(void)); | ||||
| void      WINPTHREAD_API pthread_testcancel(void); | ||||
| int       WINPTHREAD_API pthread_equal(pthread_t t1, pthread_t t2); | ||||
| void      WINPTHREAD_API pthread_tls_init(void); | ||||
| void      WINPTHREAD_API _pthread_cleanup_dest(pthread_t t); | ||||
| int       WINPTHREAD_API pthread_get_concurrency(int *val); | ||||
| int       WINPTHREAD_API pthread_set_concurrency(int val); | ||||
| void      WINPTHREAD_API pthread_exit(void *res); | ||||
| void      WINPTHREAD_API _pthread_invoke_cancel(void); | ||||
| int       WINPTHREAD_API pthread_cancel(pthread_t t); | ||||
| int       WINPTHREAD_API pthread_kill(pthread_t t, int sig); | ||||
| unsigned  WINPTHREAD_API _pthread_get_state(const pthread_attr_t *attr, unsigned flag); | ||||
| int       WINPTHREAD_API _pthread_set_state(pthread_attr_t *attr, unsigned flag, unsigned val); | ||||
| int       WINPTHREAD_API pthread_setcancelstate(int state, int *oldstate); | ||||
| int       WINPTHREAD_API pthread_setcanceltype(int type, int *oldtype); | ||||
| int       WINPTHREAD_API pthread_create_wrapper(void *args); | ||||
| int       WINPTHREAD_API pthread_create(pthread_t *th, const pthread_attr_t *attr, void *(* func)(void *), void *arg); | ||||
| int       WINPTHREAD_API pthread_join(pthread_t t, void **res); | ||||
| int       WINPTHREAD_API pthread_detach(pthread_t t); | ||||
|  | ||||
| int WINPTHREAD_API pthread_rwlock_init(pthread_rwlock_t *rwlock_, const pthread_rwlockattr_t *attr); | ||||
| int WINPTHREAD_API pthread_rwlock_wrlock(pthread_rwlock_t *l); | ||||
| int WINPTHREAD_API pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlock, const struct timespec *ts); | ||||
| int WINPTHREAD_API pthread_rwlock_rdlock(pthread_rwlock_t *l); | ||||
| int WINPTHREAD_API pthread_rwlock_timedrdlock(pthread_rwlock_t *l, const struct timespec *ts); | ||||
| int WINPTHREAD_API pthread_rwlock_unlock(pthread_rwlock_t *l); | ||||
| int WINPTHREAD_API pthread_rwlock_tryrdlock(pthread_rwlock_t *l); | ||||
| int WINPTHREAD_API pthread_rwlock_trywrlock(pthread_rwlock_t *l); | ||||
| int WINPTHREAD_API pthread_rwlock_destroy (pthread_rwlock_t *l); | ||||
|  | ||||
| int WINPTHREAD_API pthread_cond_init(pthread_cond_t *cv, const pthread_condattr_t *a); | ||||
| int WINPTHREAD_API pthread_cond_destroy(pthread_cond_t *cv); | ||||
| int WINPTHREAD_API pthread_cond_signal (pthread_cond_t *cv); | ||||
| int WINPTHREAD_API pthread_cond_broadcast (pthread_cond_t *cv); | ||||
| int WINPTHREAD_API pthread_cond_wait (pthread_cond_t *cv, pthread_mutex_t *external_mutex); | ||||
| int WINPTHREAD_API pthread_cond_timedwait(pthread_cond_t *cv, pthread_mutex_t *external_mutex, const struct timespec *t); | ||||
| int WINPTHREAD_API pthread_cond_timedwait_relative_np(pthread_cond_t *cv, pthread_mutex_t *external_mutex, const struct timespec *t); | ||||
|  | ||||
| int WINPTHREAD_API pthread_mutex_lock(pthread_mutex_t *m); | ||||
| int WINPTHREAD_API pthread_mutex_timedlock(pthread_mutex_t *m, const struct timespec *ts); | ||||
| int WINPTHREAD_API pthread_mutex_unlock(pthread_mutex_t *m); | ||||
| int WINPTHREAD_API pthread_mutex_trylock(pthread_mutex_t *m); | ||||
| int WINPTHREAD_API pthread_mutex_init(pthread_mutex_t *m, const pthread_mutexattr_t *a); | ||||
| int WINPTHREAD_API pthread_mutex_destroy(pthread_mutex_t *m); | ||||
|  | ||||
| int WINPTHREAD_API pthread_barrier_destroy(pthread_barrier_t *b); | ||||
| int WINPTHREAD_API pthread_barrier_init(pthread_barrier_t *b, const void *attr, unsigned int count); | ||||
| int WINPTHREAD_API pthread_barrier_wait(pthread_barrier_t *b); | ||||
|  | ||||
| int WINPTHREAD_API pthread_spin_init(pthread_spinlock_t *l, int pshared); | ||||
| int WINPTHREAD_API pthread_spin_destroy(pthread_spinlock_t *l); | ||||
| /* No-fair spinlock due to lack of knowledge of thread number.  */ | ||||
| int WINPTHREAD_API pthread_spin_lock(pthread_spinlock_t *l); | ||||
| int WINPTHREAD_API pthread_spin_trylock(pthread_spinlock_t *l); | ||||
| int WINPTHREAD_API pthread_spin_unlock(pthread_spinlock_t *l); | ||||
|  | ||||
| int WINPTHREAD_API pthread_attr_init(pthread_attr_t *attr); | ||||
| int WINPTHREAD_API pthread_attr_destroy(pthread_attr_t *attr); | ||||
| int WINPTHREAD_API pthread_attr_setdetachstate(pthread_attr_t *a, int flag); | ||||
| int WINPTHREAD_API pthread_attr_getdetachstate(const pthread_attr_t *a, int *flag); | ||||
| int WINPTHREAD_API pthread_attr_setinheritsched(pthread_attr_t *a, int flag); | ||||
| int WINPTHREAD_API pthread_attr_getinheritsched(const pthread_attr_t *a, int *flag); | ||||
| int WINPTHREAD_API pthread_attr_setscope(pthread_attr_t *a, int flag); | ||||
| int WINPTHREAD_API pthread_attr_getscope(const pthread_attr_t *a, int *flag); | ||||
| int WINPTHREAD_API pthread_attr_getstackaddr(pthread_attr_t *attr, void **stack); | ||||
| int WINPTHREAD_API pthread_attr_setstackaddr(pthread_attr_t *attr, void *stack); | ||||
| int WINPTHREAD_API pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *size); | ||||
| int WINPTHREAD_API pthread_attr_setstacksize(pthread_attr_t *attr, size_t size); | ||||
|  | ||||
| int WINPTHREAD_API pthread_mutexattr_init(pthread_mutexattr_t *a); | ||||
| int WINPTHREAD_API pthread_mutexattr_destroy(pthread_mutexattr_t *a); | ||||
| int WINPTHREAD_API pthread_mutexattr_gettype(const pthread_mutexattr_t *a, int *type); | ||||
| int WINPTHREAD_API pthread_mutexattr_settype(pthread_mutexattr_t *a, int type); | ||||
| int WINPTHREAD_API pthread_mutexattr_getpshared(const pthread_mutexattr_t *a, int *type); | ||||
| int WINPTHREAD_API pthread_mutexattr_setpshared(pthread_mutexattr_t * a, int type); | ||||
| int WINPTHREAD_API pthread_mutexattr_getprotocol(const pthread_mutexattr_t *a, int *type); | ||||
| int WINPTHREAD_API pthread_mutexattr_setprotocol(pthread_mutexattr_t *a, int type); | ||||
| int WINPTHREAD_API pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *a, int * prio); | ||||
| int WINPTHREAD_API pthread_mutexattr_setprioceiling(pthread_mutexattr_t *a, int prio); | ||||
| int WINPTHREAD_API pthread_getconcurrency(void); | ||||
| int WINPTHREAD_API pthread_setconcurrency(int new_level); | ||||
|  | ||||
| int WINPTHREAD_API pthread_condattr_destroy(pthread_condattr_t *a); | ||||
| int WINPTHREAD_API pthread_condattr_init(pthread_condattr_t *a); | ||||
| int WINPTHREAD_API pthread_condattr_getpshared(const pthread_condattr_t *a, int *s); | ||||
| int WINPTHREAD_API pthread_condattr_setpshared(pthread_condattr_t *a, int s); | ||||
|  | ||||
| #ifndef __clockid_t_defined | ||||
| typedef int clockid_t; | ||||
| #define __clockid_t_defined 1 | ||||
| #endif  /* __clockid_t_defined */ | ||||
|  | ||||
| int WINPTHREAD_API pthread_condattr_getclock (const pthread_condattr_t *attr, | ||||
|        clockid_t *clock_id); | ||||
| int WINPTHREAD_API pthread_condattr_setclock(pthread_condattr_t *attr, | ||||
|        clockid_t clock_id); | ||||
| int WINPTHREAD_API __pthread_clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); | ||||
|  | ||||
| int WINPTHREAD_API pthread_barrierattr_init(void **attr); | ||||
| int WINPTHREAD_API pthread_barrierattr_destroy(void **attr); | ||||
| int WINPTHREAD_API pthread_barrierattr_setpshared(void **attr, int s); | ||||
| int WINPTHREAD_API pthread_barrierattr_getpshared(void **attr, int *s); | ||||
|  | ||||
| /* Private extensions for analysis and internal use.  */ | ||||
| struct _pthread_cleanup ** WINPTHREAD_API pthread_getclean (void); | ||||
| void *                     WINPTHREAD_API pthread_gethandle (pthread_t t); | ||||
| void *                     WINPTHREAD_API pthread_getevent (); | ||||
|  | ||||
| unsigned long long         WINPTHREAD_API _pthread_rel_time_in_ms(const struct timespec *ts); | ||||
| unsigned long long         WINPTHREAD_API _pthread_time_in_ms(void); | ||||
| unsigned long long         WINPTHREAD_API _pthread_time_in_ms_from_timespec(const struct timespec *ts); | ||||
| int                        WINPTHREAD_API _pthread_tryjoin (pthread_t t, void **res); | ||||
| int                        WINPTHREAD_API pthread_rwlockattr_destroy(pthread_rwlockattr_t *a); | ||||
| int                        WINPTHREAD_API pthread_rwlockattr_getpshared(pthread_rwlockattr_t *a, int *s); | ||||
| int                        WINPTHREAD_API pthread_rwlockattr_init(pthread_rwlockattr_t *a); | ||||
| int                        WINPTHREAD_API pthread_rwlockattr_setpshared(pthread_rwlockattr_t *a, int s); | ||||
|  | ||||
| #ifndef SIG_BLOCK | ||||
| #define SIG_BLOCK 0 | ||||
| #endif | ||||
| #ifndef SIG_UNBLOCK | ||||
| #define SIG_UNBLOCK 1 | ||||
| #endif | ||||
| #ifndef SIG_SETMASK | ||||
| #define SIG_SETMASK 2 | ||||
| #endif | ||||
|  | ||||
| #include <pthread_unistd.h> | ||||
|  | ||||
| #undef _POSIX_THREAD_DESTRUCTOR_ITERATIONS | ||||
| #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS     PTHREAD_DESTRUCTOR_ITERATIONS | ||||
|  | ||||
| #undef _POSIX_THREAD_KEYS_MAX | ||||
| #define _POSIX_THREAD_KEYS_MAX                  PTHREAD_KEYS_MAX | ||||
|  | ||||
| #undef PTHREAD_THREADS_MAX | ||||
| #define PTHREAD_THREADS_MAX                     2019 | ||||
|  | ||||
| #undef _POSIX_SEM_NSEMS_MAX | ||||
| #define _POSIX_SEM_NSEMS_MAX                    256 | ||||
|  | ||||
| #undef SEM_NSEMS_MAX | ||||
| #define SEM_NSEMS_MAX                           1024 | ||||
|  | ||||
| /* Wrap cancellation points.  */ | ||||
| #ifdef __WINPTRHEAD_ENABLE_WRAP_API | ||||
| #define accept(...) (pthread_testcancel(), accept(__VA_ARGS__)) | ||||
| #define aio_suspend(...) (pthread_testcancel(), aio_suspend(__VA_ARGS__)) | ||||
| #define clock_nanosleep(...) (pthread_testcancel(), clock_nanosleep(__VA_ARGS__)) | ||||
| #define close(...) (pthread_testcancel(), close(__VA_ARGS__)) | ||||
| #define connect(...) (pthread_testcancel(), connect(__VA_ARGS__)) | ||||
| #define creat(...) (pthread_testcancel(), creat(__VA_ARGS__)) | ||||
| #define fcntl(...) (pthread_testcancel(), fcntl(__VA_ARGS__)) | ||||
| #define fdatasync(...) (pthread_testcancel(), fdatasync(__VA_ARGS__)) | ||||
| #define fsync(...) (pthread_testcancel(), fsync(__VA_ARGS__)) | ||||
| #define getmsg(...) (pthread_testcancel(), getmsg(__VA_ARGS__)) | ||||
| #define getpmsg(...) (pthread_testcancel(), getpmsg(__VA_ARGS__)) | ||||
| #define lockf(...) (pthread_testcancel(), lockf(__VA_ARGS__)) | ||||
| #define mg_receive(...) (pthread_testcancel(), mg_receive(__VA_ARGS__)) | ||||
| #define mg_send(...) (pthread_testcancel(), mg_send(__VA_ARGS__)) | ||||
| #define mg_timedreceive(...) (pthread_testcancel(), mg_timedreceive(__VA_ARGS__)) | ||||
| #define mg_timessend(...) (pthread_testcancel(), mg_timedsend(__VA_ARGS__)) | ||||
| #define msgrcv(...) (pthread_testcancel(), msgrecv(__VA_ARGS__)) | ||||
| #define msgsnd(...) (pthread_testcancel(), msgsnd(__VA_ARGS__)) | ||||
| #define msync(...) (pthread_testcancel(), msync(__VA_ARGS__)) | ||||
| #define nanosleep(...) (pthread_testcancel(), nanosleep(__VA_ARGS__)) | ||||
| #define open(...) (pthread_testcancel(), open(__VA_ARGS__)) | ||||
| #define pause(...) (pthread_testcancel(), pause(__VA_ARGS__)) | ||||
| #define poll(...) (pthread_testcancel(), poll(__VA_ARGS__)) | ||||
| #define pread(...) (pthread_testcancel(), pread(__VA_ARGS__)) | ||||
| #define pselect(...) (pthread_testcancel(), pselect(__VA_ARGS__)) | ||||
| #define putmsg(...) (pthread_testcancel(), putmsg(__VA_ARGS__)) | ||||
| #define putpmsg(...) (pthread_testcancel(), putpmsg(__VA_ARGS__)) | ||||
| #define pwrite(...) (pthread_testcancel(), pwrite(__VA_ARGS__)) | ||||
| #define read(...) (pthread_testcancel(), read(__VA_ARGS__)) | ||||
| #define readv(...) (pthread_testcancel(), readv(__VA_ARGS__)) | ||||
| #define recv(...) (pthread_testcancel(), recv(__VA_ARGS__)) | ||||
| #define recvfrom(...) (pthread_testcancel(), recvfrom(__VA_ARGS__)) | ||||
| #define recvmsg(...) (pthread_testcancel(), recvmsg(__VA_ARGS__)) | ||||
| #define select(...) (pthread_testcancel(), select(__VA_ARGS__)) | ||||
| #define sem_timedwait(...) (pthread_testcancel(), sem_timedwait(__VA_ARGS__)) | ||||
| #define sem_wait(...) (pthread_testcancel(), sem_wait(__VA_ARGS__)) | ||||
| #define send(...) (pthread_testcancel(), send(__VA_ARGS__)) | ||||
| #define sendmsg(...) (pthread_testcancel(), sendmsg(__VA_ARGS__)) | ||||
| #define sendto(...) (pthread_testcancel(), sendto(__VA_ARGS__)) | ||||
| #define sigpause(...) (pthread_testcancel(), sigpause(__VA_ARGS__)) | ||||
| #define sigsuspend(...) (pthread_testcancel(), sigsuspend(__VA_ARGS__)) | ||||
| #define sigwait(...) (pthread_testcancel(), sigwait(__VA_ARGS__)) | ||||
| #define sigwaitinfo(...) (pthread_testcancel(), sigwaitinfo(__VA_ARGS__)) | ||||
| #define sleep(...) (pthread_testcancel(), sleep(__VA_ARGS__)) | ||||
| //#define Sleep(...) (pthread_testcancel(), Sleep(__VA_ARGS__)) | ||||
| #define system(...) (pthread_testcancel(), system(__VA_ARGS__)) | ||||
| #define access(...) (pthread_testcancel(), access(__VA_ARGS__)) | ||||
| #define asctime(...) (pthread_testcancel(), asctime(__VA_ARGS__)) | ||||
| #define catclose(...) (pthread_testcancel(), catclose(__VA_ARGS__)) | ||||
| #define catgets(...) (pthread_testcancel(), catgets(__VA_ARGS__)) | ||||
| #define catopen(...) (pthread_testcancel(), catopen(__VA_ARGS__)) | ||||
| #define closedir(...) (pthread_testcancel(), closedir(__VA_ARGS__)) | ||||
| #define closelog(...) (pthread_testcancel(), closelog(__VA_ARGS__)) | ||||
| #define ctermid(...) (pthread_testcancel(), ctermid(__VA_ARGS__)) | ||||
| #define ctime(...) (pthread_testcancel(), ctime(__VA_ARGS__)) | ||||
| #define dbm_close(...) (pthread_testcancel(), dbm_close(__VA_ARGS__)) | ||||
| #define dbm_delete(...) (pthread_testcancel(), dbm_delete(__VA_ARGS__)) | ||||
| #define dbm_fetch(...) (pthread_testcancel(), dbm_fetch(__VA_ARGS__)) | ||||
| #define dbm_nextkey(...) (pthread_testcancel(), dbm_nextkey(__VA_ARGS__)) | ||||
| #define dbm_open(...) (pthread_testcancel(), dbm_open(__VA_ARGS__)) | ||||
| #define dbm_store(...) (pthread_testcancel(), dbm_store(__VA_ARGS__)) | ||||
| #define dlclose(...) (pthread_testcancel(), dlclose(__VA_ARGS__)) | ||||
| #define dlopen(...) (pthread_testcancel(), dlopen(__VA_ARGS__)) | ||||
| #define endgrent(...) (pthread_testcancel(), endgrent(__VA_ARGS__)) | ||||
| #define endhostent(...) (pthread_testcancel(), endhostent(__VA_ARGS__)) | ||||
| #define endnetent(...) (pthread_testcancel(), endnetent(__VA_ARGS__)) | ||||
| #define endprotoent(...) (pthread_testcancel(), endprotoend(__VA_ARGS__)) | ||||
| #define endpwent(...) (pthread_testcancel(), endpwent(__VA_ARGS__)) | ||||
| #define endservent(...) (pthread_testcancel(), endservent(__VA_ARGS__)) | ||||
| #define endutxent(...) (pthread_testcancel(), endutxent(__VA_ARGS__)) | ||||
| #define fclose(...) (pthread_testcancel(), fclose(__VA_ARGS__)) | ||||
| #define fflush(...) (pthread_testcancel(), fflush(__VA_ARGS__)) | ||||
| #define fgetc(...) (pthread_testcancel(), fgetc(__VA_ARGS__)) | ||||
| #define fgetpos(...) (pthread_testcancel(), fgetpos(__VA_ARGS__)) | ||||
| #define fgets(...) (pthread_testcancel(), fgets(__VA_ARGS__)) | ||||
| #define fgetwc(...) (pthread_testcancel(), fgetwc(__VA_ARGS__)) | ||||
| #define fgetws(...) (pthread_testcancel(), fgetws(__VA_ARGS__)) | ||||
| #define fmtmsg(...) (pthread_testcancel(), fmtmsg(__VA_ARGS__)) | ||||
| #define fopen(...) (pthread_testcancel(), fopen(__VA_ARGS__)) | ||||
| #define fpathconf(...) (pthread_testcancel(), fpathconf(__VA_ARGS__)) | ||||
| #define fprintf(...) (pthread_testcancel(), fprintf(__VA_ARGS__)) | ||||
| #define fputc(...) (pthread_testcancel(), fputc(__VA_ARGS__)) | ||||
| #define fputs(...) (pthread_testcancel(), fputs(__VA_ARGS__)) | ||||
| #define fputwc(...) (pthread_testcancel(), fputwc(__VA_ARGS__)) | ||||
| #define fputws(...) (pthread_testcancel(), fputws(__VA_ARGS__)) | ||||
| #define fread(...) (pthread_testcancel(), fread(__VA_ARGS__)) | ||||
| #define freopen(...) (pthread_testcancel(), freopen(__VA_ARGS__)) | ||||
| #define fscanf(...) (pthread_testcancel(), fscanf(__VA_ARGS__)) | ||||
| #define fseek(...) (pthread_testcancel(), fseek(__VA_ARGS__)) | ||||
| #define fseeko(...) (pthread_testcancel(), fseeko(__VA_ARGS__)) | ||||
| #define fsetpos(...) (pthread_testcancel(), fsetpos(__VA_ARGS__)) | ||||
| #define fstat(...) (pthread_testcancel(), fstat(__VA_ARGS__)) | ||||
| #define ftell(...) (pthread_testcancel(), ftell(__VA_ARGS__)) | ||||
| #define ftello(...) (pthread_testcancel(), ftello(__VA_ARGS__)) | ||||
| #define ftw(...) (pthread_testcancel(), ftw(__VA_ARGS__)) | ||||
| #define fwprintf(...) (pthread_testcancel(), fwprintf(__VA_ARGS__)) | ||||
| #define fwrite(...) (pthread_testcancel(), fwrite(__VA_ARGS__)) | ||||
| #define fwscanf(...) (pthread_testcancel(), fwscanf(__VA_ARGS__)) | ||||
| #define getaddrinfo(...) (pthread_testcancel(), getaddrinfo(__VA_ARGS__)) | ||||
| #define getc(...) (pthread_testcancel(), getc(__VA_ARGS__)) | ||||
| #define getc_unlocked(...) (pthread_testcancel(), getc_unlocked(__VA_ARGS__)) | ||||
| #define getchar(...) (pthread_testcancel(), getchar(__VA_ARGS__)) | ||||
| #define getchar_unlocked(...) (pthread_testcancel(), getchar_unlocked(__VA_ARGS__)) | ||||
| #define getcwd(...) (pthread_testcancel(), getcwd(__VA_ARGS__)) | ||||
| #define getdate(...) (pthread_testcancel(), getdate(__VA_ARGS__)) | ||||
| #define getgrent(...) (pthread_testcancel(), getgrent(__VA_ARGS__)) | ||||
| #define getgrgid(...) (pthread_testcancel(), getgrgid(__VA_ARGS__)) | ||||
| #define getgrgid_r(...) (pthread_testcancel(), getgrgid_r(__VA_ARGS__)) | ||||
| #define gergrnam(...) (pthread_testcancel(), getgrnam(__VA_ARGS__)) | ||||
| #define getgrnam_r(...) (pthread_testcancel(), getgrnam_r(__VA_ARGS__)) | ||||
| #define gethostbyaddr(...) (pthread_testcancel(), gethostbyaddr(__VA_ARGS__)) | ||||
| #define gethostbyname(...) (pthread_testcancel(), gethostbyname(__VA_ARGS__)) | ||||
| #define gethostent(...) (pthread_testcancel(), gethostent(__VA_ARGS__)) | ||||
| #define gethostid(...) (pthread_testcancel(), gethostid(__VA_ARGS__)) | ||||
| #define gethostname(...) (pthread_testcancel(), gethostname(__VA_ARGS__)) | ||||
| #define getlogin(...) (pthread_testcancel(), getlogin(__VA_ARGS__)) | ||||
| #define getlogin_r(...) (pthread_testcancel(), getlogin_r(__VA_ARGS__)) | ||||
| #define getnameinfo(...) (pthread_testcancel(), getnameinfo(__VA_ARGS__)) | ||||
| #define getnetbyaddr(...) (pthread_testcancel(), getnetbyaddr(__VA_ARGS__)) | ||||
| #define getnetbyname(...) (pthread_testcancel(), getnetbyname(__VA_ARGS__)) | ||||
| #define getnetent(...) (pthread_testcancel(), getnetent(__VA_ARGS__)) | ||||
| #define getopt(...) (pthread_testcancel(), getopt(__VA_ARGS__)) | ||||
| #define getprotobyname(...) (pthread_testcancel(), getprotobyname(__VA_ARGS__)) | ||||
| #define getprotobynumber(...) (pthread_testcancel(), getprotobynumber(__VA_ARGS__)) | ||||
| #define getprotoent(...) (pthread_testcancel(), getprotoent(__VA_ARGS__)) | ||||
| #define getpwent(...) (pthread_testcancel(), getpwent(__VA_ARGS__)) | ||||
| #define getpwnam(...) (pthread_testcancel(), getpwnam(__VA_ARGS__)) | ||||
| #define getpwnam_r(...) (pthread_testcancel(), getpwnam_r(__VA_ARGS__)) | ||||
| #define getpwuid(...) (pthread_testcancel(), getpwuid(__VA_ARGS__)) | ||||
| #define getpwuid_r(...) (pthread_testcancel(), getpwuid_r(__VA_ARGS__)) | ||||
| #define gets(...) (pthread_testcancel(), gets(__VA_ARGS__)) | ||||
| #define getservbyname(...) (pthread_testcancel(), getservbyname(__VA_ARGS__)) | ||||
| #define getservbyport(...) (pthread_testcancel(), getservbyport(__VA_ARGS__)) | ||||
| #define getservent(...) (pthread_testcancel(), getservent(__VA_ARGS__)) | ||||
| #define getutxent(...) (pthread_testcancel(), getutxent(__VA_ARGS__)) | ||||
| #define getutxid(...) (pthread_testcancel(), getutxid(__VA_ARGS__)) | ||||
| #define getutxline(...) (pthread_testcancel(), getutxline(__VA_ARGS__)) | ||||
| #undef getwc | ||||
| #define getwc(...) (pthread_testcancel(), getwc(__VA_ARGS__)) | ||||
| #undef getwchar | ||||
| #define getwchar(...) (pthread_testcancel(), getwchar(__VA_ARGS__)) | ||||
| #define getwd(...) (pthread_testcancel(), getwd(__VA_ARGS__)) | ||||
| #define glob(...) (pthread_testcancel(), glob(__VA_ARGS__)) | ||||
| #define iconv_close(...) (pthread_testcancel(), iconv_close(__VA_ARGS__)) | ||||
| #define iconv_open(...) (pthread_testcancel(), iconv_open(__VA_ARGS__)) | ||||
| #define ioctl(...) (pthread_testcancel(), ioctl(__VA_ARGS__)) | ||||
| #define link(...) (pthread_testcancel(), link(__VA_ARGS__)) | ||||
| #define localtime(...) (pthread_testcancel(), localtime(__VA_ARGS__)) | ||||
| #define lseek(...) (pthread_testcancel(), lseek(__VA_ARGS__)) | ||||
| #define lstat(...) (pthread_testcancel(), lstat(__VA_ARGS__)) | ||||
| #define mkstemp(...) (pthread_testcancel(), mkstemp(__VA_ARGS__)) | ||||
| #define nftw(...) (pthread_testcancel(), nftw(__VA_ARGS__)) | ||||
| #define opendir(...) (pthread_testcancel(), opendir(__VA_ARGS__)) | ||||
| #define openlog(...) (pthread_testcancel(), openlog(__VA_ARGS__)) | ||||
| #define pathconf(...) (pthread_testcancel(), pathconf(__VA_ARGS__)) | ||||
| #define pclose(...) (pthread_testcancel(), pclose(__VA_ARGS__)) | ||||
| #define perror(...) (pthread_testcancel(), perror(__VA_ARGS__)) | ||||
| #define popen(...) (pthread_testcancel(), popen(__VA_ARGS__)) | ||||
| #define posix_fadvise(...) (pthread_testcancel(), posix_fadvise(__VA_ARGS__)) | ||||
| #define posix_fallocate(...) (pthread_testcancel(), posix_fallocate(__VA_ARGS__)) | ||||
| #define posix_madvise(...) (pthread_testcancel(), posix_madvise(__VA_ARGS__)) | ||||
| #define posix_openpt(...) (pthread_testcancel(), posix_openpt(__VA_ARGS__)) | ||||
| #define posix_spawn(...) (pthread_testcancel(), posix_spawn(__VA_ARGS__)) | ||||
| #define posix_spawnp(...) (pthread_testcancel(), posix_spawnp(__VA_ARGS__)) | ||||
| #define posix_trace_clear(...) (pthread_testcancel(), posix_trace_clear(__VA_ARGS__)) | ||||
| #define posix_trace_close(...) (pthread_testcancel(), posix_trace_close(__VA_ARGS__)) | ||||
| #define posix_trace_create(...) (pthread_testcancel(), posix_trace_create(__VA_ARGS__)) | ||||
| #define posix_trace_create_withlog(...) (pthread_testcancel(), posix_trace_create_withlog(__VA_ARGS__)) | ||||
| #define posix_trace_eventtypelist_getne(...) (pthread_testcancel(), posix_trace_eventtypelist_getne(__VA_ARGS__)) | ||||
| #define posix_trace_eventtypelist_rewin(...) (pthread_testcancel(), posix_trace_eventtypelist_rewin(__VA_ARGS__)) | ||||
| #define posix_trace_flush(...) (pthread_testcancel(), posix_trace_flush(__VA_ARGS__)) | ||||
| #define posix_trace_get_attr(...) (pthread_testcancel(), posix_trace_get_attr(__VA_ARGS__)) | ||||
| #define posix_trace_get_filter(...) (pthread_testcancel(), posix_trace_get_filter(__VA_ARGS__)) | ||||
| #define posix_trace_get_status(...) (pthread_testcancel(), posix_trace_get_status(__VA_ARGS__)) | ||||
| #define posix_trace_getnext_event(...) (pthread_testcancel(), posix_trace_getnext_event(__VA_ARGS__)) | ||||
| #define posix_trace_open(...) (pthread_testcancel(), posix_trace_open(__VA_ARGS__)) | ||||
| #define posix_trace_rewind(...) (pthread_testcancel(), posix_trace_rewind(__VA_ARGS__)) | ||||
| #define posix_trace_setfilter(...) (pthread_testcancel(), posix_trace_setfilter(__VA_ARGS__)) | ||||
| #define posix_trace_shutdown(...) (pthread_testcancel(), posix_trace_shutdown(__VA_ARGS__)) | ||||
| #define posix_trace_timedgetnext_event(...) (pthread_testcancel(), posix_trace_timedgetnext_event(__VA_ARGS__)) | ||||
| #define posix_typed_mem_open(...) (pthread_testcancel(), posix_typed_mem_open(__VA_ARGS__)) | ||||
| #define printf(...) (pthread_testcancel(), printf(__VA_ARGS__)) | ||||
| #define putc(...) (pthread_testcancel(), putc(__VA_ARGS__)) | ||||
| #define putc_unlocked(...) (pthread_testcancel(), putc_unlocked(__VA_ARGS__)) | ||||
| #define putchar(...) (pthread_testcancel(), putchar(__VA_ARGS__)) | ||||
| #define putchar_unlocked(...) (pthread_testcancel(), putchar_unlocked(__VA_ARGS__)) | ||||
| #define puts(...) (pthread_testcancel(), puts(__VA_ARGS__)) | ||||
| #define pututxline(...) (pthread_testcancel(), pututxline(__VA_ARGS__)) | ||||
| #undef putwc | ||||
| #define putwc(...) (pthread_testcancel(), putwc(__VA_ARGS__)) | ||||
| #undef putwchar | ||||
| #define putwchar(...) (pthread_testcancel(), putwchar(__VA_ARGS__)) | ||||
| #define readdir(...) (pthread_testcancel(), readdir(__VA_ARSG__)) | ||||
| #define readdir_r(...) (pthread_testcancel(), readdir_r(__VA_ARGS__)) | ||||
| #define remove(...) (pthread_testcancel(), remove(__VA_ARGS__)) | ||||
| #define rename(...) (pthread_testcancel(), rename(__VA_ARGS__)) | ||||
| #define rewind(...) (pthread_testcancel(), rewind(__VA_ARGS__)) | ||||
| #define rewinddir(...) (pthread_testcancel(), rewinddir(__VA_ARGS__)) | ||||
| #define scanf(...) (pthread_testcancel(), scanf(__VA_ARGS__)) | ||||
| #define seekdir(...) (pthread_testcancel(), seekdir(__VA_ARGS__)) | ||||
| #define semop(...) (pthread_testcancel(), semop(__VA_ARGS__)) | ||||
| #define setgrent(...) (pthread_testcancel(), setgrent(__VA_ARGS__)) | ||||
| #define sethostent(...) (pthread_testcancel(), sethostemt(__VA_ARGS__)) | ||||
| #define setnetent(...) (pthread_testcancel(), setnetent(__VA_ARGS__)) | ||||
| #define setprotoent(...) (pthread_testcancel(), setprotoent(__VA_ARGS__)) | ||||
| #define setpwent(...) (pthread_testcancel(), setpwent(__VA_ARGS__)) | ||||
| #define setservent(...) (pthread_testcancel(), setservent(__VA_ARGS__)) | ||||
| #define setutxent(...) (pthread_testcancel(), setutxent(__VA_ARGS__)) | ||||
| #define stat(...) (pthread_testcancel(), stat(__VA_ARGS__)) | ||||
| #define strerror(...) (pthread_testcancel(), strerror(__VA_ARGS__)) | ||||
| #define strerror_r(...) (pthread_testcancel(), strerror_r(__VA_ARGS__)) | ||||
| #define strftime(...) (pthread_testcancel(), strftime(__VA_ARGS__)) | ||||
| #define symlink(...) (pthread_testcancel(), symlink(__VA_ARGS__)) | ||||
| #define sync(...) (pthread_testcancel(), sync(__VA_ARGS__)) | ||||
| #define syslog(...) (pthread_testcancel(), syslog(__VA_ARGS__)) | ||||
| #define tmpfile(...) (pthread_testcancel(), tmpfile(__VA_ARGS__)) | ||||
| #define tmpnam(...) (pthread_testcancel(), tmpnam(__VA_ARGS__)) | ||||
| #define ttyname(...) (pthread_testcancel(), ttyname(__VA_ARGS__)) | ||||
| #define ttyname_r(...) (pthread_testcancel(), ttyname_r(__VA_ARGS__)) | ||||
| #define tzset(...) (pthread_testcancel(), tzset(__VA_ARGS__)) | ||||
| #define ungetc(...) (pthread_testcancel(), ungetc(__VA_ARGS__)) | ||||
| #define ungetwc(...) (pthread_testcancel(), ungetwc(__VA_ARGS__)) | ||||
| #define unlink(...) (pthread_testcancel(), unlink(__VA_ARGS__)) | ||||
| #define vfprintf(...) (pthread_testcancel(), vfprintf(__VA_ARGS__)) | ||||
| #define vfwprintf(...) (pthread_testcancel(), vfwprintf(__VA_ARGS__)) | ||||
| #define vprintf(...) (pthread_testcancel(), vprintf(__VA_ARGS__)) | ||||
| #define vwprintf(...) (pthread_testcancel(), vwprintf(__VA_ARGS__)) | ||||
| #define wcsftime(...) (pthread_testcancel(), wcsftime(__VA_ARGS__)) | ||||
| #define wordexp(...) (pthread_testcancel(), wordexp(__VA_ARGS__)) | ||||
| #define wprintf(...) (pthread_testcancel(), wprintf(__VA_ARGS__)) | ||||
| #define wscanf(...) (pthread_testcancel(), wscanf(__VA_ARGS__)) | ||||
| #endif | ||||
|  | ||||
| /* We deal here with a gcc issue for posix threading on Windows. | ||||
|    We would need to change here gcc's gthr-posix.h header, but this | ||||
|    got rejected.  So we deal it within this header.  */ | ||||
| #ifdef _GTHREAD_USE_MUTEX_INIT_FUNC | ||||
| #undef _GTHREAD_USE_MUTEX_INIT_FUNC | ||||
| #endif | ||||
| #define _GTHREAD_USE_MUTEX_INIT_FUNC 1 | ||||
|  | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
|  | ||||
| #endif /* WIN_PTHREADS_H */ | ||||
							
								
								
									
										297
									
								
								ops/cookbooks/vendor/mingw/files/default/time.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										297
									
								
								ops/cookbooks/vendor/mingw/files/default/time.h
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,297 @@ | ||||
| /* | ||||
|  * time.h | ||||
|  * | ||||
|  * Type definitions and function declarations relating to date and time. | ||||
|  * | ||||
|  * $Id: time.h,v ffe8d63c87e3 2015/05/18 12:49:39 keithmarshall $ | ||||
|  * | ||||
|  * Written by Rob Savoye <rob@cygnus.com> | ||||
|  * Copyright (C) 1997-2007, 2011, 2015, MinGW.org Project. | ||||
|  * | ||||
|  * | ||||
|  * Permission is hereby granted, free of charge, to any person obtaining a | ||||
|  * copy of this software and associated documentation files (the "Software"), | ||||
|  * to deal in the Software without restriction, including without limitation | ||||
|  * the rights to use, copy, modify, merge, publish, distribute, sublicense, | ||||
|  * and/or sell copies of the Software, and to permit persons to whom the | ||||
|  * Software is furnished to do so, subject to the following conditions: | ||||
|  * | ||||
|  * The above copyright notice, this permission notice, and the following | ||||
|  * disclaimer shall be included in all copies or substantial portions of | ||||
|  * the Software. | ||||
|  * | ||||
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||||
|  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
|  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL | ||||
|  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
|  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||
|  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER | ||||
|  * DEALINGS IN THE SOFTWARE. | ||||
|  * | ||||
|  */ | ||||
| #ifndef _TIME_H | ||||
| #define _TIME_H | ||||
|  | ||||
| /* All the headers include this file. */ | ||||
| #include <_mingw.h> | ||||
|  | ||||
| /* Number of clock ticks per second. A clock tick is the unit by which | ||||
|  * processor time is measured and is returned by 'clock'. | ||||
|  */ | ||||
| #define CLOCKS_PER_SEC	((clock_t)(1000)) | ||||
| #define CLK_TCK 	CLOCKS_PER_SEC | ||||
|  | ||||
| #ifndef RC_INVOKED | ||||
| /* | ||||
|  * Some elements declared in time.h may also be required by other | ||||
|  * header files, without necessarily including time.h itself; such | ||||
|  * elements are declared in the local parts/time.h system header file. | ||||
|  * Declarations for such elements must be selected prior to inclusion: | ||||
|  */ | ||||
| #define __need_time_t | ||||
| #define __need_struct_timespec | ||||
| #include <parts/time.h> | ||||
|  | ||||
| /* time.h is also required to duplicate the following type definitions, | ||||
|  * which are nominally defined in stddef.h | ||||
|  */ | ||||
| #define __need_NULL | ||||
| #define __need_wchar_t | ||||
| #define __need_size_t | ||||
| #include <stddef.h> | ||||
|  | ||||
| /* A type for measuring processor time in clock ticks; (no need to | ||||
|  * guard this, since it isn't defined elsewhere). | ||||
|  */ | ||||
| typedef long clock_t; | ||||
|  | ||||
| #ifndef _TM_DEFINED | ||||
| /* | ||||
|  * A structure for storing all kinds of useful information about the | ||||
|  * current (or another) time. | ||||
|  */ | ||||
| struct tm | ||||
| { | ||||
| 	int	tm_sec;		/* Seconds: 0-59 (K&R says 0-61?) */ | ||||
| 	int	tm_min;		/* Minutes: 0-59 */ | ||||
| 	int	tm_hour;	/* Hours since midnight: 0-23 */ | ||||
| 	int	tm_mday;	/* Day of the month: 1-31 */ | ||||
| 	int	tm_mon;		/* Months *since* january: 0-11 */ | ||||
| 	int	tm_year;	/* Years since 1900 */ | ||||
| 	int	tm_wday;	/* Days since Sunday (0-6) */ | ||||
| 	int	tm_yday;	/* Days since Jan. 1: 0-365 */ | ||||
| 	int	tm_isdst;	/* +1 Daylight Savings Time, 0 No DST, | ||||
| 				 * -1 don't know */ | ||||
| }; | ||||
| #define _TM_DEFINED | ||||
| #endif | ||||
|  | ||||
| _BEGIN_C_DECLS | ||||
|  | ||||
| _CRTIMP clock_t __cdecl __MINGW_NOTHROW	clock (void); | ||||
| #if __MSVCRT_VERSION__ < 0x0800 | ||||
| _CRTIMP time_t __cdecl __MINGW_NOTHROW	time (time_t*); | ||||
| _CRTIMP double __cdecl __MINGW_NOTHROW	difftime (time_t, time_t); | ||||
| _CRTIMP time_t __cdecl __MINGW_NOTHROW	mktime (struct tm*); | ||||
| #endif | ||||
|  | ||||
| /* | ||||
|  * These functions write to and return pointers to static buffers that may | ||||
|  * be overwritten by other function calls. Yikes! | ||||
|  * | ||||
|  * NOTE: localtime, and perhaps the others of the four functions grouped | ||||
|  * below may return NULL if their argument is not 'acceptable'. Also note | ||||
|  * that calling asctime with a NULL pointer will produce an Invalid Page | ||||
|  * Fault and crap out your program. Guess how I know. Hint: stat called on | ||||
|  * a directory gives 'invalid' times in st_atime etc... | ||||
|  */ | ||||
| _CRTIMP char* __cdecl __MINGW_NOTHROW		asctime (const struct tm*); | ||||
| #if __MSVCRT_VERSION__ < 0x0800 | ||||
| _CRTIMP char* __cdecl __MINGW_NOTHROW		ctime (const time_t*); | ||||
| _CRTIMP struct tm*  __cdecl __MINGW_NOTHROW	gmtime (const time_t*); | ||||
| _CRTIMP struct tm*  __cdecl __MINGW_NOTHROW	localtime (const time_t*); | ||||
| #endif | ||||
|  | ||||
| _CRTIMP size_t __cdecl __MINGW_NOTHROW		strftime (char*, size_t, const char*, const struct tm*); | ||||
|  | ||||
| #ifndef __STRICT_ANSI__ | ||||
|  | ||||
| extern _CRTIMP void __cdecl __MINGW_NOTHROW	_tzset (void); | ||||
|  | ||||
| #ifndef _NO_OLDNAMES | ||||
| extern _CRTIMP void __cdecl __MINGW_NOTHROW	tzset (void); | ||||
| #endif | ||||
|  | ||||
| _CRTIMP char* __cdecl __MINGW_NOTHROW	_strdate(char*); | ||||
| _CRTIMP char* __cdecl __MINGW_NOTHROW	_strtime(char*); | ||||
|  | ||||
| /* These require newer versions of msvcrt.dll (6.10 or higher). */ | ||||
| #if __MSVCRT_VERSION__ >= 0x0601 | ||||
| _CRTIMP __time64_t __cdecl __MINGW_NOTHROW  _time64( __time64_t*); | ||||
| _CRTIMP __time64_t __cdecl __MINGW_NOTHROW  _mktime64 (struct tm*); | ||||
| _CRTIMP char* __cdecl __MINGW_NOTHROW _ctime64 (const __time64_t*); | ||||
| _CRTIMP struct tm*  __cdecl __MINGW_NOTHROW _gmtime64 (const __time64_t*); | ||||
| _CRTIMP struct tm*  __cdecl __MINGW_NOTHROW _localtime64 (const __time64_t*); | ||||
| #endif /* __MSVCRT_VERSION__ >= 0x0601 */ | ||||
|  | ||||
| /* These require newer versions of msvcrt.dll (8.00 or higher). */ | ||||
| #if __MSVCRT_VERSION__ >= 0x0800 | ||||
| _CRTIMP __time32_t __cdecl __MINGW_NOTHROW	_time32 (__time32_t*); | ||||
| _CRTIMP double	   __cdecl __MINGW_NOTHROW	_difftime32 (__time32_t, __time32_t); | ||||
| _CRTIMP double	   __cdecl __MINGW_NOTHROW	_difftime64 (__time64_t, __time64_t); | ||||
| _CRTIMP __time32_t __cdecl __MINGW_NOTHROW	_mktime32 (struct tm*); | ||||
| _CRTIMP __time32_t __cdecl __MINGW_NOTHROW	_mkgmtime32 (struct tm*); | ||||
| _CRTIMP __time64_t __cdecl __MINGW_NOTHROW	_mkgmtime64 (struct tm*); | ||||
| _CRTIMP char*	   __cdecl __MINGW_NOTHROW	_ctime32 (const __time32_t*); | ||||
| _CRTIMP struct tm* __cdecl __MINGW_NOTHROW	_gmtime32 (const __time32_t*); | ||||
| _CRTIMP struct tm* __cdecl __MINGW_NOTHROW	_localtime32 (const __time32_t*); | ||||
| #ifndef _USE_32BIT_TIME_T | ||||
| _CRTALIAS time_t	   __cdecl __MINGW_NOTHROW	time (time_t* _v)		  { return(_time64 (_v)); } | ||||
| _CRTALIAS double	   __cdecl __MINGW_NOTHROW	difftime (time_t _v1, time_t _v2) { return(_difftime64 (_v1,_v2)); } | ||||
| _CRTALIAS time_t	   __cdecl __MINGW_NOTHROW	mktime (struct tm* _v)		  { return(_mktime64 (_v)); } | ||||
| _CRTALIAS time_t	   __cdecl __MINGW_NOTHROW	_mkgmtime (struct tm* _v)	  { return(_mkgmtime64 (_v)); } | ||||
| _CRTALIAS char*		   __cdecl __MINGW_NOTHROW	ctime (const time_t* _v)	  { return(_ctime64 (_v)); } | ||||
| _CRTALIAS struct tm*	   __cdecl __MINGW_NOTHROW	gmtime (const time_t* _v)	  { return(_gmtime64 (_v)); } | ||||
| _CRTALIAS struct tm*	   __cdecl __MINGW_NOTHROW	localtime (const time_t* _v)	  { return(_localtime64 (_v)); } | ||||
| #else | ||||
| _CRTALIAS time_t	   __cdecl __MINGW_NOTHROW	time (time_t* _v)		  { return(_time32 (_v)); } | ||||
| _CRTALIAS double	   __cdecl __MINGW_NOTHROW	difftime (time_t _v1, time_t _v2) { return(_difftime32 (_v1,_v2)); } | ||||
| _CRTALIAS time_t	   __cdecl __MINGW_NOTHROW	mktime (struct tm* _v)		  { return(_mktime32 (_v)); } | ||||
| _CRTALIAS time_t	   __cdecl __MINGW_NOTHROW	_mkgmtime (struct tm* _v)	  { return(_mkgmtime32 (_v)); } | ||||
| _CRTALIAS char*		   __cdecl __MINGW_NOTHROW	ctime (const time_t* _v)	  { return(_ctime32 (_v)); } | ||||
| _CRTALIAS struct tm*	   __cdecl __MINGW_NOTHROW	gmtime (const time_t* _v)	  { return(_gmtime32 (_v)); } | ||||
| _CRTALIAS struct tm*	   __cdecl __MINGW_NOTHROW	localtime (const time_t* _v)	  { return(_localtime32 (_v)); } | ||||
| #endif /* !_USE_32BIT_TIME_T */ | ||||
| #endif /* __MSVCRT_VERSION__ >= 0x0800 */ | ||||
|  | ||||
| /* _daylight: non zero if daylight savings time is used. | ||||
|  * _timezone: difference in seconds between GMT and local time. | ||||
|  * _tzname: standard/daylight savings time zone names (an array with two | ||||
|  *          elements). | ||||
|  */ | ||||
| #ifdef __MSVCRT__ | ||||
|  | ||||
| /* These are for compatibility with pre-VC 5.0 suppied MSVCRT. */ | ||||
| extern _CRTIMP int* __cdecl __MINGW_NOTHROW	__p__daylight (void); | ||||
| extern _CRTIMP long* __cdecl __MINGW_NOTHROW	__p__timezone (void); | ||||
| extern _CRTIMP char** __cdecl __MINGW_NOTHROW	__p__tzname (void); | ||||
|  | ||||
| __MINGW_IMPORT int	_daylight; | ||||
| __MINGW_IMPORT long	_timezone; | ||||
| __MINGW_IMPORT char 	*_tzname[2]; | ||||
|  | ||||
| #else /* not __MSVCRT (ie. crtdll) */ | ||||
|  | ||||
| #ifndef __DECLSPEC_SUPPORTED | ||||
|  | ||||
| extern int*	_imp___daylight_dll; | ||||
| extern long*	_imp___timezone_dll; | ||||
| extern char**	_imp___tzname; | ||||
|  | ||||
| #define _daylight	(*_imp___daylight_dll) | ||||
| #define _timezone	(*_imp___timezone_dll) | ||||
| #define _tzname		(*_imp___tzname) | ||||
|  | ||||
| #else /* __DECLSPEC_SUPPORTED */ | ||||
|  | ||||
| __MINGW_IMPORT int	_daylight_dll; | ||||
| __MINGW_IMPORT long	_timezone_dll; | ||||
| __MINGW_IMPORT char*	_tzname[2]; | ||||
|  | ||||
| #define _daylight	_daylight_dll | ||||
| #define _timezone	_timezone_dll | ||||
|  | ||||
| #endif /* __DECLSPEC_SUPPORTED */ | ||||
| #endif /* ! __MSVCRT__ */ | ||||
| #endif /* ! __STRICT_ANSI__ */ | ||||
|  | ||||
| #ifndef _NO_OLDNAMES | ||||
| #ifdef __MSVCRT__ | ||||
|  | ||||
| /* These go in the oldnames import library for MSVCRT. | ||||
|  */ | ||||
| __MINGW_IMPORT int	daylight; | ||||
| __MINGW_IMPORT long	timezone; | ||||
| __MINGW_IMPORT char 	*tzname[2]; | ||||
|  | ||||
| #else /* ! __MSVCRT__ */ | ||||
| /* | ||||
|  * CRTDLL is royally messed up when it comes to these macros. | ||||
|  * TODO: import and alias these via oldnames import library instead | ||||
|  * of macros. | ||||
|  */ | ||||
| #define daylight        _daylight | ||||
| /* | ||||
|  * NOTE: timezone not defined as a macro because it would conflict with | ||||
|  * struct timezone in sys/time.h.  Also, tzname used to a be macro, but | ||||
|  * now it's in moldname. | ||||
|  */ | ||||
| __MINGW_IMPORT char 	*tzname[2]; | ||||
|  | ||||
| #endif /* ! __MSVCRT__ */ | ||||
| #endif /* ! _NO_OLDNAMES */ | ||||
|  | ||||
| #ifndef _WTIME_DEFINED | ||||
| /* wide function prototypes, also declared in wchar.h */ | ||||
| #ifndef __STRICT_ANSI__ | ||||
| #ifdef __MSVCRT__ | ||||
| _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wasctime(const struct tm*); | ||||
| #if __MSVCRT_VERSION__ < 0x0800 | ||||
| _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wctime(const time_t*); | ||||
| #endif | ||||
| _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wstrdate(wchar_t*); | ||||
| _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wstrtime(wchar_t*); | ||||
| #if __MSVCRT_VERSION__ >= 0x0601 | ||||
| _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wctime64 (const __time64_t*); | ||||
| #endif | ||||
| #if __MSVCRT_VERSION__ >= 0x0800 | ||||
| _CRTIMP wchar_t* __cdecl __MINGW_NOTHROW	_wctime32 (const __time32_t*); | ||||
| #ifndef _USE_32BIT_TIME_T | ||||
| _CRTALIAS wchar_t* __cdecl __MINGW_NOTHROW	_wctime (const time_t* _v) { return(_wctime64 (_v)); } | ||||
| #else | ||||
| _CRTALIAS wchar_t* __cdecl __MINGW_NOTHROW	_wctime (const time_t* _v) { return(_wctime32 (_v)); } | ||||
| #endif | ||||
| #endif /* __MSVCRT_VERSION__ >= 0x0800 */ | ||||
| #endif /*  __MSVCRT__ */ | ||||
| #endif /* __STRICT_ANSI__ */ | ||||
| _CRTIMP size_t __cdecl __MINGW_NOTHROW		wcsftime (wchar_t*, size_t, const wchar_t*, const struct tm*); | ||||
| #define _WTIME_DEFINED | ||||
| #endif /* _WTIME_DEFINED */ | ||||
|  | ||||
| _END_C_DECLS | ||||
|  | ||||
| /* ------------------------------------------------------------------- | ||||
|  * CHEF PATCHES | ||||
|  * | ||||
|  * PROVIDE clock_gettime ETC. IN time.h FOR POSIX COMPLIANCE. | ||||
|  * | ||||
|  * This code was copied from the 64-bit TDM gcc compiler headers.  It | ||||
|  * is here to allow certain libraries (like libxslt) to compile | ||||
|  * because they assume that they are only going to be built on a POSIX | ||||
|  * system.  The C99 standards do not require that these functions be | ||||
|  * available but most POSIX systems provide them unless strict x-play | ||||
|  * compatibility is requested. | ||||
|  * | ||||
|  * On windows, configure could possibly identify that these functions | ||||
|  * are unavailable but since it tests for function availability to | ||||
|  * attempting to link a binary with said functions, these tests | ||||
|  * succeed with our TDM mingw runtime (because we indeed support these | ||||
|  * posix compatibility methods).  Hence we pretend like we are a POSIX | ||||
|  * compliant system and export these methods. | ||||
|  */ | ||||
|  | ||||
| /* POSIX 2008 says clock_gettime and timespec are defined in time.h header, | ||||
|    but other systems - like Linux, Solaris, etc - tend to declare such | ||||
|    recent extensions only if the following guards are met.  */ | ||||
| #if !defined(IN_WINPTHREAD) && \ | ||||
| 	((!defined(_STRICT_STDC) && !defined(__XOPEN_OR_POSIX)) || \ | ||||
| 	 (_POSIX_C_SOURCE > 2) || defined(__EXTENSIONS__)) | ||||
| #include <pthread_time.h> | ||||
| #endif | ||||
|  | ||||
| /* END OF CHEF PATCHES | ||||
|  * ------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #endif /* ! RC_INVOKED */ | ||||
| #endif /* ! _TIME_H: $RCSfile: time.h,v $: end of file */ | ||||
		Reference in New Issue
	
	Block a user