/usr/lib/perl5/Tk/vtab.def is in perl-tk 1:804.031-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #define IMPORT_VTABLE(ptr,type,name) do { \
ptr = INT2PTR(type *,SvIV(get_sv(name,GV_ADDWARN|GV_ADD))); \
if ((*ptr->tabSize)() != sizeof(type)) { \
Perl_warn(aTHX_ "%s wrong size for %s",name,#type); \
} \
} while (0)
#ifdef WIN32
#define DECLARE_VTABLES \
LangVtab *LangVptr; \
TcldeclsVtab *TcldeclsVptr; \
TkVtab *TkVptr; \
TkdeclsVtab *TkdeclsVptr; \
TkeventVtab *TkeventVptr; \
TkglueVtab *TkglueVptr; \
TkintVtab *TkintVptr; \
TkintdeclsVtab *TkintdeclsVptr; \
TkintplatdeclsVtab *TkintplatdeclsVptr;\
TkintxlibdeclsVtab *TkintxlibdeclsVptr;\
TkoptionVtab *TkoptionVptr; \
TkplatdeclsVtab *TkplatdeclsVptr
#define IMPORT_VTABLES do { \
IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \
IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \
IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \
IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \
IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \
IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \
IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \
IMPORT_VTABLE(TkintplatdeclsVptr,TkintplatdeclsVtab,"Tk::TkintplatdeclsVtab"); \
IMPORT_VTABLE(TkintxlibdeclsVptr,TkintxlibdeclsVtab,"Tk::TkintxlibdeclsVtab"); \
IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \
IMPORT_VTABLE(TkplatdeclsVptr , TkplatdeclsVtab,"Tk::TkplatdeclsVtab"); \
} while (0)
#else
#define DECLARE_VTABLES \
LangVtab *LangVptr; \
TcldeclsVtab *TcldeclsVptr; \
TkVtab *TkVptr; \
TkdeclsVtab *TkdeclsVptr; \
TkeventVtab *TkeventVptr; \
TkglueVtab *TkglueVptr; \
TkintVtab *TkintVptr; \
TkintdeclsVtab *TkintdeclsVptr; \
TkoptionVtab *TkoptionVptr; \
XlibVtab *XlibVptr
#define IMPORT_VTABLES do { \
IMPORT_VTABLE(LangVptr , LangVtab,"Tk::LangVtab"); \
IMPORT_VTABLE(TcldeclsVptr , TcldeclsVtab,"Tk::TcldeclsVtab"); \
IMPORT_VTABLE(TkVptr , TkVtab,"Tk::TkVtab"); \
IMPORT_VTABLE(TkdeclsVptr , TkdeclsVtab,"Tk::TkdeclsVtab"); \
IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
IMPORT_VTABLE(TkglueVptr , TkglueVtab,"Tk::TkglueVtab"); \
IMPORT_VTABLE(TkintVptr , TkintVtab,"Tk::TkintVtab"); \
IMPORT_VTABLE(TkintdeclsVptr , TkintdeclsVtab,"Tk::TkintdeclsVtab"); \
IMPORT_VTABLE(TkoptionVptr , TkoptionVtab,"Tk::TkoptionVtab"); \
IMPORT_VTABLE(XlibVptr , XlibVtab,"Tk::XlibVtab"); \
} while (0)
#endif
#define DECLARE_TIX \
TixVtab *TixVptr; \
TixintVtab *TixintVptr
#define IMPORT_TIX do { \
IMPORT_VTABLE(TixVptr , TixVtab,"Tk::TixVtab"); \
IMPORT_VTABLE(TixintVptr , TixintVtab,"Tk::TixintVtab"); \
} while (0)
#define DECLARE_PHOTO \
ImgintVtab *ImgintVptr; \
TkimgphotoVtab *TkimgphotoVptr
#define IMPORT_PHOTO do { \
IMPORT_VTABLE(ImgintVptr , ImgintVtab,"Tk::ImgintVtab"); \
IMPORT_VTABLE(TkimgphotoVptr , TkimgphotoVtab,"Tk::TkimgphotoVtab"); \
} while (0)
#define DECLARE_EVENT \
TkeventVtab *TkeventVptr
#define IMPORT_EVENT do { \
IMPORT_VTABLE(TkeventVptr , TkeventVtab,"Tk::TkeventVtab"); \
} while (0)
#define DECLARE_TIXXPM \
TiximgxpmVtab *TiximgxpmVptr
#define IMPORT_TIXXPM do { \
IMPORT_VTABLE(TiximgxpmVptr , TiximgxpmVtab,"Tk::TiximgxpmVtab"); \
} while (0)
|