src/fileio.cpp
changeset 8131 160939e24ed3
parent 8130 d2eb7d04f6e1
child 8214 971f861d5543
equal deleted inserted replaced
8130:d2eb7d04f6e1 8131:160939e24ed3
     3 /** @file fileio.cpp Standard In/Out file operations */
     3 /** @file fileio.cpp Standard In/Out file operations */
     4 
     4 
     5 #include "stdafx.h"
     5 #include "stdafx.h"
     6 #include "openttd.h"
     6 #include "openttd.h"
     7 #include "fileio.h"
     7 #include "fileio.h"
     8 #include "functions.h"
       
     9 #include "string.h"
     8 #include "string.h"
    10 #include "variables.h"
     9 #include "variables.h"
    11 #include "debug.h"
    10 #include "debug.h"
    12 #include "fios.h"
    11 #include "fios.h"
    13 #include "core/alloc_func.hpp"
    12 #include "core/alloc_func.hpp"
       
    13 #include "core/math_func.hpp"
    14 #ifdef WIN32
    14 #ifdef WIN32
    15 #include <windows.h>
    15 #include <windows.h>
    16 #else
    16 #else
    17 #include <pwd.h>
    17 #include <pwd.h>
    18 #include <unistd.h>
    18 #include <unistd.h>
   762 				*filename = '_';
   762 				*filename = '_';
   763 				break;
   763 				break;
   764 		}
   764 		}
   765 	}
   765 	}
   766 }
   766 }
       
   767 
       
   768 void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize)
       
   769 {
       
   770 	FILE *in;
       
   771 	byte *mem;
       
   772 	size_t len;
       
   773 
       
   774 	in = fopen(filename, "rb");
       
   775 	if (in == NULL) return NULL;
       
   776 
       
   777 	fseek(in, 0, SEEK_END);
       
   778 	len = ftell(in);
       
   779 	fseek(in, 0, SEEK_SET);
       
   780 	if (len > maxsize || (mem = MallocT<byte>(len + 1)) == NULL) {
       
   781 		fclose(in);
       
   782 		return NULL;
       
   783 	}
       
   784 	mem[len] = 0;
       
   785 	if (fread(mem, len, 1, in) != 1) {
       
   786 		fclose(in);
       
   787 		free(mem);
       
   788 		return NULL;
       
   789 	}
       
   790 	fclose(in);
       
   791 
       
   792 	*lenp = len;
       
   793 	return mem;
       
   794 }