Пример #1
0
char *
get_mime_type(struct htdx_t *htdx, char *ext_name)
{
    struct mime_type_t *mime_type;
    mime_type = mime_types_get(htdx, ext_name);
    if (mime_type) {
        htdx->mime_types = mime_type;
        return mime_type->type;
    } else {
        mime_type = mime_types_get(htdx, "*");
        if (mime_type) {
            return  mime_type->type;
        }
    }
    return "";
}
Пример #2
0
int
mime_type_assign(struct htdx_t *htdx, char *ext_name, char *type)
{
    if (!strlen(ext_name)) {
        return 0;
    }
    if (strlen(type)) {
        struct mime_type_t *mime_type;
        mime_type = mime_types_get(htdx, ext_name);
        if (mime_type) { /* to update */
            free(mime_type->type);
            mime_type->type = x_strlwr(strdup(type));
            return 1;
        } else { /* new */
            mime_types_add(htdx, ext_name, type);
            return 1;
        }
    } else { /* to delete */
        return mime_types_del(htdx, ext_name);
    }
}
Пример #3
0
char *mime_types_get_by_filename(char *filename, int len, cache *c) {
	char ext[17];
	int ext_len = 0;

	ext[16] = '\0';

	while (--len) {
		if (ext_len < 16) {
			ext[15-ext_len] = filename[len];
			++ext_len;
		}
		
		if (filename[len] == '.') {
			break;
		}
	}

	char *extension = &ext;
	extension = extension + (16-ext_len);

	return mime_types_get(extension, ext_len, c);
}
Пример #4
0
int
mime_types_del(struct htdx_t *htdx, char *ext_name)
{
    struct mime_type_t *mime_type;
    mime_type = mime_types_get(htdx, ext_name);
    if (mime_type) {
        if (mime_type == mime_type->next) { // only one
            htdx->mime_types = NULL;
        } else {
            if (mime_type == htdx->mime_types) { // the first
                htdx->mime_types = mime_type->next;
            }
            mime_type->prev->next = mime_type->next;
            mime_type->next->prev = mime_type->prev;
        }
        free(mime_type->ext_name);
        free(mime_type->type);
        free(mime_type);
        return 1;
    } else {
        return 0;
    }
}