Use SDL_bool instead an int return code in the SDL API

Most SDL functions used to indicate success or failure using an int return code. These functions have been changed to return SDL_bool.

Here is a coccinelle patch to change code that previously compared the return value to 0 and changes it to a boolean test:
@ bool_return_type  @
identifier func =~ "^(SDL_AddEventWatch|SDL_AddHintCallback|SDL_AddSurfaceAlternateImage|SDL_AddVulkanRenderSemaphores|SDL_BindAudioStream|SDL_BindAudioStreams|SDL_BlitSurface|SDL_BlitSurface9Grid|SDL_BlitSurfaceScaled|SDL_BlitSurfaceTiled|SDL_BlitSurfaceTiledWithScale|SDL_BlitSurfaceUnchecked|SDL_BlitSurfaceUncheckedScaled|SDL_CaptureMouse|SDL_ClearAudioStream|SDL_ClearClipboardData|SDL_ClearComposition|SDL_ClearError|SDL_ClearProperty|SDL_ClearSurface|SDL_CloseIO|SDL_CloseStorage|SDL_ConvertAudioSamples|SDL_ConvertEventToRenderCoordinates|SDL_ConvertPixels|SDL_ConvertPixelsAndColorspace|SDL_CopyFile|SDL_CopyProperties|SDL_CopyStorageFile|SDL_CreateDirectory|SDL_CreateStorageDirectory|SDL_CreateWindowAndRenderer|SDL_DateTimeToTime|SDL_DestroyWindowSurface|SDL_DetachVirtualJoystick|SDL_DisableScreenSaver|SDL_EnableScreenSaver|SDL_EnumerateDirectory|SDL_EnumerateProperties|SDL_EnumerateStorageDirectory|SDL_FillSurfaceRect|SDL_FillSurfaceRects|SDL_FlashWindow|SDL_FlipSurface|SDL_FlushAudioStream|SDL_FlushRenderer|SDL_GL_DestroyContext|SDL_GL_GetAttribute|SDL_GL_GetSwapInterval|SDL_GL_LoadLibrary|SDL_GL_MakeCurrent|SDL_GL_SetAttribute|SDL_GL_SetSwapInterval|SDL_GL_SwapWindow|SDL_GetAudioDeviceFormat|SDL_GetAudioStreamFormat|SDL_GetCameraFormat|SDL_GetClosestFullscreenDisplayMode|SDL_GetCurrentRenderOutputSize|SDL_GetCurrentTime|SDL_GetDXGIOutputInfo|SDL_GetDateTimeLocalePreferences|SDL_GetDisplayBounds|SDL_GetDisplayUsableBounds|SDL_GetGDKDefaultUser|SDL_GetGDKTaskQueue|SDL_GetGamepadSensorData|SDL_GetGamepadTouchpadFinger|SDL_GetHapticEffectStatus|SDL_GetJoystickBall|SDL_GetMasksForPixelFormat|SDL_GetPathInfo|SDL_GetRectUnion|SDL_GetRectUnionFloat|SDL_GetRenderClipRect|SDL_GetRenderColorScale|SDL_GetRenderDrawBlendMode|SDL_GetRenderDrawColor|SDL_GetRenderDrawColorFloat|SDL_GetRenderLogicalPresentation|SDL_GetRenderLogicalPresentationRect|SDL_GetRenderOutputSize|SDL_GetRenderSafeArea|SDL_GetRenderScale|SDL_GetRenderVSync|SDL_GetRenderViewport|SDL_GetSensorData|SDL_GetStorageFileSize|SDL_GetStoragePathInfo|SDL_GetSurfaceAlphaMod|SDL_GetSurfaceBlendMode|SDL_GetSurfaceClipRect|SDL_GetSurfaceColorKey|SDL_GetSurfaceColorMod|SDL_GetTextInputArea|SDL_GetTextureAlphaMod|SDL_GetTextureAlphaModFloat|SDL_GetTextureBlendMode|SDL_GetTextureColorMod|SDL_GetTextureColorModFloat|SDL_GetTextureScaleMode|SDL_GetTextureSize|SDL_GetWindowAspectRatio|SDL_GetWindowBordersSize|SDL_GetWindowMaximumSize|SDL_GetWindowMinimumSize|SDL_GetWindowPosition|SDL_GetWindowRelativeMouseMode|SDL_GetWindowSafeArea|SDL_GetWindowSize|SDL_GetWindowSizeInPixels|SDL_GetWindowSurfaceVSync|SDL_HideCursor|SDL_HideWindow|SDL_Init|SDL_InitHapticRumble|SDL_InitSubSystem|SDL_LoadWAV|SDL_LoadWAV_IO|SDL_LockAudioStream|SDL_LockProperties|SDL_LockSurface|SDL_LockTexture|SDL_LockTextureToSurface|SDL_MaximizeWindow|SDL_MinimizeWindow|SDL_MixAudio|SDL_OpenURL|SDL_OutOfMemory|SDL_PauseAudioDevice|SDL_PauseAudioStreamDevice|SDL_PauseHaptic|SDL_PlayHapticRumble|SDL_PremultiplyAlpha|SDL_PremultiplySurfaceAlpha|SDL_PushEvent|SDL_PutAudioStreamData|SDL_RaiseWindow|SDL_ReadStorageFile|SDL_ReadSurfacePixel|SDL_ReadSurfacePixelFloat|SDL_RegisterApp|SDL_ReloadGamepadMappings|SDL_RemovePath|SDL_RemoveStoragePath|SDL_RemoveTimer|SDL_RenamePath|SDL_RenameStoragePath|SDL_RenderClear|SDL_RenderCoordinatesFromWindow|SDL_RenderCoordinatesToWindow|SDL_RenderFillRect|SDL_RenderFillRects|SDL_RenderGeometry|SDL_RenderGeometryRaw|SDL_RenderLine|SDL_RenderLines|SDL_RenderPoint|SDL_RenderPoints|SDL_RenderPresent|SDL_RenderRect|SDL_RenderRects|SDL_RenderTexture|SDL_RenderTexture9Grid|SDL_RenderTextureRotated|SDL_RenderTextureTiled|SDL_RequestAndroidPermission|SDL_RestoreWindow|SDL_ResumeAudioDevice|SDL_ResumeAudioStreamDevice|SDL_ResumeHaptic|SDL_RumbleGamepad|SDL_RumbleGamepadTriggers|SDL_RumbleJoystick|SDL_RumbleJoystickTriggers|SDL_RunHapticEffect|SDL_SaveBMP|SDL_SaveBMP_IO|SDL_SendAndroidMessage|SDL_SendGamepadEffect|SDL_SendJoystickEffect|SDL_SendJoystickVirtualSensorData|SDL_SetAppMetadata|SDL_SetAppMetadataProperty|SDL_SetAudioDeviceGain|SDL_SetAudioPostmixCallback|SDL_SetAudioStreamFormat|SDL_SetAudioStreamFrequencyRatio|SDL_SetAudioStreamGain|SDL_SetAudioStreamGetCallback|SDL_SetAudioStreamInputChannelMap|SDL_SetAudioStreamOutputChannelMap|SDL_SetAudioStreamPutCallback|SDL_SetBooleanProperty|SDL_SetClipboardData|SDL_SetClipboardText|SDL_SetCursor|SDL_SetFloatProperty|SDL_SetGamepadLED|SDL_SetGamepadMapping|SDL_SetGamepadPlayerIndex|SDL_SetGamepadSensorEnabled|SDL_SetHapticAutocenter|SDL_SetHapticGain|SDL_SetJoystickLED|SDL_SetJoystickPlayerIndex|SDL_SetJoystickVirtualAxis|SDL_SetJoystickVirtualBall|SDL_SetJoystickVirtualButton|SDL_SetJoystickVirtualHat|SDL_SetJoystickVirtualTouchpad|SDL_SetLinuxThreadPriority|SDL_SetLinuxThreadPriorityAndPolicy|SDL_SetLogPriorityPrefix|SDL_SetMemoryFunctions|SDL_SetNumberProperty|SDL_SetPaletteColors|SDL_SetPointerProperty|SDL_SetPointerPropertyWithCleanup|SDL_SetPrimarySelectionText|SDL_SetRenderClipRect|SDL_SetRenderColorScale|SDL_SetRenderDrawBlendMode|SDL_SetRenderDrawColor|SDL_SetRenderDrawColorFloat|SDL_SetRenderLogicalPresentation|SDL_SetRenderScale|SDL_SetRenderTarget|SDL_SetRenderVSync|SDL_SetRenderViewport|SDL_SetScancodeName|SDL_SetStringProperty|SDL_SetSurfaceAlphaMod|SDL_SetSurfaceBlendMode|SDL_SetSurfaceColorKey|SDL_SetSurfaceColorMod|SDL_SetSurfaceColorspace|SDL_SetSurfacePalette|SDL_SetSurfaceRLE|SDL_SetTLS|SDL_SetTextInputArea|SDL_SetTextureAlphaMod|SDL_SetTextureAlphaModFloat|SDL_SetTextureBlendMode|SDL_SetTextureColorMod|SDL_SetTextureColorModFloat|SDL_SetTextureScaleMode|SDL_SetThreadPriority|SDL_SetWindowAlwaysOnTop|SDL_SetWindowAspectRatio|SDL_SetWindowBordered|SDL_SetWindowFocusable|SDL_SetWindowFullscreen|SDL_SetWindowFullscreenMode|SDL_SetWindowHitTest|SDL_SetWindowIcon|SDL_SetWindowKeyboardGrab|SDL_SetWindowMaximumSize|SDL_SetWindowMinimumSize|SDL_SetWindowModalFor|SDL_SetWindowMouseGrab|SDL_SetWindowMouseRect|SDL_SetWindowOpacity|SDL_SetWindowPosition|SDL_SetWindowRelativeMouseMode|SDL_SetWindowResizable|SDL_SetWindowShape|SDL_SetWindowSize|SDL_SetWindowSurfaceVSync|SDL_SetWindowTitle|SDL_SetiOSAnimationCallback|SDL_ShowAndroidToast|SDL_ShowCursor|SDL_ShowMessageBox|SDL_ShowSimpleMessageBox|SDL_ShowWindow|SDL_ShowWindowSystemMenu|SDL_StartTextInput|SDL_StartTextInputWithProperties|SDL_StopHapticEffect|SDL_StopHapticEffects|SDL_StopHapticRumble|SDL_StopTextInput|SDL_SyncWindow|SDL_TimeToDateTime|SDL_TryLockMutex|SDL_TryLockRWLockForReading|SDL_TryLockRWLockForWriting|SDL_TryWaitSemaphore|SDL_UnlockAudioStream|SDL_UpdateHapticEffect|SDL_UpdateNVTexture|SDL_UpdateTexture|SDL_UpdateWindowSurface|SDL_UpdateWindowSurfaceRects|SDL_UpdateYUVTexture|SDL_Vulkan_CreateSurface|SDL_Vulkan_LoadLibrary|SDL_WaitConditionTimeout|SDL_WaitSemaphoreTimeout|SDL_WarpMouseGlobal|SDL_WriteStorageFile|SDL_WriteSurfacePixel|SDL_WriteSurfacePixelFloat)$";
@@
(
  func(
  ...
  )
- == 0
|
- func(
+ !func(
  ...
  )
- < 0
|
- func(
+ !func(
  ...
  )
- != 0
|
- func(
+ !func(
  ...
  )
- == -1
)
This commit is contained in:
Sam Lantinga
2024-08-22 17:33:49 -07:00
parent d9a5ed75b9
commit 9ff3446f03
726 changed files with 11062 additions and 11472 deletions

View File

@@ -25,7 +25,7 @@
#include "SDL_sysfilesystem.h"
#include "../stdlib/SDL_sysstdlib.h"
int SDL_RemovePath(const char *path)
SDL_bool SDL_RemovePath(const char *path)
{
if (!path) {
return SDL_InvalidParamError("path");
@@ -33,7 +33,7 @@ int SDL_RemovePath(const char *path)
return SDL_SYS_RemovePath(path);
}
int SDL_RenamePath(const char *oldpath, const char *newpath)
SDL_bool SDL_RenamePath(const char *oldpath, const char *newpath)
{
if (!oldpath) {
return SDL_InvalidParamError("oldpath");
@@ -43,7 +43,7 @@ int SDL_RenamePath(const char *oldpath, const char *newpath)
return SDL_SYS_RenamePath(oldpath, newpath);
}
int SDL_CopyFile(const char *oldpath, const char *newpath)
SDL_bool SDL_CopyFile(const char *oldpath, const char *newpath)
{
if (!oldpath) {
return SDL_InvalidParamError("oldpath");
@@ -53,7 +53,7 @@ int SDL_CopyFile(const char *oldpath, const char *newpath)
return SDL_SYS_CopyFile(oldpath, newpath);
}
int SDL_CreateDirectory(const char *path)
SDL_bool SDL_CreateDirectory(const char *path)
{
// TODO: Recursively create subdirectories
if (!path) {
@@ -62,17 +62,20 @@ int SDL_CreateDirectory(const char *path)
return SDL_SYS_CreateDirectory(path);
}
int SDL_EnumerateDirectory(const char *path, SDL_EnumerateDirectoryCallback callback, void *userdata)
SDL_bool SDL_EnumerateDirectory(const char *path, SDL_EnumerateDirectoryCallback callback, void *userdata)
{
if (!path) {
return SDL_InvalidParamError("path");
} else if (!callback) {
return SDL_InvalidParamError("callback");
}
return (SDL_SYS_EnumerateDirectory(path, path, callback, userdata) < 0) ? -1 : 0;
if (SDL_SYS_EnumerateDirectory(path, path, callback, userdata) < 0) {
return false;
}
return true;
}
int SDL_GetPathInfo(const char *path, SDL_PathInfo *info)
SDL_bool SDL_GetPathInfo(const char *path, SDL_PathInfo *info)
{
SDL_PathInfo dummy;
@@ -189,13 +192,13 @@ static char *CaseFoldUtf8String(const char *fname)
{
SDL_assert(fname != NULL);
const size_t allocation = (SDL_strlen(fname) + 1) * 3 * 4;
char *retval = (char *) SDL_malloc(allocation); // lazy: just allocating the max needed.
if (!retval) {
char *result = (char *) SDL_malloc(allocation); // lazy: just allocating the max needed.
if (!result) {
return NULL;
}
Uint32 codepoint;
char *ptr = retval;
char *ptr = result;
size_t remaining = allocation;
while ((codepoint = SDL_StepUTF8(&fname, NULL)) != 0) {
Uint32 folded[3];
@@ -218,13 +221,13 @@ static char *CaseFoldUtf8String(const char *fname)
if (remaining > 0) {
SDL_assert(allocation > remaining);
ptr = SDL_realloc(retval, allocation - remaining); // shrink it down.
if (ptr) { // shouldn't fail, but if it does, `retval` is still valid.
retval = ptr;
ptr = SDL_realloc(result, allocation - remaining); // shrink it down.
if (ptr) { // shouldn't fail, but if it does, `result` is still valid.
result = ptr;
}
}
return retval;
return result;
}
@@ -282,20 +285,20 @@ static int SDLCALL GlobDirectoryCallback(void *userdata, const char *dirname, co
data->num_entries++;
}
int retval = 1; // keep enumerating by default.
int result = 1; // keep enumerating by default.
if (matched_to_dir) {
SDL_PathInfo info;
if ((data->getpathinfo(fullpath, &info, data->fsuserdata) == 0) && (info.type == SDL_PATHTYPE_DIRECTORY)) {
if (data->getpathinfo(fullpath, &info, data->fsuserdata) && (info.type == SDL_PATHTYPE_DIRECTORY)) {
//SDL_Log("GlobDirectoryCallback: Descending into subdir '%s'", fname);
if (data->enumerator(fullpath, GlobDirectoryCallback, data, data->fsuserdata) < 0) {
retval = -1;
if (!data->enumerator(fullpath, GlobDirectoryCallback, data, data->fsuserdata)) {
result = -1;
}
}
}
SDL_free(fullpath);
return retval;
return result;
}
char **SDL_InternalGlobDirectory(const char *path, const char *pattern, SDL_GlobFlags flags, int *count, SDL_GlobEnumeratorFunc enumerator, SDL_GlobGetPathInfoFunc getpathinfo, void *userdata)
@@ -367,24 +370,24 @@ char **SDL_InternalGlobDirectory(const char *path, const char *pattern, SDL_Glob
data.fsuserdata = userdata;
data.basedirlen = SDL_strlen(path) + 1; // +1 for the '/' we'll be adding.
char **retval = NULL;
if (data.enumerator(path, GlobDirectoryCallback, &data, data.fsuserdata) == 0) {
char **result = NULL;
if (data.enumerator(path, GlobDirectoryCallback, &data, data.fsuserdata)) {
const size_t streamlen = (size_t) SDL_GetIOSize(data.string_stream);
const size_t buflen = streamlen + ((data.num_entries + 1) * sizeof (char *)); // +1 for NULL terminator at end of array.
retval = (char **) SDL_malloc(buflen);
if (retval) {
result = (char **) SDL_malloc(buflen);
if (result) {
if (data.num_entries > 0) {
Sint64 iorc = SDL_SeekIO(data.string_stream, 0, SDL_IO_SEEK_SET);
SDL_assert(iorc == 0); // this should never fail for a memory stream!
char *ptr = (char *) (retval + (data.num_entries + 1));
char *ptr = (char *) (result + (data.num_entries + 1));
iorc = SDL_ReadIO(data.string_stream, ptr, streamlen);
SDL_assert(iorc == (Sint64) streamlen); // this should never fail for a memory stream!
for (int i = 0; i < data.num_entries; i++) {
retval[i] = ptr;
result[i] = ptr;
ptr += SDL_strlen(ptr) + 1;
}
}
retval[data.num_entries] = NULL; // NULL terminate the list.
result[data.num_entries] = NULL; // NULL terminate the list.
*count = data.num_entries;
}
}
@@ -393,15 +396,15 @@ char **SDL_InternalGlobDirectory(const char *path, const char *pattern, SDL_Glob
SDL_free(folded);
SDL_free(pathcpy);
return retval;
return result;
}
static int GlobDirectoryGetPathInfo(const char *path, SDL_PathInfo *info, void *userdata)
static SDL_bool GlobDirectoryGetPathInfo(const char *path, SDL_PathInfo *info, void *userdata)
{
return SDL_GetPathInfo(path, info);
}
static int GlobDirectoryEnumerator(const char *path, SDL_EnumerateDirectoryCallback cb, void *cbuserdata, void *userdata)
static SDL_bool GlobDirectoryEnumerator(const char *path, SDL_EnumerateDirectoryCallback cb, void *cbuserdata, void *userdata)
{
return SDL_EnumerateDirectory(path, cb, cbuserdata);
}

View File

@@ -27,16 +27,16 @@ extern char *SDL_SYS_GetBasePath(void);
extern char *SDL_SYS_GetPrefPath(const char *org, const char *app);
extern char *SDL_SYS_GetUserFolder(SDL_Folder folder);
int SDL_SYS_EnumerateDirectory(const char *path, const char *dirname, SDL_EnumerateDirectoryCallback cb, void *userdata);
int SDL_SYS_RemovePath(const char *path);
int SDL_SYS_RenamePath(const char *oldpath, const char *newpath);
int SDL_SYS_CopyFile(const char *oldpath, const char *newpath);
int SDL_SYS_CreateDirectory(const char *path);
int SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info);
extern int SDL_SYS_EnumerateDirectory(const char *path, const char *dirname, SDL_EnumerateDirectoryCallback cb, void *userdata);
extern bool SDL_SYS_RemovePath(const char *path);
extern bool SDL_SYS_RenamePath(const char *oldpath, const char *newpath);
extern bool SDL_SYS_CopyFile(const char *oldpath, const char *newpath);
extern bool SDL_SYS_CreateDirectory(const char *path);
extern bool SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info);
typedef int (*SDL_GlobEnumeratorFunc)(const char *path, SDL_EnumerateDirectoryCallback cb, void *cbuserdata, void *userdata);
typedef int (*SDL_GlobGetPathInfoFunc)(const char *path, SDL_PathInfo *info, void *userdata);
char **SDL_InternalGlobDirectory(const char *path, const char *pattern, SDL_GlobFlags flags, int *count, SDL_GlobEnumeratorFunc enumerator, SDL_GlobGetPathInfoFunc getpathinfo, void *userdata);
typedef SDL_bool (*SDL_GlobEnumeratorFunc)(const char *path, SDL_EnumerateDirectoryCallback cb, void *cbuserdata, void *userdata);
typedef SDL_bool (*SDL_GlobGetPathInfoFunc)(const char *path, SDL_PathInfo *info, void *userdata);
extern char **SDL_InternalGlobDirectory(const char *path, const char *pattern, SDL_GlobFlags flags, int *count, SDL_GlobEnumeratorFunc enumerator, SDL_GlobGetPathInfoFunc getpathinfo, void *userdata);
#endif

View File

@@ -37,7 +37,7 @@ char *SDL_SYS_GetBasePath(void)
NSBundle *bundle = [NSBundle mainBundle];
const char *baseType = [[[bundle infoDictionary] objectForKey:@"SDL_FILESYSTEM_BASE_DIR_TYPE"] UTF8String];
const char *base = NULL;
char *retval = NULL;
char *result = NULL;
if (baseType == NULL) {
baseType = "resource";
@@ -53,20 +53,20 @@ char *SDL_SYS_GetBasePath(void)
if (base) {
const size_t len = SDL_strlen(base) + 2;
retval = (char *)SDL_malloc(len);
if (retval != NULL) {
SDL_snprintf(retval, len, "%s/", base);
result = (char *)SDL_malloc(len);
if (result != NULL) {
SDL_snprintf(result, len, "%s/", base);
}
}
return retval;
return result;
}
}
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
{
@autoreleasepool {
char *retval = NULL;
char *result = NULL;
NSArray *array;
if (!app) {
@@ -104,27 +104,27 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
const char *base = [str fileSystemRepresentation];
if (base) {
const size_t len = SDL_strlen(base) + SDL_strlen(org) + SDL_strlen(app) + 4;
retval = (char *)SDL_malloc(len);
if (retval != NULL) {
result = (char *)SDL_malloc(len);
if (result != NULL) {
char *ptr;
if (*org) {
SDL_snprintf(retval, len, "%s/%s/%s/", base, org, app);
SDL_snprintf(result, len, "%s/%s/%s/", base, org, app);
} else {
SDL_snprintf(retval, len, "%s/%s/", base, app);
SDL_snprintf(result, len, "%s/%s/", base, app);
}
for (ptr = retval + 1; *ptr; ptr++) {
for (ptr = result + 1; *ptr; ptr++) {
if (*ptr == '/') {
*ptr = '\0';
mkdir(retval, 0700);
mkdir(result, 0700);
*ptr = '/';
}
}
mkdir(retval, 0700);
mkdir(result, 0700);
}
}
}
return retval;
return result;
}
}
@@ -135,7 +135,7 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
SDL_SetError("tvOS does not have persistent storage");
return NULL;
#else
char *retval = NULL;
char *result = NULL;
const char* base;
NSArray *array;
NSSearchPathDirectory dir;
@@ -213,26 +213,26 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
}
append_slash:
retval = SDL_malloc(SDL_strlen(base) + 2);
if (retval == NULL) {
result = SDL_malloc(SDL_strlen(base) + 2);
if (result == NULL) {
return NULL;
}
if (SDL_snprintf(retval, SDL_strlen(base) + 2, "%s/", base) < 0) {
if (SDL_snprintf(result, SDL_strlen(base) + 2, "%s/", base) < 0) {
SDL_SetError("Couldn't snprintf folder path for Cocoa: %s", base);
SDL_free(retval);
SDL_free(result);
return NULL;
}
for (ptr = retval + 1; *ptr; ptr++) {
for (ptr = result + 1; *ptr; ptr++) {
if (*ptr == '/') {
*ptr = '\0';
mkdir(retval, 0700);
mkdir(result, 0700);
*ptr = '/';
}
}
return retval;
return result;
#endif // SDL_PLATFORM_TVOS
}
}

View File

@@ -30,30 +30,31 @@
int SDL_SYS_EnumerateDirectory(const char *path, const char *dirname, SDL_EnumerateDirectoryCallback cb, void *userdata)
{
return SDL_Unsupported();
SDL_Unsupported();
return -1;
}
int SDL_SYS_RemovePath(const char *path)
bool SDL_SYS_RemovePath(const char *path)
{
return SDL_Unsupported();
}
int SDL_SYS_RenamePath(const char *oldpath, const char *newpath)
bool SDL_SYS_RenamePath(const char *oldpath, const char *newpath)
{
return SDL_Unsupported();
}
int SDL_SYS_CopyFile(const char *oldpath, const char *newpath)
bool SDL_SYS_CopyFile(const char *oldpath, const char *newpath)
{
return SDL_Unsupported();
}
int SDL_SYS_CreateDirectory(const char *path)
bool SDL_SYS_CreateDirectory(const char *path)
{
return SDL_Unsupported();
}
int SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info)
bool SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info)
{
return SDL_Unsupported();
}

View File

@@ -40,7 +40,7 @@ char *SDL_SYS_GetBasePath(void)
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
{
const char *append = "/libsdl/";
char *retval;
char *result;
char *ptr = NULL;
size_t len = 0;
@@ -53,35 +53,35 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
}
len = SDL_strlen(append) + SDL_strlen(org) + SDL_strlen(app) + 3;
retval = (char *)SDL_malloc(len);
if (!retval) {
result = (char *)SDL_malloc(len);
if (!result) {
return NULL;
}
if (*org) {
SDL_snprintf(retval, len, "%s%s/%s/", append, org, app);
SDL_snprintf(result, len, "%s%s/%s/", append, org, app);
} else {
SDL_snprintf(retval, len, "%s%s/", append, app);
SDL_snprintf(result, len, "%s%s/", append, app);
}
for (ptr = retval + 1; *ptr; ptr++) {
for (ptr = result + 1; *ptr; ptr++) {
if (*ptr == '/') {
*ptr = '\0';
if (mkdir(retval, 0700) != 0 && errno != EEXIST) {
if (mkdir(result, 0700) != 0 && errno != EEXIST) {
goto error;
}
*ptr = '/';
}
}
if (mkdir(retval, 0700) != 0 && errno != EEXIST) {
if (mkdir(result, 0700) != 0 && errno != EEXIST) {
error:
SDL_SetError("Couldn't create directory '%s': '%s'", retval, strerror(errno));
SDL_free(retval);
SDL_SetError("Couldn't create directory '%s': '%s'", result, strerror(errno));
SDL_free(result);
return NULL;
}
return retval;
return result;
}
char *SDL_SYS_GetUserFolder(SDL_Folder folder)
@@ -99,18 +99,18 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
return NULL;
}
char *retval = SDL_malloc(SDL_strlen(home) + 2);
if (!retval) {
char *result = SDL_malloc(SDL_strlen(home) + 2);
if (!result) {
return NULL;
}
if (SDL_snprintf(retval, SDL_strlen(home) + 2, "%s/", home) < 0) {
if (SDL_snprintf(result, SDL_strlen(home) + 2, "%s/", home) < 0) {
SDL_SetError("Couldn't snprintf home path for Emscripten: %s", home);
SDL_free(retval);
SDL_free(result);
return NULL;
}
return retval;
return result;
}
#endif // SDL_FILESYSTEM_EMSCRIPTEN

View File

@@ -101,7 +101,7 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
return SDL_strdup("T:\\");
}
if (SDL_GetGDKDefaultUser(&user) < 0) {
if (!SDL_GetGDKDefaultUser(&user)) {
// Error already set, just return
return NULL;
}

View File

@@ -54,14 +54,14 @@ char *SDL_SYS_GetBasePath(void)
SDL_assert(str != NULL);
const size_t len = SDL_strlen(str);
char *retval = (char *) SDL_malloc(len + 2);
if (retval) {
SDL_memcpy(retval, str, len);
retval[len] = '/';
retval[len+1] = '\0';
char *result = (char *) SDL_malloc(len + 2);
if (result) {
SDL_memcpy(result, str, len);
result[len] = '/';
result[len+1] = '\0';
}
return retval;
return result;
}
@@ -84,23 +84,23 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
++append; // home empty or ends with separator, skip the one from append
}
len += SDL_strlen(append) + SDL_strlen(org) + SDL_strlen(app) + 3;
char *retval = (char *) SDL_malloc(len);
if (retval) {
char *result = (char *) SDL_malloc(len);
if (result) {
if (*org) {
SDL_snprintf(retval, len, "%s%s%s/%s/", home, append, org, app);
SDL_snprintf(result, len, "%s%s%s/%s/", home, append, org, app);
} else {
SDL_snprintf(retval, len, "%s%s%s/", home, append, app);
SDL_snprintf(result, len, "%s%s%s/", home, append, app);
}
create_directory(retval, 0700); // Haiku api: creates missing dirs
create_directory(result, 0700); // Haiku api: creates missing dirs
}
return retval;
return result;
}
char *SDL_SYS_GetUserFolder(SDL_Folder folder)
{
const char *home = NULL;
char *retval;
char *result;
home = SDL_getenv("HOME");
if (!home) {
@@ -110,33 +110,33 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
switch (folder) {
case SDL_FOLDER_HOME:
retval = (char *) SDL_malloc(SDL_strlen(home) + 2);
if (!retval) {
result = (char *) SDL_malloc(SDL_strlen(home) + 2);
if (!result) {
return NULL;
}
if (SDL_snprintf(retval, SDL_strlen(home) + 2, "%s/", home) < 0) {
if (SDL_snprintf(result, SDL_strlen(home) + 2, "%s/", home) < 0) {
SDL_SetError("Couldn't snprintf home path for Haiku: %s", home);
SDL_free(retval);
SDL_free(result);
return NULL;
}
return retval;
return result;
// TODO: Is Haiku's desktop folder always ~/Desktop/ ?
case SDL_FOLDER_DESKTOP:
retval = (char *) SDL_malloc(SDL_strlen(home) + 10);
if (!retval) {
result = (char *) SDL_malloc(SDL_strlen(home) + 10);
if (!result) {
return NULL;
}
if (SDL_snprintf(retval, SDL_strlen(home) + 10, "%s/Desktop/", home) < 0) {
if (SDL_snprintf(result, SDL_strlen(home) + 10, "%s/Desktop/", home) < 0) {
SDL_SetError("Couldn't snprintf desktop path for Haiku: %s/Desktop/", home);
SDL_free(retval);
SDL_free(result);
return NULL;
}
return retval;
return result;
case SDL_FOLDER_DOCUMENTS:
case SDL_FOLDER_DOWNLOADS:

View File

@@ -32,7 +32,7 @@
#include <errno.h>
static char *MakePrefPath(const char *app);
static int CreatePrefPathDir(const char *pref);
static bool CreatePrefPathDir(const char *pref);
char *SDL_SYS_GetBasePath(void)
{
@@ -53,7 +53,7 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
return NULL;
}
if (CreatePrefPathDir(pref_path) < 0) {
if (!CreatePrefPathDir(pref_path)) {
SDL_free(pref_path);
return NULL;
}
@@ -77,14 +77,14 @@ static char *MakePrefPath(const char *app)
return pref_path;
}
static int CreatePrefPathDir(const char *pref)
static bool CreatePrefPathDir(const char *pref)
{
int result = mkdir(pref, 0666);
if (result == -1 && errno != EEXIST) {
return SDL_SetError("Failed to create '%s' (%s)", pref, strerror(errno));
}
return 0;
return true;
}
#endif // SDL_FILESYSTEM_N3DS

View File

@@ -36,50 +36,51 @@
int SDL_SYS_EnumerateDirectory(const char *path, const char *dirname, SDL_EnumerateDirectoryCallback cb, void *userdata)
{
int retval = 1;
int result = 1;
DIR *dir = opendir(path);
if (!dir) {
return SDL_SetError("Can't open directory: %s", strerror(errno));
SDL_SetError("Can't open directory: %s", strerror(errno));
return -1;
}
struct dirent *ent;
while ((retval == 1) && ((ent = readdir(dir)) != NULL))
while ((result == 1) && ((ent = readdir(dir)) != NULL))
{
const char *name = ent->d_name;
if ((SDL_strcmp(name, ".") == 0) || (SDL_strcmp(name, "..") == 0)) {
continue;
}
retval = cb(userdata, dirname, name);
result = cb(userdata, dirname, name);
}
closedir(dir);
return retval;
return result;
}
int SDL_SYS_RemovePath(const char *path)
bool SDL_SYS_RemovePath(const char *path)
{
int rc = remove(path);
if (rc < 0) {
if (errno == ENOENT) {
// It's already gone, this is a success
return 0;
return true;
}
return SDL_SetError("Can't remove path: %s", strerror(errno));
}
return 0;
return true;
}
int SDL_SYS_RenamePath(const char *oldpath, const char *newpath)
bool SDL_SYS_RenamePath(const char *oldpath, const char *newpath)
{
if (rename(oldpath, newpath) < 0) {
return SDL_SetError("Can't remove path: %s", strerror(errno));
}
return 0;
return true;
}
int SDL_SYS_CopyFile(const char *oldpath, const char *newpath)
bool SDL_SYS_CopyFile(const char *oldpath, const char *newpath)
{
char *buffer = NULL;
char *tmppath = NULL;
@@ -87,7 +88,7 @@ int SDL_SYS_CopyFile(const char *oldpath, const char *newpath)
SDL_IOStream *output = NULL;
const size_t maxlen = 4096;
size_t len;
int retval = -1;
bool result = false;
if (SDL_asprintf(&tmppath, "%s.tmp", newpath) < 0) {
goto done;
@@ -120,17 +121,17 @@ int SDL_SYS_CopyFile(const char *oldpath, const char *newpath)
SDL_CloseIO(input);
input = NULL;
if (SDL_CloseIO(output) < 0) {
if (!SDL_CloseIO(output)) {
goto done;
}
output = NULL;
if (SDL_RenamePath(tmppath, newpath) < 0) {
if (!SDL_RenamePath(tmppath, newpath)) {
SDL_RemovePath(tmppath);
goto done;
}
retval = 0;
result = true;
done:
if (output) {
@@ -143,10 +144,10 @@ done:
SDL_free(tmppath);
SDL_free(buffer);
return retval;
return result;
}
int SDL_SYS_CreateDirectory(const char *path)
bool SDL_SYS_CreateDirectory(const char *path)
{
const int rc = mkdir(path, 0770);
if (rc < 0) {
@@ -154,15 +155,15 @@ int SDL_SYS_CreateDirectory(const char *path)
if (origerrno == EEXIST) {
struct stat statbuf;
if ((stat(path, &statbuf) == 0) && (S_ISDIR(statbuf.st_mode))) {
return 0; // it already exists and it's a directory, consider it success.
return true; // it already exists and it's a directory, consider it success.
}
}
return SDL_SetError("Can't create directory: %s", strerror(origerrno));
}
return 0;
return true;
}
int SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info)
bool SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info)
{
struct stat statbuf;
const int rc = stat(path, &statbuf);
@@ -194,7 +195,7 @@ int SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info)
info->modify_time = (SDL_Time)SDL_SECONDS_TO_NS(statbuf.st_mtime);
info->access_time = (SDL_Time)SDL_SECONDS_TO_NS(statbuf.st_atime);
#endif
return 0;
return true;
}
#endif // SDL_FSOPS_POSIX

View File

@@ -32,18 +32,18 @@
char *SDL_SYS_GetBasePath(void)
{
char *retval = NULL;
char *result = NULL;
size_t len;
char cwd[FILENAME_MAX];
getcwd(cwd, sizeof(cwd));
len = SDL_strlen(cwd) + 2;
retval = (char *)SDL_malloc(len);
if (retval) {
SDL_snprintf(retval, len, "%s/", cwd);
result = (char *)SDL_malloc(len);
if (result) {
SDL_snprintf(result, len, "%s/", cwd);
}
return retval;
return result;
}
// Do a recursive mkdir of parents folders
@@ -77,7 +77,7 @@ static void recursive_mkdir(const char *dir)
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
{
char *retval = NULL;
char *result = NULL;
size_t len;
if (!app) {
@@ -95,18 +95,18 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
}
len = SDL_strlen(base) + SDL_strlen(org) + SDL_strlen(app) + 4;
retval = (char *)SDL_malloc(len);
if (retval) {
result = (char *)SDL_malloc(len);
if (result) {
if (*org) {
SDL_snprintf(retval, len, "%s%s/%s/", base, org, app);
SDL_snprintf(result, len, "%s%s/%s/", base, org, app);
} else {
SDL_snprintf(retval, len, "%s%s/", base, app);
SDL_snprintf(result, len, "%s%s/", base, app);
}
recursive_mkdir(retval);
recursive_mkdir(result);
}
return retval;
return result;
}
// TODO

View File

@@ -32,23 +32,23 @@
char *SDL_SYS_GetBasePath(void)
{
char *retval = NULL;
char *result = NULL;
size_t len;
char cwd[FILENAME_MAX];
getcwd(cwd, sizeof(cwd));
len = SDL_strlen(cwd) + 2;
retval = (char *)SDL_malloc(len);
if (retval) {
SDL_snprintf(retval, len, "%s/", cwd);
result = (char *)SDL_malloc(len);
if (result) {
SDL_snprintf(result, len, "%s/", cwd);
}
return retval;
return result;
}
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
{
char *retval = NULL;
char *result = NULL;
size_t len;
if (!app) {
SDL_InvalidParamError("app");
@@ -65,18 +65,18 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
}
len = SDL_strlen(base) + SDL_strlen(org) + SDL_strlen(app) + 4;
retval = (char *)SDL_malloc(len);
if (retval) {
result = (char *)SDL_malloc(len);
if (result) {
if (*org) {
SDL_snprintf(retval, len, "%s%s/%s/", base, org, app);
SDL_snprintf(result, len, "%s%s/%s/", base, org, app);
} else {
SDL_snprintf(retval, len, "%s%s/", base, app);
SDL_snprintf(result, len, "%s%s/", base, app);
}
mkdir(retval, 0755);
mkdir(result, 0755);
}
return retval;
return result;
}
// TODO

View File

@@ -129,7 +129,7 @@ char *SDL_SYS_GetBasePath(void)
{
_kernel_swi_regs regs;
_kernel_oserror *error;
char *canon, *ptr, *retval;
char *canon, *ptr, *result;
error = _kernel_swi(OS_GetEnv, &regs, &regs);
if (error) {
@@ -147,14 +147,14 @@ char *SDL_SYS_GetBasePath(void)
*ptr = '\0';
}
retval = SDL_unixify_std(canon, NULL, 0, __RISCOSIFY_FILETYPE_NOTSPECIFIED);
result = SDL_unixify_std(canon, NULL, 0, __RISCOSIFY_FILETYPE_NOTSPECIFIED);
SDL_free(canon);
return retval;
return result;
}
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
{
char *canon, *dir, *retval;
char *canon, *dir, *result;
size_t len;
_kernel_oserror *error;
@@ -193,9 +193,9 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
return NULL;
}
retval = SDL_unixify_std(dir, NULL, 0, __RISCOSIFY_FILETYPE_NOTSPECIFIED);
result = SDL_unixify_std(dir, NULL, 0, __RISCOSIFY_FILETYPE_NOTSPECIFIED);
SDL_free(dir);
return retval;
return result;
}
// TODO

View File

@@ -44,30 +44,30 @@
static char *readSymLink(const char *path)
{
char *retval = NULL;
char *result = NULL;
ssize_t len = 64;
ssize_t rc = -1;
while (1) {
char *ptr = (char *)SDL_realloc(retval, (size_t)len);
char *ptr = (char *)SDL_realloc(result, (size_t)len);
if (!ptr) {
break;
}
retval = ptr;
result = ptr;
rc = readlink(path, retval, len);
rc = readlink(path, result, len);
if (rc == -1) {
break; // not a symlink, i/o error, etc.
} else if (rc < len) {
retval[rc] = '\0'; // readlink doesn't null-terminate.
return retval; // we're good to go.
result[rc] = '\0'; // readlink doesn't null-terminate.
return result; // we're good to go.
}
len *= 2; // grow buffer, try again.
}
SDL_free(retval);
SDL_free(result);
return NULL;
}
@@ -124,15 +124,15 @@ static char *search_path_for_binary(const char *bin)
char *SDL_SYS_GetBasePath(void)
{
char *retval = NULL;
char *result = NULL;
#ifdef SDL_PLATFORM_FREEBSD
char fullpath[PATH_MAX];
size_t buflen = sizeof(fullpath);
const int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
if (sysctl(mib, SDL_arraysize(mib), fullpath, &buflen, NULL, 0) != -1) {
retval = SDL_strdup(fullpath);
if (!retval) {
result = SDL_strdup(fullpath);
if (!result) {
return NULL;
}
}
@@ -173,11 +173,11 @@ char *SDL_SYS_GetBasePath(void)
if (exe) {
if (!pwddst) {
if (realpath(exe, realpathbuf) != NULL) {
retval = realpathbuf;
result = realpathbuf;
}
} else {
if (realpath(pwddst, realpathbuf) != NULL) {
retval = realpathbuf;
result = realpathbuf;
}
SDL_free(pwddst);
}
@@ -187,7 +187,7 @@ char *SDL_SYS_GetBasePath(void)
}
}
if (!retval) {
if (!result) {
SDL_free(realpathbuf);
}
@@ -196,37 +196,37 @@ char *SDL_SYS_GetBasePath(void)
#endif
// is a Linux-style /proc filesystem available?
if (!retval && (access("/proc", F_OK) == 0)) {
if (!result && (access("/proc", F_OK) == 0)) {
/* !!! FIXME: after 2.0.6 ships, let's delete this code and just
use the /proc/%llu version. There's no reason to have
two copies of this plus all the #ifdefs. --ryan. */
#ifdef SDL_PLATFORM_FREEBSD
retval = readSymLink("/proc/curproc/file");
result = readSymLink("/proc/curproc/file");
#elif defined(SDL_PLATFORM_NETBSD)
retval = readSymLink("/proc/curproc/exe");
result = readSymLink("/proc/curproc/exe");
#elif defined(SDL_PLATFORM_SOLARIS)
retval = readSymLink("/proc/self/path/a.out");
result = readSymLink("/proc/self/path/a.out");
#else
retval = readSymLink("/proc/self/exe"); // linux.
if (!retval) {
result = readSymLink("/proc/self/exe"); // linux.
if (!result) {
// older kernels don't have /proc/self ... try PID version...
char path[64];
const int rc = SDL_snprintf(path, sizeof(path),
"/proc/%llu/exe",
(unsigned long long)getpid());
if ((rc > 0) && (rc < sizeof(path))) {
retval = readSymLink(path);
result = readSymLink(path);
}
}
#endif
}
#ifdef SDL_PLATFORM_SOLARIS // try this as a fallback if /proc didn't pan out
if (!retval) {
if (!result) {
const char *path = getexecname();
if ((path) && (path[0] == '/')) { // must be absolute path...
retval = SDL_strdup(path);
if (!retval) {
result = SDL_strdup(path);
if (!result) {
return NULL;
}
}
@@ -235,25 +235,25 @@ char *SDL_SYS_GetBasePath(void)
/* If we had access to argv[0] here, we could check it for a path,
or troll through $PATH looking for it, too. */
if (retval) { // chop off filename.
char *ptr = SDL_strrchr(retval, '/');
if (result) { // chop off filename.
char *ptr = SDL_strrchr(result, '/');
if (ptr) {
*(ptr + 1) = '\0';
} else { // shouldn't happen, but just in case...
SDL_free(retval);
retval = NULL;
SDL_free(result);
result = NULL;
}
}
if (retval) {
if (result) {
// try to shrink buffer...
char *ptr = (char *)SDL_realloc(retval, SDL_strlen(retval) + 1);
char *ptr = (char *)SDL_realloc(result, SDL_strlen(result) + 1);
if (ptr) {
retval = ptr; // oh well if it failed.
result = ptr; // oh well if it failed.
}
}
return retval;
return result;
}
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
@@ -267,7 +267,7 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
*/
const char *envr = SDL_getenv("XDG_DATA_HOME");
const char *append;
char *retval = NULL;
char *result = NULL;
char *ptr = NULL;
size_t len = 0;
@@ -298,34 +298,34 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
}
len += SDL_strlen(append) + SDL_strlen(org) + SDL_strlen(app) + 3;
retval = (char *)SDL_malloc(len);
if (!retval) {
result = (char *)SDL_malloc(len);
if (!result) {
return NULL;
}
if (*org) {
(void)SDL_snprintf(retval, len, "%s%s%s/%s/", envr, append, org, app);
(void)SDL_snprintf(result, len, "%s%s%s/%s/", envr, append, org, app);
} else {
(void)SDL_snprintf(retval, len, "%s%s%s/", envr, append, app);
(void)SDL_snprintf(result, len, "%s%s%s/", envr, append, app);
}
for (ptr = retval + 1; *ptr; ptr++) {
for (ptr = result + 1; *ptr; ptr++) {
if (*ptr == '/') {
*ptr = '\0';
if (mkdir(retval, 0700) != 0 && errno != EEXIST) {
if (mkdir(result, 0700) != 0 && errno != EEXIST) {
goto error;
}
*ptr = '/';
}
}
if (mkdir(retval, 0700) != 0 && errno != EEXIST) {
if (mkdir(result, 0700) != 0 && errno != EEXIST) {
error:
SDL_SetError("Couldn't create directory '%s': '%s'", retval, strerror(errno));
SDL_free(retval);
SDL_SetError("Couldn't create directory '%s': '%s'", result, strerror(errno));
SDL_free(result);
return NULL;
}
return retval;
return result;
}
/*
@@ -518,8 +518,8 @@ static char *xdg_user_dir_lookup (const char *type)
char *SDL_SYS_GetUserFolder(SDL_Folder folder)
{
const char *param = NULL;
char *retval;
char *newretval;
char *result;
char *newresult;
/* According to `man xdg-user-dir`, the possible values are:
DESKTOP
@@ -540,7 +540,7 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
return NULL;
}
retval = SDL_strdup(param);
result = SDL_strdup(param);
goto append_slash;
case SDL_FOLDER_DESKTOP:
@@ -594,25 +594,25 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
return NULL;
}
retval = xdg_user_dir_lookup(param);
result = xdg_user_dir_lookup(param);
if (!retval) {
if (!result) {
SDL_SetError("XDG directory not available");
return NULL;
}
append_slash:
newretval = (char *) SDL_realloc(retval, SDL_strlen(retval) + 2);
newresult = (char *) SDL_realloc(result, SDL_strlen(result) + 2);
if (!newretval) {
SDL_free(retval);
if (!newresult) {
SDL_free(result);
return NULL;
}
retval = newretval;
SDL_strlcat(retval, "/", SDL_strlen(retval) + 2);
result = newresult;
SDL_strlcat(result, "/", SDL_strlen(result) + 2);
return retval;
return result;
}
#endif // SDL_FILESYSTEM_UNIX

View File

@@ -44,7 +44,7 @@ char *SDL_SYS_GetBasePath(void)
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
{
const char *envr = "ux0:/data/";
char *retval = NULL;
char *result = NULL;
char *ptr = NULL;
size_t len = 0;
@@ -59,27 +59,27 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
len = SDL_strlen(envr);
len += SDL_strlen(org) + SDL_strlen(app) + 3;
retval = (char *)SDL_malloc(len);
if (!retval) {
result = (char *)SDL_malloc(len);
if (!result) {
return NULL;
}
if (*org) {
SDL_snprintf(retval, len, "%s%s/%s/", envr, org, app);
SDL_snprintf(result, len, "%s%s/%s/", envr, org, app);
} else {
SDL_snprintf(retval, len, "%s%s/", envr, app);
SDL_snprintf(result, len, "%s%s/", envr, app);
}
for (ptr = retval + 1; *ptr; ptr++) {
for (ptr = result + 1; *ptr; ptr++) {
if (*ptr == '/') {
*ptr = '\0';
sceIoMkdir(retval, 0777);
sceIoMkdir(result, 0777);
*ptr = '/';
}
}
sceIoMkdir(retval, 0777);
sceIoMkdir(result, 0777);
return retval;
return result;
}
// TODO

View File

@@ -47,7 +47,7 @@ char *SDL_SYS_GetBasePath(void)
{
DWORD buflen = 128;
WCHAR *path = NULL;
char *retval = NULL;
char *result = NULL;
DWORD len = 0;
int i;
@@ -86,10 +86,10 @@ char *SDL_SYS_GetBasePath(void)
SDL_assert(i > 0); // Should have been an absolute path.
path[i + 1] = '\0'; // chop off filename.
retval = WIN_StringToUTF8W(path);
result = WIN_StringToUTF8W(path);
SDL_free(path);
return retval;
return result;
}
char *SDL_SYS_GetPrefPath(const char *org, const char *app)
@@ -103,7 +103,7 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
*/
WCHAR path[MAX_PATH];
char *retval = NULL;
char *result = NULL;
WCHAR *worg = NULL;
WCHAR *wapp = NULL;
size_t new_wpath_len = 0;
@@ -171,9 +171,9 @@ char *SDL_SYS_GetPrefPath(const char *org, const char *app)
SDL_wcslcat(path, L"\\", SDL_arraysize(path));
retval = WIN_StringToUTF8W(path);
result = WIN_StringToUTF8W(path);
return retval;
return result;
}
char *SDL_SYS_GetUserFolder(SDL_Folder folder)
@@ -181,7 +181,7 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
typedef HRESULT (WINAPI *pfnSHGetKnownFolderPath)(REFGUID /* REFKNOWNFOLDERID */, DWORD, HANDLE, PWSTR*);
HMODULE lib = LoadLibrary(L"Shell32.dll");
pfnSHGetKnownFolderPath pSHGetKnownFolderPath = NULL;
char *retval = NULL;
char *result = NULL;
if (lib) {
pSHGetKnownFolderPath = (pfnSHGetKnownFolderPath)GetProcAddress(lib, "SHGetKnownFolderPath");
@@ -189,7 +189,7 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
if (pSHGetKnownFolderPath) {
GUID type; // KNOWNFOLDERID
HRESULT result;
HRESULT hr;
wchar_t *path;
switch (folder) {
@@ -242,16 +242,16 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
goto done;
};
result = pSHGetKnownFolderPath(&type, 0x00008000 /* KF_FLAG_CREATE */, NULL, &path);
if (SUCCEEDED(result)) {
retval = WIN_StringToUTF8W(path);
hr = pSHGetKnownFolderPath(&type, 0x00008000 /* KF_FLAG_CREATE */, NULL, &path);
if (SUCCEEDED(hr)) {
result = WIN_StringToUTF8W(path);
} else {
WIN_SetErrorFromHRESULT("Couldn't get folder", result);
WIN_SetErrorFromHRESULT("Couldn't get folder", hr);
}
} else {
int type;
HRESULT result;
HRESULT hr;
wchar_t path[MAX_PATH];
switch (folder) {
@@ -309,38 +309,38 @@ char *SDL_SYS_GetUserFolder(SDL_Folder folder)
#if 0
// Apparently the oldest, but not supported in modern Windows
HRESULT result = SHGetSpecialFolderPath(NULL, path, type, TRUE);
HRESULT hr = SHGetSpecialFolderPath(NULL, path, type, TRUE);
#endif
/* Windows 2000/XP and later, deprecated as of Windows 10 (still
available), available in Wine (tested 6.0.3) */
result = SHGetFolderPathW(NULL, type, NULL, SHGFP_TYPE_CURRENT, path);
hr = SHGetFolderPathW(NULL, type, NULL, SHGFP_TYPE_CURRENT, path);
// use `== TRUE` for SHGetSpecialFolderPath
if (SUCCEEDED(result)) {
retval = WIN_StringToUTF8W(path);
if (SUCCEEDED(hr)) {
result = WIN_StringToUTF8W(path);
} else {
WIN_SetErrorFromHRESULT("Couldn't get folder", result);
WIN_SetErrorFromHRESULT("Couldn't get folder", hr);
}
}
if (retval) {
char *newretval = (char *) SDL_realloc(retval, SDL_strlen(retval) + 2);
if (result) {
char *newresult = (char *) SDL_realloc(result, SDL_strlen(result) + 2);
if (!newretval) {
SDL_free(retval);
retval = NULL; // will be returned
if (!newresult) {
SDL_free(result);
result = NULL; // will be returned
goto done;
}
retval = newretval;
SDL_strlcat(retval, "\\", SDL_strlen(retval) + 2);
result = newresult;
SDL_strlcat(result, "\\", SDL_strlen(result) + 2);
}
done:
if (lib) {
FreeLibrary(lib);
}
return retval;
return result;
}
#endif // SDL_FILESYSTEM_WINDOWS

View File

@@ -31,14 +31,14 @@
int SDL_SYS_EnumerateDirectory(const char *path, const char *dirname, SDL_EnumerateDirectoryCallback cb, void *userdata)
{
int retval = 1;
int result = 1;
if (*path == '\0') { // if empty (completely at the root), we need to enumerate drive letters.
const DWORD drives = GetLogicalDrives();
char name[3] = { 0, ':', '\0' };
for (int i = 'A'; (retval == 1) && (i <= 'Z'); i++) {
for (int i = 'A'; (result == 1) && (i <= 'Z'); i++) {
if (drives & (1 << (i - 'A'))) {
name[0] = (char) i;
retval = cb(userdata, dirname, name);
result = cb(userdata, dirname, name);
}
}
} else {
@@ -63,7 +63,8 @@ int SDL_SYS_EnumerateDirectory(const char *path, const char *dirname, SDL_Enumer
HANDLE dir = FindFirstFileExW(wpattern, FindExInfoStandard, &entw, FindExSearchNameMatch, NULL, 0);
SDL_free(wpattern);
if (dir == INVALID_HANDLE_VALUE) {
return WIN_SetError("Failed to enumerate directory");
WIN_SetError("Failed to enumerate directory");
return -1;
}
do {
@@ -77,31 +78,31 @@ int SDL_SYS_EnumerateDirectory(const char *path, const char *dirname, SDL_Enumer
char *utf8fn = WIN_StringToUTF8W(fn);
if (!utf8fn) {
retval = -1;
result = -1;
} else {
retval = cb(userdata, dirname, utf8fn);
result = cb(userdata, dirname, utf8fn);
SDL_free(utf8fn);
}
} while ((retval == 1) && (FindNextFileW(dir, &entw) != 0));
} while ((result == 1) && (FindNextFileW(dir, &entw) != 0));
FindClose(dir);
}
return retval;
return result;
}
int SDL_SYS_RemovePath(const char *path)
bool SDL_SYS_RemovePath(const char *path)
{
WCHAR *wpath = WIN_UTF8ToStringW(path);
if (!wpath) {
return -1;
return false;
}
WIN32_FILE_ATTRIBUTE_DATA info;
if (!GetFileAttributesExW(wpath, GetFileExInfoStandard, &info)) {
if (GetLastError() == ERROR_FILE_NOT_FOUND) {
// Note that ERROR_PATH_NOT_FOUND means a parent dir is missing, and we consider that an error.
return 0; // thing is already gone, call it a success.
return true; // thing is already gone, call it a success.
}
return WIN_SetError("Couldn't get path's attributes");
}
@@ -109,64 +110,76 @@ int SDL_SYS_RemovePath(const char *path)
const int isdir = (info.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
const BOOL rc = isdir ? RemoveDirectoryW(wpath) : DeleteFileW(wpath);
SDL_free(wpath);
return !rc ? WIN_SetError("Couldn't remove path") : 0;
if (!rc) {
return WIN_SetError("Couldn't remove path");
}
return true;
}
int SDL_SYS_RenamePath(const char *oldpath, const char *newpath)
bool SDL_SYS_RenamePath(const char *oldpath, const char *newpath)
{
WCHAR *woldpath = WIN_UTF8ToStringW(oldpath);
if (!woldpath) {
return -1;
return false;
}
WCHAR *wnewpath = WIN_UTF8ToStringW(newpath);
if (!wnewpath) {
SDL_free(woldpath);
return -1;
return false;
}
const BOOL rc = MoveFileExW(woldpath, wnewpath, MOVEFILE_REPLACE_EXISTING);
SDL_free(wnewpath);
SDL_free(woldpath);
return !rc ? WIN_SetError("Couldn't rename path") : 0;
if (!rc) {
return WIN_SetError("Couldn't rename path");
}
return true;
}
int SDL_SYS_CopyFile(const char *oldpath, const char *newpath)
bool SDL_SYS_CopyFile(const char *oldpath, const char *newpath)
{
WCHAR *woldpath = WIN_UTF8ToStringW(oldpath);
if (!woldpath) {
return -1;
return false;
}
WCHAR *wnewpath = WIN_UTF8ToStringW(newpath);
if (!wnewpath) {
SDL_free(woldpath);
return -1;
return false;
}
const BOOL rc = CopyFileW(woldpath, wnewpath, TRUE);
SDL_free(wnewpath);
SDL_free(woldpath);
return !rc ? WIN_SetError("Couldn't copy path") : 0;
if (!rc) {
return WIN_SetError("Couldn't copy path");
}
return true;
}
int SDL_SYS_CreateDirectory(const char *path)
bool SDL_SYS_CreateDirectory(const char *path)
{
WCHAR *wpath = WIN_UTF8ToStringW(path);
if (!wpath) {
return -1;
return false;
}
const DWORD rc = CreateDirectoryW(wpath, NULL);
SDL_free(wpath);
return !rc ? WIN_SetError("Couldn't create directory") : 0;
if (!rc) {
return WIN_SetError("Couldn't create directory");
}
return true;
}
int SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info)
bool SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info)
{
WCHAR *wpath = WIN_UTF8ToStringW(path);
if (!wpath) {
return -1;
return false;
}
WIN32_FILE_ATTRIBUTE_DATA winstat;
@@ -191,7 +204,7 @@ int SDL_SYS_GetPathInfo(const char *path, SDL_PathInfo *info)
info->modify_time = SDL_TimeFromWindows(winstat.ftLastWriteTime.dwLowDateTime, winstat.ftLastWriteTime.dwHighDateTime);
info->access_time = SDL_TimeFromWindows(winstat.ftLastAccessTime.dwLowDateTime, winstat.ftLastAccessTime.dwHighDateTime);
return 0;
return true;
}
#endif // SDL_FSOPS_WINDOWS

View File

@@ -149,7 +149,7 @@ extern "C" char *SDL_SYS_GetPrefPath(const char *org, const char *app)
const WCHAR *srcPath = NULL;
WCHAR path[MAX_PATH];
char *retval = NULL;
char *result = NULL;
WCHAR *worg = NULL;
WCHAR *wapp = NULL;
size_t new_wpath_len = 0;
@@ -224,9 +224,9 @@ extern "C" char *SDL_SYS_GetPrefPath(const char *org, const char *app)
SDL_wcslcat(path, L"\\", new_wpath_len + 1);
retval = WIN_StringToUTF8W(path);
result = WIN_StringToUTF8W(path);
return retval;
return result;
}
char *SDL_SYS_GetUserFolder(SDL_Folder folder)