summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2012-01-25 15:22:00 +0300
committerAndrei Karas <akaras@inbox.ru>2012-01-25 16:24:59 +0300
commit56808acbf7824832864fffc84ef05b00de5f2df6 (patch)
treec62eeab7f81b8ff185d07649869e09e4e7b056fe /src
parente15445f0f8f95f1547798b886b002146d282c006 (diff)
downloadmanaverse-56808acbf7824832864fffc84ef05b00de5f2df6.tar.gz
manaverse-56808acbf7824832864fffc84ef05b00de5f2df6.tar.bz2
manaverse-56808acbf7824832864fffc84ef05b00de5f2df6.tar.xz
manaverse-56808acbf7824832864fffc84ef05b00de5f2df6.zip
Cleanup in physfsrwops to avoid different problems.
Diffstat (limited to 'src')
-rw-r--r--src/utils/physfsrwops.cpp87
-rw-r--r--src/utils/physfsrwops.h26
2 files changed, 50 insertions, 63 deletions
diff --git a/src/utils/physfsrwops.cpp b/src/utils/physfsrwops.cpp
index 1a5a71374..1960f0dee 100644
--- a/src/utils/physfsrwops.cpp
+++ b/src/utils/physfsrwops.cpp
@@ -18,21 +18,24 @@
* SDL falls under the LGPL license. You can get SDL at http://www.libsdl.org/
*
* This file was written by Ryan C. Gordon. (icculus@icculus.org).
+ *
+ * Copyright (C) 2012 The ManaPlus Developers
*/
#include <stdio.h> /* used for SEEK_SET, SEEK_CUR, SEEK_END ... */
-#include "physfsrwops.h"
+#include "utils/physfsrwops.h"
+
+#include "localconsts.h"
static int physfsrwops_seek(SDL_RWops *rw, int offset, int whence)
{
- PHYSFS_File *handle = (PHYSFS_File *) rw->hidden.unknown.data1;
+ PHYSFS_file *handle = (PHYSFS_file *) rw->hidden.unknown.data1;
int pos = 0;
if (whence == SEEK_SET)
{
pos = offset;
} /* if */
-
else if (whence == SEEK_CUR)
{
PHYSFS_sint64 current = PHYSFS_tell(handle);
@@ -40,66 +43,63 @@ static int physfsrwops_seek(SDL_RWops *rw, int offset, int whence)
{
SDL_SetError("Can't find position in file: %s",
PHYSFS_getLastError());
- return(-1);
+ return -1;
} /* if */
- pos = (int) current;
- if ( ((PHYSFS_sint64) pos) != current )
+ pos = (int)current;
+ if (((PHYSFS_sint64)pos) != current)
{
SDL_SetError("Can't fit current file position in an int!");
- return(-1);
+ return -1;
} /* if */
if (offset == 0) /* this is a "tell" call. We're done. */
- return(pos);
+ return pos;
pos += offset;
} /* else if */
-
else if (whence == SEEK_END)
{
PHYSFS_sint64 len = PHYSFS_fileLength(handle);
if (len == -1)
{
SDL_SetError("Can't find end of file: %s", PHYSFS_getLastError());
- return(-1);
+ return -1;
} /* if */
- pos = (int) len;
- if ( ((PHYSFS_sint64) pos) != len )
+ pos = (int)len;
+ if (((PHYSFS_sint64)pos) != len)
{
SDL_SetError("Can't fit end-of-file position in an int!");
- return(-1);
+ return -1;
} /* if */
pos += offset;
} /* else if */
-
else
{
SDL_SetError("Invalid 'whence' parameter.");
- return(-1);
+ return -1;
} /* else */
if ( pos < 0 )
{
SDL_SetError("Attempt to seek past start of file.");
- return(-1);
+ return -1;
} /* if */
if (!PHYSFS_seek(handle, (PHYSFS_uint64) pos))
{
SDL_SetError("PhysicsFS error: %s", PHYSFS_getLastError());
- return(-1);
+ return -1;
} /* if */
- return(pos);
+ return pos;
} /* physfsrwops_seek */
-
static int physfsrwops_read(SDL_RWops *rw, void *ptr, int size, int maxnum)
{
- PHYSFS_File *handle = (PHYSFS_File *) rw->hidden.unknown.data1;
+ PHYSFS_file *handle = (PHYSFS_file*)rw->hidden.unknown.data1;
PHYSFS_sint64 rc = PHYSFS_read(handle, ptr, size, maxnum);
if (rc != maxnum)
{
@@ -107,45 +107,44 @@ static int physfsrwops_read(SDL_RWops *rw, void *ptr, int size, int maxnum)
SDL_SetError("PhysicsFS error: %s", PHYSFS_getLastError());
} /* if */
- return((int) rc);
+ return (int)rc;
} /* physfsrwops_read */
-
static int physfsrwops_write(SDL_RWops *rw, const void *ptr, int size, int num)
{
- PHYSFS_File *handle = (PHYSFS_File *) rw->hidden.unknown.data1;
+ PHYSFS_file *handle = (PHYSFS_file*)rw->hidden.unknown.data1;
PHYSFS_sint64 rc = PHYSFS_write(handle, ptr, size, num);
if (rc != num)
SDL_SetError("PhysicsFS error: %s", PHYSFS_getLastError());
- return((int) rc);
+ return (int) rc;
} /* physfsrwops_write */
-
static int physfsrwops_close(SDL_RWops *rw)
{
- PHYSFS_File *handle = (PHYSFS_File *) rw->hidden.unknown.data1;
+ PHYSFS_file *handle = (PHYSFS_file*)rw->hidden.unknown.data1;
if (!PHYSFS_close(handle))
{
SDL_SetError("PhysicsFS error: %s", PHYSFS_getLastError());
- return(-1);
+ return -1;
} /* if */
SDL_FreeRW(rw);
- return(0);
+ return 0;
} /* physfsrwops_close */
-
-static SDL_RWops *create_rwops(PHYSFS_File *handle)
+static SDL_RWops *create_rwops(PHYSFS_file *handle)
{
- SDL_RWops *retval = NULL;
+ SDL_RWops *retval = nullptr;
- if (handle == NULL)
+ if (!handle)
+ {
SDL_SetError("PhysicsFS error: %s", PHYSFS_getLastError());
+ }
else
{
retval = SDL_AllocRW();
- if (retval != NULL)
+ if (retval)
{
retval->seek = physfsrwops_seek;
retval->read = physfsrwops_read;
@@ -155,39 +154,33 @@ static SDL_RWops *create_rwops(PHYSFS_File *handle)
} /* if */
} /* else */
- return(retval);
+ return retval;
} /* create_rwops */
-
-SDL_RWops *PHYSFSRWOPS_makeRWops(PHYSFS_File *handle)
+SDL_RWops *PHYSFSRWOPS_makeRWops(PHYSFS_file *handle)
{
- SDL_RWops *retval = NULL;
- if (handle == NULL)
+ SDL_RWops *retval = nullptr;
+ if (!handle)
SDL_SetError("NULL pointer passed to PHYSFSRWOPS_makeRWops().");
else
retval = create_rwops(handle);
- return(retval);
+ return retval;
} /* PHYSFSRWOPS_makeRWops */
-
SDL_RWops *PHYSFSRWOPS_openRead(const char *fname)
{
- return(create_rwops(PHYSFS_openRead(fname)));
+ return create_rwops(PHYSFS_openRead(fname));
} /* PHYSFSRWOPS_openRead */
-
SDL_RWops *PHYSFSRWOPS_openWrite(const char *fname)
{
- return(create_rwops(PHYSFS_openWrite(fname)));
+ return create_rwops(PHYSFS_openWrite(fname));
} /* PHYSFSRWOPS_openWrite */
-
SDL_RWops *PHYSFSRWOPS_openAppend(const char *fname)
{
- return(create_rwops(PHYSFS_openAppend(fname)));
+ return create_rwops(PHYSFS_openAppend(fname));
} /* PHYSFSRWOPS_openAppend */
-
/* end of physfsrwops.c ... */
-
diff --git a/src/utils/physfsrwops.h b/src/utils/physfsrwops.h
index 406fba6f6..efa004ac6 100644
--- a/src/utils/physfsrwops.h
+++ b/src/utils/physfsrwops.h
@@ -18,17 +18,15 @@
* SDL falls under the LGPL license. You can get SDL at http://www.libsdl.org/
*
* This file was written by Ryan C. Gordon. (icculus@icculus.org).
+ *
+ * Copyright (C) 2012 The ManaPlus Developers
*/
-#ifndef _INCLUDE_PHYSFSRWOPS_H_
-#define _INCLUDE_PHYSFSRWOPS_H_
-
-#include "physfs.h"
-#include "SDL.h"
+#ifndef UTILS_PHYSFSRWOPS_H
+#define UTILS_PHYSFSRWOPS_H
-#ifdef __cplusplus
-extern "C" {
-#endif
+#include <physfs.h>
+#include <SDL.h>
/**
* Open a platform-independent filename for reading, and make it accessible
@@ -40,7 +38,7 @@ extern "C" {
* @return A valid SDL_RWops structure on success, NULL on error. Specifics
* of the error can be gleaned from PHYSFS_getLastError().
*/
-__EXPORT__ SDL_RWops *PHYSFSRWOPS_openRead(const char *fname);
+SDL_RWops *PHYSFSRWOPS_openRead(const char *fname);
/**
* Open a platform-independent filename for writing, and make it accessible
@@ -52,7 +50,7 @@ __EXPORT__ SDL_RWops *PHYSFSRWOPS_openRead(const char *fname);
* @return A valid SDL_RWops structure on success, NULL on error. Specifics
* of the error can be gleaned from PHYSFS_getLastError().
*/
-__EXPORT__ SDL_RWops *PHYSFSRWOPS_openWrite(const char *fname);
+SDL_RWops *PHYSFSRWOPS_openWrite(const char *fname);
/**
* Open a platform-independent filename for appending, and make it accessible
@@ -64,7 +62,7 @@ __EXPORT__ SDL_RWops *PHYSFSRWOPS_openWrite(const char *fname);
* @return A valid SDL_RWops structure on success, NULL on error. Specifics
* of the error can be gleaned from PHYSFS_getLastError().
*/
-__EXPORT__ SDL_RWops *PHYSFSRWOPS_openAppend(const char *fname);
+SDL_RWops *PHYSFSRWOPS_openAppend(const char *fname);
/**
* Make a SDL_RWops from an existing PhysicsFS file handle. You should
@@ -76,11 +74,7 @@ __EXPORT__ SDL_RWops *PHYSFSRWOPS_openAppend(const char *fname);
* @return A valid SDL_RWops structure on success, NULL on error. Specifics
* of the error can be gleaned from PHYSFS_getLastError().
*/
-__EXPORT__ SDL_RWops *PHYSFSRWOPS_makeRWops(PHYSFS_File *handle);
-
-#ifdef __cplusplus
-}
-#endif
+SDL_RWops *PHYSFSRWOPS_makeRWops(PHYSFS_file *handle);
#endif /* include-once blocker */