X-Git-Url: https://ruderich.org/simon/gitweb/?p=coloredstderr%2Fcoloredstderr.git;a=blobdiff_plain;f=src%2Fhookmacros.h;h=4378e4ce2cb5060b920f98d8f818bddd9f819c91;hp=8a05811ddf0b1a07b1ce9f03e92f5bb49e90c2bb;hb=8a65b4486febf00e3fad5bafc3773a811e675a4c;hpb=ca12529c8f3880c008212e97cf6b4b7d6981dec8 diff --git a/src/hookmacros.h b/src/hookmacros.h index 8a05811..4378e4c 100644 --- a/src/hookmacros.h +++ b/src/hookmacros.h @@ -1,7 +1,7 @@ /* * Macros to hook functions. * - * Copyright (C) 2013 Simon Ruderich + * Copyright (C) 2013-2015 Simon Ruderich * * 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 @@ -103,29 +103,38 @@ #define HOOK_FUNC_DEF1(type, name, type1, arg1) \ static type (*real_ ## name)(type1); \ + type name(type1) visibility_protected; \ type name(type1 arg1) #define HOOK_FUNC_DEF2(type, name, type1, arg1, type2, arg2) \ static type (*real_ ## name)(type1, type2); \ + type name(type1, type2) visibility_protected; \ type name(type1 arg1, type2 arg2) #define HOOK_FUNC_DEF3(type, name, type1, arg1, type2, arg2, type3, arg3) \ static type (*real_ ## name)(type1, type2, type3); \ + type name(type1, type2, type3) visibility_protected; \ type name(type1 arg1, type2 arg2, type3 arg3) #define HOOK_FUNC_DEF4(type, name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) \ static type (*real_ ## name)(type1, type2, type3, type4); \ + type name(type1, type2, type3, type4) visibility_protected; \ type name(type1 arg1, type2 arg2, type3 arg3, type4 arg4) #define HOOK_FUNC_VAR_DEF2(type, name, type1, arg1, type2, arg2) \ static type (*real_ ## name)(type1, type2, ...); \ + type name(type1, type2, ...) visibility_protected; \ type name(type1 arg1, type2 arg2, ...) #define HOOK_FUNC_SIMPLE3(type, name, type1, arg1, type2, arg2, type3, arg3) \ + type name(type1, type2, type3) visibility_protected; \ type name(type1 arg1, type2 arg2, type3 arg3) #define HOOK_FUNC_VAR_SIMPLE1(type, name, type1, arg1) \ + type name(type1, ...) visibility_protected; \ type name(type1 arg1, ...) #define HOOK_FUNC_VAR_SIMPLE2(type, name, type1, arg1, type2, arg2) \ + type name(type1, type2, ...) visibility_protected; \ type name(type1 arg1, type2 arg2, ...) #define HOOK_FUNC_VAR_SIMPLE3(type, name, type1, arg1, type2, arg2, type3, arg3) \ + type name(type1, type2, type3, ...) visibility_protected; \ type name(type1 arg1, type2 arg2, type3 arg3, ...) #define HOOK_VOID1(type, name, fd, type1, arg1) \ @@ -162,12 +171,6 @@ va_end(ap); \ } -#define HOOK_FD2(type, name, fd, type1, arg1, type2, arg2) \ - HOOK_FUNC_DEF2(type, name, type1, arg1, type2, arg2) { \ - _HOOK_PRE_FD(type, name, fd) \ - result = real_ ## name(arg1, arg2); \ - _HOOK_POST_FD(fd) \ - } #define HOOK_FD3(type, name, fd, type1, arg1, type2, arg2, type3, arg3) \ HOOK_FUNC_DEF3(type, name, type1, arg1, type2, arg2, type3, arg3) { \ _HOOK_PRE_FD(type, name, fd) \