Browse Source

Bernhard C. Schrenk:


			
			
				rocklinux
			
			
		
Bernhard C. Schrenk 21 years ago
parent
commit
6c59643d6d
3 changed files with 202 additions and 56 deletions
  1. +101
    -53
      misc/tools-source/fl_wrapper.c
  2. +1
    -3
      misc/tools-source/fl_wrapper.c.sh
  3. +100
    -0
      misc/tools-source/fl_wrapper_open.c

+ 101
- 53
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 */

+ 1
- 3
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 */

+ 100
- 0
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;
}

Loading…
Cancel
Save