diff --git a/src/filesystem/os2/SDL_sysfilesystem.c b/src/filesystem/os2/SDL_sysfilesystem.c index dce3f2897..a440b0933 100644 --- a/src/filesystem/os2/SDL_sysfilesystem.c +++ b/src/filesystem/os2/SDL_sysfilesystem.c @@ -40,80 +40,88 @@ SDL_GetBasePath(void) { PTIB tib; PPIB pib; - ULONG ulRC = DosGetInfoBlocks( &tib, &pib ); + ULONG ulRC = DosGetInfoBlocks(&tib, &pib); PCHAR pcEnd; ULONG cbResult; CHAR acBuf[_MAX_PATH]; - - if ( ulRC != NO_ERROR ) - { - debug( "DosGetInfoBlocks() failed, rc = %u", ulRC ); + + if (ulRC != NO_ERROR) { + debug("DosGetInfoBlocks() failed, rc = %u", ulRC); return NULL; } - pcEnd = SDL_strrchr( pib->pib_pchcmd, '\\' ); - if ( pcEnd != NULL ) + pcEnd = SDL_strrchr(pib->pib_pchcmd, '\\'); + if (pcEnd != NULL) pcEnd++; - else - { - if ( pib->pib_pchcmd[1] == ':' ) + else { + if (pib->pib_pchcmd[1] == ':') pcEnd = &pib->pib_pchcmd[2]; - else + else { + SDL_SetError("No path in pib->pib_pchcmd"); return NULL; + } } cbResult = pcEnd - pib->pib_pchcmd; - SDL_memcpy( acBuf, pib->pib_pchcmd, cbResult ); + SDL_memcpy(acBuf, pib->pib_pchcmd, cbResult); acBuf[cbResult] = '\0'; - return OS2_SysToUTF8( acBuf ); + return OS2_SysToUTF8(acBuf); } char * SDL_GetPrefPath(const char *org, const char *app) { - PSZ pszPath = SDL_getenv( "HOME" ); + PSZ pszPath; CHAR acBuf[_MAX_PATH]; int lPosApp, lPosOrg; - PSZ pszApp, pszOrg = OS2_UTF8ToSys( org ); + PSZ pszApp, pszOrg; - if ( pszOrg == NULL ) - { - SDL_OutOfMemory(); - return NULL; - } - - if ( pszPath == NULL ) - { - pszPath = SDL_getenv( "ETC" ); - if ( pszPath == NULL ) + if (!app) { + SDL_InvalidParamError("app"); return NULL; } - lPosApp = SDL_snprintf( acBuf, sizeof(acBuf) - 1, "%s\\%s", pszPath, pszOrg ); - SDL_free( pszOrg ); - if ( lPosApp < 0 ) + pszPath = SDL_getenv( "HOME" ); + if (!pszPath) { + pszPath = SDL_getenv( "ETC" ); + if (!pszPath) { + SDL_SetError("HOME or ETC environment not set"); + return NULL; + } + } + + if (!org) { + lPosApp = SDL_snprintf(acBuf, sizeof(acBuf) - 1, "%s", pszPath); + } else { + pszOrg = OS2_UTF8ToSys(org); + if (!pszOrg) { + SDL_OutOfMemory(); + return NULL; + } + lPosApp = SDL_snprintf(acBuf, sizeof(acBuf) - 1, "%s\\%s", pszPath, pszOrg); + SDL_free(pszOrg); + } + if (lPosApp < 0) return NULL; - DosCreateDir( acBuf, NULL ); + DosCreateDir(acBuf, NULL); - pszApp = OS2_UTF8ToSys( app ); - if ( pszApp == NULL ) - { + pszApp = OS2_UTF8ToSys(app); + if (!pszApp) { SDL_OutOfMemory(); return NULL; } - lPosOrg = SDL_snprintf( &acBuf[lPosApp], sizeof(acBuf) - lPosApp - 1, "\\%s", - pszApp ); - SDL_free( pszApp ); - if ( lPosOrg < 0 ) + lPosOrg = SDL_snprintf(&acBuf[lPosApp], sizeof(acBuf) - lPosApp - 1, "\\%s", pszApp); + SDL_free(pszApp); + if (lPosOrg < 0) return NULL; - DosCreateDir( acBuf, NULL ); + DosCreateDir(acBuf, NULL); *((PUSHORT)&acBuf[lPosApp + lPosOrg]) = (USHORT)'\0\\'; - return OS2_SysToUTF8( acBuf ); + return OS2_SysToUTF8(acBuf); } #endif /* SDL_FILESYSTEM_OS2 */