move get_mimetype_from_file() to shared

Signed-off-by: Christian Hesse <mail@eworm.de>
This commit is contained in:
Christian Hesse 2015-08-14 16:50:56 +02:00 committed by Jason A. Donenfeld
parent 73ef8567f0
commit f5c83d7b5d
3 changed files with 42 additions and 40 deletions

2
cgit.h
View File

@ -391,4 +391,6 @@ extern int readfile(const char *path, char **buf, size_t *size);
extern char *expand_macros(const char *txt); extern char *expand_macros(const char *txt);
extern char *get_mimetype_from_file(const char *filename, const char *ext);
#endif /* CGIT_H */ #endif /* CGIT_H */

View File

@ -560,3 +560,43 @@ char *expand_macros(const char *txt)
} }
return result; return result;
} }
char *get_mimetype_from_file(const char *filename, const char *ext)
{
static const char *delimiters;
char *result;
FILE *fd;
char line[1024];
char *mimetype;
char *token;
if (!filename)
return NULL;
fd = fopen(filename, "r");
if (!fd)
return NULL;
delimiters = " \t\r\n";
result = NULL;
/* loop over all lines in the file */
while (!result && fgets(line, sizeof(line), fd)) {
mimetype = strtok(line, delimiters);
/* skip empty lines and comment lines */
if (!mimetype || (mimetype[0] == '#'))
continue;
/* loop over all extensions of mimetype */
while ((token = strtok(NULL, delimiters))) {
if (!strcasecmp(ext, token)) {
result = xstrdup(mimetype);
break;
}
}
}
fclose(fd);
return result;
}

View File

@ -16,46 +16,6 @@ struct walk_tree_context {
int match; int match;
}; };
static char *get_mimetype_from_file(const char *filename, const char *ext)
{
static const char *delimiters;
char *result;
FILE *fd;
char line[1024];
char *mimetype;
char *token;
if (!filename)
return NULL;
fd = fopen(filename, "r");
if (!fd)
return NULL;
delimiters = " \t\r\n";
result = NULL;
/* loop over all lines in the file */
while (!result && fgets(line, sizeof(line), fd)) {
mimetype = strtok(line, delimiters);
/* skip empty lines and comment lines */
if (!mimetype || (mimetype[0] == '#'))
continue;
/* loop over all extensions of mimetype */
while ((token = strtok(NULL, delimiters))) {
if (!strcasecmp(ext, token)) {
result = xstrdup(mimetype);
break;
}
}
}
fclose(fd);
return result;
}
static int print_object(const unsigned char *sha1, const char *path) static int print_object(const unsigned char *sha1, const char *path)
{ {
enum object_type type; enum object_type type;