Module: wine Branch: master Commit: 161f3fc417dd397072326c0720de065561531e17 URL: http://source.winehq.org/git/wine.git/?a=commit;h=161f3fc417dd397072326c0720...
Author: Alexandre Julliard julliard@winehq.org Date: Mon Jun 26 13:32:38 2017 +0200
libwine: Add a helper function to set the bin directory.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
libs/wine/config.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-)
diff --git a/libs/wine/config.c b/libs/wine/config.c index 3b5dd68..129a565 100644 --- a/libs/wine/config.c +++ b/libs/wine/config.c @@ -374,22 +374,32 @@ static char *running_from_build_dir( const char *basedir ) return path; }
+/* try to set the specified directory as bindir, or set build_dir if it's inside the build directory */ +static int set_bindir( char *dir ) +{ + if (!dir) return 0; + if (is_valid_bindir( dir )) + { + bindir = dir; + } + else + { + build_dir = running_from_build_dir( dir ); + free( dir ); + } + return bindir || build_dir; +} + /* initialize the argv0 path */ void wine_init_argv0_path( const char *argv0 ) { const char *basename; - char *libdir; + char *libdir = NULL;
if (!(basename = strrchr( argv0, '/' ))) basename = argv0; else basename++;
- bindir = get_runtime_exedir(); - if (bindir && !is_valid_bindir( bindir )) - { - build_dir = running_from_build_dir( bindir ); - free( bindir ); - bindir = NULL; - } + if (set_bindir( get_runtime_exedir() )) goto done;
libdir = get_runtime_libdir(); if (libdir && !bindir && !build_dir) @@ -399,16 +409,9 @@ void wine_init_argv0_path( const char *argv0 ) }
if (!libdir && !bindir && !build_dir) - { - bindir = get_runtime_argvdir( argv0 ); - if (bindir && !is_valid_bindir( bindir )) - { - build_dir = running_from_build_dir( bindir ); - free( bindir ); - bindir = NULL; - } - } + set_bindir( get_runtime_argvdir( argv0 ));
+done: if (build_dir) { argv0_name = build_path( "loader/", basename );