version 1.1, 2011/08/29 07:43:02
|
version 1.46, 2025/04/15 10:17:55
|
Line 1
|
Line 1
|
/* |
/* |
================================================================================ |
================================================================================ |
RPL/2 (R) version 4.1.3 |
RPL/2 (R) version 4.1.36 |
Copyright (C) 1989-2011 Dr. BERTRAND Joël |
Copyright (C) 1989-2025 Dr. BERTRAND Joël |
|
|
This file is part of RPL/2. |
This file is part of RPL/2. |
|
|
Line 44 instruction_srev(struct_processus *s_eta
|
Line 44 instruction_srev(struct_processus *s_eta
|
unsigned char *ptr_e; |
unsigned char *ptr_e; |
unsigned char *ptr_l; |
unsigned char *ptr_l; |
|
|
|
unsigned int i; |
|
unsigned int saut; |
|
|
if ((*s_etat_processus).affichage_arguments == 'Y') |
if ((*s_etat_processus).affichage_arguments == 'Y') |
{ |
{ |
printf("\n SREV "); |
printf("\n SREV "); |
Line 93 instruction_srev(struct_processus *s_eta
|
Line 96 instruction_srev(struct_processus *s_eta
|
(*s_objet_argument).objet) + 1) * sizeof(unsigned char))) == NULL) |
(*s_objet_argument).objet) + 1) * sizeof(unsigned char))) == NULL) |
{ |
{ |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
(*s_etat_processus).erreur_systeme = d_es_allocation_memoire; |
|
return; |
} |
} |
|
|
ptr_l = (unsigned char *) (*s_objet_argument).objet; |
ptr_l = (unsigned char *) (*s_objet_argument).objet; |
ptr_e = ((unsigned char *) (*s_objet_resultat).objet) + |
ptr_e = ((unsigned char *) (*s_objet_resultat).objet) + |
strlen((unsigned char *) (*s_objet_argument).objet); |
strlen((unsigned char *) (*s_objet_argument).objet); |
(*(ptr_e + 1)) = d_code_fin_chaine; |
(*ptr_e) = d_code_fin_chaine; |
|
|
while((*ptr_l) != d_code_fin_chaine) |
while((*ptr_l) != d_code_fin_chaine) |
{ |
{ |
(*ptr_e) = (*ptr_l); |
if ((*ptr_l) == '\\') |
ptr_l++; |
{ |
ptr_e--; |
// On n'inverse pas une séquence d'échappement. |
|
// Les séquences d'échappement valides sont : |
|
// '\\', '\"', '\b', '\n', '\t' et '\x??'. |
|
|
|
switch(*(ptr_l + 1)) |
|
{ |
|
case '\\': |
|
case '"': |
|
case 'b': |
|
case 'n': |
|
case 't': |
|
{ |
|
saut = 2; |
|
break; |
|
} |
|
|
|
case 'x': |
|
{ |
|
saut = 4; |
|
break; |
|
} |
|
|
|
default: |
|
{ |
|
saut = 0; |
|
break; |
|
} |
|
} |
|
|
|
for(i = 0; i < saut; i++) |
|
{ |
|
if (*(ptr_l + i) == d_code_fin_chaine) |
|
{ |
|
saut = i; |
|
break; |
|
} |
|
|
|
(*((ptr_e - saut) + i)) = (*(ptr_l + i)); |
|
} |
|
|
|
ptr_e -= saut; |
|
ptr_l += saut; |
|
} |
|
else |
|
{ |
|
ptr_e--; |
|
(*ptr_e) = (*ptr_l); |
|
ptr_l++; |
|
} |
} |
} |
|
|
liberation(s_etat_processus, s_objet_argument); |
liberation(s_etat_processus, s_objet_argument); |