|
|
|
@ -8,7 +8,7 @@ |
|
|
|
* the ./scripts/Create-CopyPatch script. Do not edit this copyright text! |
|
|
|
* |
|
|
|
* ROCK Linux: rock-src/misc/tools-source/fl_wrapper.c.sh |
|
|
|
* ROCK Linux is Copyright (C) 1998 - 2003 Clifford Wolf |
|
|
|
* ROCK Linux is Copyright (C) 1998 - 2004 Clifford Wolf |
|
|
|
* |
|
|
|
* This program is free software; you can redistribute it and/or modify |
|
|
|
* it under the terms of the GNU General Public License as published by |
|
|
|
@ -77,58 +77,6 @@ char *wlog = 0, *rlog = 0, *cmdname = "unkown"; |
|
|
|
|
|
|
|
/* Wrapper Functions */ |
|
|
|
|
|
|
|
extern int open(const char* f, int a, int b); |
|
|
|
int (*orig_open)(const char* f, int a, int b) = 0; |
|
|
|
|
|
|
|
int open(const char* f, int a, int b) |
|
|
|
{ |
|
|
|
struct status_t status; |
|
|
|
int old_errno=errno; |
|
|
|
int rc; |
|
|
|
|
|
|
|
handle_file_access_before("open", f, &status); |
|
|
|
if (!orig_open) orig_open = get_dl_symbol("open"); |
|
|
|
errno=old_errno; |
|
|
|
|
|
|
|
#if DEBUG == 1 |
|
|
|
fprintf(stderr, "fl_wrapper.so debug [%d]: going to run original open() at %p (wrapper is at %p).\n", |
|
|
|
getpid(), orig_open, open); |
|
|
|
#endif |
|
|
|
rc = orig_open(f, a, b); |
|
|
|
|
|
|
|
old_errno=errno; |
|
|
|
handle_file_access_after("open", f, &status); |
|
|
|
errno=old_errno; |
|
|
|
|
|
|
|
return rc; |
|
|
|
} |
|
|
|
|
|
|
|
extern int open64(const char* f, int a, int b); |
|
|
|
int (*orig_open64)(const char* f, int a, int b) = 0; |
|
|
|
|
|
|
|
int open64(const char* f, int a, int b) |
|
|
|
{ |
|
|
|
struct status_t status; |
|
|
|
int old_errno=errno; |
|
|
|
int rc; |
|
|
|
|
|
|
|
handle_file_access_before("open64", f, &status); |
|
|
|
if (!orig_open64) orig_open64 = get_dl_symbol("open64"); |
|
|
|
errno=old_errno; |
|
|
|
|
|
|
|
#if DEBUG == 1 |
|
|
|
fprintf(stderr, "fl_wrapper.so debug [%d]: going to run original open64() at %p (wrapper is at %p).\n", |
|
|
|
getpid(), orig_open64, open64); |
|
|
|
#endif |
|
|
|
rc = orig_open64(f, a, b); |
|
|
|
|
|
|
|
old_errno=errno; |
|
|
|
handle_file_access_after("open64", f, &status); |
|
|
|
errno=old_errno; |
|
|
|
|
|
|
|
return rc; |
|
|
|
} |
|
|
|
|
|
|
|
extern FILE* fopen(const char* f, const char* g); |
|
|
|
FILE* (*orig_fopen)(const char* f, const char* g) = 0; |
|
|
|
|
|
|
|
@ -751,6 +699,106 @@ execvp (file, argv) |
|
|
|
/* Return the error from the last attempt (probably ENOENT). */ |
|
|
|
return -1; |
|
|
|
} |
|
|
|
/* ROCK Linux Wrapper for getting a list of created files |
|
|
|
* |
|
|
|
* --- ROCK-COPYRIGHT-NOTE-BEGIN --- |
|
|
|
* |
|
|
|
* This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
|
|
* Please add additional copyright information _after_ the line containing |
|
|
|
* the ROCK-COPYRIGHT-NOTE-END tag. Otherwise it might get removed by |
|
|
|
* the ./scripts/Create-CopyPatch script. Do not edit this copyright text! |
|
|
|
* |
|
|
|
* ROCK Linux: rock-src/misc/tools-source/fl_wrapper.c.sh |
|
|
|
* ROCK Linux is Copyright (C) 1998 - 2004 Clifford Wolf |
|
|
|
* |
|
|
|
* This program is free software; you can redistribute it and/or modify |
|
|
|
* it under the terms of the GNU General Public License as published by |
|
|
|
* the Free Software Foundation; either version 2 of the License, or |
|
|
|
* (at your option) any later version. A copy of the GNU General Public |
|
|
|
* License can be found at Documentation/COPYING. |
|
|
|
* |
|
|
|
* Many people helped and are helping developing ROCK Linux. Please |
|
|
|
* have a look at http://www.rocklinux.org/ and the Documentation/TEAM |
|
|
|
* file for details. |
|
|
|
* |
|
|
|
* --- ROCK-COPYRIGHT-NOTE-END --- |
|
|
|
*/ |
|
|
|
extern int open(const char* f, int a, ...); |
|
|
|
int (*orig_open)(const char* f, int a, ...) = 0; |
|
|
|
|
|
|
|
int open(const char* f, int a, ...) |
|
|
|
{ |
|
|
|
struct status_t status; |
|
|
|
int old_errno=errno; |
|
|
|
int rc; |
|
|
|
|
|
|
|
handle_file_access_before("open", f, &status); |
|
|
|
if (!orig_open) orig_open = get_dl_symbol("open"); |
|
|
|
errno=old_errno; |
|
|
|
|
|
|
|
#if DEBUG == 1 |
|
|
|
fprintf(stderr, "fl_wrapper.so debug [%d]: going to run original open() at %p (wrapper is at %p).\n", |
|
|
|
getpid(), orig_open, open); |
|
|
|
#endif |
|
|
|
if (a & O_CREAT) |
|
|
|
{ |
|
|
|
va_list ap; |
|
|
|
mode_t b = 0; |
|
|
|
|
|
|
|
va_start(ap, a); |
|
|
|
b = va_arg(ap, mode_t); |
|
|
|
va_end(ap); |
|
|
|
|
|
|
|
rc = orig_open(f, a, b); |
|
|
|
} |
|
|
|
else |
|
|
|
rc = orig_open(f, a); |
|
|
|
|
|
|
|
old_errno=errno; |
|
|
|
handle_file_access_after("open", f, &status); |
|
|
|
errno=old_errno; |
|
|
|
|
|
|
|
return rc; |
|
|
|
} |
|
|
|
|
|
|
|
extern int open64(const char* f, int a, ...); |
|
|
|
int (*orig_open64)(const char* f, int a, ...) = 0; |
|
|
|
|
|
|
|
int open64(const char* f, int a, ...) |
|
|
|
{ |
|
|
|
struct status_t status; |
|
|
|
int old_errno=errno; |
|
|
|
int rc; |
|
|
|
|
|
|
|
handle_file_access_before("open64", f, &status); |
|
|
|
if (!orig_open64) orig_open64 = get_dl_symbol("open64"); |
|
|
|
errno=old_errno; |
|
|
|
|
|
|
|
#if DEBUG == 1 |
|
|
|
fprintf(stderr, "fl_wrapper.so debug [%d]: going to run original open64() at %p (wrapper is at %p).\n", |
|
|
|
getpid(), orig_open64, open64); |
|
|
|
#endif |
|
|
|
if (a & O_CREAT) |
|
|
|
{ |
|
|
|
va_list ap; |
|
|
|
mode_t b = 0; |
|
|
|
|
|
|
|
va_start(ap, a); |
|
|
|
b = va_arg(ap, mode_t); |
|
|
|
va_end(ap); |
|
|
|
|
|
|
|
rc = orig_open64(f, a, b); |
|
|
|
} |
|
|
|
else |
|
|
|
rc = orig_open64(f, a); |
|
|
|
|
|
|
|
old_errno=errno; |
|
|
|
handle_file_access_after("open64", f, &status); |
|
|
|
errno=old_errno; |
|
|
|
|
|
|
|
return rc; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Internal Functions */ |
|
|
|
|
|
|
|
|