--- rpl/src/instructions_o1.c 2012/06/21 16:07:25 1.56 +++ rpl/src/instructions_o1.c 2013/04/01 15:29:37 1.68 @@ -1,7 +1,7 @@ /* ================================================================================ - RPL/2 (R) version 4.1.9 - Copyright (C) 1989-2012 Dr. BERTRAND Joël + RPL/2 (R) version 4.1.14 + Copyright (C) 1989-2013 Dr. BERTRAND Joël This file is part of RPL/2. @@ -210,7 +210,7 @@ instruction_or(struct_processus *s_etat_ struct_objet *s_objet_argument_2; struct_objet *s_objet_resultat; - unsigned long nombre_elements; + integer8 nombre_elements; (*s_etat_processus).erreur_execution = d_ex; @@ -907,6 +907,7 @@ instruction_open(struct_processus *s_eta int buffer_reception; int drapeau; int priorite; + int prochain_descripteur; int protocole_numerique; int timeout_emission; int timeout_reception; @@ -973,7 +974,6 @@ instruction_open(struct_processus *s_eta unsigned long i; unsigned long nombre_elements; - unsigned long prochain_descripteur; unsigned long unite; # define d_BIND_TO_DEVICE 0 @@ -1998,7 +1998,9 @@ instruction_open(struct_processus *s_eta if ((protocole_socket[i] >= 'a') && (protocole_socket[i] <= 'z')) { - protocole_socket[i] -= 'a' - 'A'; + protocole_socket[i] = (unsigned char) + (protocole_socket[i] + - ('a' - 'A')); } } } @@ -3659,12 +3661,30 @@ instruction_open(struct_processus *s_eta unsigned char *vitesses[] = { "0", "50", "75", "110", "134", "150", "200", "300", "600", "1200", "1800", "2400", - "4800", "9600", "19200", "38400", "57600", - "115200", "230400", NULL }; - int vitesses_constantes[] = + "4800", "9600", "19200", "38400", +#ifdef B57600 + "57600", +#endif +#ifdef B115200 + "115200", +#endif +#ifdef B230400 + "230400", +#endif + NULL }; + tcflag_t vitesses_constantes[] = { B0, B50, B75, B110, B134, B150, B200, B300, B600, B1200, B1800, B2400, B4800, B9600, B19200, B38400, - B57600, B115200, B230400, 0 }; +#ifdef B57600 + B57600, +#endif +#ifdef B115200 + B115200, +#endif +#ifdef B230400 + B230400, +#endif + 0 }; unsigned int vitesse_courante; vitesse_courante = 0; @@ -3677,8 +3697,15 @@ instruction_open(struct_processus *s_eta if (position[strlen(vitesses[vitesse_courante])] == d_code_espace) { - tc.c_cflag &= ~CBAUD; +#ifdef CBAUD + tc.c_cflag &= ~((tcflag_t) CBAUD); tc.c_cflag |= vitesses_constantes[vitesse_courante]; +#else // POSIX + cfsetispeed(&tc, + vitesses_constantes[vitesse_courante]); + cfsetospeed(&tc, + vitesses_constantes[vitesse_courante]); +#endif position += strlen(vitesses[vitesse_courante]); break; @@ -3717,28 +3744,28 @@ instruction_open(struct_processus *s_eta { case '5': { - tc.c_cflag &= ~CSIZE; + tc.c_cflag &= ~((tcflag_t) CSIZE); tc.c_cflag |= CS5; break; } case '6': { - tc.c_cflag &= ~CSIZE; + tc.c_cflag &= ~((tcflag_t) CSIZE); tc.c_cflag |= CS6; break; } case '7': { - tc.c_cflag &= ~CSIZE; + tc.c_cflag &= ~((tcflag_t) CSIZE); tc.c_cflag |= CS7; break; } case '8': { - tc.c_cflag &= ~CSIZE; + tc.c_cflag &= ~((tcflag_t) CSIZE); tc.c_cflag |= CS8; break; } @@ -3784,7 +3811,7 @@ instruction_open(struct_processus *s_eta { case 'N': { - tc.c_cflag &= ~PARENB; + tc.c_cflag &= ~((tcflag_t) PARENB); break; } @@ -3798,7 +3825,7 @@ instruction_open(struct_processus *s_eta case 'E': { tc.c_cflag |= PARENB; - tc.c_cflag &= ~PARODD; + tc.c_cflag &= ~((tcflag_t) PARODD); break; } @@ -3843,7 +3870,7 @@ instruction_open(struct_processus *s_eta { case '1': { - tc.c_cflag &= ~CSTOPB; + tc.c_cflag &= ~((tcflag_t) CSTOPB); break; } @@ -3922,21 +3949,41 @@ instruction_open(struct_processus *s_eta unsigned char *fonctions[] = { "IGNBRK", "BRKINT", "IGNPAR", "PARMRK", "INPCK", "ISTRIP", "INLCR", "IGNCR", "ICRNL", - "IXON", "IXANY", "IXOFF", "OPOST", + "IXON", +#ifdef IXANY + "IXANY", +#endif + "IXOFF", "OPOST", "ONLCR", "OCRNL", "ONOCR", "ONLRET", - "OFILL", "HUPCL", "CLOCAL", "CRTSCTS", +#ifdef OFILL + "OFILL", +#endif + "HUPCL", "CLOCAL", +#ifdef CRTSCTS + "CRTSCTS", +#endif "ISIG", "ICANON", "ECHO", "ECHOE", "ECHOK", "ECHONL", "NOFLSH", "TOSTOP", "IEXTEN", NULL }; - int fonctions_constantes[] = + tcflag_t fonctions_constantes[] = { /* c_iflag */ 1, IGNBRK, 1, BRKINT, 1, IGNPAR, 1, PARMRK, 1, INPCK, 1, ISTRIP, 1, INLCR, 1, IGNCR, 1, ICRNL, - 1, IXON, 1, IXANY, 1, IXOFF, + 1, IXON, +#ifdef IXANY + 1, IXANY, +#endif + 1, IXOFF, /* c_oflag */ 2 , OPOST, 2, ONLCR, 2, OCRNL, 2, ONOCR, 2, ONLRET, - 2, OFILL, 2, HUPCL, +#ifdef OFILL + 2, OFILL, +#endif + 2, HUPCL, /* c_cflag */ - 3, CLOCAL, 3, CRTSCTS, + 3, CLOCAL, +#ifdef CRTSCTS + 3, CRTSCTS, +#endif /* c_lfkag */ 4, ISIG, 4, ICANON, 4, ECHO, 4, ECHOE, 4, ECHOK, 4, ECHONL, 4, NOFLSH, 4, TOSTOP, 4, IEXTEN }; @@ -4262,7 +4309,7 @@ instruction_open(struct_processus *s_eta return; } - prochain_descripteur = i; + prochain_descripteur = (int) i; /* * Ajout d'un élément à la fin de la liste chaînée @@ -4352,7 +4399,8 @@ instruction_open(struct_processus *s_eta # ifdef SO_BINDTODEVICE if (setsockopt((*((struct_socket *) (*s_objet_resultat) .objet)).socket, SOL_SOCKET, SO_BINDTODEVICE, - peripherique, strlen(peripherique)) != 0) + peripherique, (socklen_t) strlen(peripherique)) + != 0) { liberation(s_etat_processus, s_objet_argument); liberation(s_etat_processus, s_objet_resultat); @@ -4646,7 +4694,7 @@ instruction_open(struct_processus *s_eta for(i = 0; i < 16; adresse[i++] = 0); type_adresse = '6'; } - else + else if (strcmp(protocole, "UNIX") != 0) { liberation(s_etat_processus, s_objet_argument); @@ -4690,18 +4738,22 @@ instruction_open(struct_processus *s_eta if (strcmp(protocole_socket, "IPV4") == 0) { protocole_socket[2] = d_code_fin_chaine; + protocole_numerique = 0; } - - if ((s_protocole = getprotobyname(protocole_socket)) == NULL) + else { - liberation(s_etat_processus, s_objet_argument); + if ((s_protocole = getprotobyname(protocole_socket)) + == NULL) + { + liberation(s_etat_processus, s_objet_argument); - (*s_etat_processus).erreur_execution = - d_ex_erreur_parametre_fichier; - return; - } + (*s_etat_processus).erreur_execution = + d_ex_erreur_parametre_fichier; + return; + } - protocole_numerique = (*s_protocole).p_proto; + protocole_numerique = (*s_protocole).p_proto; + } } if ((s_objet_resultat = allocation(s_etat_processus, SCK)) @@ -5202,7 +5254,8 @@ instruction_open(struct_processus *s_eta adresse_ipv4 = 0; for(i = 0; i < 4; adresse_ipv4 = - (256 * adresse_ipv4) + adresse[i++]); + (256 * adresse_ipv4) + + ((unsigned char) adresse[i++])); socket_ipv4.sin_addr.s_addr = htonl(adresse_ipv4); @@ -5791,7 +5844,8 @@ instruction_open(struct_processus *s_eta adresse_ipv4 = 0; for(i = 0; i < 4; adresse_ipv4 = - (256 * adresse_ipv4) + adresse[i++]); + (256 * adresse_ipv4) + + ((unsigned char) adresse[i++])); socket_ipv4.sin_addr.s_addr = htonl(adresse_ipv4);