aboutsummaryrefslogtreecommitdiff
path: root/sword2/tony_gsdk.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sword2/tony_gsdk.cpp')
-rw-r--r--sword2/tony_gsdk.cpp151
1 files changed, 151 insertions, 0 deletions
diff --git a/sword2/tony_gsdk.cpp b/sword2/tony_gsdk.cpp
new file mode 100644
index 0000000000..ea39086166
--- /dev/null
+++ b/sword2/tony_gsdk.cpp
@@ -0,0 +1,151 @@
+/* Copyright (C) 1994-2003 Revolution Software Ltd
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Header$
+ */
+
+//===================================================================================================================
+//
+// File - tony_gsdk.cpp
+//
+//===================================================================================================================
+
+
+//general odds and ends
+
+#include <sys/type.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+//#include <io.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+//#include "src\driver96.h"
+#include "debug.h"
+#include "header.h"
+#include "layers.h"
+#include "memory.h"
+#include "protocol.h"
+#include "resman.h"
+#include "tony_gsdk.h"
+
+// TODO replace with file class
+
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+uint32 Read_file(char *name, mem **membloc, uint32 uid) //Tony25Apr96
+{
+//read the file in and place into an allocated MEM_float block
+//used for non resources manager files - stuff like fonts, etc.
+//returns bytes read or 0 for error
+
+ FILE *fh=0; //file pointer
+ uint32 end;
+
+
+
+ fh = fopen(name, "rb"); //open for binary reading
+
+ if (fh==NULL)
+ { Zdebug("Read_file cannot open %s", name);
+ return(0);
+ }
+
+//ok, find the length and read the file in
+ fseek(fh, 0, SEEK_END); //get size of file
+ end = ftell(fh); //finally got the end
+
+ *membloc= Twalloc(end, MEM_float, uid); //reserve enough floating memory for the file
+
+ fseek( fh, 0, SEEK_SET ); //back to beginning of file
+
+ if (fread( (*membloc)->ad, sizeof(char), end,fh)==-1)
+ { Zdebug("Read_file read fail %d", name);
+ return(0);
+ }
+
+ fclose(fh);
+
+ return(end); //ok, done it - return bytes read
+}
+//-----------------------------------------------------------------------------------------------------------------------
+int32 Direct_read_file(char *name, char *ad) //Tony1May96
+{
+//load the file directly into the memory location passed
+//memory must be pre-allocated
+
+ FILE *fh=0; //file pointer
+ uint32 end;
+
+
+ fh = fopen(name, "rb"); //open for binary reading
+
+ if (fh==NULL)
+ { Zdebug("Direct_read_file cannot open %s", name);
+ return(0);
+ }
+
+//ok, find the length and read the file in
+ fseek(fh, 0, SEEK_END); //get size of file
+ end = ftell(fh); //finally got the end
+ fseek( fh, 0, SEEK_SET ); //back to beginning of file
+
+ if (fread( ad, sizeof(char), end,fh)==-1)
+ { Zdebug("Direct_read_file read fail %d", name);
+ return(0);
+ }
+
+ fclose(fh);
+
+
+ return(end); //ok, done it - return bytes read
+}
+//-----------------------------------------------------------------------------------------------------------------------
+int32 Direct_write_file(char *name, char *ad, uint32 total_bytes) //Tony1May96
+{
+//load the file directly into the memory location passed
+ int fh;
+
+ //fh = open(name, _O_RDWR | _O_CREAT); //open for reading
+ fh = open(name, O_RDWR | O_CREAT); //open for reading
+
+ if (fh==-1)
+ { Zdebug("Direct_write_file open fail %d", name);
+ return(-1);
+ }
+
+ if (write( fh, ad, total_bytes)==-1)
+ { Zdebug("Direct_write_file write fail %d", name);
+ return(-1);
+ }
+
+ close(fh);
+
+ return(0); //ok, done it
+}
+
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+//-----------------------------------------------------------------------------------------------------------------------
+