--- rpl/src/rpl.h 2010/08/22 16:38:36 1.60 +++ rpl/src/rpl.h 2010/09/08 17:18:37 1.69 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.18 + RPL/2 (R) version 4.0.19 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -98,7 +98,7 @@ # include # endif -# ifndef SEMAPHORES_SYSV +# ifndef IPCS_SYSV # include # else # include @@ -193,9 +193,11 @@ #include "librplprototypes.h" -#ifndef UNIX_PATH_MAX - struct sockaddr_un sizecheck; -# define UNIX_PATH_MAX sizeof(sizecheck.sun_path) +#ifndef RPLARGS +# ifndef UNIX_PATH_MAX + struct sockaddr_un sizecheck; +# define UNIX_PATH_MAX sizeof(sizecheck.sun_path) +# endif #endif /* @@ -211,10 +213,21 @@ # endif # define SA_SIGINFO 0 -# define kill(pid, signal) kill_broken_siginfo(pid, signal) -# define pthread_kill(tid, signal) pthread_kill_broken_siginfo(tid, signal) +# ifndef __BROKEN_SIGINFO_ROUTINES__ + +// pthread_kill() est une macro sous OS/2. +# ifdef pthread_kill +# undef pthread_kill +# endif + +# define kill(a, b) kill_broken_siginfo(a, b) +# define pthread_kill(a, b) pthread_kill_broken_siginfo(a, b) +# endif + int kill_broken_siginfo(pid_t pid, int signal); int pthread_kill_broken_siginfo(pthread_t tid, int signal); + pid_t origine_signal(int signal); + int queue_in(pid_t pid, int signal); #else # define SIGHANDLER_ARGS int signal, siginfo_t *siginfo, void *context #endif @@ -226,7 +239,12 @@ # define PTHREAD_SCOPE_SYSTEM 0 #endif -#if ! defined(UNION_SEMUN) && defined(SEMAPHORES_SYSV) +#ifdef OS2 +# define readline(s) readline_wrapper(s) + unsigned char *readline_wrapper(unsigned char *s); +#endif + +#if ! defined(UNION_SEMUN) && defined(IPCS_SYSV) union semun { int val; @@ -243,7 +261,7 @@ union semun ================================================================================ */ -#ifdef SEMAPHORES_SYSV +#ifdef IPCS_SYSV # define sem_init(a, b, c) sem_init_SysV(a, b, c) # define sem_destroy(a) sem_destroy_SysV(a) # define sem_wait(a) sem_wait_SysV(a) @@ -484,6 +502,9 @@ int sem_getvalue2(sem_t *semaphore, int # define fopen(...) ({ FILE *desc; \ while((desc = fopen(__VA_ARGS__)) == NULL) \ { if ((errno != EINTR) && (errno != 0)) break; } desc; }) +# define freopen(...) ({ FILE *desc; \ + while((desc = freopen(__VA_ARGS__)) == NULL) \ + { if ((errno != EINTR) && (errno != 0)) break; } desc; }) # define fclose(...) ({ int ios; \ while((ios = fclose(__VA_ARGS__)) != 0) \ { if ((errno != EINTR) && (errno != 0)) break; } ios; }) @@ -1738,7 +1759,7 @@ typedef struct processus # if !defined(Cygwin) # if !(OpenBSD) - stack_t pile_signal; + stack_t pile_signal; # else # ifdef SA_ONSTACK # undef SA_ONSTACK @@ -1746,8 +1767,8 @@ typedef struct processus # define SA_ONSTACK 0 # endif # else -# define SA_ONSTACK 0 -# define RTLD_LOCAL 0 +# define SA_ONSTACK 0 +# define RTLD_LOCAL 0 # endif /* Contextes */ @@ -2021,6 +2042,7 @@ typedef struct processus volatile sig_atomic_t var_volatile_traitement_retarde_stop; volatile sig_atomic_t var_volatile_traitement_sigint; + volatile sig_atomic_t var_volatile_processus_racine; volatile sig_atomic_t var_volatile_processus_pere; volatile sig_atomic_t var_volatile_recursivite;