mirror of
https://github.com/love2d/megasource.git
synced 2026-08-21 13:10:24 +02:00
update SDL3 to latest commit
This commit is contained in:
+43
-22
@@ -10,13 +10,6 @@
|
||||
freely.
|
||||
*/
|
||||
|
||||
/* quiet windows compiler warnings */
|
||||
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_WARNINGS)
|
||||
#define _CRT_SECURE_NO_WARNINGS
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <SDL3/SDL.h>
|
||||
#include <SDL3/SDL_main.h>
|
||||
#include <SDL3/SDL_test.h>
|
||||
@@ -33,6 +26,34 @@ widelen(char *data)
|
||||
return len;
|
||||
}
|
||||
|
||||
static char *get_next_line(Uint8 **fdataptr, size_t *fdatalen)
|
||||
{
|
||||
char *result = (char *) *fdataptr;
|
||||
Uint8 *ptr = *fdataptr;
|
||||
size_t len = *fdatalen;
|
||||
|
||||
if (len == 0) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
while (len > 0) {
|
||||
if (*ptr == '\r') {
|
||||
*ptr = '\0';
|
||||
} else if (*ptr == '\n') {
|
||||
*ptr = '\0';
|
||||
ptr++;
|
||||
len--;
|
||||
break;
|
||||
}
|
||||
ptr++;
|
||||
len--;
|
||||
}
|
||||
|
||||
*fdataptr = ptr;
|
||||
*fdatalen = len;
|
||||
return result;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
const char *formats[] = {
|
||||
@@ -51,13 +72,15 @@ int main(int argc, char *argv[])
|
||||
};
|
||||
|
||||
char *fname = NULL;
|
||||
char buffer[BUFSIZ];
|
||||
char *ucs4;
|
||||
char *test[2];
|
||||
int i;
|
||||
FILE *file;
|
||||
int errors = 0;
|
||||
SDLTest_CommonState *state;
|
||||
Uint8 *fdata = NULL;
|
||||
Uint8 *fdataptr = NULL;
|
||||
char *line = NULL;
|
||||
size_t fdatalen = 0;
|
||||
|
||||
/* Initialize test framework */
|
||||
state = SDLTest_CommonCreateState(argv, 0);
|
||||
@@ -65,9 +88,6 @@ int main(int argc, char *argv[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Enable standard application logging */
|
||||
SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
|
||||
|
||||
/* Parse commandline */
|
||||
for (i = 1; i < argc;) {
|
||||
int consumed;
|
||||
@@ -89,20 +109,19 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
|
||||
fname = GetResourceFilename(fname, "utf8.txt");
|
||||
file = fopen(fname, "rb");
|
||||
if (!file) {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unable to open %s\n", fname);
|
||||
fdata = (Uint8 *) (fname ? SDL_LoadFile(fname, &fdatalen) : NULL);
|
||||
if (!fdata) {
|
||||
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Unable to load %s\n", fname);
|
||||
return 1;
|
||||
}
|
||||
SDL_free(fname);
|
||||
|
||||
while (fgets(buffer, sizeof(buffer), file)) {
|
||||
fdataptr = fdata;
|
||||
while ((line = get_next_line(&fdataptr, &fdatalen)) != NULL) {
|
||||
/* Convert to UCS-4 */
|
||||
size_t len;
|
||||
ucs4 =
|
||||
SDL_iconv_string("UCS-4", "UTF-8", buffer,
|
||||
SDL_strlen(buffer) + 1);
|
||||
ucs4 = SDL_iconv_string("UCS-4", "UTF-8", line, SDL_strlen(line) + 1);
|
||||
len = (widelen(ucs4) + 1) * 4;
|
||||
|
||||
for (i = 0; i < SDL_arraysize(formats); ++i) {
|
||||
test[0] = SDL_iconv_string(formats[i], "UCS-4", ucs4, len);
|
||||
test[1] = SDL_iconv_string("UCS-4", formats[i], test[0], len);
|
||||
@@ -115,12 +134,14 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
test[0] = SDL_iconv_string("UTF-8", "UCS-4", ucs4, len);
|
||||
SDL_free(ucs4);
|
||||
(void)fputs(test[0], stdout);
|
||||
SDL_Log("%s", test[0]);
|
||||
SDL_free(test[0]);
|
||||
}
|
||||
(void)fclose(file);
|
||||
SDL_free(fdata);
|
||||
SDL_free(fname);
|
||||
|
||||
SDL_LogInfo(SDL_LOG_CATEGORY_APPLICATION, "Total errors: %d\n", errors);
|
||||
SDL_Quit();
|
||||
SDLTest_CommonDestroyState(state);
|
||||
return errors ? errors + 1 : 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user