43Fermer45
PolluxLe 12/06/2004 à 20:39
C'est plus simple pour XPAK, puisque c les types d'AMS :
typedef struct {
    ESQ type;
    char zero;
    char title[];
} XPAK_META;

XPAK_META *GetXPakMeta(HANDLE h) {
    char *p=HeapDeref(h);
    p=p+2+*(unsigned int *)p-7;
    if (strcmp(p+1,"XPAK"))
        return 0;
    // p points to the zero...
    while (*--p);
    return (XPAK_META *)(p-1);
}

et pour s'en servir :
XPAK_META *xpak;
if ((xpak=GetXPakMeta(hd))) {
  type_str = xpak->type==OTH_TAG ? xpak->title : "";
  if (!*type_str) type_str = GetTypeString(xpak->type);
} else {
  ...
}