mime_t * /* O - MIME database */ mimeLoadTypes(mime_t *mime, /* I - MIME database or @code NULL@ to create a new one */ const char *pathname) /* I - Directory to load from */ { cups_dir_t *dir; /* Directory */ cups_dentry_t *dent; /* Directory entry */ char filename[1024]; /* Full filename of .types file */ DEBUG_printf(("mimeLoadTypes(mime=%p, pathname=\"%s\")", mime, pathname)); /* * First open the directory specified by pathname... */ if ((dir = cupsDirOpen(pathname)) == NULL) { DEBUG_printf(("1mimeLoadTypes: Unable to open \"%s\": %s", pathname, strerror(errno))); DEBUG_printf(("1mimeLoadTypes: Returning %p.", mime)); _mimeError(mime, "Unable to open \"%s\": %s", pathname, strerror(errno)); return (mime); } /* * If "mime" is NULL, make a new, empty database... */ if (!mime) mime = mimeNew(); if (!mime) { cupsDirClose(dir); DEBUG_puts("1mimeLoadTypes: Returning NULL."); return (NULL); } /* * Read all the .types files... */ while ((dent = cupsDirRead(dir)) != NULL) { if (strlen(dent->filename) > 6 && !strcmp(dent->filename + strlen(dent->filename) - 6, ".types")) { /* * Load a mime.types file... */ snprintf(filename, sizeof(filename), "%s/%s", pathname, dent->filename); DEBUG_printf(("1mimeLoadTypes: Loading \"%s\".", filename)); mime_load_types(mime, filename); } } cupsDirClose(dir); DEBUG_printf(("1mimeLoadTypes: Returning %p.", mime)); return (mime); }
mime_t * /* O - Updated MIME database */ mimeMerge(mime_t *mime, /* I - MIME database to add to */ const char *pathname, /* I - Directory to load */ const char *filterpath) /* I - Directory to load */ { cups_dir_t *dir; /* Directory */ cups_dentry_t *dent; /* Directory entry */ char filename[1024]; /* Full filename of types/converts file */ cups_array_t *filtercache; /* Filter cache */ /* * First open the directory specified by pathname... Return NULL if nothing * was read or if the pathname is NULL... */ if (!pathname) return (NULL); if ((dir = cupsDirOpen(pathname)) == NULL) return (NULL); /* * If "mime" is NULL, make a new, blank database... */ if (!mime) mime = mimeNew(); if (!mime) { cupsDirClose(dir); return (NULL); } /* * Read all the .types files... */ while ((dent = cupsDirRead(dir)) != NULL) { if (strlen(dent->filename) > 6 && !strcmp(dent->filename + strlen(dent->filename) - 6, ".types")) { /* * Load a mime.types file... */ snprintf(filename, sizeof(filename), "%s/%s", pathname, dent->filename); load_types(mime, filename); } } cupsDirRewind(dir); /* * Read all the .convs files... */ filtercache = cupsArrayNew((cups_array_func_t)compare_fcache, NULL); while ((dent = cupsDirRead(dir)) != NULL) { if (strlen(dent->filename) > 6 && !strcmp(dent->filename + strlen(dent->filename) - 6, ".convs")) { /* * Load a mime.convs file... */ snprintf(filename, sizeof(filename), "%s/%s", pathname, dent->filename); load_convs(mime, filename, filterpath, filtercache); } } delete_fcache(filtercache); cupsDirClose(dir); return (mime); }