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 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147
| #ifndef _PLUGIN_COMMON_H_ #define _PLUGIN_COMMON_H_
#include <stdio.h>
#define PLUGIN_BUF_LEN 1024
#define NSISAPI extern "C" __declspec(dllexport) void __cdecl
#define EXDLL_INIT() { \ g_stringsize=string_size; \ g_stacktop=stacktop; \ g_variables=variables; }
typedef struct _stack_t { struct _stack_t *next; char text[1]; } stack_t;
static unsigned int g_stringsize; static stack_t **g_stacktop; static char *g_variables;
enum { INST_0, INST_1, INST_2, INST_3, INST_4, INST_5, INST_6, INST_7, INST_8, INST_9, INST_R0, INST_R1, INST_R2, INST_R3, INST_R4, INST_R5, INST_R6, INST_R7, INST_R8, INST_R9, INST_CMDLINE, INST_INSTDIR, INST_OUTDIR, INST_EXEDIR, INST_LANG, __INST_LAST };
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(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 int __stdcall popint() { char buf[512] = {0}; popstring(buf); return atoi(buf); }
static void __stdcall pushint(long value) { char buf[512] = {0}; sprintf_s(buf, "%ld", value); pushstring(buf); }
static char * __stdcall getuservariable(int varnum) { if (varnum < 0 || varnum >= __INST_LAST) return NULL; return g_variables+varnum*g_stringsize; }
static void __stdcall setuservariable(int varnum, char *var) { if (var != NULL && varnum >= 0 && varnum < __INST_LAST) lstrcpyA(g_variables + varnum*g_stringsize, var); }
enum NSPIM { NSPIM_UNLOAD, NSPIM_GUIUNLOAD, };
typedef UINT_PTR (*NSISPLUGINCALLBACK)(enum NSPIM);
typedef struct { int autoclose; int all_user_var; int exec_error; int abort; int exec_reboot; int reboot_called; int XXX_cur_insttype; int plugin_api_version; int silent; int instdir_error; int rtl; int errlvl; int alter_reg_view; int status_update; } exec_flags_t;
#ifndef NSISCALL #define NSISCALL __stdcall #endif
typedef struct { exec_flags_t *exec_flags; int (NSISCALL *ExecuteCodeSegment)(int, HWND); void (NSISCALL *validate_filename)(char *);
int (NSISCALL *RegisterPluginCallback)(HMODULE, NSISPLUGINCALLBACK); } extra_parameters;
#endif
|