--- rpl/src/rpl.c 2010/07/02 08:40:27 1.32 +++ rpl/src/rpl.c 2010/08/15 14:46:25 1.39 @@ -1,6 +1,6 @@ /* ================================================================================ - RPL/2 (R) version 4.0.17 + RPL/2 (R) version 4.0.18 Copyright (C) 1989-2010 Dr. BERTRAND Joël This file is part of RPL/2. @@ -21,7 +21,13 @@ #define MAIN_RPL -#include "rpl.conv.h" +#include "rpl-conv.h" + +#ifdef SEMAPHORES_SYSV +#ifndef OS2 + unsigned char *chemin_semaphores_SysV; +#endif +#endif /* @@ -33,8 +39,8 @@ int rplinit(int argc, char *argv[], unsigned char ***resultats, char *rpl_home) { -# include "copyright.conv.h" -# include "licence.conv.h" +# include "copyright-conv.h" +# include "licence-conv.h" file *f_source; @@ -99,6 +105,8 @@ rplinit(int argc, char *argv[], unsigned volatile int erreur; volatile unsigned char traitement_fichier_temporaire; + errno = 0; + # ifdef DEBUG_MEMOIRE debug_memoire_initialisation(); # endif @@ -327,7 +335,7 @@ rplinit(int argc, char *argv[], unsigned // Initialisation d'une pile de signal pour récupérer les // débordement de pile -# ifndef Cygwin +# if !defined(Cygwin) && !defined(OpenBSD) if (((*s_etat_processus).pile_signal.ss_sp = malloc((*s_etat_processus).pile_signal.ss_size = SIGSTKSZ)) == NULL) @@ -583,6 +591,12 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).chemin_fichiers_temporaires = recherche_chemin_fichiers_temporaires(s_etat_processus); +# ifdef SEMAPHORES_SYSV +# ifndef OS2 + chemin_semaphores_SysV = (*s_etat_processus).chemin_fichiers_temporaires; +# endif +# endif + erreur = d_absence_erreur; core = d_faux; mode_interactif = d_faux; @@ -1871,6 +1885,8 @@ rplinit(int argc, char *argv[], unsigned } (*s_etat_processus).at_exit = NULL; + (*s_etat_processus).at_poke = NULL; + (*s_etat_processus).traitement_at_poke = 'N'; (*s_etat_processus).pointeurs_caracteres = NULL; (*s_etat_processus).arbre_instructions = NULL; @@ -2663,11 +2679,11 @@ rplinit(int argc, char *argv[], unsigned (*s_etat_processus).at_exit, 'E'); } } - - liberation(s_etat_processus, - (*s_etat_processus).at_exit); } + liberation(s_etat_processus, (*s_etat_processus).at_exit); + liberation(s_etat_processus, (*s_etat_processus).at_poke); + if ((*s_etat_processus).generateur_aleatoire != NULL) { liberation_generateur_aleatoire(s_etat_processus); @@ -3462,7 +3478,7 @@ rplinit(int argc, char *argv[], unsigned } } -# ifndef Cygwin +# if !defined(Cygwin) && !defined(OpenBSD) (*s_etat_processus).pile_signal.ss_flags = SS_DISABLE; sigaltstack(&((*s_etat_processus).pile_signal), NULL); free((*s_etat_processus).pile_signal.ss_sp);