[Scummvm-cvs-logs] CVS: scummvm/scumm script_v5.cpp,1.146,1.147

Marcus Comstedt marcus_c at users.sourceforge.net
Sun Aug 10 13:51:04 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv7983/scumm

Modified Files:
	script_v5.cpp 
Log Message:
Replaced use of File with use of SaveFileManager where appropriate.

Index: script_v5.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v5.cpp,v
retrieving revision 1.146
retrieving revision 1.147
diff -u -d -r1.146 -r1.147
--- script_v5.cpp	8 Aug 2003 11:32:40 -0000	1.146
+++ script_v5.cpp	10 Aug 2003 20:50:50 -0000	1.147
@@ -1757,7 +1757,7 @@
 		break;
 
 	case 13:{										/* save-string */
-			File file;
+			SaveFile *file;
 			char filename[256], *s;
 
 			a = getVarOrDirectByte(0x80);
@@ -1765,16 +1765,19 @@
 			s = filename;
 			while ((*s++ = fetchScriptByte()));
 
-			file.open(filename, getSavePath(), File::kFileWriteMode);
-			if (file.isOpen()) {
+			SaveFileManager *mgr = _system->get_savefile_manager();
+			file = mgr->open_savefile(filename, getSavePath(), true);
+			if (file != NULL) {
 				byte *ptr;
 				ptr = getResourceAddress(rtString, a);
-				file.write(ptr, resStrLen(ptr) + 1);
+				file->write(ptr, resStrLen(ptr) + 1);
+				delete file;
 			}
+			delete mgr;
 			break;
 		}
 	case 14:{										/* load-string */
-			File file;
+			SaveFile *file;
 			char filename[256], *s;
 
 			a = getVarOrDirectByte(0x80);
@@ -1782,12 +1785,18 @@
 			s = filename;
 			while ((*s++ = fetchScriptByte()));
 
-			file.open(filename, getSavePath(), File::kFileReadMode);
-			if (file.isOpen()) {
+			SaveFileManager *mgr = _system->get_savefile_manager();
+			file = mgr->open_savefile(filename, getSavePath(), false);
+			if (file != NULL) {
 				byte *ptr;
-				int len = file.size();
-				ptr = (byte *)calloc(len + 1, 1);	// Create a zero terminated buffer
-				file.read(ptr, len);	// Read in the data
+				int len = 256, cnt = 0;
+				ptr = (byte *)malloc(len);
+				while (ptr) {
+				  int r = file->read(ptr+cnt, len-cnt);
+				  if ((cnt += r) < len) break;
+				  ptr = (byte *)realloc(ptr, len<<=1);
+				}
+				ptr[cnt] = '\0';
 				loadPtrToResource(rtString, a, ptr);
 				free(ptr);
 			}





More information about the Scummvm-git-logs mailing list