static GPFsProp * func_prop_get (GPFsBag *b, GPFsErr *e, unsigned int n, void *ud) { GPFsVal v; GPFsProp *i = NULL; switch (n) { case 0: gpfs_val_init (&v); v.t = GPFS_VAL_TYPE_UINT; v.v.v_uint = sizeof ("Hello world!"); i = gpfs_prop_new (v); gpfs_obj_set_id (GPFS_OBJ (i), 0); gpfs_obj_set_name_impl (GPFS_OBJ (i), _("Size")); gpfs_obj_set_descr_impl (GPFS_OBJ (i), _("The size of the file")); gpfs_val_clear (&v); break; case 1: gpfs_val_init (&v); v.t = GPFS_VAL_TYPE_STRING; v.v.v_string = strdup (_("Some interface")); i = gpfs_prop_new (v); gpfs_obj_set_id (GPFS_OBJ (i), 1); gpfs_obj_set_name_impl (GPFS_OBJ (i), _("Description")); gpfs_obj_set_descr_impl (GPFS_OBJ (i), _("The description of the interface")); gpfs_val_clear (&v); break; case 2: gpfs_val_init (&v); v.t = GPFS_VAL_TYPE_STRING; v.v.v_string = strdup ("image/png"); i = gpfs_prop_new (v); gpfs_obj_set_id (GPFS_OBJ (i), 2); gpfs_obj_set_name_impl (GPFS_OBJ (i), _("Mime type")); gpfs_obj_set_descr_impl (GPFS_OBJ (i), _("The mime type of the file")); gpfs_val_clear (&v); i->t = GPFS_ALT_TYPE_VALS; i->alt.vals.vals_count = 2; i->alt.vals.vals = malloc (sizeof (GPFsVal) * i->alt.vals.vals_count); i->alt.vals.vals[0].t = GPFS_VAL_TYPE_STRING; i->alt.vals.vals[0].v.v_string = strdup ("image/png"); i->alt.vals.vals[1].t = GPFS_VAL_TYPE_STRING; i->alt.vals.vals[1].v.v_string = strdup ("image/jpeg"); break; default: gpfs_err_set (e, GPFS_ERR_TYPE_BAD_PARAMETERS, _("Unknown property.")); } return i; }
char * gpfs_folder_get (GPFs *fs, GPFsErr *e, const char *folder, unsigned int n) { CNN (fs, e); if (!fs->f_folder_get) { gpfs_err_set (e, GPFS_ERR_TYPE_NOT_SUPPORTED, _("This filesystem doesn't support getting folders.")); return 0; } return fs->f_folder_get (fs, e, folder, n, fs->f_data_folder_get); }
void gpfs_if_read (GPFsIf *i, GPFsErr *e, GPFsIfFuncReadCb f, void *d) { CNV (i, e); if (!i->f_read) { gpfs_err_set (e, GPFS_ERR_TYPE_NOT_SUPPORTED, _("This interface doesn't support reading.")); return; } i->f_read (i, e, f, d, i->f_data_read); }
unsigned int gpfs_file_count (GPFs *fs, GPFsErr *e, const char *folder) { CN0 (fs, e); if (!fs->f_file_count) { gpfs_err_set (e, GPFS_ERR_TYPE_NOT_SUPPORTED, _("This filesystem doesn't support counting files.")); return 0; } return fs->f_file_count (fs, e, folder, fs->f_data_file_count); }