FILE *fopen(const char *name asm("a0"), const char*mode asm("a1"));
Peut être le fait que l'argument de nom va dans a0 et le mode dans a1 ?
Folco_ (./34) :
(puis le beau trick de Pollux tombe allo)
swap a0,sp bsr.s \Mode dc.b "r",0 Mode: swap a0,sp
PpHd (./36) :
Sauf que ca prend 2 octets de plus qu'un simple lea \Mode(pc),a0
Folco (./51) :
Donc je suis condamné à utiliser f* pour lire si j'utilise fopen ? Ca m'aurait plu de pas utiliser toute la manip SYMSTR/SymFindPtr/get_handle/HToESI/HeapGetLock/HeapLock/HeapDeref pour avoir ce p*tain de pointeur. Mais bon, c'est déjà codé. Mais ya pas moyen de faire plus court avec fopen alors ?
Donc je suis condamné à utiliser f* pour lire si j'utilise fopen ?
Kevin Kofler (./55) :
L'absence de HeapGetLock me semble assez dangereuse, le fichier peut avoir été locké par autre chose et devrait donc normalement être retourné dans le même état, je devrais peut-être le corriger, même si d'un autre côté ça n'a pas l'air d'avoir posé problème.
Mais ouvrir le même fichier plusieurs fois dans le même programme n'est pas du tout prévu, et franchement je ne vois pas trop l'intérêt.
fopen: f->locked = HeapGetLock(f->handle); fclose: if (!f->locked) HeapUnlock(f->handle);
f1 = fopen(); f2 = fopen(); fclose(f1); fread(f2); fclose(f2);
(sur le bit #31 du pointeur vers le nom du fichier)