}
gboolean procmime_find_string_part(MimeInfo *mimeinfo, const gchar *filename,
- const gchar *str, gboolean case_sens)
+ const gchar *str, StrFindFunc find_func)
{
FILE *outfp;
gchar buf[BUFFSIZE];
- gchar *(* StrFindFunc) (const gchar *haystack, const gchar *needle);
g_return_val_if_fail(mimeinfo != NULL, FALSE);
g_return_val_if_fail(mimeinfo->type == MIMETYPE_TEXT, FALSE);
g_return_val_if_fail(str != NULL, FALSE);
+ g_return_val_if_fail(find_func != NULL, FALSE);
outfp = procmime_get_text_content(mimeinfo);
if (!outfp)
return FALSE;
- if (case_sens)
- StrFindFunc = strstr;
- else
- StrFindFunc = strcasestr;
-
while (fgets(buf, sizeof(buf), outfp) != NULL) {
- if (StrFindFunc(buf, str) != NULL) {
+ strretchomp(buf);
+ if (find_func(buf, str)) {
fclose(outfp);
return TRUE;
}
}
gboolean procmime_find_string(MsgInfo *msginfo, const gchar *str,
- gboolean case_sens)
+ StrFindFunc find_func)
{
MimeInfo *mimeinfo;
MimeInfo *partinfo;
g_return_val_if_fail(msginfo != NULL, FALSE);
g_return_val_if_fail(str != NULL, FALSE);
+ g_return_val_if_fail(find_func != NULL, FALSE);
filename = procmsg_get_message_file(msginfo);
if (!filename) return FALSE;
partinfo = procmime_mimeinfo_next(partinfo)) {
if (partinfo->type == MIMETYPE_TEXT) {
if (procmime_find_string_part
- (partinfo, filename, str, case_sens) == TRUE) {
+ (partinfo, filename, str, find_func) == TRUE) {
found = TRUE;
break;
}
gchar *procmime_get_tmp_file_name(MimeInfo *mimeinfo)
{
static guint32 id = 0;
- const gchar *base;
+ gchar *base;
gchar *filename;
gchar f_prefix[10];
base = "mimetmp.html";
else {
const gchar *basetmp;
+ gchar *basename;
basetmp = procmime_mimeinfo_get_parameter(mimeinfo, "filename");
if (basetmp == NULL)
basetmp = procmime_mimeinfo_get_parameter(mimeinfo, "name");
if (basetmp == NULL)
basetmp = "mimetmp";
- base = g_basename(basetmp);
+ basename = g_path_get_basename(basetmp);
if (*base == '\0') base = "mimetmp";
- Xstrdup_a(base, base, return NULL);
+ Xstrdup_a(base, basename, {g_free(basename); return NULL;});
subst_for_shellsafe_filename(base);
+ g_free(basename);
}
filename = g_strconcat(get_mime_tmp_dir(), G_DIR_SEPARATOR_S,
MimeType *mime_type;
const gchar *p;
gchar *ext;
+ gchar *base;
if (!mime_type_table) {
mime_type_table = procmime_get_mime_type_table();
if (!mime_type_table) return NULL;
}
- filename = g_basename(filename);
- p = strrchr(filename, '.');
+ base = g_path_get_basename(filename);
+ p = strrchr(base, '.');
+ g_free(base);
if (!p) return NULL;
Xstrdup_a(ext, p + 1, return NULL);