1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
typedef struct {
PIOSTRING type_name;
PIOLONG type_id;
} FUSE_TYPE;
FUSE_TYPE *Type_id;
FUSE_TYPE *Type_name;
static int cmpfuse_type_id(const void *p1, const void *p2)
{
FUSE_TYPE *tp1= (FUSE_TYPE *) p1;
FUSE_TYPE *tp2= (FUSE_TYPE *) p2;
return tp1->type_id - tp2->type_id;
}
static int cmpfuse_type_name(const void *p1, const void *p2)
{
FUSE_TYPE *tp1= (FUSE_TYPE *) p1;
FUSE_TYPE *tp2= (FUSE_TYPE *) p2;
return tp1->type_name - tp2->type_name;
}
static void *FUSETYPE(){
char command[4096];
_PGresult *res=NULL;
PIOMEnvironment *MyEnv=NULL;
PIOErr MyErr=0;
MyErr = PIOOpenDB("",&MyEnv);
if (MyErr!=0) return (void*)-ENOENT;
sprintf(command,"select type_name, type_id from dmc_types;");
MyErr= _DBGetCommand(&res,command,MyEnv->ConnectionSec); //execution req
int i;
Nb_Type_id=_PQntuples(res); //nb occurences
// initialisation de la taille de mes 2 tableaux
Type_id = (FUSE_TYPE *) _PIOMALLOC(Nb_User_id*sizeof(FUSE_TYPE));
Type_name = (FUSE_TYPE *) _PIOMALLOC(Nb_User_id*sizeof(FUSE_TYPE));
// remplissage des tableaux
for (i=0;i<Nb_User_id;i++) {
strcpy(Type_id[i].type_name, _PQgetvalue(res,i,0));
strcpy(Type_name[i].type_name, _PQgetvalue(res,i,0));
Type_id[i].type_id=atol(_PQgetvalue(res,i,1));
Type_name[i].type_id=atol(_PQgetvalue(res,i,1));
}
qsort(Type_id, Nb_Type_id, sizeof(FUSE_TYPE), cmpfuse_type_id);
qsort(Type_name, Nb_Type_id, sizeof(FUSE_TYPE), cmpfuse_type_name);
return 0;
}
int main(int argc, char *argv[])
{
umask(0);
FILE *fuselog=fopen("/tmp/fuse-log","w");
fclose(fuselog);
FUSETYPE();
return fuse_main(argc, argv, &dmcfs_oper, NULL);
} |
Partager