diff --git a/misc/tools-source/fl_wrapper.c b/misc/tools-source/fl_wrapper.c index dbe44407f..5d377ebb3 100644 --- a/misc/tools-source/fl_wrapper.c +++ b/misc/tools-source/fl_wrapper.c @@ -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 */ diff --git a/misc/tools-source/fl_wrapper.c.sh b/misc/tools-source/fl_wrapper.c.sh index 27c4fb2a6..aa44329dd 100644 --- a/misc/tools-source/fl_wrapper.c.sh +++ b/misc/tools-source/fl_wrapper.c.sh @@ -144,9 +144,6 @@ EOT fi } -add_wrapper 'int, open, const char* f, int a, int b' -add_wrapper 'int, open64, const char* f, int a, int b' - add_wrapper 'FILE*, fopen, const char* f, const char* g' add_wrapper 'FILE*, fopen64, const char* f, const char* g' @@ -168,6 +165,7 @@ add_wrapper 'int, execve, const char* f, char* const a[], char* const e[]' echo cat fl_wrapper_execl.c +cat fl_wrapper_open.c echo ; cat << "EOT" /* Internal Functions */ diff --git a/misc/tools-source/fl_wrapper_open.c b/misc/tools-source/fl_wrapper_open.c new file mode 100644 index 000000000..7f7f9720e --- /dev/null +++ b/misc/tools-source/fl_wrapper_open.c @@ -0,0 +1,100 @@ +/* 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; +} +