tycat: use extn_matches()

This commit is contained in:
Boris Faure 2021-09-13 22:56:20 +02:00
parent 5f10cb1857
commit 1fe7f2ea80
Signed by untrusted user who does not match committer: borisfaure
GPG Key ID: 35C0410516166BE8
1 changed files with 13 additions and 26 deletions

View File

@ -66,21 +66,6 @@ scaleterm(int w, int h, int *iw, int *ih)
}
}
static const char *
is_fmt(const char *f, const char **extn)
{
int i, len;
len = strlen(f);
for (i = 0; extn[i]; i++)
{
int l = strlen(extn[i]);
if (len < l) continue;
if (!strcasecmp(extn[i], f + len - l)) return extn[i];
}
return NULL;
}
static void
prnt(const char *path, int w, int h, int mode)
{
@ -142,16 +127,16 @@ timeout_cb(void *data)
}
static int
handle_image(char *rp)
handle_image(const char *rp, size_t len)
{
Evas_Object *o;
int w = 0, h = 0;
int iw = 0, ih = 0;
int r = -1;
if (!is_fmt(rp, extn_img) &&
!is_fmt(rp, extn_scale) &&
!is_fmt(rp, extn_mov))
if (!extn_matches(rp, len, extn_img) &&
!extn_matches(rp, len, extn_scale) &&
!extn_matches(rp, len, extn_mov))
return -1;
o = evas_object_image_add(evas);
@ -170,13 +155,13 @@ handle_image(char *rp)
}
static int
handle_edje(char *rp)
handle_edje(const char *rp, size_t len)
{
Evas_Object *o;
int iw = 0, ih = 0;
int r = -1;
if (!is_fmt(rp, extn_edj)) return -1;
if (!extn_matches(rp, len, extn_edj)) return -1;
o = edje_object_add(evas);
if (edje_object_file_set
@ -240,12 +225,12 @@ done:
}
static int
handle_video(char *rp)
handle_video(const char *rp, size_t len)
{
Evas_Object *o;
if (!is_fmt(rp, extn_aud) &&
!is_fmt(rp, extn_mov))
if (!extn_matches(rp, len, extn_aud) &&
!extn_matches(rp, len, extn_mov))
return -1;
o = emotion_object_add(evas);
@ -274,8 +259,9 @@ static Eina_Bool
handle_file(void *data)
{
Eina_List **file_q = data;
size_t len;
int (*handlers[])(char *rp) = {
int (*handlers[])(const char *rp, size_t len) = {
handle_image,
handle_edje,
handle_video,
@ -294,10 +280,11 @@ handle_file(void *data)
rp = eina_list_data_get(*file_q);
*file_q = eina_list_remove_list(*file_q, *file_q);
if (!rp) return ECORE_CALLBACK_RENEW;
len = strlen(rp);
for (i = 0; handlers[i]; i++)
{
if (handlers[i](rp) == 0) break;
if (handlers[i](rp, len) == 0) break;
}
free(rp);