mirror of
https://github.com/knightfox75/nds_nflib.git
synced 2025-06-18 08:45:35 -04:00
library: Improve error checking when loading files
This commit is contained in:
parent
71700aab03
commit
e6567ee10f
@ -1,7 +1,7 @@
|
|||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
//
|
//
|
||||||
// Copyright (c) 2009-2014 Cesar Rincon "NightFox"
|
// Copyright (c) 2009-2014 Cesar Rincon "NightFox"
|
||||||
// Copyright (c) 2023 Antonio Niño Díaz "AntonioND"
|
// Copyright (c) 2023-2024 Antonio Niño Díaz "AntonioND"
|
||||||
//
|
//
|
||||||
// NightFox LIB - Basic and debug functions
|
// NightFox LIB - Basic and debug functions
|
||||||
// http://www.nightfoxandco.com/
|
// http://www.nightfoxandco.com/
|
||||||
@ -144,6 +144,21 @@ __attribute__((noreturn)) void NF_Error(u32 code, const char *text, unsigned int
|
|||||||
iprintf("8x8 Sprites can't be used\n");
|
iprintf("8x8 Sprites can't be used\n");
|
||||||
iprintf("in 1D_128 mode.\n");
|
iprintf("in 1D_128 mode.\n");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 121: // Failed to fseek()
|
||||||
|
iprintf("fseek() failed:\n");
|
||||||
|
iprintf("%s\n", text);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 122: // Failed to fread()
|
||||||
|
iprintf("fread() failed:\n");
|
||||||
|
iprintf("%s\n", text);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 123: // Failed to fclose()
|
||||||
|
iprintf("fclose() failed:\n");
|
||||||
|
iprintf("%s\n", text);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Print error code
|
// Print error code
|
||||||
@ -329,7 +344,9 @@ void NF_FileLoad(const char *path, char **buffer, size_t *size, size_t min_size)
|
|||||||
NF_Error(101, path, 0);
|
NF_Error(101, path, 0);
|
||||||
|
|
||||||
// Get file size
|
// Get file size
|
||||||
fseek(f, 0, SEEK_END);
|
if (fseek(f, 0, SEEK_END) != 0)
|
||||||
|
NF_Error(121, path, 0);
|
||||||
|
|
||||||
size_t size_ = ftell(f);
|
size_t size_ = ftell(f);
|
||||||
rewind(f);
|
rewind(f);
|
||||||
|
|
||||||
@ -353,8 +370,11 @@ void NF_FileLoad(const char *path, char **buffer, size_t *size, size_t min_size)
|
|||||||
*buffer = buffer_;
|
*buffer = buffer_;
|
||||||
|
|
||||||
// Read full file to the start of the buffer
|
// Read full file to the start of the buffer
|
||||||
fread(buffer_, 1, size_, f);
|
if (fread(buffer_, 1, size_, f) != size_)
|
||||||
fclose(f);
|
NF_Error(122, path, 0);
|
||||||
|
|
||||||
|
if (fclose(f) != 0)
|
||||||
|
NF_Error(123, path, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NF_FileExists(const char *path)
|
bool NF_FileExists(const char *path)
|
||||||
@ -363,6 +383,8 @@ bool NF_FileExists(const char *path)
|
|||||||
if (f == NULL)
|
if (f == NULL)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
fclose(f);
|
if (fclose(f) != 0)
|
||||||
|
NF_Error(123, path, 0);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user