#ifndef ETC_H #define ETC_H /* Nombre d'‚l‚ments dans un tableau */ #define NB_ELM(x) (sizeof(x)/sizeof((x)[0])) typedef struct { int signe; char *ptr; } ARGP; typedef struct { int signe; char *ptr; /* Premier arguments de cet option */ int nbptr; /* Nombre de fois que cet option a ‚t‚ rencontr‚ */ char **ptrs; /* Texte de toutes les options incluant la premiŠre */ int *signes; /* Signe de chaque option incluant la premiŠre */ } ARGP_MULTI; typedef struct { const char *str; /* Chaine cl‚ */ int next; /* Item suivant dans liste li‚ ou -1 */ /* Data doit etre a un alignement valide pour n'importe quel */ /* quel genre de data */ char data[1]; /* Copie du data associ‚ */ /* ... */ } HASHELM; typedef struct { int nbelm; /* Nombre d'‚l‚ment couramment dans le vecteur */ int maxelm; /* Nombre maximum d'‚l‚ment dans le vecteur */ int minelm; /* Nombre d'‚l‚ment … ajouter … elms quand nbelm */ /* d‚borde maxelm */ int sizdata; /* Dimension du data associ‚ */ int nbindx; /* Nombre d'‚l‚ment dans l'index */ int freeelm; /* Premier item libre dans elms */ /* Si == -1, aucun libre, on prend nbelm */ int *index; HASHELM *elms; } HASHCTL; #endif /*~PROTO~*/ #ifndef ETC_P #define ETC_P /* #define strip(x,y) str_strip(x,y)*/ #if defined(CPU_SPARC) || defined(CPU_68000) || defined(CPU_MIPS) || defined(CPU_PARISC) #define size_align(len,var) ((var) += ((len)&3) ? 4 - ((len)&3) : 0) #else #define size_align(len,var) #endif #ifndef __STDIO_DEF_ #include #endif #include "etc.p" #endif