diff options
Diffstat (limited to 'sal/osl/os2/profile.c')
-rw-r--r-- | sal/osl/os2/profile.c | 533 |
1 files changed, 4 insertions, 529 deletions
diff --git a/sal/osl/os2/profile.c b/sal/osl/os2/profile.c index d9d166d0e091..92b919d02f6a 100644 --- a/sal/osl/os2/profile.c +++ b/sal/osl/os2/profile.c @@ -1,3 +1,4 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -26,8 +27,7 @@ ************************************************************************/ #include "system.h" - -// YD #define min(a,b) (((a) < (b)) ? (a) : (b)) +#include <sal/macros.h> #include <osl/security.h> #include <osl/diagnose.h> @@ -874,224 +874,6 @@ sal_uInt32 SAL_CALL osl_getProfileSections(oslProfile Profile, sal_Char* pszBuff return (n); } -#if 0 // YD -sal_Bool SAL_CALL osl_getProfileName(rtl_uString* strPath, rtl_uString* strName, rtl_uString** strProfileName) -{ - sal_Bool bFailed; - sal_Char File[_MAX_PATH]; - sal_Char Path[_MAX_PATH]; - sal_uInt32 nFileLen; - sal_uInt32 nPathLen = 0; - - rtl_uString * strTmp = NULL; - oslFileError nError; - - /* build file name */ - if (strName && strName->length) - { - if(strName->length >= _MAX_PATH) - return sal_False; - - strcpy(File, (char*)strName->buffer); - nFileLen = strName->length; - - if (rtl_ustr_indexOfChar( File, L'.' ) == -1) - { - if (nFileLen + strlen(STR_INI_EXTENSION) >= _MAX_PATH) - return sal_False; - - /* add default extension */ - strcpy(File + nFileLen, STR_INI_EXTENSION); - nFileLen += strlen(STR_INI_EXTENSION); - } - } - else - { - rtl_uString *strProgName = NULL; - sal_Unicode *pProgName; - sal_Int32 nOffset = 0; - sal_Int32 nLen; - sal_Int32 nPos; - - if (osl_getExecutableFile(&strProgName) != osl_Process_E_None) - return sal_False; - - /* remove path and extension from filename */ - pProgName = strProgName->buffer; - nLen = strProgName->length ; - - if ((nPos = rtl_ustr_lastIndexOfChar( pProgName, L'/' )) != -1) - nOffset = nPos + 1; - else if ((nPos = rtl_ustr_lastIndexOfChar( pProgName, L':' )) != -1) - nOffset = nPos + 1; - - if ((nPos = rtl_ustr_lastIndexOfChar( pProgName, L'.' )) != -1 ) - nLen -= 4; - - if ((nFileLen = nLen - nOffset) >= _MAX_PATH) - return sal_False; - - strncpy(File, pProgName + nOffset, nFileLen); - - if (nFileLen + strlen(STR_INI_EXTENSION) >= _MAX_PATH) - return sal_False; - - /* add default extension */ - strcpy(File + nFileLen, STR_INI_EXTENSION); - nFileLen += strlen(STR_INI_EXTENSION); - - rtl_uString_release( strProgName ); - } - - if (File[0] == 0) - return sal_False; - - /* build directory path */ - if (strPath && strPath->length) - { - sal_Unicode *pPath = rtl_uString_getStr(strPath); - sal_Int32 nLen = rtl_uString_getLength(strPath); - - if ((rtl_ustr_ascii_compare_WithLength(pPath, RTL_CONSTASCII_LENGTH(STR_INI_METAHOME) , STR_INI_METAHOME) == 0) && - ((nLen == RTL_CONSTASCII_LENGTH(STR_INI_METAHOME)) || (pPath[RTL_CONSTASCII_LENGTH(STR_INI_METAHOME)] == '/'))) - { - rtl_uString * strHome = NULL; - oslSecurity security = osl_getCurrentSecurity(); - - bFailed = ! osl_getHomeDir(security, &strHome); - osl_freeSecurityHandle(security); - - if (bFailed) return (sal_False); - - if (strHome->length >= _MAX_PATH) - return sal_False; - - strcpy( Path, strHome->buffer); - nPathLen = strHome->length; - - if (nLen > RTL_CONSTASCII_LENGTH(STR_INI_METAHOME)) - { - pPath += RTL_CONSTASCII_LENGTH(STR_INI_METAHOME); - nLen -= RTL_CONSTASCII_LENGTH(STR_INI_METAHOME); - - if (nLen + nPathLen >= _MAX_PATH) - return sal_False; - - strcpy(Path + nPathLen, pPath); - nPathLen += nLen; - } - - rtl_uString_release(strHome); - } - - else if ((rtl_ustr_ascii_compare_WithLength(pPath, RTL_CONSTASCII_LENGTH(STR_INI_METACFG), STR_INI_METACFG) == 0) && - ((nLen == RTL_CONSTASCII_LENGTH(STR_INI_METACFG)) || (pPath[RTL_CONSTASCII_LENGTH(STR_INI_METACFG)] == '/'))) - { - rtl_uString * strConfig = NULL; - oslSecurity security = osl_getCurrentSecurity(); - - bFailed = ! osl_getConfigDir(security, &strConfig); - osl_freeSecurityHandle(security); - - if (bFailed) return (sal_False); - - if (strConfig->length >= _MAX_PATH) - return sal_False; - - strcpy( Path, strConfig->buffer); - nPathLen = strConfig->length; - - if (nLen > RTL_CONSTASCII_LENGTH(STR_INI_METACFG)) - { - pPath += RTL_CONSTASCII_LENGTH(STR_INI_METACFG); - nLen -= RTL_CONSTASCII_LENGTH(STR_INI_METACFG); - - if (nLen + nPathLen >= _MAX_PATH) - return sal_False; - - strcpy(Path + nPathLen, pPath); - nPathLen += nLen; - } - - rtl_uString_release(strConfig); - } - - else if ((rtl_ustr_ascii_compare_WithLength(pPath, RTL_CONSTASCII_LENGTH(STR_INI_METASYS), STR_INI_METASYS) == 0) && - ((nLen == RTL_CONSTASCII_LENGTH(STR_INI_METASYS)) || (pPath[RTL_CONSTASCII_LENGTH(STR_INI_METASYS)] == '/'))) - { - if (((nPathLen = GetWindowsDirectoryW(Path, _MAX_PATH)) == 0) || (nPathLen >= _MAX_PATH)) - return (sal_False); - - if (nLen > RTL_CONSTASCII_LENGTH(STR_INI_METASYS)) - { - pPath += RTL_CONSTASCII_LENGTH(STR_INI_METASYS); - nLen -= RTL_CONSTASCII_LENGTH(STR_INI_METASYS); - - if (nLen + nPathLen >= MAX_PATH) - return sal_False; - - strcpy(Path + nPathLen, pPath); - nPathLen += nLen; - } - } - - else if ((rtl_ustr_ascii_compare_WithLength(pPath, RTL_CONSTASCII_LENGTH(STR_INI_METAINS), STR_INI_METAINS) == 0) && - ((nLen == RTL_CONSTASCII_LENGTH(STR_INI_METAINS)) || (pPath[RTL_CONSTASCII_LENGTH(STR_INI_METAINS)] == '/') || - (pPath[RTL_CONSTASCII_LENGTH(STR_INI_METAINS)] == '"') ) ) - { - if (! lookupProfile(pPath + RTL_CONSTASCII_LENGTH(STR_INI_METAINS), File, Path)) - return (sal_False); - - nPathLen = strlen(Path); - } - - else if(nLen < MAX_PATH) - { - strcpy(Path, pPath); - nPathLen = strlen(Path); - } - else - return sal_False; - } - else - { - rtl_uString * strConfigDir = NULL; - oslSecurity security = osl_getCurrentSecurity(); - - bFailed = ! osl_getConfigDir(security, &strConfigDir); - osl_freeSecurityHandle(security); - - if (bFailed) return (sal_False); - if (strConfigDir->length >= MAX_PATH) - return sal_False; - - strcpy(Path, strConfigDir->buffer); - nPathLen = strConfigDir->length; - } - - if (nPathLen && (Path[nPathLen - 1] != L'/') && (Path[nPathLen - 1] != L'\\')) - { - Path[nPathLen++] = L'\\'; - Path[nPathLen] = 0; - } - - if (nPathLen + nFileLen >= MAX_PATH) - return sal_False; - - /* append file name */ - strcpy(Path + nPathLen, File); - nPathLen += nFileLen; - - /* copy filename */ - rtl_uString_newFromStr_WithLength(&strTmp, Path, nPathLen); - nError = osl_getFileURLFromSystemPath(strTmp, strProfileName); - rtl_uString_release(strTmp); - - return nError == osl_File_E_None; -} -#endif // 0 // YD - - /*****************************************************************************/ /* Static Module Functions */ /*****************************************************************************/ @@ -1347,7 +1129,7 @@ static sal_Bool getLine(osl_TFile* pFile, const sal_Char *pszLine, int MaxLen) (pChr < (pFile->m_ReadBuf + sizeof(pFile->m_ReadBuf) - 1)); pChr++); - Max = min(pChr - pFile->m_pReadPtr, MaxLen); + Max = SAL_MIN(pChr - pFile->m_pReadPtr, MaxLen); memcpy(pLine, pFile->m_pReadPtr, Max); MaxLen -= Max; pLine += Max; @@ -1985,311 +1767,4 @@ static sal_Bool releaseProfile(osl_TProfileImpl* pProfile) return (sal_True); } -#if 0 // YD - -static sal_Bool lookupProfile(const sal_Char *pszPath, const sal_Char *pszFile, sal_Char *pPath) -{ - sal_Char *pChr, *pStr; - sal_Char Path[_MAX_PATH] = ""; - sal_Char Product[132] = ""; - sal_Char Buffer[1024]; - - if (*pszPath == '"') - { - int i = 0; - - pszPath++; - - while ((*pszPath != '"') && (*pszPath != '\0')) - Product[i++] = *pszPath++; - - Product[i] = '\0'; - - if (*pszPath == '"') - pszPath++; - - if ( (*pszPath == '/') || (*pszPath == '\\') ) - { - pszPath++; - } - } - else - { - /* if we have not product identfication, do a special handling for soffice.ini */ - if (stricmp(SVERSION_PROFILE, pszFile) == 0) - { - sal_Char Profile[_MAX_PATH]; - sal_Char Dir[_MAX_PATH]; - oslProfile hProfile; - - /* open sversion.ini in the system directory, and try to locate the entry - with the highest version for StarOffice */ - if ((osl_getProfileName(SVERSION_FALLBACK, SVERSION_NAME, Profile, sizeof(Profile))) && - (hProfile = osl_openProfile(Profile, osl_Profile_READLOCK))) - { - osl_getProfileSectionEntries(hProfile, SVERSION_SECTION, - Buffer, sizeof(Buffer)); - - for (pChr = Buffer; *pChr != '\0'; pChr += strlen(pChr) + 1) - { - if ((strnicmp(pChr, SVERSION_SOFFICE, sizeof(SVERSION_SOFFICE) - 1) == 0) && - (stricmp(Product, pChr) < 0)) - { - osl_readProfileString(hProfile, SVERSION_SECTION, pChr, - Dir, sizeof(Dir), ""); - - /* check for existence of path */ - if (access(Dir, 0) >= 0) - strcpy(Product, pChr); - } - } - - osl_closeProfile(hProfile); - } - - /* open sversion.ini in the users directory, and try to locate the entry - with the highest version for StarOffice */ - if ((strcmp(SVERSION_LOCATION, SVERSION_FALLBACK) != 0) && - (osl_getProfileName(SVERSION_LOCATION, SVERSION_NAME, Profile, sizeof(Profile))) && - (hProfile = osl_openProfile(Profile, osl_Profile_READLOCK))) - { - osl_getProfileSectionEntries(hProfile, SVERSION_SECTION, - Buffer, sizeof(Buffer)); - - for (pChr = Buffer; *pChr != '\0'; pChr += strlen(pChr) + 1) - { - if ((strnicmp(pChr, SVERSION_SOFFICE, sizeof(SVERSION_SOFFICE) - 1) == 0) && - (stricmp(Product, pChr) < 0)) - { - osl_readProfileString(hProfile, SVERSION_SECTION, pChr, - Dir, sizeof(Dir), ""); - - /* check for existence of path */ - if (access(Dir, 0) >= 0) - strcpy(Product, pChr); - } - } - - osl_closeProfile(hProfile); - } - - /* remove any trailing build number */ - if ((pChr = strrchr(Product, '/')) != NULL) - *pChr = '\0'; - } - } - - - /* if we have an userid option eg. "-userid:rh[/usr/home/rh/staroffice]", - this will supercede all other locations */ - if (osl_getCommandArgs(Buffer, sizeof(Buffer)) == osl_Process_E_None) - { - sal_Char *pStart, *pEnd; - - for (pChr = Buffer; *pChr != '\0'; pChr += strlen(pChr) + 1) - if (((*pChr == '-') || (*pChr == '+')) && - (strnicmp(pChr + 1, SVERSION_OPTION, sizeof(SVERSION_OPTION) - 1) == 0)) - { - if (((pStart = strchr(pChr + sizeof(SVERSION_OPTION), '[')) != NULL) && - ((pEnd = strchr(pStart + 1, ']')) != NULL)) - { - strncpy(Path, pStart + 1, pEnd - (pStart + 1)); - Path[pEnd - (pStart + 1)] = '\0'; - - /* build full path */ - if ((Path[strlen(Path) - 1] != '/') && (Path[strlen(Path) - 1] != '\\')) - { - strcat(Path, "\\"); - } - - pChr =&Path[strlen(Path)]; - if ( strlen(pszPath) <= 0 ) - { - strcat(Path,SVERSION_USER); - - if ( access(Path, 0) < 0 ) - { - *pChr='\0'; - } - } - else - { - strcat(Path, pszPath); - } - - break; - } - } - } - - if (strlen(Path) <= 0) - { - /* try to find the file in the directory of the executbale */ - if (osl_getExecutableFile(Path, sizeof(Path)) != osl_Process_E_None) - return (sal_False); - - /* seperate path from filename */ - if ((pChr = strrchr(Path, '\\')) == NULL) - if ((pChr = strrchr(Path, ':')) == NULL) - return (sal_False); - else - *pChr = '\0'; - else - *pChr = '\0'; - - /* if we have no product identification use the executable file name */ - if (strlen(Product) <= 0) - { - strcpy(Product, pChr + 1); - - /* remove extension */ - if ((pChr = strrchr(Product, '.')) != NULL) - *pChr = '\0'; - } - - /* remember last subdir */ - pStr = strrchr(Path, '\\'); - - strcat(Path, "\\"); - - if ( strlen(pszPath) <= 0 ) - { - strcat(Path, pszPath); - } - else - { - strcat(Path,pszPath); - } - - /* if file not exists, remove any specified subdirectories - like "bin" or "program" */ - if (((access(Path, 0) < 0) && (pStr != NULL)) || (strlen(pszPath) <= 0)) - { - static sal_Char *SubDirs[] = SVERSION_DIRS; - - int i = 0; - - for (i = 0; i < (sizeof(SubDirs) / sizeof(SubDirs[0])); i++) - if (strnicmp(pStr + 1, SubDirs[i], strlen(SubDirs[i])) == 0) - { - if ( strlen(pszPath) <= 0) - { - strcpy(pStr + 1,SVERSION_USER); - if ( access(Path, 0) < 0 ) - { - *(pStr+1)='\0'; - } - } - else - { - strcpy(pStr + 1, pszPath); - } - - break; - } - } - - pChr = &Path[strlen(Path)]; - if ((Path[strlen(Path) - 1] != '/') && (Path[strlen(Path) - 1] != '\\')) - strcat(Path, "\\"); - strcat(Path, pszFile); - - if ((access(Path, 0) < 0) && (strlen(Product) > 0)) - { - sal_Char Profile[_MAX_PATH]; - oslProfile hProfile; - - /* remove appended filename */ - *pChr = '\0'; - - /* open sversion.ini in the system directory, and try to locate the entry - with the highest version for StarOffice */ - if ((osl_getProfileName(SVERSION_LOCATION, SVERSION_NAME, Profile, sizeof(Profile))) && - (hProfile = osl_openProfile(Profile, osl_Profile_READLOCK))) - { - pChr = &Product[strlen(Product)]; - - /* append build number */ - strcat(Product, "/"); - strcat(Product, BUILD_STR(SUPD)); - - osl_readProfileString(hProfile, SVERSION_SECTION, Product, - Buffer, sizeof(Buffer), ""); - - /* if not found, try it without build number */ - if (strlen(Buffer) <= 0) - { - *pChr = '\0'; - - osl_readProfileString(hProfile, SVERSION_SECTION, Product, - Buffer, sizeof(Buffer), ""); - - osl_closeProfile(hProfile); - - /* if not found, try the fallback */ - if ((strlen(Buffer) <= 0) && (strcmp(SVERSION_LOCATION, SVERSION_FALLBACK) != 0)) - { - if ((osl_getProfileName(SVERSION_FALLBACK, SVERSION_NAME, Profile, sizeof(Profile))) && - (hProfile = osl_openProfile(Profile, osl_Profile_READLOCK))) - { - /* prepare build number */ - *pChr = '/'; - - osl_readProfileString(hProfile, SVERSION_SECTION, Product, - Buffer, sizeof(Buffer), ""); - - /* if not found, try it without build number */ - if (strlen(Buffer) <= 0) - { - *pChr = '\0'; - - osl_readProfileString(hProfile, SVERSION_SECTION, Product, - Buffer, sizeof(Buffer), ""); - } - - osl_closeProfile(hProfile); - } - } - } - else - osl_closeProfile(hProfile); - - if (strlen(Buffer) > 0) - { - strcpy(Path, Buffer); - - /* build full path */ - if ((Path[strlen(Path) - 1] != '/') && (Path[strlen(Path) - 1] != '\\')) - { - if ((*pszPath != '/') && (*pszPath != '\\')) - strcat(Path, "\\"); - } - - pChr=&Path[strlen(pszPath)]; - if ( strlen(pszPath) > 0 ) - { - strcat(Path, pszPath); - } - else - { - strcat(Path,SVERSION_USER); - if ( access(Path, 0) < 0 ) - { - *pChr='\0'; - } - } - } - } - } - else - /* remove appended filename */ - *pChr = '\0'; - } - - strcpy(pPath, Path); - - return (sal_True); -} - -#endif // 0 // YD - +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |