Diff for /rpl/src/instructions_w1.c between versions 1.103 and 1.113

version 1.103, 2016/03/09 17:49:39 version 1.113, 2019/01/01 09:03:12
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.1.25    RPL/2 (R) version 4.1.30
   Copyright (C) 1989-2016 Dr. BERTRAND Joël    Copyright (C) 1989-2019 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 410  instruction_write(struct_processus *s_et Line 410  instruction_write(struct_processus *s_et
     integer8                            recursivite;      integer8                            recursivite;
   
     logical1                            format_degenere;      logical1                            format_degenere;
       logical1                            format_oriente_ligne;
     logical1                            mise_a_jour;      logical1                            mise_a_jour;
   
   
     sqlite3_stmt                        *ppStmt;      sqlite3_stmt                        *ppStmt;
   
     ssize_t                             ios;      ssize_t                             ios;
Line 1507  instruction_write(struct_processus *s_et Line 1507  instruction_write(struct_processus *s_et
                         return;                          return;
                     }                      }
   
                     if (strncmp("LENGTH*(", format_chaine, 8) != 0)                      if (strcmp("LINE*(*)", format_chaine) == 0)
                     {                      {
                         free(format_chaine);                          format_oriente_ligne = d_vrai;
                           format_degenere = d_vrai;
                         liberation(s_etat_processus, s_objet_argument_2);  
                         liberation(s_etat_processus, s_objet_argument_1);  
   
                         (*s_etat_processus).erreur_execution =  
                                 d_ex_erreur_format_fichier;  
                         return;  
                     }                      }
                       else
                     longueur = (integer8) strlen(format_chaine);  
   
                     if (format_chaine[longueur - 1] != ')')  
                     {                      {
                         free(format_chaine);                          format_oriente_ligne = d_faux;
                           
                           if (strncmp("LENGTH*(", format_chaine, 8) != 0)
                           {
                               free(format_chaine);
   
                         liberation(s_etat_processus, s_objet_argument_2);                              liberation(s_etat_processus, s_objet_argument_2);
                         liberation(s_etat_processus, s_objet_argument_1);                              liberation(s_etat_processus, s_objet_argument_1);
   
                         (*s_etat_processus).erreur_execution =                              (*s_etat_processus).erreur_execution =
                                 d_ex_erreur_format_fichier;                                      d_ex_erreur_format_fichier;
                         return;                              return;
                     }                          }
   
                     format_chaine[longueur] = d_code_fin_chaine;                          longueur = (integer8) strlen(format_chaine);
   
                     if (format_chaine[8] == '*')                          if (format_chaine[longueur - 1] != ')')
                     {  
                         format_degenere = d_vrai;  
                     }  
                     else  
                     {  
                         // Détermination de la longueur  
                         format_degenere = d_faux;  
   
                         if (sscanf(&(format_chaine[8]), "%lld", &longueur) != 1)  
                         {                          {
                             free(format_chaine);                              free(format_chaine);
   
Line 1555  instruction_write(struct_processus *s_et Line 1541  instruction_write(struct_processus *s_et
                                     d_ex_erreur_format_fichier;                                      d_ex_erreur_format_fichier;
                             return;                              return;
                         }                          }
   
                           format_chaine[longueur] = d_code_fin_chaine;
   
                           if (format_chaine[8] == '*')
                           {
                               format_degenere = d_vrai;
                           }
                           else
                           {
                               // Détermination de la longueur
                               format_degenere = d_faux;
   
                               if (sscanf(&(format_chaine[8]), "%lld", &longueur)
                                       != 1)
                               {
                                   free(format_chaine);
   
                                   liberation(s_etat_processus,
                                           s_objet_argument_2);
                                   liberation(s_etat_processus,
                                           s_objet_argument_1);
   
                                   (*s_etat_processus).erreur_execution =
                                           d_ex_erreur_format_fichier;
                                   return;
                               }
                           }
                     }                      }
   
                     free(format_chaine);                      free(format_chaine);
Line 1596  instruction_write(struct_processus *s_et Line 1609  instruction_write(struct_processus *s_et
   
                     free(chaine);                      free(chaine);
   
                       if (format_oriente_ligne == d_vrai)
                       {
                           if (fwrite("\n", 1, 1, (*descripteur).descripteur_c)
                                   != 1)
                           {
                               (*s_etat_processus).erreur_systeme =
                                       d_es_erreur_fichier;
                               return;
                           }
                       }
   
                     l_element_courant = (*l_element_courant).suivant;                      l_element_courant = (*l_element_courant).suivant;
                     l_element_courant_format = (*l_element_courant_format)                      l_element_courant_format = (*l_element_courant_format)
                             .suivant;                              .suivant;
Line 2522  instruction_wfproc(struct_processus *s_e Line 2546  instruction_wfproc(struct_processus *s_e
                 {                  {
                     if (envoi_signal_processus((*(*((struct_processus_fils *)                      if (envoi_signal_processus((*(*((struct_processus_fils *)
                             (*(*l_element_courant).donnee).objet)).thread).pid,                              (*(*l_element_courant).donnee).objet)).thread).pid,
                             rpl_signull) != 0)                              rpl_signull, d_faux) != 0)
                     {                      {
                         drapeau_fin = d_vrai;                          drapeau_fin = d_vrai;
                     }                      }
Line 3177  instruction_wfsock(struct_processus *s_e Line 3201  instruction_wfsock(struct_processus *s_e
     struct sockaddr_in6     adresse_ipv6;      struct sockaddr_in6     adresse_ipv6;
 #   endif  #   endif
   
     unsigned long           i;  
   
     if ((*s_etat_processus).affichage_arguments == 'Y')      if ((*s_etat_processus).affichage_arguments == 'Y')
     {      {
         printf("\n  WFSOCK ");          printf("\n  WFSOCK ");
Line 3542  instruction_wfsock(struct_processus *s_e Line 3564  instruction_wfsock(struct_processus *s_e
                 } while(drapeau == d_faux);                  } while(drapeau == d_faux);
   
                 if (((*((struct_socket *) (*s_objet_resultat).objet))                  if (((*((struct_socket *) (*s_objet_resultat).objet))
                         .adresse_distante = malloc(55 *                          .adresse_distante = malloc(47 *
                         sizeof(unsigned char))) == NULL)                          sizeof(unsigned char))) == NULL)
                 {                  {
                     (*s_etat_processus).erreur_systeme =                      (*s_etat_processus).erreur_systeme =
Line 3550  instruction_wfsock(struct_processus *s_e Line 3572  instruction_wfsock(struct_processus *s_e
                     return;                      return;
                 }                  }
   
                 (*((struct_socket *) (*s_objet_resultat).objet))  
                         .adresse_distante = d_code_fin_chaine;  
   
                 for(i = 0; i < 16; i++)  
                 {  
                     sprintf((*((struct_socket *) (*s_objet_resultat)  
                             .objet)).adresse_distante, (i == 0) ? "%s%X"  
                             : "%s:%X", (*((struct_socket *) (*s_objet_resultat)  
                             .objet)).adresse_distante,  
                             adresse_ipv6.sin6_addr.s6_addr[i]);  
                 }  
   
                 sprintf((*((struct_socket *) (*s_objet_resultat)                  sprintf((*((struct_socket *) (*s_objet_resultat)
                         .objet)).adresse_distante, "%s(%u)",  
                         (*((struct_socket *) (*s_objet_resultat)  
                         .objet)).adresse_distante,                          .objet)).adresse_distante,
                           "%02X%02X:%02X%02X:%02X%02X:%02X%02X:"
                           "%02X%02X:%02X%02X:%02X%02X:%02X%02X(%u)",
                           adresse_ipv6.sin6_addr.s6_addr[0],
                           adresse_ipv6.sin6_addr.s6_addr[1],
                           adresse_ipv6.sin6_addr.s6_addr[2],
                           adresse_ipv6.sin6_addr.s6_addr[3],
                           adresse_ipv6.sin6_addr.s6_addr[4],
                           adresse_ipv6.sin6_addr.s6_addr[5],
                           adresse_ipv6.sin6_addr.s6_addr[6],
                           adresse_ipv6.sin6_addr.s6_addr[7],
                           adresse_ipv6.sin6_addr.s6_addr[8],
                           adresse_ipv6.sin6_addr.s6_addr[9],
                           adresse_ipv6.sin6_addr.s6_addr[10],
                           adresse_ipv6.sin6_addr.s6_addr[11],
                           adresse_ipv6.sin6_addr.s6_addr[12],
                           adresse_ipv6.sin6_addr.s6_addr[13],
                           adresse_ipv6.sin6_addr.s6_addr[14],
                           adresse_ipv6.sin6_addr.s6_addr[15],
                         ntohs(adresse_ipv6.sin6_port));                          ntohs(adresse_ipv6.sin6_port));
 #           else  #           else
                 if ((*s_etat_processus).langue == 'F')                  if ((*s_etat_processus).langue == 'F')

Removed from v.1.103  
changed lines
  Added in v.1.113


CVSweb interface <joel.bertrand@systella.fr>