/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E S T I O N   A U T O M A T I S E E   D E S   " B U G S "  :                                                             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*             *     * * * * * *   * * * * * *   * * * * * *   *         *   * * * * * *   *   * * * * * *   *         *             */
/*                        *             *        *             **        *        *        *   *         *   **        *             */
/*            * *         *             *        *             * *       *        *        *   *         *   * *       *             */
/*                        *             *        *             *  *      *        *        *   *         *   *  *      *             */
/*           *   *        *             *        *             *   *     *        *        *   *         *   *   *     *             */
/*                        *             *        * * *         *    *    *        *        *   *         *   *    *    *             */
/*          * * * *       *             *        *             *     *   *        *        *   *         *   *     *   *             */
/*                        *             *        *             *      *  *        *        *   *         *   *      *  *             */
/*         *       *      *             *        *             *       * *        *        *   *         *   *       * *             */
/*                        *             *        *             *        **        *        *   *         *   *        **             */
/*        *         *     *             *        * * * * * *   *         *        *        *   * * * * * *   *         *             */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        ATTENTION :                                                                                                                */
/*                                                                                                                                   */
/*                    Tous les 'BUG_' declares ici doivent                                                                           */
/*                  etre repercutes dans 'v $xig/common$STR DEFV.Common.DEFV.Logical._____BUG_'.                                     */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xcp/Bugs$K' :                                                                                                  */
/*                                                                                                                                   */
/*                    Jean-Francois COLONNA (LACTAMME, 1996??????????).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        I N T E R F A C E   ' listG '  :                                                                                           */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        :Debut_listG:                                                                                                              */
/*        :Fin_listG:                                                                                                                */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        D I R E C T I V E S   S P E C I F I Q U E S   D E   C O M P I L A T I O N  :                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
@nodefine PRAGMA_CL_____MODULE_NON_OPTIMISABLE
                                        /* Introduit le 20040409115527 a cause de 'BUG_SYSTEME_APC_GCC_ExcessPrecisionProblem_02'    */
                                        /* qui disparait lorqu'il y a optimisation, mais ATTENTION, cela est en contradiction avec   */
                                        /* 'BUG_SYSTEME_APC_GCC_ExcessPrecisionProblem_01' qui lui demande l'optimisation pour se    */
                                        /* manifester. Le 20040409134038, j'ai trouve la solution : il suffit de declarer 'Local'    */
                                        /* les variables {origine,extremite}, d'ou le 'nodefine'...                                  */
@define   PRAGMA_CL_____PAS_DE_LIBRAIRIES_DYNAMIQUES

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F I C H I E R S   D ' I N C L U D E S  :                                                                                   */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
#include  INCLUDES_MINI

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        P A R A M E T R E S  :                                                                                                     */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        M A C R O S   U T I L E S  :                                                                                               */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F O N C T I O N S   U T I L E S  :                                                                                         */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#if       (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
          ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )

BFonctionF

DEFV(Local,DEFV(Float,INIT(origine,NEGA(FDEUX))));
DEFV(Local,DEFV(Float,INIT(extremite,NEUT(FDEUX))));
                                        /* La declaration 'Local' a ete introduite le 20040409134038 afin de faire se manifester     */
                                        /* le probleme qu'il y ait ou pas optimisation...                                            */

DEFV(Common,DEFV(FonctionF,bSCAL___conditionnelle(Zf)))
                                        /* Fonction introduite le 20040409134850 afin que le probleme se manifeste meme si           */
                                        /* l'option de compilation "-ffloat-store" est presente...                                   */
DEFV(Argument,DEFV(Float,Zf));
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     RETU(COND(IFNE(origine,extremite)
              ,bSCAL(SOUS(Zf,origine)
                    ,SOUS(extremite,origine)
                    ,SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE,COORDONNEE_BARYCENTRIQUE_MINIMALE)
                     )
              ,SOUS(Zf,origine)
               )
          );
     Eblock

EFonctionF

#Aif      (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
          ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )
#Eif      (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
          ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )

/*===================================================================================================================================*/
/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        G E S T I O N   A U T O M A T I S E E   D E S   " B U G S "  :                                                             */
/*                                                                                                                                   */
/*************************************************************************************************************************************/
BCommande(nombre_d_arguments,arguments)
/*-----------------------------------------------------------------------------------------------------------------------------------*/
     Bblock
     /*..............................................................................................................................*/
     GET_ARGUMENTS_(nombre_d_arguments
                   ,BLOC(VIDE;
                         )
                    );

#if       (         (defined(SYSTEME_SGIND308_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND324_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND3GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND408_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND424_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND4GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND508_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND524_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND5GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND808_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND824_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND8GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDA08_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDA24_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDAGA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A1_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A2_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A4_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO25224_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO252VA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO252VN_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGPCM801_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGPCMA01_IRIX_CC))                                                                                 \
           )
          begin_nouveau_block
#    define    DIVIDENDE                                                                                                                \
                         NEGA(UN)
#    define    DIVISEUR                                                                                                                 \
                         NEUT(UN)

          DEFV(Float,INIT(quotient1,gDIVI(DIVIDENDE,DIVISEUR)));
          DEFV(Float,INIT(quotient2,gDIVI(FLOT(DIVIDENDE),FLOT(DIVISEUR))));
                                        /* ATTENTION, bien entendu, il ne faut pas utiliser 'DIVI(...)' mais 'gDIVI(...)'.           */

          Test(IFNE(quotient1,quotient2))
               Bblock
               DEFINEV("BUG_SYSTEME_SGIND_C_divisions_entieres");
                                        /* Cas ou le compilateur genere mal les constantes issues de divisions entieres (voir a ce   */
                                        /* propos 'v $Dbugs/SGIND4GA$D/IRIX$D/CC$D/IntDouble.01$c')...                               */
               Eblock
          ATes
               Bblock
               Eblock
          ETes

#    undef     DIVISEUR
#    undef     DIVIDENDE
          end_nouveau_block
#Aif      (         (defined(SYSTEME_SGIND308_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND324_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND3GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND408_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND424_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND4GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND508_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND524_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND5GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND808_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND824_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND8GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDA08_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDA24_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDAGA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A1_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A2_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A4_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO25224_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO252VA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO252VN_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGPCM801_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGPCMA01_IRIX_CC))                                                                                 \
           )
#Eif      (         (defined(SYSTEME_SGIND308_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND324_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND3GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND408_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND424_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND4GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND508_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND524_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND5GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND808_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND824_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGIND8GA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDA08_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDA24_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGINDAGA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A1_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A2_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO200A4_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO25224_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO252VA_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGO252VN_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGPCM801_IRIX_CC))                                                                                 \
          ||        (defined(SYSTEME_SGPCMA01_IRIX_CC))                                                                                 \
           )

#if       (         (defined(SYSTEME_VAX9000_ULTRIX_GCC))                                                                               \
           )
          begin_nouveau_block
#    define    DIVIDENDE                                                                                                                \
                         FZERO

          DEFV(Float,INIT(diviseur,FQUATRE));
          DEFV(Float,INIT(quotient,FLOT__UNDEF));

          EGAL(quotient,gDIVI(DIVIDENDE,diviseur));
                                        /* ATTENTION, bien entendu, il ne faut pas utiliser 'DIVI(...)' mais 'gDIVI(...)'.           */

          Test(IZNE(quotient))
               Bblock
               DEFINEV("BUG_SYSTEME_VAX9000_ULTRIX_GCC_division_de_zero");
                                        /* La division de 0 par une valeur flottante ne donne pas 0, mais apparemment l'inverse      */
                                        /* du double du diviseur (voir 'v $Dbugs/VAX9000$D/ULTRIX$D/GCC$D/division.01$c')...         */
               Eblock
          ATes
               Bblock
               Eblock
          ETes

#    undef     DIVIDENDE
          end_nouveau_block
#Aif      (         (defined(SYSTEME_VAX9000_ULTRIX_GCC))                                                                               \
           )
#Eif      (         (defined(SYSTEME_VAX9000_ULTRIX_GCC))                                                                               \
           )

          begin_nouveau_block
#    define    MOINS_L_INFINI_non_caste                                                                                                 \
                         0x80000001
#    define    INFINI_non_caste                                                                                                         \
                         0x7fffffff

          DEFV(Float,INIT(valeur,FZERO));

          Test(IFINff(valeur,FLOT(MOINS_L_INFINI_non_caste),FLOT(INFINI_non_caste)))
                                        /* Evidemment, il ne faut pas utiliser 'MOINS_L_INFINI' et 'INFINI'...                       */
               Bblock
               Eblock
          ATes
               Bblock
               DEFINEV("BUG_SYSTEME_C_caster_0x");
                                        /* Les constantes hexadecimales devront etre castees par '(int)' dans la procedure           */
                                        /* 'v $xig/defin_2$vv$DEF DEFINEX'.                                                          */
               Eblock
          ETes

#    undef     INFINI_non_caste
#    undef     MOINS_L_INFINI_non_caste
          end_nouveau_block

#if       (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
           )
          begin_nouveau_block
#    define    NOM_DU_PORT_exec_tcp                                                                                                     \
                         "PortExecTcp"
                                        /* Nom de la variable 'C-Shell' definie dans  'v $FbugsL PortExecTcp'.                       */

          DEFV(RemoteServeur,INIT(POINTERs(caracteristiques_du_serveur_exec_tcp),ADRESSE_NON_ENCORE_DEFINIE));
                                        /* Destine a '_GetServeurByName(...)' pour caracteriser le service demande.                  */
          DEFV(Int,INIT(numero_attendu_pour_le_port,GvalDefaut(NOM_DU_PORT_exec_tcp,ADRESSE_NON_ENCORE_DEFINIE)));
                                        /* Recuperation du numero de port que l'on suppose en fait connu...                          */
          EGAL(caracteristiques_du_serveur_exec_tcp,_GetServeurByName("exec","tcp"));
                                        /* Recherche du code du serveur "exec/tcp".                                                  */

          Test(IFNE_chaine(Gvar(NOM_DU_PORT_exec_tcp),VALEUR_D_UNE_VARIABLE_UNDEF))
               Bblock
               Test(IFNE(numero_attendu_pour_le_port,ADRESSE_NON_ENCORE_DEFINIE))
                    Bblock
                    Test(IFNE(ASI1(caracteristiques_du_serveur_exec_tcp,s_port),numero_attendu_pour_le_port))
                         Bblock
                         DEFINEV("BUG_SYSTEME_SYSTEME_APC_LinuxDebian_GCC_numero_de_port");
                                        /* Lorsque le port recupere par 'getservbyname(...)' est different de ce que l'on attendait, */
                                        /* on corrige ce que l'on croit etre une erreur (introduit le 19990823131431).               */
                                        /* La fonction 'getservbyname(...)' renvoie les numeros de port sur 2 octets qui sont        */
                                        /* malheureusement permutes ('v $FbugsL PortExecTcp').                                       */
                                        /*                                                                                           */
                                        /* Aux dernieres nouvelles ('v $Dcourrier_in/19990827180623 htons'), il ne s'agirait pas     */
                                        /* d'une erreur. On trouve dans 'v /usr/include/glib.h swapping' des procedures assurant     */
                                        /* les conversions utiles.                                                                   */
                                        /*                                                                                           */
                                        /* Je conserve malgre tout 'BUG_SYSTEME_SYSTEME_APC_LinuxDebian_GCC_numero_de_port'...       */
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    MESSAGE("La variable '"NOM_DU_PORT_exec_tcp"' semble ne pas etre definie (1).");
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               MESSAGE("La variable '"NOM_DU_PORT_exec_tcp"' semble ne pas etre definie (2).");
               Eblock
          ETes

#    undef     NOM_DU_PORT_exec_tcp
          end_nouveau_block
#Aif      (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
           )
#Eif      (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
           )

#if       (         (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
           )
          begin_nouveau_block
#    define    NOM_DU_PORT_exec_tcp                                                                                                     \
                         "PortExecTcp"
                                        /* Nom de la variable 'C-Shell' definie dans  'v $FbugsL PortExecTcp'.                       */

          DEFV(RemoteServeur,INIT(POINTERs(caracteristiques_du_serveur_exec_tcp),ADRESSE_NON_ENCORE_DEFINIE));
                                        /* Destine a '_GetServeurByName(...)' pour caracteriser le service demande.                  */
          DEFV(Int,INIT(numero_attendu_pour_le_port,GvalDefaut(NOM_DU_PORT_exec_tcp,ADRESSE_NON_ENCORE_DEFINIE)));
                                        /* Recuperation du numero de port que l'on suppose en fait connu...                          */
          EGAL(caracteristiques_du_serveur_exec_tcp,_GetServeurByName("exec","tcp"));
                                        /* Recherche du code du serveur "exec/tcp".                                                  */

          Test(IFNE_chaine(Gvar(NOM_DU_PORT_exec_tcp),VALEUR_D_UNE_VARIABLE_UNDEF))
               Bblock
               Test(IFNE(numero_attendu_pour_le_port,ADRESSE_NON_ENCORE_DEFINIE))
                    Bblock
                    Test(IFNE(ASI1(caracteristiques_du_serveur_exec_tcp,s_port),numero_attendu_pour_le_port))
                         Bblock
                         DEFINEV("BUG_SYSTEME_SYSTEME_APC_LinuxMandrake_GCC_numero_de_port");
                                        /* Lorsque le port recupere par 'getservbyname(...)' est different de ce que l'on attendait, */
                                        /* on corrige ce que l'on croit etre une erreur (introduit le 19990823131431).               */
                                        /* La fonction 'getservbyname(...)' renvoie les numeros de port sur 2 octets qui sont        */
                                        /* malheureusement permutes ('v $FbugsL PortExecTcp').                                       */
                                        /*                                                                                           */
                                        /* Aux dernieres nouvelles ('v $Dcourrier_in/19990827180623 htons'), il ne s'agirait pas     */
                                        /* d'une erreur. On trouve dans 'v /usr/include/glib.h swapping' des procedures assurant     */
                                        /* les conversions utiles.                                                                   */
                                        /*                                                                                           */
                                        /* Je conserve malgre tout 'BUG_SYSTEME_SYSTEME_APC_LinuxMandrake_GCC_numero_de_port'...     */
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    MESSAGE("La variable '"NOM_DU_PORT_exec_tcp"' semble ne pas etre definie (1).");
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               MESSAGE("La variable '"NOM_DU_PORT_exec_tcp"' semble ne pas etre definie (2).");
               Eblock
          ETes

#    undef     NOM_DU_PORT_exec_tcp
          end_nouveau_block
#Aif      (         (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
           )
#Eif      (         (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
           )

#if       (         (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
           )
          begin_nouveau_block
#    define    NOM_DU_PORT_exec_tcp                                                                                                     \
                         "PortExecTcp"
                                        /* Nom de la variable 'C-Shell' definie dans  'v $FbugsL PortExecTcp'.                       */

          DEFV(RemoteServeur,INIT(POINTERs(caracteristiques_du_serveur_exec_tcp),ADRESSE_NON_ENCORE_DEFINIE));
                                        /* Destine a '_GetServeurByName(...)' pour caracteriser le service demande.                  */
          DEFV(Int,INIT(numero_attendu_pour_le_port,GvalDefaut(NOM_DU_PORT_exec_tcp,ADRESSE_NON_ENCORE_DEFINIE)));
                                        /* Recuperation du numero de port que l'on suppose en fait connu...                          */
          EGAL(caracteristiques_du_serveur_exec_tcp,_GetServeurByName("exec","tcp"));
                                        /* Recherche du code du serveur "exec/tcp".                                                  */

          Test(IFNE_chaine(Gvar(NOM_DU_PORT_exec_tcp),VALEUR_D_UNE_VARIABLE_UNDEF))
               Bblock
               Test(IFNE(numero_attendu_pour_le_port,ADRESSE_NON_ENCORE_DEFINIE))
                    Bblock
                    Test(IFNE(ASI1(caracteristiques_du_serveur_exec_tcp,s_port),numero_attendu_pour_le_port))
                         Bblock
                         DEFINEV("BUG_SYSTEME_SYSTEME_APC_LinuxRedHat_GCC_numero_de_port");
                                        /* Lorsque le port recupere par 'getservbyname(...)' est different de ce que l'on attendait, */
                                        /* on corrige ce que l'on croit etre une erreur (introduit le 19990823131431).               */
                                        /* La fonction 'getservbyname(...)' renvoie les numeros de port sur 2 octets qui sont        */
                                        /* malheureusement permutes ('v $FbugsL PortExecTcp').                                       */
                                        /*                                                                                           */
                                        /* Aux dernieres nouvelles ('v $Dcourrier_in/19990827180623 htons'), il ne s'agirait pas     */
                                        /* d'une erreur. On trouve dans 'v /usr/include/glib.h swapping' des procedures assurant     */
                                        /* les conversions utiles.                                                                   */
                                        /*                                                                                           */
                                        /* Je conserve malgre tout 'BUG_SYSTEME_SYSTEME_APC_LinuxRedHat_GCC_numero_de_port'...       */
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    MESSAGE("La variable '"NOM_DU_PORT_exec_tcp"' semble ne pas etre definie (1).");
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               MESSAGE("La variable '"NOM_DU_PORT_exec_tcp"' semble ne pas etre definie (2).");
               Eblock
          ETes

#    undef     NOM_DU_PORT_exec_tcp
          end_nouveau_block
#Aif      (         (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
           )
#Eif      (         (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
           )

#if       (         (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )
          begin_nouveau_block
#    define    NOM_DU_PORT_exec_tcp                                                                                                     \
                         "PortExecTcp"
                                        /* Nom de la variable 'C-Shell' definie dans  'v $FbugsL PortExecTcp'.                       */

          DEFV(RemoteServeur,INIT(POINTERs(caracteristiques_du_serveur_exec_tcp),ADRESSE_NON_ENCORE_DEFINIE));
                                        /* Destine a '_GetServeurByName(...)' pour caracteriser le service demande.                  */
          DEFV(Int,INIT(numero_attendu_pour_le_port,GvalDefaut(NOM_DU_PORT_exec_tcp,ADRESSE_NON_ENCORE_DEFINIE)));
                                        /* Recuperation du numero de port que l'on suppose en fait connu...                          */
          EGAL(caracteristiques_du_serveur_exec_tcp,_GetServeurByName("exec","tcp"));
                                        /* Recherche du code du serveur "exec/tcp".                                                  */

          Test(IFNE_chaine(Gvar(NOM_DU_PORT_exec_tcp),VALEUR_D_UNE_VARIABLE_UNDEF))
               Bblock
               Test(IFNE(numero_attendu_pour_le_port,ADRESSE_NON_ENCORE_DEFINIE))
                    Bblock
                    Test(IFNE(ASI1(caracteristiques_du_serveur_exec_tcp,s_port),numero_attendu_pour_le_port))
                         Bblock
                         DEFINEV("BUG_SYSTEME_SYSTEME_APC_LinuxUbuntu_GCC_numero_de_port");
                         DEFINEV("BUG_SYSTEME_SYSTEME_APC_LinuxUbuntu_ICC_numero_de_port");
                         DEFINEV("BUG_SYSTEME_SYSTEME_APC_LinuxUlmint_GCC_numero_de_port");
                         DEFINEV("BUG_SYSTEME_SYSTEME_APC_LinuxUlmint_ICC_numero_de_port");
                                        /* Lorsque le port recupere par 'getservbyname(...)' est different de ce que l'on attendait, */
                                        /* on corrige ce que l'on croit etre une erreur (introduit le 19990823131431).               */
                                        /* La fonction 'getservbyname(...)' renvoie les numeros de port sur 2 octets qui sont        */
                                        /* malheureusement permutes ('v $FbugsL PortExecTcp').                                       */
                                        /*                                                                                           */
                                        /* Aux dernieres nouvelles ('v $Dcourrier_in/19990827180623 htons'), il ne s'agirait pas     */
                                        /* d'une erreur. On trouve dans 'v /usr/include/glib.h swapping' des procedures assurant     */
                                        /* les conversions utiles.                                                                   */
                                        /*                                                                                           */
                                        /* Je conserve malgre tout 'BUG_SYSTEME_SYSTEME_APC_LinuxUbuntu_GCC_numero_de_port'...       */
                         Eblock
                    ATes
                         Bblock
                         Eblock
                    ETes
                    Eblock
               ATes
                    Bblock
                    MESSAGE("La variable '"NOM_DU_PORT_exec_tcp"' semble ne pas etre definie (1).");
                    Eblock
               ETes
               Eblock
          ATes
               Bblock
               MESSAGE("La variable '"NOM_DU_PORT_exec_tcp"' semble ne pas etre definie (2).");
               Eblock
          ETes

#    undef     NOM_DU_PORT_exec_tcp
          end_nouveau_block
#Aif      (         (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )
#Eif      (         (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )

#if       (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
          ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )
          begin_nouveau_block
                                        /* Ceci a ete introduit le 20040227135153...                                                 */
               Bblock
               TypedefS(VolatileDouble,CONC(Volatile,Double))
                                        /* Ce type n'a pas etre defini dans 'v $xil/defi_c1$vv$DEF' car il n'a pas a servir          */
                                        /* ailleurs qu'ici...                                                                        */

               DEFV(Double,INIT(racine_de_2_80_bits,RACX(FDEUX)));
               DEFV(VolatileDouble,INIT(racine_de_2_64_bits,FLOT__UNDEF));

               EGAL(racine_de_2_64_bits,racine_de_2_80_bits);
                                        /* Evidemment 'racine_de_2_80_bits' et 'racine_de_2_64_bits' doivent etre egaux bit a bit,   */
                                        /* mais est-ce bien vrai...                                                                  */

               Test(IFNE(racine_de_2_64_bits,racine_de_2_80_bits))
                                        /* Cas ou 'racine_de_2_80_bits' et 'racine_de_2_64_bits' sont differents :                   */
                    Bblock
                    DEFINEV("BUG_SYSTEME_APC_GCC_ExcessPrecisionProblem_01");
                                        /* Voir a ce propos 'v $Dbugs/APC$D/LinuxDebian$D/GCC$D/flottant.02$c' par exemple...        */
                                        /*                                                                                           */
                                        /* ATTENTION : depuis l'introduction de l'option 'v $Fcompilers -ffloat-store' le            */
                                        /* 20040220103647, ce "bug" ne sort plus...                                                  */
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          end_nouveau_block

          begin_nouveau_block
                                        /* Ceci a ete introduit le 20040409115527 suite au probleme v $xiirs/$Fnota 20040330115702'  */
                                        /* qui a ete resolu grace a 'v $xil/defi_c3$vv$DEF GooF' aux environs du 20040425174450.     */
               Bblock
               DEFV(FloatInt,Zh);
               DEFV(Float,INIT(Zf,FLOT__UNDEF));
               DEFV(Float,INIT(Zf_01___conditionnel,FLOT__UNDEF));
               DEFV(Float,INIT(Zf_01_inconditionnel,FLOT__UNDEF));
                                        /* Variable 'Zf' et ses conversions dans [0,1] conditionnelle et inconditionnelle...         */

               EGAL(FloatInt_Int_1(Zh),0x68dfd5c4);
               EGAL(FloatInt_Int_2(Zh),0xbfa61de7);
               EGAL(Zf,FloatInt_Float(Zh));
                                        /* Definition d'un nombre flottant valant approximativement -0.0431968989868596609 et qui    */
                                        /* pose probleme...                                                                          */

               EGAL(Zf_01___conditionnel,SOUS(bSCAL___conditionnelle(Zf),COORDONNEE_BARYCENTRIQUE_CENTRALE));
                                        /* Mise de 'Zf' dans [0,1] de facon conditionnelle. On notera l'usage de 'bSCAL(...)'        */
                                        /* (et non pas de 'SCAL(...)') afin de "maitriser" la presence du 'COND(''')' qui est la     */
                                        /* source du probleme. La presence de la fonction 'bSCAL___conditionnelle(...)' est          */
                                        /* destinee a faire se manifester le probleme meme en presence de l'option de compilation    */
                                        /* "-ffloat-store" ; par contre, il ne faut surtout pas declarer la fonction "symetrique"    */
                                        /* 'bSCAL_inconditionnelle(...)' qui fait disparaitre le phenomene...                        */
               EGAL(Zf_01_inconditionnel
                   ,SOUS(bSCAL(SOUS(Zf,origine)
                              ,SOUS(extremite,origine)
                              ,SOUS(COORDONNEE_BARYCENTRIQUE_MAXIMALE,COORDONNEE_BARYCENTRIQUE_MINIMALE)
                               )
                        ,COORDONNEE_BARYCENTRIQUE_CENTRALE
                         )
                    );
                                        /* Mise de 'Zf' dans [0,1] de facon inconditionnelle. On notera l'usage de 'bSCAL(...)'      */
                                        /* (et non pas de 'SCAL(...)') afin de "maitriser" la presence du 'COND(''')' qui est la     */
                                        /* source du probleme...                                                                     */

               Test(IFNE(Zf_01___conditionnel,Zf_01_inconditionnel))
                                        /* Cas ou 'Zf_01___conditionnel' et 'Zf_01_inconditionnel' sont differents :                 */
                    Bblock
                    DEFINEV("BUG_SYSTEME_APC_GCC_ExcessPrecisionProblem_02");
                                        /* Voir a ce propos 'v $Dbugs/APC$D/LinuxRedHat$D/GCC$D/flottant.21$c' par exemple...        */
                                        /*                                                                                           */
                                        /* Ce bug peut etre corrige grace a 'v $xil/defi_c3$vv$DEF GooF'...                          */
                    Eblock
               ATes
                    Bblock
                    Eblock
               ETes
               Eblock
          end_nouveau_block
#Aif      (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
          ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )
#Eif      (         (defined(SYSTEME_APC_LinuxDebian_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxMandrake_GCC))                                                                            \
          ||        (defined(SYSTEME_APC_LinuxRedHat_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUbuntu_ICC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_GCC))                                                                              \
          ||        (defined(SYSTEME_APC_LinuxUlmint_ICC))                                                                              \
           )

     RETU_Commande;
     Eblock
ECommande



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.