--- rpl/src/formateur.c 2011/03/06 16:44:08 1.21 +++ rpl/src/formateur.c 2011/03/12 15:32:02 1.22 @@ -1792,6 +1792,130 @@ formateur(struct_processus *s_etat_proce ptr_lecture++; (*ptr_ecriture) = '\t'; } + else if ((*(ptr_lecture + 1)) == 'x') + { + ptr_lecture += 2; + + if ((*ptr_lecture) != d_code_fin_chaine) + { + if ((*(ptr_lecture + 1)) != d_code_fin_chaine) + { + logical1 erreur; + unsigned char ec; + + erreur = d_faux; + + switch(*ptr_lecture) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + ec = (*ptr_lecture) - '0'; + break; + + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + ec = ((*ptr_lecture) - 'A') + 10; + break; + + default: + ec = 0; + erreur = d_vrai; + break; + } + + ec *= 0x10; + ptr_lecture++; + + switch(*ptr_lecture) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + ec += (*ptr_lecture) - '0'; + break; + + case 'A': + case 'B': + case 'C': + case 'D': + case 'E': + case 'F': + ec += ((*ptr_lecture) - 'A') + 10; + break; + + default: + erreur = d_vrai; + break; + } + + (*ptr_ecriture) = ec; + + if (erreur == d_vrai) + { + if ((*s_etat_processus).langue == 'F') + { + printf("+++Information : " + "Séquence d'échappement " + "inconnue [%d]\n", + (int) getpid()); + } + else + { + printf("+++Warning : Unknown " + "escape code " + "[%d]\n", (int) getpid()); + } + } + } + else + { + if ((*s_etat_processus).langue == 'F') + { + printf("+++Information : " + "Séquence d'échappement " + "inconnue [%d]\n", (int) getpid()); + } + else + { + printf("+++Warning : Unknown escape code " + "[%d]\n", (int) getpid()); + } + } + } + else + { + if ((*s_etat_processus).langue == 'F') + { + printf("+++Information : " + "Séquence d'échappement " + "inconnue [%d]\n", (int) getpid()); + } + else + { + printf("+++Warning : Unknown escape code " + "[%d]\n", (int) getpid()); + } + } + } else if ((*(ptr_lecture + 1)) == '\\') { ptr_lecture++; @@ -1817,7 +1941,7 @@ formateur(struct_processus *s_etat_proce (*ptr_ecriture) = d_code_fin_chaine; - if ((chaine = realloc(chaine, (strlen(chaine) + 1) * + if ((chaine = realloc(chaine, ((ptr_ecriture - chaine) + 1) * sizeof(unsigned char))) == NULL) { (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;