/* 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_open.c * ROCK Linux is Copyright (C) 1998 - 2006 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 https://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; }