- Timestamp:
- Mar 31, 2003, 1:54:29 PM (22 years ago)
- Location:
- trunk/src/kernel32
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kernel32/KERNEL32.DEF
r9889 r9963 1 ; $Id: KERNEL32.DEF,v 1.15 3 2003-03-03 16:37:26sandervl Exp $1 ; $Id: KERNEL32.DEF,v 1.154 2003-03-31 11:54:27 sandervl Exp $ 2 2 3 3 ;Basis is Windows95 KERNEL32 … … 1208 1208 1209 1209 OSLibDosDevIOCtl @2026 NONAME 1210 1211 vsnprintfW @2030 NONAME 1212 snprintfW @2031 NONAME 1210 1213 1211 1214 ; custom dll hook installer -
trunk/src/kernel32/kernel32dbg.def
r9889 r9963 1 ; $Id: kernel32dbg.def,v 1.2 8 2003-03-03 16:37:27sandervl Exp $1 ; $Id: kernel32dbg.def,v 1.29 2003-03-31 11:54:28 sandervl Exp $ 2 2 3 3 ;Basis is Windows95 KERNEL32 … … 1209 1209 OSLibDosDevIOCtl @2026 NONAME 1210 1210 1211 vsnprintfW @2030 NONAME 1212 snprintfW @2031 NONAME 1213 1211 1214 ; custom dll hook installer 1212 1215 _ODIN_SetDllLoadCallback@4 @2100 NONAME -
trunk/src/kernel32/unicode/string.c
r8666 r9963 7 7 #include <windows.h> 8 8 #include <limits.h> 9 #include <stdio.h> 10 #include <ctype.h> 9 11 10 12 #include "wine/unicode.h" … … 273 275 return 0L; 274 276 } 277 278 int vsnprintfW(WCHAR *str, unsigned int len, const WCHAR *format, va_list valist) 279 { 280 unsigned int written = 0; 281 const WCHAR *iter = format; 282 char bufa[256], fmtbufa[64], *fmta; 283 284 while (*iter) 285 { 286 while (*iter && *iter != '%') 287 { 288 if (written++ >= len) 289 return -1; 290 *str++ = *iter++; 291 } 292 if (*iter == '%') 293 { 294 fmta = fmtbufa; 295 *fmta++ = *iter++; 296 while (*iter == '0' || 297 *iter == '+' || 298 *iter == '-' || 299 *iter == ' ' || 300 *iter == '0' || 301 *iter == '*' || 302 *iter == '#') 303 { 304 if (*iter == '*') 305 { 306 char *buffiter = bufa; 307 int fieldlen = va_arg(valist, int); 308 sprintf(buffiter, "%d", fieldlen); 309 while (*buffiter) 310 *fmta++ = *buffiter++; 311 } 312 else 313 *fmta++ = *iter; 314 iter++; 315 } 316 317 while (isdigit(*iter)) 318 *fmta++ = *iter++; 319 320 if (*iter == '.') 321 { 322 *fmta++ = *iter++; 323 if (*iter == '*') 324 { 325 char *buffiter = bufa; 326 int fieldlen = va_arg(valist, int); 327 sprintf(buffiter, "%d", fieldlen); 328 while (*buffiter) 329 *fmta++ = *buffiter++; 330 } 331 else 332 while (isdigit(*iter)) 333 *fmta++ = *iter++; 334 } 335 if (*iter == 'h' || *iter == 'l') 336 *fmta++ = *iter++; 337 338 switch (*iter) 339 { 340 case 's': 341 { 342 static const WCHAR none[] = { '(','n','u','l','l',')',0 }; 343 const WCHAR *wstr = va_arg(valist, const WCHAR *); 344 const WCHAR *striter = wstr ? wstr : none; 345 while (*striter) 346 { 347 if (written++ >= len) 348 return -1; 349 *str++ = *striter++; 350 } 351 iter++; 352 break; 353 } 354 355 case 'c': 356 if (written++ >= len) 357 return -1; 358 *str++ = (WCHAR)va_arg(valist, int); 359 iter++; 360 break; 361 362 default: 363 { 364 /* For non wc types, use system sprintf and append to wide char output */ 365 /* FIXME: for unrecognised types, should ignore % when printing */ 366 char *bufaiter = bufa; 367 if (*iter == 'p') 368 sprintf(bufaiter, "%08lX", va_arg(valist, long)); 369 else 370 { 371 *fmta++ = *iter; 372 *fmta = '\0'; 373 if (*iter == 'f') 374 sprintf(bufaiter, fmtbufa, va_arg(valist, double)); 375 else 376 sprintf(bufaiter, fmtbufa, va_arg(valist, void *)); 377 } 378 while (*bufaiter) 379 { 380 if (written++ >= len) 381 return -1; 382 *str++ = *bufaiter++; 383 } 384 iter++; 385 break; 386 } 387 } 388 } 389 } 390 if (written >= len) 391 return -1; 392 *str++ = 0; 393 return (int)written; 394 } 395 396 397 int snprintfW(WCHAR *str, unsigned int len, const WCHAR *format, ...) 398 { 399 int retval; 400 va_list valist; 401 va_start(valist, format); 402 retval = vsnprintfW(str, len, format, valist); 403 va_end(valist); 404 return retval; 405 } -
trunk/src/kernel32/windllpe2lx.cpp
r9540 r9963 1 /* $Id: windllpe2lx.cpp,v 1.1 3 2002-12-20 12:40:43sandervl Exp $ */1 /* $Id: windllpe2lx.cpp,v 1.14 2003-03-31 11:54:28 sandervl Exp $ */ 2 2 3 3 /* … … 167 167 * Init object. 168 168 * Must be called immedeately after objecte construction. 169 * @returns Success indicator. (TRUE == success) 170 * @sketch call init method of the parten class. 171 * set dllEntryPoint 172 * @status completely implemented. 173 * @author knut st. osmundsen 174 */ 175 BOOL Win32Pe2LxDll::init() 176 { 177 if (Win32Pe2LxImage::init()) 169 * @returns LDRERROR_SUCCESS on success. 170 * @returns Apporpriate LDRERROR_* on failure. 171 * @sketch call init method of the parten class. 172 * set dllEntryPoint 173 * @status completely implemented. 174 * @author knut st. osmundsen 175 */ 176 DWORD Win32Pe2LxDll::init() 177 { 178 DWORD rc = Win32Pe2LxImage::init(); 179 if (rc == LDRERROR_SUCCESS) 178 180 { 179 181 /* set entry point. */ 180 182 dllEntryPoint = (WIN32DLLENTRY)entryPoint; 181 183 } 182 else 183 return FALSE; 184 return TRUE; 184 return rc; 185 185 } 186 186 -
trunk/src/kernel32/windllpe2lx.h
r6015 r9963 1 /* $Id: windllpe2lx.h,v 1. 2 2001-06-15 09:42:48 birdExp $ */1 /* $Id: windllpe2lx.h,v 1.3 2003-03-31 11:54:28 sandervl Exp $ */ 2 2 3 3 /* … … 27 27 Win32Pe2LxDll(HINSTANCE hinstance, BOOL fWin32k) throw(ULONG); 28 28 virtual ~Win32Pe2LxDll(); 29 BOOLinit();29 DWORD init(); 30 30 31 31 /** @cat Query */ -
trunk/src/kernel32/winimagepeldr.cpp
r9826 r9963 1 /* $Id: winimagepeldr.cpp,v 1.10 5 2003-02-18 18:58:47sandervl Exp $ */1 /* $Id: winimagepeldr.cpp,v 1.106 2003-03-31 11:54:28 sandervl Exp $ */ 2 2 3 3 /* … … 186 186 187 187 hFile = OSLibDosOpen(szFileName, OSLIB_ACCESS_READONLY|OSLIB_ACCESS_SHAREDENYNONE); 188 188 189 189 dprintf((LOG, "KERNEL32-PELDR: Opening PE-image (%s) returned handle %08xh.\n", 190 190 szFileName, … … 198 198 } 199 199 } 200 200 201 201 //default error: 202 202 strcpy(szErrorModule, OSLibStripPath(szFileName)); … … 702 702 return rc; 703 703 } 704 704 705 705 // PH 2001-11-15 706 706 // For corrupt or misinterpreted PE headers, … … 1597 1597 char szModuleFailure[CCHMAXPATH] = ""; 1598 1598 ULONG hInstanceNewDll; 1599 Win32LxDll *lxdll;1600 1599 1601 1600 char *dot = strchr(modname, '.'); … … 1610 1609 return NULL; 1611 1610 } 1612 lxdll = Win32LxDll::findModuleByOS2Handle(hInstanceNewDll); 1613 if(lxdll == NULL) {//shouldn't happen! 1611 /* bird 2003-03-30: search pe2lx dlls too! */ 1612 WinDll = Win32DllBase::findModuleByOS2Handle(hInstanceNewDll); 1613 if (WinDll == NULL) {//shouldn't happen! 1614 1614 dprintf((LOG, "Just loaded the dll, but can't find it anywhere?!!?")); 1615 1615 errorState = ERROR_INTERNAL; 1616 1616 return NULL; 1617 1617 } 1618 lxdll->setDllHandleOS2(hInstanceNewDll); 1619 if(lxdll->AddRef() == -1) {//-1 -> load failed (attachProcess) 1620 dprintf((LOG, "Dll %s refused to be loaded; aborting", modname)); 1621 delete lxdll; 1622 errorState = ERROR_INTERNAL; 1623 return NULL; 1624 } 1625 WinDll = (Win32DllBase*)lxdll; 1618 if (WinDll->isLxDll()) 1619 { 1620 Win32LxDll *lxdll = (Win32LxDll *)WinDll; 1621 lxdll->setDllHandleOS2(hInstanceNewDll); 1622 if(lxdll->AddRef() == -1) {//-1 -> load failed (attachProcess) 1623 dprintf((LOG, "Dll %s refused to be loaded; aborting", modname)); 1624 delete lxdll; 1625 errorState = ERROR_INTERNAL; 1626 return NULL; 1627 } 1628 WinDll = (Win32DllBase*)lxdll; 1629 } 1626 1630 } 1627 1631 else { … … 2113 2117 //Name exports also contain an ordinal, so check this 2114 2118 nexport = nameexports; 2115 for(int i=0;i<nrNameExports;i++) 2119 for(int i=0;i<nrNameExports;i++) 2116 2120 { 2117 2121 if(nexport->ordinal == ordinal) {
Note:
See TracChangeset
for help on using the changeset viewer.