diff -ruN plugins.old/exdll.h plugins/exdll.h
--- plugins.old/exdll.h 1970-01-01 08:00:00.000000000 +0800
+++ plugins/exdll.h 2010-01-11 18:43:50.751354626 +0800
@@ -0,0 +1,137 @@
+#ifndef _EXDLL_H_

+#define _EXDLL_H_

+

+

+

+

+

+//

+// 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; }

+

+

+

+

+//

+// For page showing plug-ins

+//

+#define WM_NOTIFY_OUTER_NEXT (WM_USER+0x8)

+#define WM_NOTIFY_CUSTOM_READY (WM_USER+0xd)

+#define NOTIFY_BYE_BYE 'x'

+

+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;

+

+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 popstring( char *str )

+{

+ stack_t *th;

+

+

+ if( !g_stacktop ||

+ !*g_stacktop )

+ return 1;

+

+ th = (*g_stacktop);

+ lstrcpy( str, th->text );

+ *g_stacktop = th->next;

+ GlobalFree( (HGLOBAL)th );

+

+ return 0;

+}

+

+

+

+

+static void pushstring( char *str )

+{

+ stack_t *th;

+

+

+ if( !g_stacktop )

+ return;

+

+ th = (stack_t*)GlobalAlloc( GPTR, sizeof(stack_t) + g_stringsize );

+ lstrcpyn( th->text, str, g_stringsize );

+ th->next = *g_stacktop;

+ *g_stacktop = th;

+}

+

+

+

+

+

+static char *getuservariable( int varnum )

+{

+ if( varnum < 0 ||

+ varnum >= __INST_LAST )

+ return NULL;

+

+ return (g_variables + varnum*g_stringsize);

+}

+

+

+

+

+

+static void setuservariable( int varnum, char *var )

+{

+ if( var != NULL &&

+ varnum >= 0 &&

+ varnum < __INST_LAST )

+ lstrcpy( g_variables + varnum*g_stringsize, var );

+}

+

+

+

+#endif//_EXDLL_H_

+

diff -ruN plugins.old/sm_cleanboot.c plugins/sm_cleanboot.c
--- plugins.old/sm_cleanboot.c 2010-01-11 18:35:55.715646433 +0800
+++ plugins/sm_cleanboot.c 2010-01-11 18:44:15.079370865 +0800
@@ -22,7 +22,7 @@
#include "exdll.h"
#endif

-void __declspec (dllexport) sm_cleanboot (HWND hwndParent, int string_size, char *variables, stack_t ** stacktop, extra_parameters * extra)
+void __declspec (dllexport) sm_cleanboot (HWND hwndParent, int string_size, char *variables, stack_t ** stacktop, ...)
{
EXDLL_INIT ();

This page has been viewed 83 times
Free Text Host is brought to you by Dagon Design
This site contains no adware, spyware, or popups
Questions? Comments?