equal
deleted
inserted
replaced
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 } |