diff --git a/DOCS/man/mpv.rst b/DOCS/man/mpv.rst index a005b92349..5078aac61a 100644 --- a/DOCS/man/mpv.rst +++ b/DOCS/man/mpv.rst @@ -356,7 +356,7 @@ You can also write file-specific configuration files. If you wish to have a configuration file for a file called 'video.avi', create a file named 'video.avi.conf' with the file-specific options in it and put it in ``~/.config/mpv/``. You can also put the configuration file in the same directory -as the file to be played, as long as you give the ``--use-filedir-conf`` +as the file to be played. Both require you to set the ``--use-filedir-conf`` option (either on the command line or in your global config file). If a file-specific configuration file is found in the same directory, no file-specific configuration is loaded from ``~/.config/mpv``. In addition, the diff --git a/player/configfiles.c b/player/configfiles.c index bbc7ecc12a..75011eb9fa 100644 --- a/player/configfiles.c +++ b/player/configfiles.c @@ -111,15 +111,15 @@ static void mp_load_per_file_config(struct MPContext *mpctx) char cfg[512]; const char *file = mpctx->filename; - if (snprintf(cfg, sizeof(cfg), "%s.conf", file) >= sizeof(cfg)) { - MP_VERBOSE(mpctx, "Filename is too long, " - "can not load file or directory specific config files\n"); - return; - } - - char *name = mp_basename(cfg); - if (opts->use_filedir_conf) { + if (snprintf(cfg, sizeof(cfg), "%s.conf", file) >= sizeof(cfg)) { + MP_VERBOSE(mpctx, "Filename is too long, can not load file or " + "directory specific config files\n"); + return; + } + + char *name = mp_basename(cfg); + bstr dir = mp_dirname(cfg); char *dircfg = mp_path_join(NULL, dir, bstr0("mpv.conf")); try_load_config(mpctx, dircfg, FILE_LOCAL_FLAGS); @@ -127,12 +127,12 @@ static void mp_load_per_file_config(struct MPContext *mpctx) if (try_load_config(mpctx, cfg, FILE_LOCAL_FLAGS)) return; - } - if ((confpath = mp_find_config_file(NULL, mpctx->global, name))) { - try_load_config(mpctx, confpath, FILE_LOCAL_FLAGS); + if ((confpath = mp_find_config_file(NULL, mpctx->global, name))) { + try_load_config(mpctx, confpath, FILE_LOCAL_FLAGS); - talloc_free(confpath); + talloc_free(confpath); + } } }