From 429521a7d1f549ba3f9a287885c42f400f5e960f Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 25 Dec 2007 11:26:07 +0000 Subject: (svn r11692) -Codechange: move some functions from 'functions.h' to a more logical place and remove about 50% of the includes of 'functions.h' --- src/fileio.cpp | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) (limited to 'src/fileio.cpp') diff --git a/src/fileio.cpp b/src/fileio.cpp index 3190013ca..513286dea 100644 --- a/src/fileio.cpp +++ b/src/fileio.cpp @@ -5,12 +5,12 @@ #include "stdafx.h" #include "openttd.h" #include "fileio.h" -#include "functions.h" #include "string.h" #include "variables.h" #include "debug.h" #include "fios.h" #include "core/alloc_func.hpp" +#include "core/math_func.hpp" #ifdef WIN32 #include #else @@ -764,3 +764,31 @@ void SanitizeFilename(char *filename) } } } + +void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize) +{ + FILE *in; + byte *mem; + size_t len; + + in = fopen(filename, "rb"); + if (in == NULL) return NULL; + + fseek(in, 0, SEEK_END); + len = ftell(in); + fseek(in, 0, SEEK_SET); + if (len > maxsize || (mem = MallocT(len + 1)) == NULL) { + fclose(in); + return NULL; + } + mem[len] = 0; + if (fread(mem, len, 1, in) != 1) { + fclose(in); + free(mem); + return NULL; + } + fclose(in); + + *lenp = len; + return mem; +} -- cgit v1.2.3-70-g09d2