From b5e3f8cb0a19ec0672cd27c8df0f3393643aaf42 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Wed, 12 Aug 2015 13:59:08 +0200 Subject: Get rid of all the tabs. So annoying. --- Linux_C_12/cCrossCall_121.c | 702 ++++++++++++++++++++++---------------------- 1 file changed, 351 insertions(+), 351 deletions(-) (limited to 'Linux_C_12/cCrossCall_121.c') diff --git a/Linux_C_12/cCrossCall_121.c b/Linux_C_12/cCrossCall_121.c index 56b74e4..7028348 100644 --- a/Linux_C_12/cCrossCall_121.c +++ b/Linux_C_12/cCrossCall_121.c @@ -1,26 +1,26 @@ /******************************************************************************************** - Clean OS Windows library module version 1.2.1. - This module is part of the Clean Object I/O library, version 1.2.1, - for the Windows platform. + Clean OS Windows library module version 1.2.1. + This module is part of the Clean Object I/O library, version 1.2.1, + for the Windows platform. ********************************************************************************************/ /******************************************************************************************** - About this module: - cCrossCall_121 defines the infrastructure required by the Object I/O library to call - system procedures that interact with the Windows callback mechanism. + About this module: + cCrossCall_121 defines the infrastructure required by the Object I/O library to call + system procedures that interact with the Windows callback mechanism. - The basic principle in cCrossCall_121 is to have a minimal cross call kernel. If Clean - code requires extension of the functionality of the OS thread, then this functionality - must be registered before being applicable. + The basic principle in cCrossCall_121 is to have a minimal cross call kernel. If Clean + code requires extension of the functionality of the OS thread, then this functionality + must be registered before being applicable. - In this version the request codes are still statically fixed and are assumed to be - globally available both in the OS thread and the Clean thread. In a future version this - will probably be replaced by a dynamic allocation of cross call request codes. + In this version the request codes are still statically fixed and are assumed to be + globally available both in the OS thread and the Clean thread. In a future version this + will probably be replaced by a dynamic allocation of cross call request codes. ********************************************************************************************/ /******************************************************************************************** - Include section. + Include section. ********************************************************************************************/ #include "cCrossCall_121.h" @@ -40,14 +40,14 @@ int global_argc = 0; #define _MAX_PATH 255 /********************************************************************************************** - External global data section. + External global data section. **********************************************************************************************/ CrossCallInfo gCci; /* The global cross call information struct. */ GtkTooltips *gTooltip = NULL; /* The tooltip control. */ CrossCallProcedureTable gCrossCallProcedureTable; /********************************************************************************************** - Internal global data section. + Internal global data section. **********************************************************************************************/ static pthread_mutex_t gCleanMutex; @@ -63,213 +63,213 @@ static CrossCallInfo *MakeQuitCci (CrossCallInfo * pcci); */ int GetModifiers (void) { - int mods = 0; - GdkModifierType state; + int mods = 0; + GdkModifierType state; /*printf("GetModifiers\n");*/ - gdk_event_get_state(gtk_get_current_event(), &state); + gdk_event_get_state(gtk_get_current_event(), &state); - if (state & GDK_SHIFT_MASK) { - mods |= SHIFTBIT; + if (state & GDK_SHIFT_MASK) { + mods |= SHIFTBIT; } - if (state & GDK_CONTROL_MASK) { - mods |= CTRLBIT; + if (state & GDK_CONTROL_MASK) { + mods |= CTRLBIT; } - if (state & GDK_MOD1_MASK) { - mods |= ALTBIT; + if (state & GDK_MOD1_MASK) { + mods |= ALTBIT; } - return mods; + return mods; } /* Translate virtual key codes to the codes shared with Clean. - This procedure has been filtered from TranslateKeyboardMessage. - If the keycode could not be translated, zero is returned. + This procedure has been filtered from TranslateKeyboardMessage. + If the keycode could not be translated, zero is returned. */ int CheckVirtualKeyCode (int keycode) { - int c = 0; + int c = 0; /* printf("CheckVirtualKeyCode\n");*/ - switch (keycode) - { - case GDK_Up: - c = WinUpKey; - break; - case GDK_Down: - c = WinDownKey; - break; - case GDK_Left: - c = WinLeftKey; - break; - case GDK_Right: - c = WinRightKey; - break; - case GDK_Page_Up: - c = WinPgUpKey; - break; - case GDK_Page_Down: - c = WinPgDownKey; - break; - case GDK_End: - c = WinEndKey; - break; - case GDK_Begin: - c = WinBeginKey; - break; - case GDK_BackSpace: - c = WinBackSpKey; - break; - case GDK_Delete: - c = WinDelKey; - break; - case GDK_Tab: - c = WinTabKey; - break; - case GDK_Return: - c = WinReturnKey; - break; - case GDK_Escape: - c = WinEscapeKey; - break; - case GDK_Help: - c = WinHelpKey; - break; - case GDK_F1: - c = WinF1Key; - break; - case GDK_F2: - c = WinF2Key; - break; - case GDK_F3: - c = WinF3Key; - break; - case GDK_F4: - c = WinF4Key; - break; - case GDK_F5: - c = WinF5Key; - break; - case GDK_F6: - c = WinF6Key; - break; - case GDK_F7: - c = WinF7Key; - break; - case GDK_F8: - c = WinF8Key; - break; - case GDK_F9: - c = WinF9Key; - break; - case GDK_F10: - c = WinF10Key; - break; - case GDK_F11: - c = WinF11Key; - break; - case GDK_F12: - c = WinF12Key; - break; - } - return c; + switch (keycode) + { + case GDK_Up: + c = WinUpKey; + break; + case GDK_Down: + c = WinDownKey; + break; + case GDK_Left: + c = WinLeftKey; + break; + case GDK_Right: + c = WinRightKey; + break; + case GDK_Page_Up: + c = WinPgUpKey; + break; + case GDK_Page_Down: + c = WinPgDownKey; + break; + case GDK_End: + c = WinEndKey; + break; + case GDK_Begin: + c = WinBeginKey; + break; + case GDK_BackSpace: + c = WinBackSpKey; + break; + case GDK_Delete: + c = WinDelKey; + break; + case GDK_Tab: + c = WinTabKey; + break; + case GDK_Return: + c = WinReturnKey; + break; + case GDK_Escape: + c = WinEscapeKey; + break; + case GDK_Help: + c = WinHelpKey; + break; + case GDK_F1: + c = WinF1Key; + break; + case GDK_F2: + c = WinF2Key; + break; + case GDK_F3: + c = WinF3Key; + break; + case GDK_F4: + c = WinF4Key; + break; + case GDK_F5: + c = WinF5Key; + break; + case GDK_F6: + c = WinF6Key; + break; + case GDK_F7: + c = WinF7Key; + break; + case GDK_F8: + c = WinF8Key; + break; + case GDK_F9: + c = WinF9Key; + break; + case GDK_F10: + c = WinF10Key; + break; + case GDK_F11: + c = WinF11Key; + break; + case GDK_F12: + c = WinF12Key; + break; + } + return c; } static gboolean TimerCallback (gpointer data) { /*printf("TimerCallback\n");*/ - SendMessage0ToClean (CcWmIDLETIMER); + SendMessage0ToClean (CcWmIDLETIMER); return TRUE; } void HandleCleanRequest (CrossCallInfo * pcci) { /*printf("HandleCleanRequest: Message = %d\n", pcci->mess);*/ - switch (pcci->mess) - { - case CcRqDOMESSAGE: /* idleTimerOn, sleeptime; no result. */ - { - gboolean gIdleTimerOn = (gboolean) pcci->p1; - gint interval = (gint) pcci->p2; + switch (pcci->mess) + { + case CcRqDOMESSAGE: /* idleTimerOn, sleeptime; no result. */ + { + gboolean gIdleTimerOn = (gboolean) pcci->p1; + gint interval = (gint) pcci->p2; /*printf("CcRqDOMESSAGE\n");*/ - if (gIdleTimerOn) - { - GSource *source = g_timeout_source_new(interval); - g_source_set_callback(source,TimerCallback,NULL,NULL); - g_source_attach(source,NULL); - - gtk_main_iteration(); - - g_source_destroy(source); - } - else - { - gtk_main_iteration(); - } - - MakeReturn0Cci (pcci); - } - break; - default: - { - CrossCallProcedure action; - - action = FindCrossCallEntry (gCrossCallProcedureTable, pcci->mess); + if (gIdleTimerOn) + { + GSource *source = g_timeout_source_new(interval); + g_source_set_callback(source,TimerCallback,NULL,NULL); + g_source_attach(source,NULL); + + gtk_main_iteration(); + + g_source_destroy(source); + } + else + { + gtk_main_iteration(); + } + + MakeReturn0Cci (pcci); + } + break; + default: + { + CrossCallProcedure action; + + action = FindCrossCallEntry (gCrossCallProcedureTable, pcci->mess); /*printf("Handle Request for action logged for: %d\n", pcci->mess);*/ - if (action == NULL) - { /* Cross call request code not installed. */ - /*printf("\'HandleCleanRequest\' got uninstalled CcRq request code from Haskell: %d\n", pcci->mess);*/ - exit(1); - } - else - { /* Cross call request code found. Apply it to pcci. */ + if (action == NULL) + { /* Cross call request code not installed. */ + /*printf("\'HandleCleanRequest\' got uninstalled CcRq request code from Haskell: %d\n", pcci->mess);*/ + exit(1); + } + else + { /* Cross call request code found. Apply it to pcci. */ /*printf("Action Requested: %d\n", pcci->mess);*/ - action (pcci); - } - } - } - KickCleanThread (pcci); + action (pcci); + } + } + } + KickCleanThread (pcci); } /* HandleCleanRequest */ void InitGTK() { - static gboolean gInitiated = FALSE; + static gboolean gInitiated = FALSE; /*printf("InitGTK\n"); */ - if (!gInitiated) - { - gtk_set_locale(); - gtk_init(&global_argc,&global_argv); - gInitiated = TRUE; - }; + if (!gInitiated) + { + gtk_set_locale(); + gtk_init(&global_argc,&global_argv); + gInitiated = TRUE; + }; } /* InitGTK */ static gpointer OsThreadFunction (gpointer param); OS WinStartOsThread(OS os) { - pthread_attr_t attr; + pthread_attr_t attr; /* rprintf ("WinStartOSThread\n"); */ - InitGTK(); + InitGTK(); - /* The cross call procedure table is set to the empty table. */ - gCrossCallProcedureTable = EmptyCrossCallProcedureTable (); + /* The cross call procedure table is set to the empty table. */ + gCrossCallProcedureTable = EmptyCrossCallProcedureTable (); /* rprintf ("Created CC Table\n"); */ - pthread_mutex_init(&gCleanMutex,NULL); - pthread_mutex_lock(&gCleanMutex); - pthread_mutex_init(&gOSMutex,NULL); - pthread_mutex_lock(&gOSMutex); - gOSThreadIsRunning = TRUE; + pthread_mutex_init(&gCleanMutex,NULL); + pthread_mutex_lock(&gCleanMutex); + pthread_mutex_init(&gOSMutex,NULL); + pthread_mutex_lock(&gOSMutex); + gOSThreadIsRunning = TRUE; /* rprintf ("OS is running.\n"); */ - pthread_attr_init(&attr); - pthread_create(&gOSThread,&attr,OsThreadFunction,NULL); - pthread_attr_destroy(&attr); + pthread_attr_init(&attr); + pthread_create(&gOSThread,&attr,OsThreadFunction,NULL); + pthread_attr_destroy(&attr); /* rprintf ("Exiting initializer.\n"); */ return os; @@ -278,84 +278,84 @@ OS WinStartOsThread(OS os) OS WinKillOsThread (OS os) { /* printf("WinKillOsThread\n"); */ - if (gOSThread != FALSE) - { - gOSThreadIsRunning = FALSE; - gOSThread = FALSE; + if (gOSThread != FALSE) + { + gOSThreadIsRunning = FALSE; + gOSThread = FALSE; - DeleteCursors(); + DeleteCursors(); - if (gCrossCallProcedureTable) - FreeCrossCallProcedureTable (gCrossCallProcedureTable); - } + if (gCrossCallProcedureTable) + FreeCrossCallProcedureTable (gCrossCallProcedureTable); + } return os; } /*WinKillOsThread*/ #define PRINTCROSSCALLS void WinKickOsThread (int64_t imess, - int64_t ip1, int64_t ip2, int64_t ip3, - int64_t ip4, int64_t ip5, int64_t ip6, + int64_t ip1, int64_t ip2, int64_t ip3, + int64_t ip4, int64_t ip5, int64_t ip6, OS ios, - int64_t *omess, - int64_t *op1, int64_t *op2, int64_t *op3, - int64_t *op4, int64_t *op5, int64_t *op6, + int64_t *omess, + int64_t *op1, int64_t *op2, int64_t *op3, + int64_t *op4, int64_t *op5, int64_t *op6, OS *oos - ) + ) { - gCci.mess = imess; - gCci.p1 = ip1; - gCci.p2 = ip2; - gCci.p3 = ip3; - gCci.p4 = ip4; - gCci.p5 = ip5; - gCci.p6 = ip6; + gCci.mess = imess; + gCci.p1 = ip1; + gCci.p2 = ip2; + gCci.p3 = ip3; + gCci.p4 = ip4; + gCci.p5 = ip5; + gCci.p6 = ip6; #ifdef PRINTCROSSCALLS - rprintf("WinKickOsThread ("); - printCCI (&gCci); - printf(" - data: %p, %p, %p, %p, %p, %p, %p\n", - gCci.p1, gCci.p2, gCci.p3, gCci.p4, - gCci.p5, gCci.p6, ios); - rprintf(")\n"); + rprintf("WinKickOsThread ("); + printCCI (&gCci); + printf(" - data: %p, %p, %p, %p, %p, %p, %p\n", + gCci.p1, gCci.p2, gCci.p3, gCci.p4, + gCci.p5, gCci.p6, ios); + rprintf(")\n"); #endif - if (gOSThread != FALSE) - { + if (gOSThread != FALSE) + { #ifdef PRINTCROSSCALLS rprintf("Unlocking Clean mutex.\n"); #endif - pthread_mutex_unlock(&gCleanMutex); + pthread_mutex_unlock(&gCleanMutex); #ifdef PRINTCROSSCALLS rprintf("Locking OS mutex.\n"); #endif - pthread_mutex_lock(&gOSMutex); + pthread_mutex_lock(&gOSMutex); #ifdef PRINTCROSSCALLS rprintf("OS mutex locked.\n"); #endif - *omess = gCci.mess; - *op1 = gCci.p1; - *op2 = gCci.p2; - *op3 = gCci.p3; - *op4 = gCci.p4; - *op5 = gCci.p5; - *op6 = gCci.p6; + *omess = gCci.mess; + *op1 = gCci.p1; + *op2 = gCci.p2; + *op3 = gCci.p3; + *op4 = gCci.p4; + *op5 = gCci.p5; + *op6 = gCci.p6; *oos = ios; printf("Data: %p, %p, %p, %p, %p, %p, %p\n", gCci.p1, gCci.p2, gCci.p3, gCci.p4, gCci.p5, gCci.p6, ios); - } - else - { - *omess = CcWASQUIT; - *op1 = 0; - *op2 = 0; - *op3 = 0; - *op4 = 0; - *op5 = 0; - *op6 = 0; + } + else + { + *omess = CcWASQUIT; + *op1 = 0; + *op2 = 0; + *op3 = 0; + *op4 = 0; + *op5 = 0; + *op6 = 0; *oos = ios; - } + } } /* WinKickOsThread */ @@ -370,197 +370,197 @@ void KickCleanThread (CrossCallInfo * pcci) { /* rprintf("KickCleanThread\n"); */ #ifdef PRINTCROSSCALLS - if (ossp == -1) - { - for (ossp = 0; ossp < 10; ossp++) - { - osstack[ossp].mess = -1; - } - ossp = 1; - osstack[ossp].mess = -2; - } - - if (clsp == -1) - { - for (clsp = 0; clsp < 10; clsp++) - { - clstack[clsp].mess = -1; - } - clsp = 1; - clstack[clsp].mess = -2; - } + if (ossp == -1) + { + for (ossp = 0; ossp < 10; ossp++) + { + osstack[ossp].mess = -1; + } + ossp = 1; + osstack[ossp].mess = -2; + } + + if (clsp == -1) + { + for (clsp = 0; clsp < 10; clsp++) + { + clstack[clsp].mess = -1; + } + clsp = 1; + clstack[clsp].mess = -2; + } #endif - if (pcci != &gCci) + if (pcci != &gCci) { - gCci = *pcci; + gCci = *pcci; } #ifdef PRINTCROSSCALLS - rprintf ("KCT: started\n"); - if (gCci.mess < 20) - { - rprintf (" -- %d --> OS returning <", clsp + ossp - 2); - printCCI (&gCci); - rprintf ("> from <"); - printCCI (&(clstack[clsp])); - rprintf (">\n"); - clsp--; - } - else - { - ossp++; - osstack[ossp] = gCci; - rprintf (" -- %d --> OS calling with <", clsp + ossp - 2); - printCCI (&gCci); - rprintf (">\n"); - } - - rprintf ("KCT: setting event\n"); + rprintf ("KCT: started\n"); + if (gCci.mess < 20) + { + rprintf (" -- %d --> OS returning <", clsp + ossp - 2); + printCCI (&gCci); + rprintf ("> from <"); + printCCI (&(clstack[clsp])); + rprintf (">\n"); + clsp--; + } + else + { + ossp++; + osstack[ossp] = gCci; + rprintf (" -- %d --> OS calling with <", clsp + ossp - 2); + printCCI (&gCci); + rprintf (">\n"); + } + + rprintf ("KCT: setting event\n"); #endif - pthread_mutex_unlock(&gOSMutex); + pthread_mutex_unlock(&gOSMutex); #ifdef PRINTCROSSCALLS - rprintf ("KCT: starting wait\n"); + rprintf ("KCT: starting wait\n"); #endif - pthread_mutex_lock(&gCleanMutex); + pthread_mutex_lock(&gCleanMutex); #ifdef PRINTCROSSCALLS - rprintf ("KCT: wait done.\n"); + rprintf ("KCT: wait done.\n"); #endif - if (pcci != &gCci) - *pcci = gCci; + if (pcci != &gCci) + *pcci = gCci; #ifdef PRINTCROSSCALLS - if (gCci.mess < 20) - { - rprintf (" <-- %d -- Clean returning <", clsp + ossp - 2); - printCCI (&gCci); - rprintf ("> from <"); - printCCI (&(osstack[ossp])); - rprintf (">\n"); - ossp--; - } - else - { - clsp++; - clstack[clsp] = gCci; - rprintf (" <-- %d -- Clean calling with <", clsp + ossp - 2); - printCCI (&gCci); - rprintf (">\n"); - } + if (gCci.mess < 20) + { + rprintf (" <-- %d -- Clean returning <", clsp + ossp - 2); + printCCI (&gCci); + rprintf ("> from <"); + printCCI (&(osstack[ossp])); + rprintf (">\n"); + ossp--; + } + else + { + clsp++; + clstack[clsp] = gCci; + rprintf (" <-- %d -- Clean calling with <", clsp + ossp - 2); + printCCI (&gCci); + rprintf (">\n"); + } #endif } /* KickCleanThread */ void SendMessageToClean (int64_t mess, int64_t p1, int64_t p2, int64_t p3, int64_t p4, int64_t p5, int64_t p6) { /* printf("SendMessageToClean -- Message: %d\n", mess); */ - gCci.mess = mess; - gCci.p1 = p1; - gCci.p2 = p2; - gCci.p3 = p3; - gCci.p4 = p4; - gCci.p5 = p5; - gCci.p6 = p6; - - KickCleanThread (&gCci); - while (!IsReturnCci (&gCci)) - { - HandleCleanRequest (&gCci); - } + gCci.mess = mess; + gCci.p1 = p1; + gCci.p2 = p2; + gCci.p3 = p3; + gCci.p4 = p4; + gCci.p5 = p5; + gCci.p6 = p6; + + KickCleanThread (&gCci); + while (!IsReturnCci (&gCci)) + { + HandleCleanRequest (&gCci); + } } CrossCallInfo *MakeReturn0Cci (CrossCallInfo * pcci) { - pcci->mess = CcRETURN0; - return pcci; + pcci->mess = CcRETURN0; + return pcci; } CrossCallInfo *MakeReturn1Cci (CrossCallInfo * pcci, int64_t v1) { - pcci->mess = CcRETURN1; - pcci->p1 = v1; - return pcci; + pcci->mess = CcRETURN1; + pcci->p1 = v1; + return pcci; } CrossCallInfo *MakeReturn2Cci (CrossCallInfo * pcci, int64_t v1, int64_t v2) { - pcci->mess = CcRETURN2; - pcci->p1 = v1; - pcci->p2 = v2; - return pcci; + pcci->mess = CcRETURN2; + pcci->p1 = v1; + pcci->p2 = v2; + return pcci; } CrossCallInfo *MakeReturn3Cci (CrossCallInfo * pcci, int64_t v1, int64_t v2, int64_t v3) { - pcci->mess = CcRETURN3; - pcci->p1 = v1; - pcci->p2 = v2; - pcci->p3 = v3; - return pcci; + pcci->mess = CcRETURN3; + pcci->p1 = v1; + pcci->p2 = v2; + pcci->p3 = v3; + return pcci; } CrossCallInfo *MakeReturn4Cci (CrossCallInfo * pcci, int64_t v1, int64_t v2, int64_t v3, int64_t v4) { - pcci->mess = CcRETURN4; - pcci->p1 = v1; - pcci->p2 = v2; - pcci->p3 = v3; - pcci->p4 = v4; - return pcci; + pcci->mess = CcRETURN4; + pcci->p1 = v1; + pcci->p2 = v2; + pcci->p3 = v3; + pcci->p4 = v4; + return pcci; } CrossCallInfo *MakeReturn5Cci (CrossCallInfo * pcci, int64_t v1, int64_t v2, int64_t v3, int64_t v4, int64_t v5) { - pcci->mess = CcRETURN5; - pcci->p1 = v1; - pcci->p2 = v2; - pcci->p3 = v3; - pcci->p4 = v4; - pcci->p5 = v5; - return pcci; + pcci->mess = CcRETURN5; + pcci->p1 = v1; + pcci->p2 = v2; + pcci->p3 = v3; + pcci->p4 = v4; + pcci->p5 = v5; + return pcci; } CrossCallInfo *MakeReturn6Cci (CrossCallInfo * pcci, int64_t v1, int64_t v2, int64_t v3, int64_t v4, int64_t v5, int64_t v6) { - pcci->mess = CcRETURN6; - pcci->p1 = v1; - pcci->p2 = v2; - pcci->p3 = v3; - pcci->p4 = v4; - pcci->p5 = v5; - pcci->p6 = v6; - return pcci; + pcci->mess = CcRETURN6; + pcci->p1 = v1; + pcci->p2 = v2; + pcci->p3 = v3; + pcci->p4 = v4; + pcci->p5 = v5; + pcci->p6 = v6; + return pcci; } gboolean IsReturnCci (CrossCallInfo * pcci) { /* printf("Checking message %d: ", pcci->mess);*/ - if (pcci->mess >= CcRETURNmin && pcci->mess <= CcRETURNmax) + if (pcci->mess >= CcRETURNmin && pcci->mess <= CcRETURNmax) { - return TRUE; + return TRUE; } - return FALSE; + return FALSE; } static gpointer OsThreadFunction (gpointer param) { /* printf("OsThreadFunction\n"); */ - gTooltip = gtk_tooltips_new(); + gTooltip = gtk_tooltips_new(); - pthread_mutex_lock(&gCleanMutex); + pthread_mutex_lock(&gCleanMutex); - while (gOSThreadIsRunning) - { - HandleCleanRequest (&gCci); - } + while (gOSThreadIsRunning) + { + HandleCleanRequest (&gCci); + } - pthread_mutex_unlock(&gCleanMutex); + pthread_mutex_unlock(&gCleanMutex); - pthread_mutex_destroy(&gOSMutex); - pthread_mutex_destroy(&gCleanMutex); + pthread_mutex_destroy(&gOSMutex); + pthread_mutex_destroy(&gCleanMutex); - return NULL; + return NULL; } /* OsThreadFunction */ void WinInitOs (Bool* ok, OS* os) @@ -643,16 +643,16 @@ void WinLaunchApp2 (CLEAN_STRING commandline, CLEAN_STRING pathname, pi = fork(); if (pi == 0) { - /* I'm a child -- launch the desired program. */ - execlp(exname, cl); + /* I'm a child -- launch the desired program. */ + execlp(exname, cl); } else if (pi == -1) { - /* Error condition */ - error = errno; + /* Error condition */ + error = errno; rprintf ("WLA: failure %d\n", error); - fsuccess = FALSE; + fsuccess = FALSE; } else { rprintf ("WLA: success\n"); - fsuccess = TRUE; + fsuccess = TRUE; } rprintf ("WLA: step 5: returning\n"); -- cgit v1.2.3