Changeset 2863 for trunk/kLdr/testcase/tstDllMainStub.c
- Timestamp:
- Nov 10, 2006, 5:05:39 AM (19 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/testcase/tstDllMainStub.c
r2841 r2863 2 2 /** @file 3 3 * 4 * kLdr testcase .4 * kLdr testcase - DLL Stub. 5 5 * 6 6 * Copyright (c) 2006 knut st. osmundsen <bird-kbuild-src@anduin.net> … … 34 34 # define INCL_BASE 35 35 # include <os2.h> 36 # include <string.h>37 36 38 37 #elif defined(__WIN__) 39 38 # include <windows.h> 40 # include <string.h>41 39 42 40 #else 43 41 # error "port me" 44 42 #endif 45 46 /*******************************************************************************47 * Internal Functions *48 *******************************************************************************/49 static void tstWrite(const char *psz);50 51 43 52 44 … … 57 49 ULONG _System _DLL_InitTerm(HMODULE hmod, ULONG fFlag) 58 50 { 59 switch (fFlags) 60 { 61 case 0: 62 tstWrite("init: "); 63 tstWrite(g_pszName); 64 tstWrite("\n"); 65 return TRUE; 66 67 case 1: 68 tstWrite("term: "); 69 tstWrite(g_pszName); 70 tstWrite("\n"); 71 return TRUE; 72 73 default: 74 tstWrite("!invalid!: "); 75 tstWrite(g_pszName); 76 tstWrite("\n"); 77 return FALSE; 78 } 51 return TRUE; 79 52 } 80 53 … … 82 55 83 56 /** 84 * OS/2DLL 'main'57 * Window DLL 'main' 85 58 */ 86 59 BOOL __stdcall DllMain(HANDLE hDllHandle, DWORD dwReason, LPVOID lpReserved) 87 60 { 88 switch (dwReason) 89 { 90 case DLL_PROCESS_ATTACH: 91 tstWrite("init: "); 92 tstWrite(g_pszName); 93 tstWrite("\n"); 94 return TRUE; 95 96 case DLL_PROCESS_DETACH: 97 tstWrite("term: "); 98 tstWrite(g_pszName); 99 tstWrite("\n"); 100 return TRUE; 101 102 case DLL_THREAD_ATTACH: 103 tstWrite("thread init: "); 104 tstWrite(g_pszName); 105 tstWrite("\n"); 106 return TRUE; 107 108 case DLL_THREAD_DETACH: 109 tstWrite("thread term: "); 110 tstWrite(g_pszName); 111 tstWrite("\n"); 112 return TRUE; 113 114 default: 115 tstWrite("!invalid!: "); 116 tstWrite(g_pszName); 117 tstWrite("\n"); 118 return FALSE; 119 } 61 return TRUE; 120 62 } 121 63 … … 124 66 #endif 125 67 126 127 /**128 * Writes a string with unix lineendings.129 *130 * @param pszMsg The string.131 */132 static void tstWrite(const char *pszMsg)133 {134 #if defined(__OS2__) || defined(__WIN__)135 /*136 * Line by line.137 */138 ULONG cbWritten;139 const char *pszNl = strchr(pszMsg, '\n');140 141 while (pszNl)142 {143 cbWritten = pszNl - pszMsg;144 145 #ifdef __OS2__146 if (cbWritten)147 DosWrite((HFILE)2, pszMsg, cbWritten, &cbWritten);148 DosWrite((HFILE)2, "\r\n", 2, &cbWritten);149 #else /* __WIN32__ */150 if (cbWritten)151 WriteFile((HANDLE)STD_ERROR_HANDLE, pszMsg, cbWritten, &cbWritten, NULL);152 WriteFile((HANDLE)STD_ERROR_HANDLE, "\r\n", 2, &cbWritten, NULL);153 #endif154 155 /* next */156 pszMsg = pszNl + 1;157 pszNl = strchr(pszMsg, '\n');158 }159 160 /*161 * Remaining incomplete line.162 */163 if (*pszMsg)164 {165 cbWritten = strlen(pszMsg);166 #ifdef __OS2__167 DosWrite((HFILE)2, pszMsg, cbWritten, &cbWritten);168 #else /* __WIN32__ */169 WriteFile((HANDLE)STD_ERROR_HANDLE, pszMsg, cbWritten, &cbWritten, NULL);170 #endif171 }172 173 #else174 # error "port me"175 #endif176 }177 178
Note:
See TracChangeset
for help on using the changeset viewer.