diff --git a/include/vlc_variables.h b/include/vlc_variables.h
index 0c3767c..5c5ac85 100644
--- a/include/vlc_variables.h
+++ b/include/vlc_variables.h
@@ -282,6 +282,13 @@ static inline int __var_SetString( vlc_object_t *p_obj, const char *psz_name, co
     return var_SetChecked( p_obj, psz_name, VLC_VAR_STRING, val );
 }
 
+static inline int __var_SetFile( vlc_object_t *p_obj, const char *psz_name, const char *psz_string )
+{
+    vlc_value_t val;
+    val.psz_string = (char *)psz_string;
+    return var_SetChecked( p_obj, psz_name, VLC_VAR_FILE, val );
+}
+
 /**
  * Set the value of a pointer variable
  *
@@ -317,6 +324,7 @@ int __var_SetAddress( vlc_object_t *p_obj, const char *psz_name, void *ptr )
  * __var_SetString() with automatic casting
  */
 #define var_SetString(a,b,c)    __var_SetString( VLC_OBJECT(a),b,c)
+#define var_SetFile(a,b,c)    __var_SetFile( VLC_OBJECT(a),b,c)
 /**
  * __var_SetAddress() with automatic casting
  */
@@ -416,6 +424,15 @@ static inline char *__var_GetNonEmptyString( vlc_object_t *p_obj, const char *ps
     return NULL;
 }
 
+LIBVLC_USED
+static inline char *__var_GetFile( vlc_object_t *p_obj, const char *psz_name )
+{
+    vlc_value_t val; val.psz_string = NULL;
+    if( var_GetChecked( p_obj, psz_name, VLC_VAR_FILE, &val ) )
+        return NULL;
+    else
+        return val.psz_string;
+}
 
 /**
  * __var_GetInteger() with automatic casting
@@ -438,7 +455,7 @@ static inline char *__var_GetNonEmptyString( vlc_object_t *p_obj, const char *ps
  */
 #define var_GetString(a,b)   __var_GetString( VLC_OBJECT(a),b)
 #define var_GetNonEmptyString(a,b)   __var_GetNonEmptyString( VLC_OBJECT(a),b)
-
+#define var_GetFile(a,b)   __var_GetString( VLC_OBJECT(a),b)
 
 
 /**
@@ -541,6 +558,14 @@ static inline char *__var_CreateGetNonEmptyString( vlc_object_t *p_obj,
     return __var_GetNonEmptyString( p_obj, psz_name );
 }
 
+LIBVLC_USED
+static inline char *__var_CreateGetFile( vlc_object_t *p_obj,
+                                           const char *psz_name )
+{
+    __var_Create( p_obj, psz_name, VLC_VAR_FILE | VLC_VAR_DOINHERIT );
+    return __var_GetString( p_obj, psz_name );
+}
+
 /**
  * __var_CreateGetInteger() with automatic casting
  */
@@ -562,6 +587,7 @@ static inline char *__var_CreateGetNonEmptyString( vlc_object_t *p_obj,
  */
 #define var_CreateGetString(a,b)   __var_CreateGetString( VLC_OBJECT(a),b)
 #define var_CreateGetNonEmptyString(a,b)   __var_CreateGetNonEmptyString( VLC_OBJECT(a),b)
+#define var_CreateGetFile(a,b)   __var_CreateGetFile( VLC_OBJECT(a),b)
 
 /**
  * Create a integer command variable with inherit and get its value.
@@ -643,6 +669,14 @@ static inline char *__var_CreateGetNonEmptyStringCommand( vlc_object_t *p_obj,
     return __var_GetNonEmptyString( p_obj, psz_name );
 }
 
+LIBVLC_USED
+static inline char *__var_CreateGetFileCommand( vlc_object_t *p_obj,
+                                           const char *psz_name )
+{
+    __var_Create( p_obj, psz_name, VLC_VAR_FILE | VLC_VAR_DOINHERIT
+                                   | VLC_VAR_ISCOMMAND );
+    return __var_GetString( p_obj, psz_name );
+}
 /**
  * __var_CreateGetInteger() with automatic casting
  */
@@ -664,6 +698,7 @@ static inline char *__var_CreateGetNonEmptyStringCommand( vlc_object_t *p_obj,
  */
 #define var_CreateGetStringCommand(a,b)   __var_CreateGetStringCommand( VLC_OBJECT(a),b)
 #define var_CreateGetNonEmptyStringCommand(a,b)   __var_CreateGetNonEmptyStringCommand( VLC_OBJECT(a),b)
+#define var_CreateGetFileCommand(a,b)   __var_CreateGetFileCommand( VLC_OBJECT(a),b)
 
 static inline int __var_CountChoices( vlc_object_t *p_obj, const char *psz_name )
 {
diff --git a/modules/video_filter/logo.c b/modules/video_filter/logo.c
index 5c34d53..f44af56 100644
--- a/modules/video_filter/logo.c
+++ b/modules/video_filter/logo.c
@@ -259,7 +259,7 @@ static int OpenCommon( vlc_object_t *p_this, bool b_sub )
     logo_list_t *p_list = &p_sys->list;
 
     p_list->psz_filename =
-        var_CreateGetStringCommand( p_filter, "logo-file" );
+        var_CreateGetFileCommand( p_filter, "logo-file" );
     if( !p_list->psz_filename )
     {
         if( p_sys->p_blend )
