Remove the need for a meminfo file by just creating
Annotate for file fopenRedirect.c
2009-02-17 tobias 1 /*
2009-02-21 tobias 2 * Copyright (c) 2004 Tobias Rautenkranz <tobias@rautenkranz.ch>
2009-02-17 tobias 3 *
23:15:35 ' 4 * Permission is hereby granted, free of charge, to any person
' 5 * obtaining a copy of this software and associated documentation
' 6 * files (the "Software"), to deal in the Software without
' 7 * restriction, including without limitation the rights to use,
' 8 * copy, modify, merge, publish, distribute, sublicense, and/or sell
' 9 * copies of the Software, and to permit persons to whom the
' 10 * Software is furnished to do so, subject to the following
' 11 * conditions:
' 12 *
' 13 * The above copyright notice and this permission notice shall be
' 14 * included in all copies or substantial portions of the Software.
' 15 *
' 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
' 17 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
' 18 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
' 19 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
' 20 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
' 21 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
' 22 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
' 23 * OTHER DEALINGS IN THE SOFTWARE.
' 24 */
' 25
' 26 #include <stdio.h>
2009-02-21 tobias 27
11:08:59 ' 28 #define __USE_GNU
2009-02-17 tobias 29 #include <string.h>
23:15:35 ' 30 #include <dlfcn.h>
' 31
2009-02-21 Alan 32 /* Old meminfo emulating 256Mb */
08:37:57 ' 33 char const *str = "root: total: used: free: shared: buffers: cached:\n"
' 34 "Mem: 268435456 0 268435456 0 0 0\n"
' 35 "Swap: 268435456 0 268435456\n";
' 36
2009-02-21 tobias 37 FILE* fopen(const char *filename, const char *modes)
2009-02-21 tobias 38 {
2009-02-21 tobias 39 FILE* (*_fopen) (const char*,const char*) = dlsym(RTLD_NEXT, "fopen");
2009-02-21 Alan 40 FILE* fp;
2009-02-21 tobias 41
2009-02-21 tobias 42 if (strcmp(filename,"/proc/meminfo") == 0) {
2009-02-21 Alan 43 printf("Compatibility meminfo fix for OpenGL and cutscenes by Tobias Rautenkranz\n");
08:37:57 ' 44
' 45 fp = fopen("/tmp/meminfo-myth2", "w");
' 46 if (fp != NULL) {
' 47 fwrite(str, strlen(str), 1, fp);
' 48 fclose(fp);
' 49 }
' 50
' 51 return _fopen("/tmp/meminfo-myth2", modes);
2009-02-21 tobias 52 } else
10:26:12 ' 53 return _fopen(filename, modes);
2009-02-17 tobias 54 }