Diff for /rpl/src/instructions_o1.c between versions 1.82 and 1.95

version 1.82, 2015/06/08 07:15:31 version 1.95, 2018/12/24 15:21:30
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.21    RPL/2 (R) version 4.1.29
   Copyright (C) 1989-2015 Dr. BERTRAND Joël    Copyright (C) 1989-2018 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 114  instruction_over(struct_processus *s_eta Line 114  instruction_over(struct_processus *s_eta
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s,\n"
                 "       %s, %s\n",                  "       %s, %s, %s\n",
                 d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,                  d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
                 d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,                  d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,
                 d_SQL, d_SLB, d_PRC, d_MTX);                  d_SQL, d_SLB, d_PRC, d_MTX, d_REC);
         printf("    1: %s, %s, %s, %s, %s, %s,\n"          printf("    1: %s, %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s,\n"
                 "       %s, %s\n",                  "       %s, %s, %s\n",
                 d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,                  d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
                 d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,                  d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,
                 d_SQL, d_SLB, d_PRC, d_MTX);                  d_SQL, d_SLB, d_PRC, d_MTX, d_REC);
         printf("->  3: %s, %s, %s, %s, %s, %s,\n"          printf("->  3: %s, %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s,\n"
                 "       %s, %s\n",                  "       %s, %s, %s\n",
                 d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,                  d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
                 d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,                  d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,
                 d_SQL, d_SLB, d_PRC, d_MTX);                  d_SQL, d_SLB, d_PRC, d_MTX, d_REC);
         printf("    ...\n");          printf("    ...\n");
         printf("    1: %s, %s, %s, %s, %s, %s,\n"          printf("    1: %s, %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s, %s,\n"
                 "       %s, %s, %s, %s,\n"                  "       %s, %s, %s, %s,\n"
                 "       %s, %s\n",                  "       %s, %s, %s\n",
                 d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,                  d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
                 d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,                  d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SCK,
                 d_SQL, d_SLB, d_PRC, d_MTX);                  d_SQL, d_SLB, d_PRC, d_MTX, d_REC);
   
         return;          return;
     }      }
Line 870  instruction_or(struct_processus *s_etat_ Line 870  instruction_or(struct_processus *s_etat_
 */  */
   
   
 #define                     d_BIND_TO_DEVICE        0  
 #define                     d_BROADCAST             1  
 #define                     d_DONT_ROUTE            2  
 #define                     d_KEEP_ALIVE            3  
 #define                     d_PRIORITY              4  
 #define                     d_RECEIVE_BUFFER        5  
 #define                     d_FORCE_RECEIVE_BUFFER  6  
 #define                     d_SEND_BUFFER           7  
 #define                     d_FORCE_SEND_BUFFER     8  
 #define                     d_RECEIVING_TIMEOUT     9  
 #define                     d_SENDING_TIMEOUT       10  
 #define                     d_REUSE_ADDRESS         11  
   
 static inline logical1  static inline logical1
 options_socket(struct_processus *s_etat_processus,  options_socket(struct_processus *s_etat_processus,
         struct_objet *s_objet_resultat, unsigned char *options,          struct_objet *s_objet_resultat, unsigned char *options,
Line 916  options_socket(struct_processus *s_etat_ Line 903  options_socket(struct_processus *s_etat_
                         d_ex_erreur_parametre_fichier;                          d_ex_erreur_parametre_fichier;
                 return(d_erreur);                  return(d_erreur);
             }              }
   
               (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                       ((integer8) 1) << d_BIND_TO_DEVICE;
 #       else  #       else
             WARNING("BIND TO DEVICE");              WARNING("BIND TO DEVICE");
 #       endif  #       endif
Line 930  options_socket(struct_processus *s_etat_ Line 920  options_socket(struct_processus *s_etat_
                     d_ex_erreur_parametre_fichier;                      d_ex_erreur_parametre_fichier;
             return(d_erreur);              return(d_erreur);
         }          }
   
           (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                   ((integer8) 1) << d_BROADCAST;
     }      }
   
     if (options[d_DONT_ROUTE] == 'Y')      if (options[d_DONT_ROUTE] == 'Y')
Line 941  options_socket(struct_processus *s_etat_ Line 934  options_socket(struct_processus *s_etat_
                     d_ex_erreur_parametre_fichier;                      d_ex_erreur_parametre_fichier;
             return(d_erreur);              return(d_erreur);
         }          }
   
           (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                   ((integer8) 1) << d_DONT_ROUTE;
     }      }
   
     if (options[d_KEEP_ALIVE] == 'Y')      if (options[d_KEEP_ALIVE] == 'Y')
Line 965  options_socket(struct_processus *s_etat_ Line 961  options_socket(struct_processus *s_etat_
                         d_ex_erreur_parametre_fichier;                          d_ex_erreur_parametre_fichier;
                 return(d_erreur);                  return(d_erreur);
             }              }
   
               (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                       ((integer8) 1) << d_PRIORITY;
               (*((struct_socket *) (*s_objet_resultat).objet)).priorite =
                       (*priorite);
 #       else  #       else
             WARNING("PRIORITY");              WARNING("PRIORITY");
 #       endif  #       endif
Line 980  options_socket(struct_processus *s_etat_ Line 981  options_socket(struct_processus *s_etat_
                     d_ex_erreur_parametre_fichier;                      d_ex_erreur_parametre_fichier;
             return(d_erreur);              return(d_erreur);
         }          }
   
           (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                   ((integer8) 1) << d_RECEIVE_BUFFER;
           (*((struct_socket *) (*s_objet_resultat).objet)).buffer_reception =
                   (*buffer_reception);
     }      }
   
     if (options[d_FORCE_RECEIVE_BUFFER] == 'Y')      if (options[d_FORCE_RECEIVE_BUFFER] == 'Y')
Line 993  options_socket(struct_processus *s_etat_ Line 999  options_socket(struct_processus *s_etat_
                         d_ex_erreur_parametre_fichier;                          d_ex_erreur_parametre_fichier;
                 return(d_erreur);                  return(d_erreur);
             }              }
   
               (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                       ((integer8) 1) << d_FORCE_RECEIVE_BUFFER;
               (*((struct_socket *) (*s_objet_resultat).objet)).buffer_reception =
                       (*buffer_reception);
 #       else  #       else
             WARNING("FORCE_RECEIVE_BUFFER");              WARNING("FORCE_RECEIVE_BUFFER");
 #       endif  #       endif
Line 1008  options_socket(struct_processus *s_etat_ Line 1019  options_socket(struct_processus *s_etat_
                     d_ex_erreur_parametre_fichier;                      d_ex_erreur_parametre_fichier;
             return(d_erreur);              return(d_erreur);
         }          }
   
           (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                   ((integer8) 1) << d_SEND_BUFFER;
           (*((struct_socket *) (*s_objet_resultat).objet)).buffer_emission =
                   (*buffer_emission);
     }      }
   
     if (options[d_FORCE_SEND_BUFFER] == 'Y')      if (options[d_FORCE_SEND_BUFFER] == 'Y')
Line 1021  options_socket(struct_processus *s_etat_ Line 1037  options_socket(struct_processus *s_etat_
                         d_ex_erreur_parametre_fichier;                          d_ex_erreur_parametre_fichier;
                 return(d_erreur);                  return(d_erreur);
             }              }
   
               (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                       ((integer8) 1) << d_FORCE_SEND_BUFFER;
               (*((struct_socket *) (*s_objet_resultat).objet)).buffer_emission =
                       (*buffer_emission);
 #       else  #       else
             WARNING("FORCE_SEND_BUFFER");              WARNING("FORCE_SEND_BUFFER");
 #       endif  #       endif
Line 1036  options_socket(struct_processus *s_etat_ Line 1057  options_socket(struct_processus *s_etat_
                     d_ex_erreur_parametre_fichier;                      d_ex_erreur_parametre_fichier;
             return(d_erreur);              return(d_erreur);
         }          }
   
           (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                   ((integer8) 1) << d_RECEIVING_TIMEOUT;
           (*((struct_socket *) (*s_objet_resultat).objet)).timeout_reception =
                   (*timeout_reception);
     }      }
   
     if (options[d_SENDING_TIMEOUT] == 'Y')      if (options[d_SENDING_TIMEOUT] == 'Y')
Line 1048  options_socket(struct_processus *s_etat_ Line 1074  options_socket(struct_processus *s_etat_
                     d_ex_erreur_parametre_fichier;                      d_ex_erreur_parametre_fichier;
             return(d_erreur);              return(d_erreur);
         }          }
   
           (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                   ((integer8) 1) << d_SENDING_TIMEOUT;
           (*((struct_socket *) (*s_objet_resultat).objet)).timeout_emission =
                   (*timeout_emission);
     }      }
   
     if (options[d_REUSE_ADDRESS] == 'Y')      if (options[d_REUSE_ADDRESS] == 'Y')
Line 1059  options_socket(struct_processus *s_etat_ Line 1090  options_socket(struct_processus *s_etat_
                     d_ex_erreur_parametre_fichier;                      d_ex_erreur_parametre_fichier;
             return(d_erreur);              return(d_erreur);
         }          }
   
           (*((struct_socket *) (*s_objet_resultat).objet)).options |=
                   ((integer8) 1) << d_REUSE_ADDRESS;
     }      }
   
     return(d_absence_erreur);      return(d_absence_erreur);
Line 2327  instruction_open(struct_processus *s_eta Line 2361  instruction_open(struct_processus *s_eta
                                 {                                  {
                                     type_arguments = 'S';                                      type_arguments = 'S';
                                 }                                  }
                                   else if (type_arguments == 'F')
                                 {                                  {
                                     liberation(s_etat_processus,                                      liberation(s_etat_processus,
                                             s_objet_argument);                                              s_objet_argument);
Line 4841  instruction_open(struct_processus *s_eta Line 4876  instruction_open(struct_processus *s_eta
                     = 'Y';                      = 'Y';
             (*((struct_socket *) (*s_objet_resultat).objet)).socket_connectee              (*((struct_socket *) (*s_objet_resultat).objet)).socket_connectee
                     = d_faux;                      = d_faux;
               (*((struct_socket *) (*s_objet_resultat).objet)).options = 0;
   
             if (type_domaine == 'L')              if (type_domaine == 'L')
             { // Socket serveur              { // Socket serveur
Line 5019  instruction_open(struct_processus *s_eta Line 5055  instruction_open(struct_processus *s_eta
                                     .objet)).adresse);                                      .objet)).adresse);
   
                             if (((*((struct_socket *) (*s_objet_resultat)                              if (((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse = malloc(22 *                                      .objet)).adresse = malloc(23 *
                                     sizeof(unsigned char))) == NULL)                                      sizeof(unsigned char))) == NULL)
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
Line 5028  instruction_open(struct_processus *s_eta Line 5064  instruction_open(struct_processus *s_eta
                             }                              }
   
                             sprintf((*((struct_socket *) (*s_objet_resultat)                              sprintf((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse, "%d.%d.%d.%d",                                      .objet)).adresse, "%d.%d.%d.%d(%u)",
                                     (ntohl((*((struct sockaddr_in *)                                      (ntohl((*((struct sockaddr_in *)
                                     (*resolution_courante).ai_addr)).sin_addr                                      (*resolution_courante).ai_addr)).sin_addr
                                     .s_addr) >> 24) & 0xFF,                                      .s_addr) >> 24) & 0xFF,
Line 5040  instruction_open(struct_processus *s_eta Line 5076  instruction_open(struct_processus *s_eta
                                     .s_addr) >> 8) & 0xFF,                                      .s_addr) >> 8) & 0xFF,
                                     ntohl((*((struct sockaddr_in *)                                      ntohl((*((struct sockaddr_in *)
                                     (*resolution_courante).ai_addr)).sin_addr                                      (*resolution_courante).ai_addr)).sin_addr
                                     .s_addr) & 0xFF);                                      .s_addr) & 0xFF,
                                       (unsigned int) port);
                         }                          }
                         else                          else
                         { // Accès en IPv6                          { // Accès en IPv6
Line 5130  instruction_open(struct_processus *s_eta Line 5167  instruction_open(struct_processus *s_eta
                             free((*((struct_socket *) (*s_objet_resultat)                              free((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse);                                      .objet)).adresse);
   
                               /*
                                * Longueur de la chaîne :
                                * Adresse IPv6 : 16 octets soit 128 bits.
                                * => 32 chiffres en hexadécimal
                                * Par groupe de 4, 8 groupes
                                * => 7 ":"
                                * Port : (%u)
                                * => 7
                                * ==> 32 + 7 + 7 + 1 = 47
                                */
   
                             if (((*((struct_socket *) (*s_objet_resultat)                              if (((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse = malloc(55 *                                      .objet)).adresse = malloc(47 *
                                     sizeof(unsigned char))) == NULL)                                      sizeof(unsigned char))) == NULL)
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
Line 5139  instruction_open(struct_processus *s_eta Line 5187  instruction_open(struct_processus *s_eta
                                 return;                                  return;
                             }                              }
   
                             for(i = 0; i < 16; i++)                              sprintf((*((struct_socket *) (*s_objet_resultat)
                             {                                      .objet)).adresse,
                                 sprintf((*((struct_socket *) (*s_objet_resultat)                                      "%02X%02X:%02X%02X:%02X%02X:%02X%02X:"
                                         .objet)).adresse,                                      "%02X%02X:%02X%02X:%02X%02X:%02X%02X(%u)",
                                         (i == 0) ? "%s%X" : "%s:%X",                                      (*((struct sockaddr_in6 *)
                                         (*((struct_socket *) (*s_objet_resultat)                                      (*resolution_courante).ai_addr)).sin6_addr
                                         .objet)).adresse,                                      .s6_addr[0],
                                         (*((struct sockaddr_in6 *)                                      (*((struct sockaddr_in6 *)
                                         (*resolution_courante).ai_addr))                                      (*resolution_courante).ai_addr)).sin6_addr
                                         .sin6_addr.s6_addr[i]);                                      .s6_addr[1],
                             }                                      (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[2],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[3],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[4],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[5],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[6],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[7],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[8],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[9],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[10],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[11],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[12],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[13],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[14],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[15],
                                       (unsigned int) port);
 #                           else  #                           else
                             if ((*s_etat_processus).langue == 'F')                              if ((*s_etat_processus).langue == 'F')
                             {                              {
Line 5174  instruction_open(struct_processus *s_eta Line 5264  instruction_open(struct_processus *s_eta
                         }                          }
   
                         freeaddrinfo(resolution);                          freeaddrinfo(resolution);
   
                         sprintf((*((struct_socket *) (*s_objet_resultat)  
                                 .objet)).adresse, "%s(%u)",  
                                 (*((struct_socket *) (*s_objet_resultat)  
                                 .objet)).adresse, (unsigned int) port);  
                     }                      }
                     else                      else
                     { // Hôte défini par une adresse                      { // Hôte défini par une adresse
Line 5188  instruction_open(struct_processus *s_eta Line 5273  instruction_open(struct_processus *s_eta
                                     .objet)).adresse);                                      .objet)).adresse);
   
                             if (((*((struct_socket *) (*s_objet_resultat)                              if (((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse = malloc(22 *                                      .objet)).adresse = malloc(23 *
                                     sizeof(unsigned char))) == NULL)                                      sizeof(unsigned char))) == NULL)
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
Line 5196  instruction_open(struct_processus *s_eta Line 5281  instruction_open(struct_processus *s_eta
                                 return;                                  return;
                             }                              }
   
                             (*((struct_socket *) (*s_objet_resultat).objet))  
                                     .adresse[0] = d_code_fin_chaine;  
   
                             for(i = 0; i < 4; i++)  
                             {  
                                 sprintf((*((struct_socket *) (*s_objet_resultat)  
                                         .objet)).adresse,  
                                         (i == 0) ? "%s%d" : "%s.%d",  
                                         (*((struct_socket *) (*s_objet_resultat)  
                                         .objet)).adresse, (int) adresse[i]);  
                             }  
   
                             sprintf((*((struct_socket *) (*s_objet_resultat)                              sprintf((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse, "%s(%u)",                                      .objet)).adresse, "%d.%d.%d.%d(%u)",
                                     (*((struct_socket *) (*s_objet_resultat)                                      (int) adresse[0], (int) adresse[1],
                                     .objet)).adresse, (unsigned int) port);                                      (int) adresse[2], (int) adresse[3],
                                       (unsigned int) port);
   
                             if (((*((struct_socket *)                              if (((*((struct_socket *)
                                     (*s_objet_resultat).objet))                                      (*s_objet_resultat).objet))
Line 5272  instruction_open(struct_processus *s_eta Line 5346  instruction_open(struct_processus *s_eta
                                     .objet)).adresse);                                      .objet)).adresse);
   
                             if (((*((struct_socket *) (*s_objet_resultat)                              if (((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse = malloc(55 *                                      .objet)).adresse = malloc(47 *
                                     sizeof(unsigned char))) == NULL)                                      sizeof(unsigned char))) == NULL)
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
Line 5280  instruction_open(struct_processus *s_eta Line 5354  instruction_open(struct_processus *s_eta
                                 return;                                  return;
                             }                              }
   
                             (*((struct_socket *) (*s_objet_resultat).objet))  
                                     .adresse[0] = d_code_fin_chaine;  
   
                             for(i = 0; i < 16; i++)  
                             {  
                                 sprintf((*((struct_socket *) (*s_objet_resultat)  
                                         .objet)).adresse,  
                                         (i == 0) ? "%s%X" : "%s:%X",  
                                         (*((struct_socket *) (*s_objet_resultat)  
                                         .objet)).adresse, (unsigned int)  
                                         adresse[i]);  
                             }  
   
                             sprintf((*((struct_socket *) (*s_objet_resultat)                              sprintf((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse, "%s(%u)",                                      .objet)).adresse,
                                     (*((struct_socket *) (*s_objet_resultat)                                      "%02X%02X:%02X%02X:%02X%02X:%02X%02X:"
                                     .objet)).adresse, (unsigned int) port);                                      "%02X%02X:%02X%02X:%02X%02X:%02X%02X(%u)",
                                       (unsigned int) adresse[0],
                                       (unsigned int) adresse[1],
                                       (unsigned int) adresse[2],
                                       (unsigned int) adresse[3],
                                       (unsigned int) adresse[4],
                                       (unsigned int) adresse[5],
                                       (unsigned int) adresse[6],
                                       (unsigned int) adresse[7],
                                       (unsigned int) adresse[8],
                                       (unsigned int) adresse[9],
                                       (unsigned int) adresse[10],
                                       (unsigned int) adresse[11],
                                       (unsigned int) adresse[12],
                                       (unsigned int) adresse[13],
                                       (unsigned int) adresse[14],
                                       (unsigned int) adresse[15],
                                       (unsigned int) port);
   
                             if (((*((struct_socket *)                              if (((*((struct_socket *)
                                     (*s_objet_resultat).objet))                                      (*s_objet_resultat).objet))
Line 5601  instruction_open(struct_processus *s_eta Line 5679  instruction_open(struct_processus *s_eta
                                     .objet)).adresse);                                      .objet)).adresse);
   
                             if (((*((struct_socket *) (*s_objet_resultat)                              if (((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse = malloc(22 *                                      .objet)).adresse = malloc(23 *
                                     sizeof(unsigned char))) == NULL)                                      sizeof(unsigned char))) == NULL)
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
Line 5610  instruction_open(struct_processus *s_eta Line 5688  instruction_open(struct_processus *s_eta
                             }                              }
   
                             sprintf((*((struct_socket *) (*s_objet_resultat)                              sprintf((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse, "%d.%d.%d.%d",                                      .objet)).adresse, "%d.%d.%d.%d(%u)",
                                     (ntohl((*((struct sockaddr_in *)                                      (ntohl((*((struct sockaddr_in *)
                                     (*resolution_courante).ai_addr)).sin_addr                                      (*resolution_courante).ai_addr)).sin_addr
                                     .s_addr) >> 24) & 0xFF,                                      .s_addr) >> 24) & 0xFF,
Line 5622  instruction_open(struct_processus *s_eta Line 5700  instruction_open(struct_processus *s_eta
                                     .s_addr) >> 8) & 0xFF,                                      .s_addr) >> 8) & 0xFF,
                                     ntohl((*((struct sockaddr_in *)                                      ntohl((*((struct sockaddr_in *)
                                     (*resolution_courante).ai_addr)).sin_addr                                      (*resolution_courante).ai_addr)).sin_addr
                                     .s_addr) & 0xFF);                                      .s_addr) & 0xFF,
                                       (unsigned int) port);
                         }                          }
                         else                          else
                         { // Accès en IPv6                          { // Accès en IPv6
Line 5710  instruction_open(struct_processus *s_eta Line 5789  instruction_open(struct_processus *s_eta
                                     .objet)).adresse);                                      .objet)).adresse);
   
                             if (((*((struct_socket *) (*s_objet_resultat)                              if (((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse = malloc(55 *                                      .objet)).adresse = malloc(47 *
                                     sizeof(unsigned char))) == NULL)                                      sizeof(unsigned char))) == NULL)
                             {                              {
                                 (*s_etat_processus).erreur_systeme =                                  (*s_etat_processus).erreur_systeme =
Line 5718  instruction_open(struct_processus *s_eta Line 5797  instruction_open(struct_processus *s_eta
                                 return;                                  return;
                             }                              }
   
                             for(i = 0; i < 16; i++)                              sprintf((*((struct_socket *) (*s_objet_resultat)
                             {                                      .objet)).adresse,
                                 sprintf((*((struct_socket *) (*s_objet_resultat)                                      "%02X%02X:%02X%02X:%02X%02X:%02X%02X:"
                                         .objet)).adresse,                                      "%02X%02X:%02X%02X:%02X%02X:%02X%02X(%u)",
                                         (i == 0) ? "%s%X" : "%s:%X",                                      (*((struct sockaddr_in6 *)
                                         (*((struct_socket *) (*s_objet_resultat)                                      (*resolution_courante).ai_addr)).sin6_addr
                                         .objet)).adresse,                                      .s6_addr[0],
                                         (*((struct sockaddr_in6 *)                                      (*((struct sockaddr_in6 *)
                                         (*resolution_courante).ai_addr))                                      (*resolution_courante).ai_addr)).sin6_addr
                                         .sin6_addr.s6_addr[i]);                                      .s6_addr[1],
                             }                                      (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[2],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[3],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[4],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[5],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[6],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[7],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[8],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[9],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[10],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[11],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[12],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[13],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[14],
                                       (*((struct sockaddr_in6 *)
                                       (*resolution_courante).ai_addr)).sin6_addr
                                       .s6_addr[15],
                                       (unsigned int) port);
 #                           else  #                           else
                             if ((*s_etat_processus).langue == 'F')                              if ((*s_etat_processus).langue == 'F')
                             {                              {
Line 5753  instruction_open(struct_processus *s_eta Line 5874  instruction_open(struct_processus *s_eta
                         }                          }
   
                         freeaddrinfo(resolution);                          freeaddrinfo(resolution);
   
                         sprintf((*((struct_socket *) (*s_objet_resultat)  
                                 .objet)).adresse, "%s(%u)",  
                                 (*((struct_socket *) (*s_objet_resultat)  
                                 .objet)).adresse, (unsigned int) port);  
                     }                      }
                     else                      else
                     { // Hôte défini par une adresse                      { // Hôte défini par une adresse
Line 5769  instruction_open(struct_processus *s_eta Line 5885  instruction_open(struct_processus *s_eta
                                         .objet)).adresse);                                          .objet)).adresse);
   
                                 if (((*((struct_socket *) (*s_objet_resultat)                                  if (((*((struct_socket *) (*s_objet_resultat)
                                         .objet)).adresse = malloc(22 *                                          .objet)).adresse = malloc(23 *
                                         sizeof(unsigned char))) == NULL)                                          sizeof(unsigned char))) == NULL)
                                 {                                  {
                                     (*s_etat_processus).erreur_systeme =                                      (*s_etat_processus).erreur_systeme =
Line 5777  instruction_open(struct_processus *s_eta Line 5893  instruction_open(struct_processus *s_eta
                                     return;                                      return;
                                 }                                  }
   
                                 (*((struct_socket *) (*s_objet_resultat).objet))  
                                         .adresse[0] = d_code_fin_chaine;  
   
                                 for(i = 0; i < 4; i++)  
                                 {  
                                     sprintf((*((struct_socket *)  
                                             (*s_objet_resultat).objet)).adresse,  
                                             (i == 0) ? "%s%d" : "%s.%d",  
                                             (*((struct_socket *)  
                                             (*s_objet_resultat)  
                                             .objet)).adresse, (int) adresse[i]);  
                                 }  
   
                                 sprintf((*((struct_socket *) (*s_objet_resultat)                                  sprintf((*((struct_socket *) (*s_objet_resultat)
                                         .objet)).adresse, "%s(%u)",                                          .objet)).adresse, "%d.%d.%d.%d(%u)",
                                         (*((struct_socket *) (*s_objet_resultat)                                          (int) adresse[0], (int) adresse[1],
                                         .objet)).adresse, (unsigned int) port);                                          (int) adresse[2], (int) adresse[3],
                                           (unsigned int) port);
                             }                              }
                             else                              else
                             {                              {
Line 5872  instruction_open(struct_processus *s_eta Line 5976  instruction_open(struct_processus *s_eta
                                         .objet)).adresse);                                          .objet)).adresse);
   
                                 if (((*((struct_socket *) (*s_objet_resultat)                                  if (((*((struct_socket *) (*s_objet_resultat)
                                         .objet)).adresse = malloc(55 *                                          .objet)).adresse = malloc(47 *
                                         sizeof(unsigned char))) == NULL)                                          sizeof(unsigned char))) == NULL)
                                 {                                  {
                                     (*s_etat_processus).erreur_systeme =                                      (*s_etat_processus).erreur_systeme =
Line 5880  instruction_open(struct_processus *s_eta Line 5984  instruction_open(struct_processus *s_eta
                                     return;                                      return;
                                 }                                  }
   
                                 (*((struct_socket *) (*s_objet_resultat).objet))  
                                         .adresse[0] = d_code_fin_chaine;  
   
                                 for(i = 0; i < 16; i++)  
                                 {  
                                     sprintf((*((struct_socket *)  
                                             (*s_objet_resultat).objet)).adresse,  
                                             (i == 0) ? "%s%X" : "%s:%X",  
                                             (*((struct_socket *)  
                                             (*s_objet_resultat)  
                                             .objet)).adresse, (unsigned int)  
                                             adresse[i]);  
                                 }  
   
                                 sprintf((*((struct_socket *) (*s_objet_resultat)                                  sprintf((*((struct_socket *) (*s_objet_resultat)
                                         .objet)).adresse, "%s(%u)",                                          .objet)).adresse,
                                         (*((struct_socket *) (*s_objet_resultat)                                          "%02X%02X:%02X%02X:%02X%02X:%02X%02X:"
                                         .objet)).adresse, (unsigned int) port);                                          "%02X%02X:%02X%02X:%02X%02X:%02X%02X"
                                           "(%u)",
                                           (unsigned int) adresse[0],
                                           (unsigned int) adresse[1],
                                           (unsigned int) adresse[2],
                                           (unsigned int) adresse[3],
                                           (unsigned int) adresse[4],
                                           (unsigned int) adresse[5],
                                           (unsigned int) adresse[6],
                                           (unsigned int) adresse[7],
                                           (unsigned int) adresse[8],
                                           (unsigned int) adresse[9],
                                           (unsigned int) adresse[10],
                                           (unsigned int) adresse[11],
                                           (unsigned int) adresse[12],
                                           (unsigned int) adresse[13],
                                           (unsigned int) adresse[14],
                                           (unsigned int) adresse[15],
                                           (unsigned int) port);
                             }                              }
                             else                              else
                             {                              {

Removed from v.1.82  
changed lines
  Added in v.1.95


CVSweb interface <joel.bertrand@systella.fr>