home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0210 - 0219 / ibm0210-0219 / ibm0213.tar / ibm0213 / HAM_W32.ZIP / SAMPLES / WINERROR.C < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-12  |  1.7 KB  |  59 lines

  1. /***************************************************************************/
  2. /*                                                                                                    */
  3. /*                                                                                                    */
  4. /*            Print the Win32 message corresponding the given error code.            */
  5. /*        Copyright (c) 1993 by Hamilton Laboratories.  All rights reserved.    */
  6. /*                                                                                                    */
  7. /*                                                                                                    */
  8. /***************************************************************************/
  9.         
  10. #include <windows.h>
  11. #include <ctype.h>
  12. #include <stdlib.h>
  13.  
  14. void main( int argc, char **argv )
  15.     {
  16.     int i;
  17.     HANDLE Stdout = GetStdHandle(STD_OUTPUT_HANDLE);
  18.     if (Stdout == INVALID_HANDLE_VALUE)
  19.         ExitProcess(GetLastError());
  20.  
  21.     for (i = 1;  i < argc;  i++)
  22.         {
  23.         register char *p, c;
  24.         DWORD bytes;
  25.         for (p = argv[i];  c = *p, c && isdigit(c);  p++)
  26.             ;
  27.         if (c == 0)
  28.             {
  29.             char msg_buf[1024], errno_buf[20],
  30.                 NoHelp[] = "No help is available for this error.\r\n";
  31.             DWORD Errno = (DWORD)atoi(argv[i]);
  32.             _itoa(Errno, errno_buf, 10);
  33.             for (p = errno_buf;  *p;  p++)
  34.                 ;
  35.             *p++ = ':';
  36.             *p++ = ' ';
  37.             *p++ = ' ';
  38.             WriteFile(Stdout, errno_buf, p - errno_buf, &bytes, NULL);
  39.  
  40.             if (bytes = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, NULL, Errno,
  41.                     MAKELANGID(LANG_NEUTRAL, SUBLANG_NEUTRAL), msg_buf,
  42.                     sizeof(msg_buf), NULL))
  43.                 WriteFile(Stdout, msg_buf, bytes, &bytes, NULL);
  44.             else
  45.                 WriteFile(Stdout, NoHelp, sizeof(NoHelp) - 1, &bytes, NULL);
  46.             }
  47.         else
  48.             {
  49.             char NotNumeric[] = ":  No help available.  Error codes must "
  50.                     "be numeric.\r\n";
  51.             while (*p)
  52.                 p++;
  53.             WriteFile(Stdout, argv[i], p - argv[i], &bytes, NULL);
  54.             WriteFile(Stdout, NotNumeric, sizeof(NotNumeric) - 1, &bytes, NULL);
  55.             }
  56.         }
  57.     ExitProcess(0);
  58.     }
  59.