summaryrefslogtreecommitdiff
path: root/noncore/settings/networksettings2/networksettings2/resources.cpp
Side-by-side diff
Diffstat (limited to 'noncore/settings/networksettings2/networksettings2/resources.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/networksettings2/networksettings2/resources.cpp83
1 files changed, 40 insertions, 43 deletions
diff --git a/noncore/settings/networksettings2/networksettings2/resources.cpp b/noncore/settings/networksettings2/networksettings2/resources.cpp
index 7ece817..2f17693 100644
--- a/noncore/settings/networksettings2/networksettings2/resources.cpp
+++ b/noncore/settings/networksettings2/networksettings2/resources.cpp
@@ -296,10 +296,10 @@ typedef struct EnvVars {
static EnvVar_t EV[] = {
- // AnEV( "HOME=" ), -> SPECIAL
- // AnEV( "LOGNAME=" ), -> SPECIAL
- AnEV( "USER=" ),
- AnEV( "LD_LIBRARY_PATH=" ),
- AnEV( "PATH=" ),
- AnEV( "QTDIR=" ),
- AnEV( "OPIEDIR=" ),
- AnEV( "SHELL=" ),
+ AnEV( "HOME" ),
+ AnEV( "LOGNAME" ),
+ AnEV( "USER" ),
+ AnEV( "LD_LIBRARY_PATH" ),
+ AnEV( "PATH" ),
+ AnEV( "QTDIR" ),
+ AnEV( "OPIEDIR" ),
+ AnEV( "SHELL" ),
{ NULL, 0 }
@@ -311,2 +311,5 @@ void TheNSResources::detectCurrentUser( void ) {
+ CurrentUser.UserName = "";
+ CurrentUser.HomeDir = "";
+
if( getenv( "OPIEDIR" ) == 0 ) {
@@ -369,16 +372,8 @@ void TheNSResources::detectCurrentUser( void ) {
while( Data < DataEnd ) {
- if( strncmp( Data, "LOGNAME=", 8 ) == 0 ) {
- CurrentUser.UserName = Data+8;
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] =
- strdup( Data );
- } else if( strncmp( Data, "HOME=", 5 ) == 0 ) {
- CurrentUser.HomeDir = Data+5;
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] =
- strdup( Data );
- } else {
+
EnvVar_t * Run = EV;
while( Run->Name ) {
- if( strncmp( Data, Run->Name, Run->Len ) == 0 ) {
+ if( strncmp( Data, Run->Name, Run->Len ) == 0 &&
+ Data[Run->Len] == '='
+ ) {
CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
@@ -386,6 +381,10 @@ void TheNSResources::detectCurrentUser( void ) {
strdup( Data );
+
+ if( strcmp( Run->Name, "OPIEDIR" ) == 0 ) {
// put OPIEDIR in env
- if( strcmp( Run->Name, "OPIEDIR=" ) == 0 ) {
putenv( CurrentUser.EnvList[CurrentUser.EnvList.size()-1] );
-
+ } else if( strcmp( Run->Name, "HOME" ) == 0 ) {
+ CurrentUser.HomeDir = Data+5;
+ } else if( strcmp( Run->Name, "LOGNAME" ) == 0 ) {
+ CurrentUser.UserName = Data+8;
}
@@ -395,3 +394,2 @@ void TheNSResources::detectCurrentUser( void ) {
}
- }
@@ -423,27 +421,26 @@ void TheNSResources::detectCurrentUser( void ) {
} else {
- CurrentUser.UserName = getenv( "LOGNAME" );
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] =
- strdup( CurrentUser.UserName );
-
- CurrentUser.HomeDir = getenv( "HOME" );
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] =
- strdup( CurrentUser.HomeDir );
+ char * X;
+ QString S;
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("USER");
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("LD_LIBRARY_PATH");
+ EnvVar_t * Run = EV;
+ while( Run->Name ) {
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("PATH");
+ if( ( X = getenv( Run->Name ) ) ) {
+ Log(( "Env : %s = %s\n", Run->Name, X ));
+ S.sprintf( "%s=%s", Run->Name, X );
CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("QTDIR");
+ CurrentUser.EnvList[CurrentUser.EnvList.size()-1] =
+ strdup( S.latin1() );
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("OPIEDIR");
- CurrentUser.EnvList.resize( CurrentUser.EnvList.size()+1 );
- CurrentUser.EnvList[CurrentUser.EnvList.size()-1] = getenv("SHELL");
+ if( strcmp( Run->Name, "LOGNAME" ) == 0 ) {
+ CurrentUser.UserName = X;
+ } else if( strcmp( Run->Name, "HOME" ) == 0 ) {
+ CurrentUser.HomeDir = X;
+ } // regulare env var
+ } else {
+ Log(("Could not determine %s\n", Run->Name ));
+ }
+ Run ++;
+ }