/* Debug.c * * Debug functions for compression manager */ #include #include #include #ifdef DEBUG // See comments in NTAVI.H about DEBUG #ifdef _WIN32 #include /* * read a UINT from the profile, or return default if * not found. */ UINT mmGetProfileIntA(LPSTR appname, LPSTR valuename, INT uDefault) { CHAR achName[MAX_PATH]; HKEY hkey; DWORD dwType; INT value = uDefault; DWORD dwData; int cbData; lstrcpyA(achName, KEYNAMEA); lstrcatA(achName, appname); if (RegOpenKeyA(ROOTKEY, achName, &hkey) == ERROR_SUCCESS) { cbData = sizeof(dwData); if (RegQueryValueExA( hkey, valuename, NULL, &dwType, (PBYTE) &dwData, &cbData) == ERROR_SUCCESS) { if (dwType == REG_DWORD || dwType == REG_BINARY) { value = (INT)dwData; #ifdef USESTRINGSALSO } else if (dwType == REG_SZ) { value = atoi((LPSTR) &dwData); #endif } } RegCloseKey(hkey); } return((UINT)value); } #endif /* _Assert(fExpr, szFile, iLine) * * If is TRUE, then do nothing. If is FALSE, then display * an "assertion failed" message box allowing the user to abort the program, * enter the debugger (the "Retry" button), or igore the error. * * is the name of the source file; is the line number * containing the _Assert() call. */ #pragma optimize("", off) BOOL FAR PASCAL _Assert(BOOL fExpr, LPSTR szFile, int iLine) { #ifdef _WIN32 char ach[300]; #else static char ach[300]; // debug output (avoid stack overflow) #endif int id; int iExitCode; void FAR PASCAL DebugBreak(void); /* check if assertion failed */ if (fExpr) return fExpr; /* display error message */ wsprintfA(ach, "File %s, line %d", (LPSTR) szFile, iLine); MessageBeep(MB_ICONHAND); id = MessageBoxA(NULL, ach, "Assertion Failed", MB_SYSTEMMODAL | MB_ICONHAND | MB_ABORTRETRYIGNORE); /* abort, debug, or ignore */ switch (id) { case IDABORT: /* kill this application */ iExitCode = 0; #ifndef _WIN32 _asm { mov ah, 4Ch mov al, BYTE PTR iExitCode int 21h } #endif // WIN16 break; case IDRETRY: /* break into the debugger */ DebugBreak(); break; case IDIGNORE: /* ignore the assertion failure */ break; } return FALSE; } #pragma optimize("", on) #endif