Diff for /rpl/src/instructions_o1.c between versions 1.10 and 1.27.2.2

version 1.10, 2010/04/17 18:57:35 version 1.27.2.2, 2011/04/14 08:46:44
Line 1 Line 1
 /*  /*
 ================================================================================  ================================================================================
   RPL/2 (R) version 4.0.14    RPL/2 (R) version 4.0.23
   Copyright (C) 1989-2010 Dr. BERTRAND Joël    Copyright (C) 1989-2011 Dr. BERTRAND Joël
   
   This file is part of RPL/2.    This file is part of RPL/2.
   
Line 20 Line 20
 */  */
   
   
 #include "rpl.conv.h"  #include "rpl-conv.h"
   
   
 /*  /*
Line 897  instruction_open(struct_processus *s_eta Line 897  instruction_open(struct_processus *s_eta
      * Format :       * Format :
      *   FORMATTED   : fichier texte ;       *   FORMATTED   : fichier texte ;
      *   UNFORMATTED : fichier binaire.       *   UNFORMATTED : fichier binaire.
        *   FLOW        : chaîne de caractères sans format (en tant qu'objet
        *                 binaire comme "\x00avz\xFD")
      */       */
   
     file                        *descripteur;      file                        *descripteur;
Line 934  instruction_open(struct_processus *s_eta Line 936  instruction_open(struct_processus *s_eta
   
     struct sockaddr_un          socket_unix;      struct sockaddr_un          socket_unix;
     struct sockaddr_in          socket_ipv4;      struct sockaddr_in          socket_ipv4;
   #   ifdef IPV6
     struct sockaddr_in6         socket_ipv6;      struct sockaddr_in6         socket_ipv6;
   #   endif
   
     struct_objet                *s_objet_argument;      struct_objet                *s_objet_argument;
     struct_objet                *s_objet_resultat;      struct_objet                *s_objet_resultat;
Line 1017  instruction_open(struct_processus *s_eta Line 1021  instruction_open(struct_processus *s_eta
                 "\"file name\" } \"protection\" } OPEN\n");                  "\"file name\" } \"protection\" } OPEN\n");
         printf("    { \"sockettype\" { \"name\" \"local name\" } } OPEN\n");          printf("    { \"sockettype\" { \"name\" \"local name\" } } OPEN\n");
         printf("    { \"sockettype\" \"socketdomain\" \"protection\" } OPEN\n");          printf("    { \"sockettype\" \"socketdomain\" \"protection\" } OPEN\n");
           printf("    \"/semaphore\" OPEN\n");
   
         printf("    File type       : NEW/OLD/REPLACE/UNKNOWN/SCRATCH\n");          printf("    File type       : NEW/OLD/REPLACE/UNKNOWN/SCRATCH\n");
         printf("    File access     : SEQUENTIAL/DIRECT/KEYED\n");          printf("    File access     : SEQUENTIAL/DIRECT/KEYED\n");
Line 1187  instruction_open(struct_processus *s_eta Line 1192  instruction_open(struct_processus *s_eta
   
                     type_ouverture = 'R';                      type_ouverture = 'R';
                 }                  }
                   else if (strcmp(argument_majuscule, "OLD") == 0)
                   {
                       if (type_ouverture != ' ')
                       {
                           liberation(s_etat_processus, s_objet_argument);
                           free(argument_majuscule);
   
                           (*s_etat_processus).erreur_execution =
                                   d_ex_erreur_parametre_fichier;
                           return;
                       }
   
                       if (type_arguments == ' ')
                       {
                           type_arguments = 'F';
                       }
                       else if (type_arguments == 'S')
                       {
                           liberation(s_etat_processus, s_objet_argument);
                           free(argument_majuscule);
   
                           (*s_etat_processus).erreur_execution =
                                   d_ex_erreur_parametre_fichier;
                           return;
                       }
   
                       type_ouverture = 'O';
                   }
                 else if (strcmp(argument_majuscule, "UNKNOWN") == 0)                  else if (strcmp(argument_majuscule, "UNKNOWN") == 0)
                 {                  {
                     if (type_ouverture != ' ')                      if (type_ouverture != ' ')
Line 4182  instruction_open(struct_processus *s_eta Line 4215  instruction_open(struct_processus *s_eta
                         pointeur++;                          pointeur++;
                     }                      }
   
                     strncpy(socket_unix.sun_path, pointeur, 108);                      strncpy(socket_unix.sun_path, pointeur, UNIX_PATH_MAX);
                     socket_unix.sun_path[108 - 1] = d_code_fin_chaine;                      socket_unix.sun_path[UNIX_PATH_MAX - 1] = d_code_fin_chaine;
   
                     if (options_socket() == d_erreur)                      if (options_socket() == d_erreur)
                     {                      {
Line 4338  instruction_open(struct_processus *s_eta Line 4371  instruction_open(struct_processus *s_eta
                         }                          }
                         else                          else
                         { // Accès en IPv6                          { // Accès en IPv6
   #                           ifdef IPV6
                             resolution_courante = resolution;                              resolution_courante = resolution;
   
                             while(resolution_courante != NULL)                              while(resolution_courante != NULL)
Line 4435  instruction_open(struct_processus *s_eta Line 4469  instruction_open(struct_processus *s_eta
                                         (*resolution_courante).ai_addr))                                          (*resolution_courante).ai_addr))
                                         .sin6_addr.s6_addr[i]);                                          .sin6_addr.s6_addr[i]);
                             }                              }
   #                           else
                               if ((*s_etat_processus).langue == 'F')
                               {
                                   printf("+++Attention : Support du protocole"
                                           " IPv6 indisponible\n");
                               }
                               else
                               {
                                   printf("+++Warning : IPv6 support "
                                           "unavailable\n");
                               }
   #                           endif
                         }                          }
   
                         freeaddrinfo(resolution);                          freeaddrinfo(resolution);
Line 4522  instruction_open(struct_processus *s_eta Line 4568  instruction_open(struct_processus *s_eta
                         }                          }
                         else                          else
                         { // Accès en IPv6                          { // Accès en IPv6
   #                           ifdef IPV6
                             if (((*((struct_socket *) (*s_objet_resultat)                              if (((*((struct_socket *) (*s_objet_resultat)
                                     .objet)).adresse = malloc(55 *                                      .objet)).adresse = malloc(55 *
                                     sizeof(unsigned char))) == NULL)                                      sizeof(unsigned char))) == NULL)
Line 4592  instruction_open(struct_processus *s_eta Line 4639  instruction_open(struct_processus *s_eta
                                         d_ex_erreur_acces_fichier;                                          d_ex_erreur_acces_fichier;
                                 return;                                  return;
                             }                              }
   #                           else
                               if ((*s_etat_processus).langue == 'F')
                               {
                                   printf("+++Attention : Support du protocole"
                                           " IPv6 indisponible\n");
                               }
                               else
                               {
                                   printf("+++Warning : IPv6 support "
                                           "unavailable\n");
                               }
   #                           endif
                         }                          }
                     }                      }
   
Line 4695  instruction_open(struct_processus *s_eta Line 4754  instruction_open(struct_processus *s_eta
   
                     socket_unix.sun_family = AF_UNIX;                      socket_unix.sun_family = AF_UNIX;
                     strncpy(socket_unix.sun_path, (*((struct_socket *)                      strncpy(socket_unix.sun_path, (*((struct_socket *)
                             (*s_objet_resultat).objet)).adresse, 108);                              (*s_objet_resultat).objet)).adresse, UNIX_PATH_MAX);
                     socket_unix.sun_path[108 - 1] = d_code_fin_chaine;                      socket_unix.sun_path[UNIX_PATH_MAX - 1] = d_code_fin_chaine;
   
                     if ((type_socket == 'S') || (type_socket == 'Q'))                      if ((type_socket == 'S') || (type_socket == 'Q'))
                     {                      {
Line 4850  instruction_open(struct_processus *s_eta Line 4909  instruction_open(struct_processus *s_eta
                         }                          }
                         else                          else
                         { // Accès en IPv6                          { // Accès en IPv6
   #                           ifdef IPV6
                             resolution_courante = resolution;                              resolution_courante = resolution;
   
                             while(resolution_courante != NULL)                              while(resolution_courante != NULL)
Line 4949  instruction_open(struct_processus *s_eta Line 5009  instruction_open(struct_processus *s_eta
                                         (*resolution_courante).ai_addr))                                          (*resolution_courante).ai_addr))
                                         .sin6_addr.s6_addr[i]);                                          .sin6_addr.s6_addr[i]);
                             }                              }
   #                           else
                               if ((*s_etat_processus).langue == 'F')
                               {
                                   printf("+++Attention : Support du protocole"
                                           " IPv6 indisponible\n");
                               }
                               else
                               {
                                   printf("+++Warning : IPv6 support "
                                           "unavailable\n");
                               }
   #                           endif
                         }                          }
   
                         freeaddrinfo(resolution);                          freeaddrinfo(resolution);
Line 5057  instruction_open(struct_processus *s_eta Line 5129  instruction_open(struct_processus *s_eta
                         }                          }
                         else if (strcmp(protocole, "IPV6") == 0)                          else if (strcmp(protocole, "IPV6") == 0)
                         { // Accès en IPv6                          { // Accès en IPv6
   #                           ifdef IPV6
                             if (type_adresse == '6')                              if (type_adresse == '6')
                             {                              {
                                 if (((*((struct_socket *) (*s_objet_resultat)                                  if (((*((struct_socket *) (*s_objet_resultat)
Line 5148  instruction_open(struct_processus *s_eta Line 5221  instruction_open(struct_processus *s_eta
                                 (*((struct_socket *) (*s_objet_resultat).objet))                                  (*((struct_socket *) (*s_objet_resultat).objet))
                                         .socket_en_ecoute = 'N';                                          .socket_en_ecoute = 'N';
                             }                              }
   #                           else
                               if ((*s_etat_processus).langue == 'F')
                               {
                                   printf("+++Attention : Support du protocole"
                                           " IPv6 indisponible\n");
                               }
                               else
                               {
                                   printf("+++Warning : IPv6 support "
                                           "unavailable\n");
                               }
   #                           endif
                         }                          }
                         else                          else
                         { // Socket UNIX                          { // Socket UNIX
Line 5264  instruction_open(struct_processus *s_eta Line 5349  instruction_open(struct_processus *s_eta
                 (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;                  (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                 return;                  return;
             }              }
   
               liberation(s_etat_processus, s_objet_argument);
         }          }
         else          else
         {          {

Removed from v.1.10  
changed lines
  Added in v.1.27.2.2


CVSweb interface <joel.bertrand@systella.fr>