[commit] r2130 - trunk/GME/MgaUtil

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Mon Dec 31 13:35:07 CST 2012


Author: tihamer
Date: Mon Dec 31 13:35:07 2012
New Revision: 2130

Log:


Modified:
   trunk/GME/MgaUtil/MgaLauncher.cpp

Modified: trunk/GME/MgaUtil/MgaLauncher.cpp
==============================================================================
--- trunk/GME/MgaUtil/MgaLauncher.cpp	Wed Dec 19 09:55:55 2012	(r2129)
+++ trunk/GME/MgaUtil/MgaLauncher.cpp	Mon Dec 31 13:35:07 2012	(r2130)
@@ -278,7 +278,8 @@
 		CComPtr<IMgaFCO> imfco;
 		CString url;
 
-		if (obj != NULL) {
+		if (obj != NULL) 
+		{
 			if (FAILED(obj->QueryInterface(&imf)) &&
 				FAILED(obj->QueryInterface(&imfco)))
 			{
@@ -293,8 +294,10 @@
 				imfco->get_RegistryValue(bstr,&bstrVal)
 				);
 
+			
 			CopyTo(bstrVal,url);
 
+			// Resolving $PARADIGMDIR
 			CComPtr<IMgaProject> project;
 			if (imf)
 				COMTHROW(imf->get_Project(&project));
@@ -302,15 +305,40 @@
 				COMTHROW(imfco->get_Project(&project));
 			_bstr_t paradigmConnStr;
 			COMTHROW(project->get_ParadigmConnStr(paradigmConnStr.GetAddress()));
-			if (_wcsnicmp(_T("MGA="), paradigmConnStr, 4) == 0) {
+			if (_wcsnicmp(_T("MGA="), paradigmConnStr, 4) == 0) 
+			{
 				CString filename, dirname;
 				GetFullPathName(CString(static_cast<const TCHAR*>(paradigmConnStr) + 4), filename, dirname);
 
 				if (dirname != "")
+				{
 					url.Replace(_T("$PARADIGMDIR"), dirname);
+				}
 			}
 
 
+			// Supporting one environment variable with $VARNAME$ syntax
+			int firstIdx = url.Find(_T('$'));
+			if(firstIdx  != -1 && url.GetLength() > firstIdx+2) // Reference to environment variable with a non-empty name
+			{
+				int nextIdx = url.Find(_T('$'), firstIdx +1); // Finding the closing $
+
+				if(nextIdx != -1 && nextIdx > firstIdx +1)
+				{
+					CString variableName = url.Mid(firstIdx+1, nextIdx - firstIdx -1);
+					TCHAR* value = _tgetenv(variableName);
+
+					if(value != NULL)
+					{
+						CString variableString;
+						variableString.Format(_T("$%s$"), variableName);
+						url.Replace(variableString, value);
+					}
+
+				}
+
+			}
+
 			CString name;
 			COMTHROW(obj->get_Name(PutOut(name)));
 		}


More information about the gme-commit mailing list