From 8c5bda6acd2089c4bd31c6b8c141637dd32143c0 Mon Sep 17 00:00:00 2001
From: Ivan Epifanov <[EMAIL REDACTED]>
Date: Wed, 18 May 2022 17:58:35 +0300
Subject: [PATCH] Vita: remove Vita-specific RWOps code
---
include/SDL_rwops.h | 14 ---
src/file/SDL_rwops.c | 243 -------------------------------------------
2 files changed, 257 deletions(-)
diff --git a/include/SDL_rwops.h b/include/SDL_rwops.h
index 71e5c8db825..30b69a8064d 100644
--- a/include/SDL_rwops.h
+++ b/include/SDL_rwops.h
@@ -45,9 +45,6 @@ extern "C" {
#define SDL_RWOPS_JNIFILE 3U /**< Android asset */
#define SDL_RWOPS_MEMORY 4U /**< Memory stream */
#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */
-#if defined(__VITA__)
-#define SDL_RWOPS_VITAFILE 6U /**< Vita file */
-#endif
/**
* This is the read/write operation structure -- very basic.
@@ -113,17 +110,6 @@ typedef struct SDL_RWops
size_t left;
} buffer;
} windowsio;
-#elif defined(__VITA__)
- struct
- {
- int h;
- struct
- {
- void *data;
- size_t size;
- size_t left;
- } buffer;
- } vitaio;
#endif
#ifdef HAVE_STDIO_H
diff --git a/src/file/SDL_rwops.c b/src/file/SDL_rwops.c
index 670d4dd9a78..0b4cc17b257 100644
--- a/src/file/SDL_rwops.c
+++ b/src/file/SDL_rwops.c
@@ -62,235 +62,6 @@
#include "nacl_io/nacl_io.h"
#endif
-#ifdef __VITA__
-
-#include <psp2/io/fcntl.h>
-#include <psp2/io/stat.h>
-
-#define READAHEAD_BUFFER_SIZE 1024
-static int SDLCALL
-vita_file_open(SDL_RWops * context, const char *filename, const char *mode)
-{
- int h;
- int open_flags;
- SDL_bool has_r;
- SDL_bool has_w;
- SDL_bool has_a;
- SDL_bool has_plus;
-
- if (!context)
- return -1; /* failed (invalid call) */
-
- context->hidden.vitaio.h = -1; /* mark this as unusable */
- context->hidden.vitaio.buffer.data = NULL;
- context->hidden.vitaio.buffer.size = 0;
- context->hidden.vitaio.buffer.left = 0;
-
- open_flags = 0;
-
- /* "r" = reading, file must exist */
- /* "w" = writing, truncate existing, file may not exist */
- /* "r+"= reading or writing, file must exist */
- /* "a" = writing, append file may not exist */
- /* "a+"= append + read, file may not exist */
- /* "w+" = read, write, truncate. file may not exist */
-
- has_r = SDL_strchr(mode, 'r') != NULL;
- has_w = SDL_strchr(mode, 'w') != NULL;
- has_a = SDL_strchr(mode, 'a') != NULL;
- has_plus = SDL_strchr(mode, '+') != NULL;
-
- if (has_plus)
- {
- if (has_r || has_w || has_a)
- {
- open_flags |= SCE_O_RDWR;
- }
- }
- else
- {
- if (has_r)
- {
- open_flags |= SCE_O_RDONLY;
- }
- if (has_w || has_a)
- {
- open_flags |= SCE_O_WRONLY;
- }
- }
- if (has_w || has_a)
- {
- open_flags |= SCE_O_CREAT;
- }
- if (has_w)
- {
- open_flags |= SCE_O_TRUNC;
- }
- if (has_a)
- {
- open_flags |= SCE_O_APPEND;
- }
-
- context->hidden.vitaio.buffer.data =
- (char *) SDL_malloc(READAHEAD_BUFFER_SIZE);
- if (!context->hidden.vitaio.buffer.data) {
- return SDL_OutOfMemory();
- }
-
- /* Try to open the file on the filesystem first */
- h = sceIoOpen(filename, open_flags, 0777);
-
- if (h < 0) {
- /* Try opening it from app0:/ container if it's a relative path */
- char path[4096];
- SDL_snprintf(path, 4096, "app0:/%s", filename);
- h = sceIoOpen(path, open_flags, 0777);
- }
-
- if (h < 0) {
- SDL_free(context->hidden.vitaio.buffer.data);
- context->hidden.vitaio.buffer.data = NULL;
- SDL_SetError("Couldn't open %s", filename);
- return -2; /* failed (sceIoOpen) */
- }
- context->hidden.vitaio.h = h;
-
- return 0; /* ok */
-}
-
-static Sint64 SDLCALL
-vita_file_size(SDL_RWops * context)
-{
- SceIoStat st;
- if (!context || context->hidden.vitaio.h < 0) {
- return SDL_SetError("vita_file_size: invalid context/file not opened");
- }
-
- if (sceIoGetstatByFd(context->hidden.vitaio.h, &st) < 0) {
- return SDL_SetError("vita_file_size: could not get file size");
- }
- return st.st_size;
-}
-
-static Sint64 SDLCALL
-vita_file_seek(SDL_RWops * context, Sint64 offset, int whence)
-{
- int vitawhence;
-
- if (!context || context->hidden.vitaio.h < 0) {
- return SDL_SetError("vita_file_seek: invalid context/file not opened");
- }
-
- /* FIXME: We may be able to satisfy the seek within buffered data */
- if (whence == RW_SEEK_CUR && context->hidden.vitaio.buffer.left) {
- offset -= (long)context->hidden.vitaio.buffer.left;
- }
- context->hidden.vitaio.buffer.left = 0;
-
- switch (whence) {
- case RW_SEEK_SET:
- vitawhence = SCE_SEEK_SET;
- break;
- case RW_SEEK_CUR:
- vitawhence = SCE_SEEK_CUR;
- break;
- case RW_SEEK_END:
- vitawhence = SCE_SEEK_END;
- break;
- default:
- return SDL_SetError("vita_file_seek: Unknown value for 'whence'");
- }
-
- return sceIoLseek(context->hidden.vitaio.h, offset, vitawhence);
-}
-
-static size_t SDLCALL
-vita_file_read(SDL_RWops * context, void *ptr, size_t size, size_t maxnum)
-{
- size_t total_need;
- size_t total_read = 0;
- size_t read_ahead;
- size_t byte_read;
-
- total_need = size * maxnum;
-
- if (!context || context->hidden.vitaio.h < 0 || !total_need) {
- return 0;
- }
-
- if (context->hidden.vitaio.buffer.left > 0) {
- void *data = (char *) context->hidden.vitaio.buffer.data +
- context->hidden.vitaio.buffer.size -
- context->hidden.vitaio.buffer.left;
- read_ahead =
- SDL_min(total_need, context->hidden.vitaio.buffer.left);
- SDL_memcpy(ptr, data, read_ahead);
- context->hidden.vitaio.buffer.left -= read_ahead;
-
- if (read_ahead == total_need) {
- return maxnum;
- }
- ptr = (char *) ptr + read_ahead;
- total_need -= read_ahead;
- total_read += read_ahead;
- }
-
- if (total_need < READAHEAD_BUFFER_SIZE) {
- byte_read = sceIoRead(context->hidden.vitaio.h, context->hidden.vitaio.buffer.data, READAHEAD_BUFFER_SIZE);
- read_ahead = SDL_min(total_need, (int) byte_read);
- SDL_memcpy(ptr, context->hidden.vitaio.buffer.data, read_ahead);
- context->hidden.vitaio.buffer.size = byte_read;
- context->hidden.vitaio.buffer.left = byte_read - read_ahead;
- total_read += read_ahead;
- } else {
- byte_read = sceIoRead(context->hidden.vitaio.h, ptr, total_need);
- total_read += byte_read;
- }
- return (total_read / size);
-}
-
-static size_t SDLCALL
-vita_file_write(SDL_RWops * context, const void *ptr, size_t size,
- size_t num)
-{
-
- size_t total_bytes;
- size_t byte_written;
- size_t nwritten;
-
- total_bytes = size * num;
-
- if (!context || context->hidden.vitaio.h < 0 || !size || !total_bytes) {
- return 0;
- }
-
- if (context->hidden.vitaio.buffer.left) {
- sceIoLseek(context->hidden.vitaio.h, -(SceOff)context->hidden.vitaio.buffer.left, SCE_SEEK_CUR);
- context->hidden.vitaio.buffer.left = 0;
- }
-
- byte_written = sceIoWrite(context->hidden.vitaio.h, ptr, total_bytes);
-
- nwritten = byte_written / size;
- return nwritten;
-}
-
-static int SDLCALL
-vita_file_close(SDL_RWops * context)
-{
- if (context) {
- if (context->hidden.vitaio.h >= 0) {
- sceIoClose(context->hidden.vitaio.h);
- context->hidden.vitaio.h = -1; /* to be sure */
- }
- SDL_free(context->hidden.vitaio.buffer.data);
- context->hidden.vitaio.buffer.data = NULL;
- SDL_FreeRW(context);
- }
- return 0;
-}
-#endif
-
#ifdef __WIN32__
/* Functions to read/write Win32 API file pointers */
@@ -817,20 +588,6 @@ SDL_RWFromFile(const char *file, const char *mode)
rwops->write = windows_file_write;
rwops->close = windows_file_close;
rwops->type = SDL_RWOPS_WINFILE;
-#elif defined(__VITA__)
- rwops = SDL_AllocRW();
- if (!rwops)
- return NULL; /* SDL_SetError already setup by SDL_AllocRW() */
- if (vita_file_open(rwops, file, mode) < 0) {
- SDL_FreeRW(rwops);
- return NULL;
- }
- rwops->size = vita_file_size;
- rwops->seek = vita_file_seek;
- rwops->read = vita_file_read;
- rwops->write = vita_file_write;
- rwops->close = vita_file_close;
- rwops->type = SDL_RWOPS_VITAFILE;
#elif HAVE_STDIO_H
{
#if __APPLE__ && !SDL_FILE_DISABLED // TODO: add dummy?