diff --git a/Contrib/ExDLL/exdll.h b/Contrib/ExDLL/exdll.h index bbccafb0..6d3f0b9d 100644 --- a/Contrib/ExDLL/exdll.h +++ b/Contrib/ExDLL/exdll.h @@ -1,102 +1,15 @@ +// this file is for backward compatibility only +// use the new plugin.h and plugin.lib directly for new plug-ins + #ifndef _EXDLL_H_ #define _EXDLL_H_ #include -#include "../../Source/exehead/api.h" +#include // nsis plugin.h -#if defined(__GNUC__) -#define UNUSED __attribute__((unused)) -#else -#define UNUSED +// this may not work if /NODEFAULTLIB is used +#ifdef _MSC_VER +# pragma comment(lib, "plugin.lib") #endif -// only include this file from one place in your DLL. -// (it is all static, if you use it in two places it will fail) - -#define EXDLL_INIT() { \ - g_stringsize=string_size; \ - g_stacktop=stacktop; \ - g_variables=variables; } - -typedef struct _stack_t { - struct _stack_t *next; - char text[1]; // this should be the length of string_size -} stack_t; - - -static unsigned int g_stringsize; -static stack_t **g_stacktop; -static char *g_variables; - -static int __stdcall popstring(char *str) UNUSED; // 0 on success, 1 on empty stack -static void __stdcall pushstring(const char *str) UNUSED; -static char * __stdcall getuservariable(const int varnum) UNUSED; -static void __stdcall setuservariable(const int varnum, const char *var) UNUSED; - -enum -{ -INST_0, // $0 -INST_1, // $1 -INST_2, // $2 -INST_3, // $3 -INST_4, // $4 -INST_5, // $5 -INST_6, // $6 -INST_7, // $7 -INST_8, // $8 -INST_9, // $9 -INST_R0, // $R0 -INST_R1, // $R1 -INST_R2, // $R2 -INST_R3, // $R3 -INST_R4, // $R4 -INST_R5, // $R5 -INST_R6, // $R6 -INST_R7, // $R7 -INST_R8, // $R8 -INST_R9, // $R9 -INST_CMDLINE, // $CMDLINE -INST_INSTDIR, // $INSTDIR -INST_OUTDIR, // $OUTDIR -INST_EXEDIR, // $EXEDIR -INST_LANG, // $LANGUAGE -__INST_LAST -}; - -// utility functions (not required but often useful) -static int __stdcall popstring(char *str) -{ - stack_t *th; - if (!g_stacktop || !*g_stacktop) return 1; - th=(*g_stacktop); - lstrcpyA(str,th->text); - *g_stacktop = th->next; - GlobalFree((HGLOBAL)th); - return 0; -} - -static void __stdcall pushstring(const char *str) -{ - stack_t *th; - if (!g_stacktop) return; - th=(stack_t*)GlobalAlloc(GPTR,sizeof(stack_t)+g_stringsize); - lstrcpynA(th->text,str,g_stringsize); - th->next=*g_stacktop; - *g_stacktop=th; -} - -static char * __stdcall getuservariable(const int varnum) -{ - if (varnum < 0 || varnum >= __INST_LAST) return NULL; - return g_variables+varnum*g_stringsize; -} - -static void __stdcall setuservariable(const int varnum, const char *var) -{ - if (var != NULL && varnum >= 0 && varnum < __INST_LAST) - lstrcpyA(g_variables + varnum*g_stringsize, var); -} - - - #endif//_EXDLL_H_