From 5494961ab81c46a809a775f4353ddb7cd644c7e2 Mon Sep 17 00:00:00 2001
From: Mark Roszko <mark.roszko@gmail.com>
Date: Fri, 4 Dec 2015 01:48:38 -0500
Subject: [PATCH] Default saved paths to environment variables if available

---
 common/pgm_base.cpp | 51 ++++++++++++++++++++++++++++++++++++++++-----------
 1 file changed, 40 insertions(+), 11 deletions(-)

diff --git a/common/pgm_base.cpp b/common/pgm_base.cpp
index 6322138..222afa0 100644
--- a/common/pgm_base.cpp
+++ b/common/pgm_base.cpp
@@ -416,6 +416,8 @@ bool PGM_BASE::initPgm()
     {
         wxString envVarName = wxT( "KIGITHUB" );
         ENV_VAR_ITEM envVarItem;
+        wxString envValue;
+        wxFileName tmpFileName;
 
         envVarItem.SetValue( wxString( wxT( "https://github.com/KiCad" ) ) );
         envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) );
@@ -429,24 +431,51 @@ bool PGM_BASE::initPgm()
         baseSharePath.AppendDir( wxT( "kicad" ) );
 #endif
 
-        wxFileName tmpFileName = baseSharePath;
-        tmpFileName.AppendDir( wxT( "modules" ) );
+        // KISYSMOD
         envVarName = wxT( "KISYSMOD" );
-        envVarItem.SetValue( tmpFileName.GetPath() );
-        envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) );
+        if( wxGetEnv( envVarName, &envValue ) == true )
+        {
+            tmpFileName = envValue;
+            envVarItem.SetDefinedExternally( true );
+        }
+        else
+        {
+            tmpFileName = baseSharePath;
+            tmpFileName.AppendDir( wxT( "modules" ) );
+            envVarItem.SetDefinedExternally( false );
+        }
+        envVarItem.SetValue( tmpFileName.GetFullPath() );
         m_local_env_vars[ envVarName ] = envVarItem;
 
+        // KISYS3DMOD
         envVarName = wxT( "KISYS3DMOD" );
-        tmpFileName.AppendDir( wxT( "packages3d" ) );
-        envVarItem.SetValue( tmpFileName.GetPath() );
-        envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) );
+        if( wxGetEnv( envVarName, &envValue ) == true )
+        {
+            tmpFileName = envValue;
+            envVarItem.SetDefinedExternally( true );
+        }
+        else
+        {
+            tmpFileName.AppendDir( wxT( "packages3d" ) );
+            envVarItem.SetDefinedExternally( false );
+        }
+        envVarItem.SetValue( tmpFileName.GetFullPath() );
         m_local_env_vars[ envVarName ] = envVarItem;
 
+        // KICAD_PTEMPLATES
         envVarName = wxT( "KICAD_PTEMPLATES" );
-        tmpFileName = baseSharePath;
-        tmpFileName.AppendDir( wxT( "template" ) );
-        envVarItem.SetValue( tmpFileName.GetPath() );
-        envVarItem.SetDefinedExternally( wxGetEnv( envVarName, NULL ) );
+        if( wxGetEnv( envVarName, &envValue ) == true )
+        {
+            tmpFileName = envValue;
+            envVarItem.SetDefinedExternally( true );
+        }
+        else
+        {
+            tmpFileName = baseSharePath;
+            tmpFileName.AppendDir( wxT( "template" ) );
+            envVarItem.SetDefinedExternally( false );
+        }
+        envVarItem.SetValue( tmpFileName.GetFullPath() );
         m_local_env_vars[ envVarName ] = envVarItem;
     }
 
-- 
2.6.1.windows.1

