version 1.26, 2010/05/24 10:58:37
|
version 1.36, 2010/08/06 15:33:04
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.0.16 |
RPL/2 (R) version 4.0.18 |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
Copyright (C) 1989-2010 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
Line 21
|
Line 21
|
|
|
|
|
#define MAIN_RPL |
#define MAIN_RPL |
#include "rpl.conv.h" |
#include "rpl-conv.h" |
|
|
|
#ifdef OS2 |
|
unsigned char *chemin_semaphores_SysV; |
|
#endif |
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 33
|
Line 36
|
int |
int |
rplinit(int argc, char *argv[], unsigned char ***resultats, char *rpl_home) |
rplinit(int argc, char *argv[], unsigned char ***resultats, char *rpl_home) |
{ |
{ |
# include "copyright.conv.h" |
# include "copyright-conv.h" |
# include "licence.conv.h" |
# include "licence-conv.h" |
|
|
file *f_source; |
file *f_source; |
|
|
Line 99 rplinit(int argc, char *argv[], unsigned
|
Line 102 rplinit(int argc, char *argv[], unsigned
|
volatile int erreur; |
volatile int erreur; |
volatile unsigned char traitement_fichier_temporaire; |
volatile unsigned char traitement_fichier_temporaire; |
|
|
|
# ifdef DEBUG_MEMOIRE |
|
debug_memoire_initialisation(); |
|
# endif |
|
|
setvbuf(stdout, NULL, _IOLBF, 0); |
setvbuf(stdout, NULL, _IOLBF, 0); |
setvbuf(stderr, NULL, _IOLBF, 0); |
setvbuf(stderr, NULL, _IOLBF, 0); |
|
|
Line 184 rplinit(int argc, char *argv[], unsigned
|
Line 191 rplinit(int argc, char *argv[], unsigned
|
pthread_mutex_init(&((*s_etat_processus).mutex), &attributs_mutex); |
pthread_mutex_init(&((*s_etat_processus).mutex), &attributs_mutex); |
pthread_mutexattr_destroy(&attributs_mutex); |
pthread_mutexattr_destroy(&attributs_mutex); |
|
|
|
pthread_mutexattr_init(&attributs_mutex); |
|
pthread_mutexattr_settype(&attributs_mutex, PTHREAD_MUTEX_NORMAL); |
|
pthread_mutex_init(&((*s_etat_processus).mutex_allocation), |
|
&attributs_mutex); |
|
pthread_mutexattr_destroy(&attributs_mutex); |
|
|
# ifndef SEMAPHORES_NOMMES |
# ifndef SEMAPHORES_NOMMES |
sem_init(&((*s_etat_processus).semaphore_fork), 0, 0); |
sem_init(&((*s_etat_processus).semaphore_fork), 0, 0); |
# else |
# else |
Line 317 rplinit(int argc, char *argv[], unsigned
|
Line 330 rplinit(int argc, char *argv[], unsigned
|
// Initialisation d'une pile de signal pour récupérer les |
// Initialisation d'une pile de signal pour récupérer les |
// débordement de pile |
// débordement de pile |
|
|
# ifndef Cygwin |
# if !defined(Cygwin) |
if (((*s_etat_processus).pile_signal.ss_sp = |
if (((*s_etat_processus).pile_signal.ss_sp = |
malloc((*s_etat_processus).pile_signal.ss_size = |
malloc((*s_etat_processus).pile_signal.ss_size = |
SIGSTKSZ)) == NULL) |
SIGSTKSZ)) == NULL) |
Line 573 rplinit(int argc, char *argv[], unsigned
|
Line 586 rplinit(int argc, char *argv[], unsigned
|
(*s_etat_processus).chemin_fichiers_temporaires = |
(*s_etat_processus).chemin_fichiers_temporaires = |
recherche_chemin_fichiers_temporaires(s_etat_processus); |
recherche_chemin_fichiers_temporaires(s_etat_processus); |
|
|
|
# ifdef OS2 |
|
chemin_semaphores_SysV = (*s_etat_processus).chemin_fichiers_temporaires; |
|
# endif |
|
|
erreur = d_absence_erreur; |
erreur = d_absence_erreur; |
core = d_faux; |
core = d_faux; |
mode_interactif = d_faux; |
mode_interactif = d_faux; |
Line 1861 rplinit(int argc, char *argv[], unsigned
|
Line 1878 rplinit(int argc, char *argv[], unsigned
|
} |
} |
|
|
(*s_etat_processus).at_exit = NULL; |
(*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).pointeurs_caracteres = NULL; |
(*s_etat_processus).arbre_instructions = NULL; |
(*s_etat_processus).arbre_instructions = NULL; |
Line 1897 rplinit(int argc, char *argv[], unsigned
|
Line 1916 rplinit(int argc, char *argv[], unsigned
|
} |
} |
|
|
if (((*s_etat_processus).instruction_derniere_erreur = |
if (((*s_etat_processus).instruction_derniere_erreur = |
malloc(2 * sizeof(unsigned char))) == NULL) |
malloc(sizeof(unsigned char))) == NULL) |
{ |
{ |
erreur = d_es_allocation_memoire; |
erreur = d_es_allocation_memoire; |
|
|
Line 2653 rplinit(int argc, char *argv[], unsigned
|
Line 2672 rplinit(int argc, char *argv[], unsigned
|
(*s_etat_processus).at_exit, 'E'); |
(*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) |
if ((*s_etat_processus).generateur_aleatoire != NULL) |
{ |
{ |
liberation_generateur_aleatoire(s_etat_processus); |
liberation_generateur_aleatoire(s_etat_processus); |
Line 3467 rplinit(int argc, char *argv[], unsigned
|
Line 3486 rplinit(int argc, char *argv[], unsigned
|
retrait_thread(s_etat_processus); |
retrait_thread(s_etat_processus); |
|
|
pthread_mutex_destroy(&((*s_etat_processus).mutex)); |
pthread_mutex_destroy(&((*s_etat_processus).mutex)); |
|
pthread_mutex_destroy(&((*s_etat_processus).mutex_allocation)); |
|
|
# ifndef SEMAPHORES_NOMMES |
# ifndef SEMAPHORES_NOMMES |
sem_post(&((*s_etat_processus).semaphore_fork)); |
sem_post(&((*s_etat_processus).semaphore_fork)); |
sem_destroy(&((*s_etat_processus).semaphore_fork)); |
sem_destroy(&((*s_etat_processus).semaphore_fork)); |