player: simplify mp_load_per_file_config

Get rid of the stupid and error-prone buffer size calculations, use
snprintf instead of strcpy.
This commit is contained in:
wm4 2013-12-22 23:13:59 +01:00
parent ffcf4ece6e
commit 88fd763e18
1 changed files with 7 additions and 8 deletions

View File

@ -89,23 +89,22 @@ static void mp_load_per_file_config(struct MPContext *mpctx)
{ {
struct MPOpts *opts = mpctx->opts; struct MPOpts *opts = mpctx->opts;
char *confpath; char *confpath;
char cfg[MP_PATH_MAX]; char cfg[512];
const char *name;
const char *file = mpctx->filename; const char *file = mpctx->filename;
if (strlen(file) > MP_PATH_MAX - 14) { if (snprintf(cfg, sizeof(cfg), "%s.conf", file) >= sizeof(cfg)) {
MP_WARN(mpctx, "Filename is too long, " MP_WARN(mpctx, "Filename is too long, "
"can not load file or directory specific config files\n"); "can not load file or directory specific config files\n");
return; return;
} }
sprintf(cfg, "%s.conf", file);
name = mp_basename(cfg); char *name = mp_basename(cfg);
if (opts->use_filedir_conf) { if (opts->use_filedir_conf) {
char dircfg[MP_PATH_MAX]; bstr dir = mp_dirname(cfg);
strcpy(dircfg, cfg); char *dircfg = mp_path_join(NULL, dir, bstr0("mpv.conf"));
strcpy(dircfg + (name - cfg), "mpv.conf");
try_load_config(mpctx, dircfg, FILE_LOCAL_FLAGS); try_load_config(mpctx, dircfg, FILE_LOCAL_FLAGS);
talloc_free(dircfg);
if (try_load_config(mpctx, cfg, FILE_LOCAL_FLAGS)) if (try_load_config(mpctx, cfg, FILE_LOCAL_FLAGS))
return; return;