summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Jagielski <jim@apache.org>2019-01-18 18:50:36 +0000
committerJim Jagielski <jim@apache.org>2019-01-18 18:50:36 +0000
commit4e555abf06c9f2571700bbc10c19d7f2076de63b (patch)
treed405c9e82ce2cc17e491a5506d606dc9cb435c60
parent8c50e8fdeb9933ea35f093cd94e0a1f5ed27615c (diff)
more PATH weirdness on macOS
Notes
Notes: ignore: aoo
-rw-r--r--odk/source/unoapploader/unx/unoapploader.c6
-rw-r--r--sal/osl/unx/nlsupport.c22
-rw-r--r--sal/osl/unx/process_impl.cxx2
3 files changed, 26 insertions, 4 deletions
diff --git a/odk/source/unoapploader/unx/unoapploader.c b/odk/source/unoapploader/unx/unoapploader.c
index f825885403e4..1fb1540134f3 100644
--- a/odk/source/unoapploader/unx/unoapploader.c
+++ b/odk/source/unoapploader/unx/unoapploader.c
@@ -206,10 +206,10 @@ int main( int argc, char *argv[] )
strcat( envstr, value );
}
putenv( envstr );
- #ifdef MACOSX
+#ifdef MACOSX
/* https://bz.apache.org/ooo/show_bug.cgi?id=127965 */
value = getenv( "PATH" );
- size = strlen( "PATH" ) + strlen( "=/usr/local/bin" );
+ size = strlen( "PATH" ) + strlen( "=/usr/local/bin" ) + 1;
if ( value != NULL )
size += strlen( PATHSEPARATOR ) + strlen( value );
envstr = (char*) malloc( size );
@@ -220,7 +220,7 @@ int main( int argc, char *argv[] )
}
strcat( envstr, "/usr/local/bin" ); /* We are adding at the end */
putenv( envstr );
- #endif
+#endif
}
else
{
diff --git a/sal/osl/unx/nlsupport.c b/sal/osl/unx/nlsupport.c
index 0172ac77e3bc..0f3dd7f17747 100644
--- a/sal/osl/unx/nlsupport.c
+++ b/sal/osl/unx/nlsupport.c
@@ -832,6 +832,8 @@ int macosx_getLocale(char *locale, sal_uInt32 bufferLen);
void _imp_getProcessLocale( rtl_Locale ** ppLocale )
{
static char *locale = NULL;
+ char *npath, *opath;
+ int slen;
/* basic thread safeness */
// pthread_mutex_lock( &aLocalMutex );
@@ -870,6 +872,26 @@ void _imp_getProcessLocale( rtl_Locale ** ppLocale )
setenv("LC_CTYPE", locale, 1 );
setenv("LANG", locale, 1 );
+ /*
+ * This is a hack. We know that we are setting some envvars here
+ * and due to https://bz.apache.org/ooo/show_bug.cgi?id=127965
+ * we need to update PATH on macOS. Doing it here ensures
+ * that it's done but it's not the right location to be doing
+ * this.
+ */
+ opath = getenv ( "PATH" );
+ slen = strlen( "/usr/local/bin" ) + 1;
+ if ( opath != NULL )
+ slen += strlen( ":" ) + strlen( opath );
+ npath = malloc( slen );
+ if ( opath != NULL ) {
+ strcat( npath, opath );
+ strcat( npath, ":" );
+ }
+ strcat( npath, "/usr/local/bin" ); /* We are adding at the end */
+ setenv("PATH", npath, 1 );
+ free(npath);
+
#ifdef DEBUG
fprintf( stderr, "nlsupport.c: _imp_getProcessLocale() returning %s as current locale.\n", locale );
#endif
diff --git a/sal/osl/unx/process_impl.cxx b/sal/osl/unx/process_impl.cxx
index 30712be02a69..4564491c9070 100644
--- a/sal/osl/unx/process_impl.cxx
+++ b/sal/osl/unx/process_impl.cxx
@@ -385,7 +385,7 @@ oslProcessError SAL_CALL osl_clearEnvironment(rtl_uString* pustrEnvVar)
rtl_TextEncoding encoding = osl_getThreadTextEncoding();
rtl_String* pstr_env_var = 0;
- OSL_PRECOND(pustrEnvVar, "osl_setEnvironment(): Invalid parameter");
+ OSL_PRECOND(pustrEnvVar, "osl_clearEnvironment(): Invalid parameter");
rtl_uString2String(
&pstr_env_var,