std::wstring Library::getPath()
{
- wchar_t* pwstFullPath = (wchar_t*)MALLOC(sizeof(wchar_t) * (PATH_MAX * 2));
- get_full_pathW(pwstFullPath, m_wstPath.c_str(), PATH_MAX * 2);
- std::wstring wstrOut(pwstFullPath);
- FREE(pwstFullPath);
- return wstrOut;
+ return m_wstPath;
}
}
* @param[in] string where to find a variable and expand
* @return string with expanded variable
*/
-FILEIO_IMPEXP char *expandPathVariable(char* str);
+FILEIO_IMPEXP char *expandPathVariable(const char* str);
/**
* expand in_name to produce out_name (wide string)
* @param[in] wide string where to find a variable and expand
* @return wide string with expanded variable
*/
-FILEIO_IMPEXP wchar_t *expandPathVariableW(wchar_t *wcstr);
+FILEIO_IMPEXP wchar_t *expandPathVariableW(const wchar_t *wcstr);
/**
* set NULL to all scilab "Variable" (ie: SCI, SCIHOME, ....)
AUTO_STYLE = 2
} PathConvertType;
-FILEIO_IMPEXP wchar_t *pathconvertW(wchar_t* wcpath, BOOL flagtrail, BOOL flagexpand, PathConvertType PType);
+FILEIO_IMPEXP wchar_t *pathconvertW(const wchar_t* wcpath, BOOL flagtrail, BOOL flagexpand, PathConvertType PType);
-FILEIO_IMPEXP char *pathconvert(char* path, BOOL flagtrail, BOOL flagexpand, PathConvertType PType);
+FILEIO_IMPEXP char *pathconvert(const char* path, BOOL flagtrail, BOOL flagexpand, PathConvertType PType);
#endif /* PATHCONVERT_H__ */
/*--------------------------------------------------------------------------*/
wchar_t *wPath = to_wide_string((char *)_Path);
wchar_t *wFullPath = (wchar_t *) MALLOC(sizeof(wchar_t) * _SizeInBytes);
- _wfullpath(wFullPath, wPath, _SizeInBytes);
+ get_full_pathW(wFullPath, wPath, _SizeInBytes);
returnedFullPath = wide_string_to_UTF8(wFullPath);
if (returnedFullPath)
{
/*--------------------------------------------------------------------------*/
#define CYGWINSTART L"/cygdrive/"
/*--------------------------------------------------------------------------*/
-static wchar_t *cygwintowindowspath(wchar_t *cygwinpath, BOOL *bConverted);
-static wchar_t *windowstocygwinpath(wchar_t *windowspath, BOOL *bConverted);
+static wchar_t *cygwintowindowspath(const wchar_t *cygwinpath, BOOL *bConverted);
+static wchar_t *windowstocygwinpath(const wchar_t *windowspath, BOOL *bConverted);
/*--------------------------------------------------------------------------*/
-wchar_t *pathconvertW(wchar_t* wcpath, BOOL flagtrail, BOOL flagexpand, PathConvertType PType)
+wchar_t *pathconvertW(const wchar_t* wcpath, BOOL flagtrail, BOOL flagexpand, PathConvertType PType)
{
wchar_t *convertedPath = NULL;
if (wcpath)
return convertedPath;
}
/*--------------------------------------------------------------------------*/
-char *pathconvert(char* path, BOOL flagtrail, BOOL flagexpand, PathConvertType PType)
+char *pathconvert(const char* path, BOOL flagtrail, BOOL flagexpand, PathConvertType PType)
{
char *convertedPath = NULL;
if (path)
return convertedPath;
}
/*--------------------------------------------------------------------------*/
-static wchar_t *cygwintowindowspath(wchar_t *cygwinpath, BOOL *bConverted)
+static wchar_t *cygwintowindowspath(const wchar_t *cygwinpath, BOOL *bConverted)
{
wchar_t *windowspath = NULL;
*bConverted = FALSE;
return windowspath;
}
/*--------------------------------------------------------------------------*/
-static wchar_t *windowstocygwinpath(wchar_t *windowspath, BOOL *bConverted)
+static wchar_t *windowstocygwinpath(const wchar_t *windowspath, BOOL *bConverted)
{
wchar_t *cygwinpath = NULL;
*bConverted = FALSE;
static wchar_t *getVariableValueDefinedInScilab(VARIABLEALIAS* var);
static wchar_t *convertFileSeparators(wchar_t *wcStr);
/*--------------------------------------------------------------------------*/
-wchar_t *expandPathVariableW(wchar_t *wcstr)
+wchar_t *expandPathVariableW(const wchar_t *wcstr)
{
wchar_t *wcexpanded = NULL;
if (wcstr)
return wcexpanded;
}
/*--------------------------------------------------------------------------*/
-char *expandPathVariable(char* str)
+char *expandPathVariable(const char* str)
{
char *expanded = NULL;
wchar_t *wstr = to_wide_string(str);
}
wchar_t* pstPath = pS->get(0);
- wchar_t* pwstPath = pathconvertW(pstPath, TRUE, TRUE, AUTO_STYLE);
+ wchar_t* pwstPath = pathconvertW(pstPath, TRUE, FALSE, AUTO_STYLE);
int err = 0;
types::Library* lib = loadlib(pwstPath, &err, false, false);
FREE(pwstPath);
#include "expandPathVariable.h"
#include "fullpath.h"
#include "PATH_MAX.h"
+#include "pathconvert.h"
#include <libxml/xpath.h>
#include <libxml/xmlreader.h>
}
{
types::Library* lib = NULL;
- wchar_t* pwstPathLib = expandPathVariableW((wchar_t*)_wstXML.c_str());
+ wchar_t* pwstXML = pathconvertW(_wstXML.data(), FALSE, FALSE, AUTO_STYLE);
+ wchar_t* pwstPathLib = expandPathVariableW(pwstXML);
+
+ bool expanded = true;
+ if (wcscmp(pwstPathLib, pwstXML) == 0)
+ {
+ expanded = false;
+ }
wchar_t* pwstTemp = (wchar_t*)MALLOC(sizeof(wchar_t) * (PATH_MAX * 2));
get_full_pathW(pwstTemp, pwstPathLib, PATH_MAX * 2);
FREE(pwstPathLib);
- std::wstring wstOriginalPath(_wstXML);
+
+ std::wstring wstOriginalPath(pwstXML);
+ FREE(pwstXML);
std::wstring wstFile(pwstTemp);
std::wstring wstPath(pwstTemp);
FREE(pwstTemp);
{
//remove / or \ at the end
size_t pos = wstPath.find_last_of(L"/\\");
- wstPath = wstPath.substr(0, pos);
+ wstPath = wstPath.substr(0, pos + 1);
pos = wstOriginalPath.find_last_of(L"/\\");
wstOriginalPath = wstOriginalPath.substr(0, pos + 1); //with ending /
}
return lib;
}
- lib = new types::Library(wstOriginalPath);
+ lib = new types::Library(expanded ? wstOriginalPath : wstPath);
std::wstring stFilename(wstPath);
if (stFilename.empty() == false && *stFilename.rbegin() != DIR_SEPARATORW[0])
FREE(pstFile);
return 1;
}
- std::string s(_wstXML.begin(),_wstXML.end());
+
+ std::string s(_wstXML.begin(), _wstXML.end());
std::ifstream file(s);
if (file)
{
const std::string XMLDecl("<?xml");
std::string readXMLDecl;
- readXMLDecl.resize(XMLDecl.length(),' ');//reserve space
- file.read(&*readXMLDecl.begin(),XMLDecl.length());
+ readXMLDecl.resize(XMLDecl.length(), ' ');//reserve space
+ file.read(&*readXMLDecl.begin(), XMLDecl.length());
if (XMLDecl != readXMLDecl)
{
- FREE(pstFile);
- return 4;
+ FREE(pstFile);
+ return 4;
}
}