short progrun (char *name)
{
char fname[20];
HANDLE h;
SYM_ENTRY *sym;
unsigned short size;
unsigned char *type;
unsigned char ext[3];
short zip=0;
TRY
strcpy (fname, name);
//Vérifie si il est zippé et le dézippe si c'est le cas!
strcpy (name,"0") strcat (name,fname); name[0]=0;
sym = SymFindPtr(name+strlen(fname)+1, 0);
size = *(unsigned short*) HeapDeref (sym->handle) + 2;
type = HeapDeref (sym->handle);
type += size-1;
memset(ext,0,4);
if (*type == OTH_TAG)
{
type-=4;
memcpy(ext,type,3);
if (!strcmp(ext,"ZIP"))
{
zip=1;
ZipFile(SymFindPtr(name+strlen(fname)+1, 0), 0);
}
}
//Fin de la vérification
strcat (fname, "()")
push_parse_text (fname);
h = HS_popEStack ();
NG_execute (h, FALSE);
HeapFree (h);
//Rezippe le fichier si il était zippé
if (zip == 1) ZipFile(SymFindPtr(name+strlen(fname)-1, 0), 0);
ONERR
return FALSE;
ENDTRY
return TRUE;
}
Cette fonction regarde si le programme est zippé, si celui-ci l'est, elle le dézippe avant de l'executer puis le rezippe après.
Pour un programme NON ARCHIVE, y'a pas de problème.
Mais si celui-ci est ARCHIVE, j'ai l'impression que la caltoche fait un double du programme pour l'executer.
Mon problème est que le fichier ainsi créé (le clone) n'est pas effacé avant l'arrêt de mon programme.
Et donc, ma fonction rezippe le mauvais fichier (Le clone qui sera effacé après l'execution de mon programme).
Je me demande donc, si j'ai pas oublié quelque chose dans ma fonction!
Merci
