From d715b0af6ae54b4a9c0da7a1589035b27df1e2b1 Mon Sep 17 00:00:00 2001 From: Anastasia Lyupa Date: Thu, 19 Sep 2013 16:40:45 +0400 Subject: [PATCH] [IMPROVE] write START/END probe macro for files like in da-probe improve 82a7637e17582f058abff4027cbd429d9c54b8ef da-probe commit 65352634ef85b4cec1a86ad34157099adc7bef70 Change-Id: Ic64abcb391ad932134377a3f8abdcb3b58f547bf Signed-off-by: Anastasia Lyupa --- probe_file/da_io.h | 95 +++++++++++++++++----- probe_file/da_io_posix.c | 56 ++++++------- probe_file/da_io_stdc.c | 200 ++++++++++++++++++++++++----------------------- 3 files changed, 204 insertions(+), 147 deletions(-) diff --git a/probe_file/da_io.h b/probe_file/da_io.h index 92f14ba..a32390f 100755 --- a/probe_file/da_io.h +++ b/probe_file/da_io.h @@ -101,31 +101,15 @@ GET_REAL_FUNC(FUNCNAME, LIBNAME); \ bfiltering = false; \ PRE_PROBEBLOCK() + // ================================================================== -// Additional macro for READ_START and WRITE_START +// macro for filesize // ================================================================== #define DEFINE_FILESIZE_FD(fd) _fd = (fd); _filesize = get_fd_filesize(_fd); #define DEFINE_FILESIZE_FP(fp) _fd = checked_fileno(fp); _filesize = get_fd_filesize(_fd); #define DEFINE_FILESIZE_0() _fd = _filesize = 0; -#define AFTER_PACK_ORIGINAL(API_ID, RVAL, SIZE, ERRNO, FD, FILESIZE, APITYPE, INPUTFORMAT, ...) \ - POST_PACK_PROBEBLOCK_BEGIN(); \ - PREPARE_LOCAL_BUF(); \ - PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__); \ - PACK_COMMON_END(RVAL,ERRNO, blockresult); \ - PACK_RESOURCE(SIZE, FD, APITYPE, FILESIZE, _filepath); \ - FLUSH_LOCAL_BUF(); \ - POST_PACK_PROBEBLOCK_END(); - -#define FILE_API_START_BLOCK(API_ID, APITYPE, INPUTFORMAT, ...) \ - AFTER_PACK_ORIGINAL(API_ID, 0, 0, 0, _fd, _filesize, APITYPE, INPUTFORMAT, __VA_ARGS__) - -#define FILE_API_END_BLOCK(API_ID, RVAL, SIZE, APITYPE, INPUTFORMAT,...) \ - blockresult = 0; bfiltering = 1; \ - PRE_PROBEBLOCK(); \ - AFTER_PACK_ORIGINAL(API_ID,RVAL, SIZE, newerrno, _fd, _filesize, APITYPE, INPUTFORMAT, __VA_ARGS__) - // ================================================================== // AFTER_ORIGINAL macro for file // ================================================================== @@ -160,6 +144,81 @@ POST_PACK_PROBEBLOCK_END() +// ================================================================== +// START_END macro for file +// ================================================================== + +#define BEFORE_ORIGINAL_START_END_FD(API_ID, FUNCNAME, LIBNAME, FD, APITYPE, INPUTFORMAT, ...) \ + DECLARE_VARIABLE_FD; \ + GET_REAL_FUNC(FUNCNAME, LIBNAME); \ + PRE_PROBEBLOCK_BEGIN(); \ + _fstatret = fstat(FD, &_statbuf); \ + DEFINE_FILESIZE_FD(fd); \ + PREPARE_LOCAL_BUF(); \ + PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__); \ + PACK_COMMON_END(0, 0, blockresult); \ + PACK_RESOURCE(0, FD, APITYPE, _filesize, _filepath); \ + FLUSH_LOCAL_BUF(); \ + PRE_PROBEBLOCK_END() + +#define BEFORE_ORIGINAL_START_END_NOFD(API_ID, FUNCNAME, LIBNAME, APITYPE, INPUTFORMAT, ...) \ + DECLARE_VARIABLE_FD; \ + GET_REAL_FUNC(FUNCNAME, LIBNAME); \ + PRE_PROBEBLOCK_BEGIN(); \ + DEFINE_FILESIZE_0(); \ + PREPARE_LOCAL_BUF(); \ + PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__); \ + PACK_COMMON_END(0, 0, blockresult); \ + POST_PACK_PROBEBLOCK_MIDDLE_NOFD(0, APITYPE); \ + PRE_PROBEBLOCK_END() + +#define BEFORE_ORIGINAL_START_END_FILEP(API_ID, FUNCNAME, LIBNAME, FILEP, APITYPE, INPUTFORMAT, ...) \ + DECLARE_VARIABLE_FD; \ + GET_REAL_FUNC(FUNCNAME, LIBNAME); \ + PRE_PROBEBLOCK_BEGIN(); \ + GET_FD_FROM_FILEP(FILEP); \ + if(_fd != -1) { \ + _fstatret = fstat(_fd, &_statbuf); \ + } \ + PREPARE_LOCAL_BUF(); \ + PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__); \ + PACK_COMMON_END(0, 0, blockresult); \ + POST_PACK_PROBEBLOCK_MIDDLE_FD(0, _fd, APITYPE); \ + PRE_PROBEBLOCK_END() + +#define AFTER_ORIGINAL_START_END_FD(API_ID, RVAL, SIZE, FD, APITYPE, INPUTFORMAT, ...) \ + POST_PACK_PROBEBLOCK_BEGIN(); \ + setProbePoint(&probeInfo); \ + _fstatret = fstat(FD, &_statbuf); \ + PREPARE_LOCAL_BUF(); \ + PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__); \ + PACK_COMMON_END(RVAL, newerrno, blockresult); \ + PACK_RESOURCE(SIZE, FD, APITYPE, _filesize, _filepath); \ + FLUSH_LOCAL_BUF(); \ + POST_PACK_PROBEBLOCK_END() + +#define AFTER_ORIGINAL_START_END_NOFD(API_ID, RVAL, SIZE, APITYPE, INPUTFORMAT, ...) \ + POST_PACK_PROBEBLOCK_BEGIN(); \ + setProbePoint(&probeInfo); \ + PREPARE_LOCAL_BUF(); \ + PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__); \ + PACK_COMMON_END(RVAL, newerrno, blockresult); \ + POST_PACK_PROBEBLOCK_MIDDLE_NOFD(SIZE, APITYPE); \ + POST_PACK_PROBEBLOCK_END() + +#define AFTER_ORIGINAL_START_END_FILEP(API_ID, RVAL, SIZE, FILEP, APITYPE, INPUTFORMAT, ...) \ + POST_PACK_PROBEBLOCK_BEGIN(); \ + setProbePoint(&probeInfo); \ + GET_FD_FROM_FILEP(FILEP); \ + if(_fd != -1) { \ + _fstatret = fstat(_fd, &_statbuf); \ + } \ + PREPARE_LOCAL_BUF(); \ + PACK_COMMON_BEGIN(MSG_PROBE_RESOURCE, API_ID, INPUTFORMAT, __VA_ARGS__); \ + PACK_COMMON_END(RVAL, newerrno, blockresult); \ + POST_PACK_PROBEBLOCK_MIDDLE_FD(SIZE, _fd, APITYPE); \ + POST_PACK_PROBEBLOCK_END() + static inline ssize_t get_fd_filesize(int fd) { diff --git a/probe_file/da_io_posix.c b/probe_file/da_io_posix.c index 50e0f40..56dc560 100755 --- a/probe_file/da_io_posix.c +++ b/probe_file/da_io_posix.c @@ -205,13 +205,13 @@ int ftruncate(int fd, off_t length) int fchown(int fd, uid_t owner, gid_t group) { - static int (*fchownp)(int fd, uid_t owner, gid_t group); + static int (*fchownp)(int fd, uid_t owner, gid_t group); - BEFORE_ORIGINAL_FILE(fchown, LIBC); - ret = fchownp(fd, owner, group); - AFTER_PACK_ORIGINAL_FD(API_ID_fchown, ret, 0, fd, FD_API_PERMISSION, - "ddd", fd, owner, group); - return ret; + BEFORE_ORIGINAL_FILE(fchown, LIBC); + ret = fchownp(fd, owner, group); + AFTER_PACK_ORIGINAL_FD(API_ID_fchown, ret, 0, fd, FD_API_PERMISSION, + "ddd", fd, owner, group); + return ret; } @@ -251,12 +251,12 @@ ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset) static ssize_t (*preadp)(int fd, void *buf, size_t nbyte, off_t offset); ssize_t sret; - BEFORE_ORIGINAL_FILE(pread, LIBC); - DEFINE_FILESIZE_FD(fd); - FILE_API_START_BLOCK(API_ID_pread,FD_API_READ_START, - "dpxx", fd, buf, nbyte, offset); + BEFORE_ORIGINAL_START_END_FD(API_ID_pread, pread, LIBC, fd, + FD_API_READ_START, "dpxx", fd, buf, nbyte, offset); + sret = preadp(fd, buf, nbyte, offset); - FILE_API_END_BLOCK(API_ID_pread, sret, (unsigned int)sret, + + AFTER_ORIGINAL_START_END_FD(API_ID_pread, sret, (unsigned int)sret, fd, FD_API_READ_END, "dpxx", fd, buf, nbyte, offset); return sret; @@ -266,14 +266,12 @@ ssize_t read(int fd, void *buf, size_t nbyte) static ssize_t (*readp)(int fildes, void *buf, size_t nbyte); ssize_t sret; - BEFORE_ORIGINAL_FILE(read, LIBC); - DEFINE_FILESIZE_FD(fd); - FILE_API_START_BLOCK(API_ID_read, FD_API_READ_START, - "dpx", fd, buf, nbyte); + BEFORE_ORIGINAL_START_END_FD(API_ID_read, read, LIBC, fd, FD_API_READ_START, + "dpx", fd, buf, nbyte); sret = readp(fd, buf, nbyte); - FILE_API_END_BLOCK(API_ID_read, sret, (unsigned int)sret, + AFTER_ORIGINAL_START_END_FD(API_ID_read, sret, (unsigned int)sret, fd, FD_API_READ_END, "dpx", fd, buf, nbyte); return sret; @@ -284,15 +282,14 @@ ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset) static ssize_t (*pwritep)(int fd, const void *buf, size_t nbyte, off_t offset); ssize_t sret; - BEFORE_ORIGINAL_FILE(pwrite, LIBC); - DEFINE_FILESIZE_FD(fd); - FILE_API_START_BLOCK(API_ID_pwrite, FD_API_WRITE_START, + BEFORE_ORIGINAL_START_END_FD(API_ID_pwrite, pwrite, LIBC, fd, FD_API_WRITE_START, "dpxx", fd, buf, nbyte, offset); sret = pwritep(fd, buf, nbyte, offset); - FILE_API_END_BLOCK(API_ID_pwrite, sret, (unsigned int)sret, - FD_API_WRITE_END, "dpxx", fd, buf, nbyte, offset); + DEFINE_FILESIZE_FD(fd); + AFTER_ORIGINAL_START_END_FD(API_ID_pwrite, sret, (unsigned int)sret, fd, + FD_API_WRITE_END, "dpxx", fd, buf, nbyte, offset); return sret; } @@ -302,13 +299,13 @@ ssize_t write(int fd, const void *buf, size_t nbyte) static ssize_t (*writep)(int fildes, const void *buf, size_t nbyte); ssize_t sret; - BEFORE_ORIGINAL_FILE(write, LIBC); - DEFINE_FILESIZE_FD(fd); - FILE_API_START_BLOCK(API_ID_write, FD_API_WRITE_START, - "dpx", fd, buf, nbyte); + BEFORE_ORIGINAL_START_END_FD(API_ID_write, write, LIBC, fd, FD_API_WRITE_START, + "dpx", fd, buf, nbyte); + sret = writep(fd, buf, nbyte); - FILE_API_END_BLOCK(API_ID_write, sret, (unsigned int)sret, + DEFINE_FILESIZE_FD(fd); + AFTER_ORIGINAL_START_END_FD(API_ID_write, sret, (unsigned int)sret, fd, FD_API_WRITE_END, "dpx", fd, buf, nbyte); return sret; @@ -320,13 +317,12 @@ ssize_t readv(int fd, const struct iovec *iov, int iovcnt) static ssize_t (*readvp)(int fd, const struct iovec *iov, int iovcnt); ssize_t sret; - BEFORE_ORIGINAL_FILE(readv, LIBC); - DEFINE_FILESIZE_FD(fd); - FILE_API_START_BLOCK(API_ID_readv, FD_API_READ_START, + BEFORE_ORIGINAL_START_END_FD(API_ID_readv, readv, LIBC, fd, FD_API_READ_START, "dpd", fd, iov, iovcnt); + sret = readvp(fd,iov,iovcnt); - FILE_API_END_BLOCK(API_ID_readv, sret, (unsigned int)sret, + AFTER_ORIGINAL_START_END_FD(API_ID_readv, sret, (unsigned int)sret, fd, FD_API_READ_END, "dpd", fd, iov, iovcnt); return sret; diff --git a/probe_file/da_io_stdc.c b/probe_file/da_io_stdc.c index 6060e37..b030a94 100644 --- a/probe_file/da_io_stdc.c +++ b/probe_file/da_io_stdc.c @@ -262,13 +262,14 @@ int vfprintf(FILE* stream, const char* format, va_list arg) { static int (*vfprintfp)(FILE* stream, const char* format, va_list arg); - BEFORE_ORIGINAL_FILE(vfprintf, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_vfprintf, FD_API_WRITE_START, - "ps", stream, format); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_vfprintf, vfprintf, LIBC, stream, + FD_API_WRITE_START, "ps", stream, format); + ret = vfprintfp(stream, format, arg); - FILE_API_END_BLOCK(API_ID_vfprintf, ret, ret, + + AFTER_ORIGINAL_START_END_FILEP(API_ID_vfprintf, ret, ret, stream, FD_API_WRITE_END, "ps", stream, format); + return ret; } @@ -276,13 +277,14 @@ int vfscanf(FILE* stream, const char* format, va_list arg) { static int (*vfscanfp)(FILE* stream, const char* format, va_list arg); - BEFORE_ORIGINAL_FILE(vfscanf, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_vfscanf, FD_API_READ_START, - "ps", stream, format); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_vfscanf, vfscanf, LIBC, stream, + FD_API_READ_START, "ps", stream, format); + ret = vfscanfp(stream, format, arg); - FILE_API_END_BLOCK(API_ID_vfscanf, ret, ret, + + AFTER_ORIGINAL_START_END_FILEP(API_ID_vfscanf, ret, ret, stream, FD_API_READ_END, "ps", stream, format); + return ret; } @@ -290,13 +292,14 @@ int fgetc(FILE* stream) { static int (*fgetcp)(FILE* stream); - BEFORE_ORIGINAL_FILE(fgetc, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_fgetc, FD_API_READ_START, - "p", stream); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_fgetc, fgetc, LIBC, stream, + FD_API_READ_START, "p", stream); + ret = fgetcp(stream); - FILE_API_END_BLOCK(API_ID_fgetc, ret, (ret != EOF), + + AFTER_ORIGINAL_START_END_FILEP(API_ID_fgetc, ret, (ret != EOF), stream, FD_API_READ_END, "p", stream); + return ret; } @@ -306,14 +309,13 @@ char* fgets(char* str, int size, FILE* stream) static char* (*fgetsp)(char* str, int num, FILE* stream); char* cret; - BEFORE_ORIGINAL_FILE(fgets, LIBC); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_fgets, FD_API_READ_START, + fgets, LIBC, stream, "sdp", str, size, stream); - FILE_API_START_BLOCK(API_ID_fgets, FD_API_READ_START, "sdp", str, size, stream); - cret = fgetsp(str, size, stream); - FILE_API_END_BLOCK(API_ID_fgets, cret, (ret == NULL ? 0 : strlen(cret)), - FD_API_READ_END, "sdp", str, size, stream); + AFTER_ORIGINAL_START_END_FILEP(API_ID_fgets, cret, (ret == NULL ? 0 : strlen(cret)), + stream, FD_API_READ_END, "sdp", str, size, stream); return cret; } @@ -323,13 +325,14 @@ int fputc(int character, FILE* stream) { static int (*fputcp)(int character, FILE* stream); - BEFORE_ORIGINAL_FILE(fputc, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_fputc, FD_API_WRITE_START, - "dp", character, stream); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_fputc, fputc, LIBC, stream, + FD_API_WRITE_START, "dp", character, stream); + ret = fputcp(character, stream); - FILE_API_END_BLOCK(API_ID_fputc, ret, (ret != EOF), + + AFTER_ORIGINAL_START_END_FILEP(API_ID_fputc, ret, (ret == EOF ? 0 : 1), stream, FD_API_WRITE_END, "dp", character, stream); + return ret; } @@ -337,13 +340,14 @@ int fputs(const char* str, FILE* stream) { static int (*fputsp)(const char* str, FILE* stream); - BEFORE_ORIGINAL_FILE(fputs, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_fputs, FD_API_WRITE_START, - "sp", str, stream); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_fputs, fputs, LIBC, stream, + FD_API_WRITE_START, "sp", str, stream); + ret = fputsp(str, stream); - FILE_API_END_BLOCK(API_ID_fputs, ret, ret, FD_API_WRITE_END, - "sp", str, stream); + + AFTER_ORIGINAL_START_END_FILEP(API_ID_fputs, ret, ret, stream, + FD_API_WRITE_END, "sp", str, stream); + return ret; } @@ -351,13 +355,14 @@ int getc(FILE* stream) { static int (*getcp)(FILE* stream); - BEFORE_ORIGINAL_FILE(getc, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_getc, FD_API_READ_START, - "p", stream); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_getc, getc, LIBC, stream, + FD_API_READ_START, "p", stream); + ret = getcp(stream); - FILE_API_END_BLOCK(API_ID_getc, ret, (ret != EOF), + + AFTER_ORIGINAL_START_END_FILEP(API_ID_getc, ret, (ret == EOF ? 0 : 1), stream, FD_API_READ_END, "p", stream); + return ret; } @@ -365,13 +370,14 @@ int putc(int character, FILE* stream) { static int (*putcp)(int character, FILE* stream); - BEFORE_ORIGINAL_FILE(putc, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_putc, FD_API_WRITE_START, - "dp", character, stream); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_putc, putc, LIBC, stream, + FD_API_WRITE_START, "dp", character, stream); + ret = putcp(character, stream); - FILE_API_END_BLOCK(API_ID_putc, ret, (ret != EOF), + + AFTER_ORIGINAL_START_END_FILEP(API_ID_putc, ret, (ret == EOF ? 0 : 1), stream, FD_API_WRITE_END, "dp", character, stream); + return ret; } @@ -379,13 +385,14 @@ int ungetc(int character, FILE* stream) { static int (*ungetcp)(int character, FILE* stream); - BEFORE_ORIGINAL_FILE(ungetc, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_putc, FD_API_WRITE_START, - "dp", character, stream); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_putc, ungetc, LIBC, stream, + FD_API_WRITE_START, "dp", character, stream); + ret = ungetcp(character, stream); - FILE_API_END_BLOCK(API_ID_ungetc, ret, 0, + + AFTER_ORIGINAL_START_END_FILEP(API_ID_ungetc, ret, 0, stream, FD_API_OTHER, "dp", character, stream); + return ret; } @@ -394,15 +401,13 @@ size_t fread(void* ptr, size_t size, size_t count, FILE* stream) static size_t (*freadp)(void* ptr, size_t size, size_t count, FILE* stream); size_t tret; - BEFORE_ORIGINAL_FILE(fread, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_fread, FD_API_READ_START, - "pxxp", ptr, size, count, stream); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_fread, fread, LIBC, stream, + FD_API_READ_START, "pxxp", ptr, size, count, stream); tret = freadp(ptr, size, count, stream); - FILE_API_END_BLOCK(API_ID_fread, tret, tret*size, FD_API_READ_END, - "pxxp", ptr, size, count, stream); + AFTER_ORIGINAL_START_END_FILEP(API_ID_fread, tret, tret*size, stream, + FD_API_READ_END, "pxxp", ptr, size, count, stream); return tret; } @@ -412,15 +417,13 @@ size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream) static size_t (*fwritep)(const void* ptr, size_t size, size_t count, FILE* stream); size_t tret; - BEFORE_ORIGINAL_FILE(fwrite, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_fwrite, FD_API_WRITE_START, - "pxxp", ptr, size, count, stream); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_fwrite, fwrite, LIBC, stream, + FD_API_WRITE_START, "pxxp", ptr, size, count, stream); tret = fwritep(ptr, size, count, stream); - FILE_API_END_BLOCK(API_ID_fwrite, tret, tret*size, FD_API_WRITE_END, - "pxxp", ptr, size, count, stream); + AFTER_ORIGINAL_START_END_FILEP(API_ID_fwrite, tret, tret*size, stream, + FD_API_WRITE_END, "pxxp", ptr, size, count, stream); return tret; } @@ -432,17 +435,17 @@ int fprintf(FILE* stream, const char* format, ...) { static int (*vfprintfp)(FILE* stream, const char* format, ...); - BEFORE_ORIGINAL_FILE(vfprintf, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_fprintf, FD_API_WRITE_START, - "ps", stream, format); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_fprintf, vfprintf, LIBC, stream, + FD_API_WRITE_START, "ps", stream, format); va_list arg; va_start(arg, format); + ret = vfprintfp(stream, format, arg); - FILE_API_END_BLOCK(API_ID_fprintf, ret, ret, FD_API_WRITE_END, - "ps", stream, format); + AFTER_ORIGINAL_START_END_FILEP(API_ID_fprintf, ret, ret, stream, + FD_API_WRITE_END, "ps", stream, format); + va_end(arg); return ret; @@ -452,17 +455,17 @@ int fscanf(FILE* stream, const char* format, ...) { static int (*vfscanfp)(FILE* stream, const char* format, ...); - BEFORE_ORIGINAL_FILE(vfscanf, LIBC); - DEFINE_FILESIZE_FP(stream); - FILE_API_START_BLOCK(API_ID_fscanf, FD_API_READ_START, - "ps", stream, format); + BEFORE_ORIGINAL_START_END_FILEP(API_ID_fscanf, vfscanf, LIBC, stream, + FD_API_READ_START, "ps", stream, format); va_list arg; va_start(arg, format); + ret = vfscanfp(stream, format, arg); - FILE_API_END_BLOCK(API_ID_fscanf, ret, ret, + AFTER_ORIGINAL_START_END_FILEP(API_ID_fscanf, ret, ret, stream, FD_API_READ_END, "ps", stream, format); + va_end(arg); return ret; @@ -473,17 +476,16 @@ int printf(const char* format, ...) { static int (*vprintfp)(const char* format, ...); - BEFORE_ORIGINAL_FILE(vprintf, LIBC); - DEFINE_FILESIZE_0(); - FILE_API_START_BLOCK(API_ID_printf, FD_API_WRITE_START, - "s", format); + BEFORE_ORIGINAL_START_END_NOFD(API_ID_printf, vprintf, LIBC, + FD_API_WRITE_START, "s", format); va_list arg; va_start(arg, format); ret = vprintfp(format, arg); - FILE_API_END_BLOCK(API_ID_printf, ret, ret, + AFTER_ORIGINAL_START_END_NOFD(API_ID_printf, ret, ret, FD_API_WRITE_END, "s", format); + va_end(arg); return ret; @@ -494,17 +496,16 @@ int scanf(const char* format, ...) { static int (*vscanfp)(const char* format, ...); - BEFORE_ORIGINAL_FILE(vscanf, LIBC); - DEFINE_FILESIZE_0(); - FILE_API_START_BLOCK(API_ID_scanf, FD_API_READ_START, - "s", format); + BEFORE_ORIGINAL_START_END_NOFD(API_ID_scanf, vscanf, LIBC, + FD_API_READ_START, "s", format); va_list arg; va_start(arg, format); ret = vscanfp(format, arg); - FILE_API_END_BLOCK(API_ID_scanf, ret, ret, + AFTER_ORIGINAL_START_END_NOFD(API_ID_scanf, ret, ret, FD_API_READ_END, "s", format); + va_end(arg); return ret; @@ -514,13 +515,14 @@ int getchar() { static int (*getcharp)(); - BEFORE_ORIGINAL_FILE(getchar, LIBC); - DEFINE_FILESIZE_0(); - FILE_API_START_BLOCK(API_ID_getchar, FD_API_READ_START, - "s", ""); + BEFORE_ORIGINAL_START_END_NOFD(API_ID_getchar, getchar, LIBC, + FD_API_READ_START, "", 0); + ret = getcharp(); - FILE_API_END_BLOCK(API_ID_getchar, ret, (ret != EOF ), + + AFTER_ORIGINAL_START_END_NOFD(API_ID_getchar, ret, (ret == EOF ? 0 : 1), FD_API_READ_END, "", 0); + return ret; } @@ -528,13 +530,14 @@ int putchar(int c) { static int (*putcharp)(int c); - BEFORE_ORIGINAL_FILE(putchar, LIBC); - DEFINE_FILESIZE_0(); - FILE_API_START_BLOCK(API_ID_putchar, FD_API_WRITE_START, - "d", c); + BEFORE_ORIGINAL_START_END_NOFD(API_ID_putchar, putchar, LIBC, + FD_API_WRITE_START, "d", c); + ret = putcharp(c); - FILE_API_END_BLOCK(API_ID_putchar, ret, (ret != EOF), + + AFTER_ORIGINAL_START_END_NOFD(API_ID_putchar, ret, (ret == EOF ? 0 : 1), FD_API_WRITE_END, "d", c); + return ret; } @@ -543,14 +546,12 @@ char* gets(char* str) static char* (*getsp)(char* str); char* cret; - BEFORE_ORIGINAL_FILE(gets, LIBC); - DEFINE_FILESIZE_0(); - FILE_API_START_BLOCK(API_ID_gets, FD_API_READ_START, - "s", str); + BEFORE_ORIGINAL_START_END_NOFD(API_ID_gets, gets, LIBC, + FD_API_READ_START, "s", str); cret = getsp(str); - FILE_API_END_BLOCK(API_ID_gets, cret, strlen(cret), + AFTER_ORIGINAL_START_END_NOFD(API_ID_gets, cret, strlen(cret), FD_API_READ_END, "s", str); return cret; @@ -561,13 +562,14 @@ int puts(const char* str) { static int (*putsp)(const char* str); - BEFORE_ORIGINAL_FILE(puts, LIBC); - DEFINE_FILESIZE_0(); - FILE_API_START_BLOCK(API_ID_puts, FD_API_WRITE_START, - "s", str); + BEFORE_ORIGINAL_START_END_NOFD(API_ID_puts, puts, LIBC, + FD_API_WRITE_START, "s", str); + ret = putsp(str); - FILE_API_END_BLOCK(API_ID_puts, ret, ret, + + AFTER_ORIGINAL_START_END_NOFD(API_ID_puts, ret, ret, FD_API_WRITE_END, "s", str); + return ret; } #endif -- 2.7.4