home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / slfinsta.zip / packinst / uac_sys.c < prev    next >
C/C++ Source or Header  |  2000-03-26  |  3KB  |  106 lines

  1. /* $Id: uac_sys.c,v 1.1 2000/03/27 04:53:11 ktk Exp $ */
  2.  
  3. /* ------------------------------------------------------------------------ */
  4. /*                                                                          */
  5. /*      Some basic things.                                                  */
  6. /*                                                                          */
  7. /* ------------------------------------------------------------------------ */
  8.  
  9. #include "os.h"
  10.  
  11. #include <signal.h>  // signal()
  12. #include <stdio.h>   // fprintf() fflush() getch() putc()
  13.  
  14. #if defined(DOS) || defined(WINNT) || defined(WIN16)
  15.  #include <conio.h>  // getch()
  16. #endif
  17. #if defined(DOS)
  18.  #include <dos.h>    // delay() sound()
  19. #endif
  20.  
  21. #include "globals.h"
  22. #include "uac_sys.h"
  23.  
  24.  
  25. void memset16(USHORT * dest, SHORT val, INT len)  // fills short-array with
  26. {                                                 // value
  27.    while (len--)
  28.       *(dest++) = val;
  29. }
  30.  
  31. INT  cancel(void)               // checks whether to interrupt the program
  32. {
  33. #ifdef DOS
  34.    while (kbhit())
  35.    {
  36.       if (getch() == 27)
  37.          f_err = ERR_USER;
  38.    }
  39. #endif
  40.    return (f_err);
  41. }
  42.  
  43. INT  wrask(CHAR * s)            // prompt-routine
  44. {
  45.    CHAR ch = 0;
  46.  
  47.    fprintf(stderr, "\n %s (Yes,Always,No,Cancel) ", s);
  48.    fflush(stderr);
  49.    do
  50.    {
  51.       /*ch = getch();
  52.       ch = upcase(ch);*/
  53.    }
  54.    while (ch != 'Y' && ch != 'A' && ch != 'N' && ch != 'C' && ch != 27);
  55.    fprintf(stderr, "%s", ch == 'Y' ? "Yes" : (ch == 'A' ? "Always" : (ch == 'N' ? "No" : "Cancel")));
  56.    fflush(stderr);
  57.    return (ch == 'Y' ? 0 : (ch == 'A' ? 1 : (ch == 'N' ? 2 : 3)));
  58. }
  59.  
  60. void beep(void)                           // makes some noise
  61. {
  62. #ifdef DOS
  63.    sound(800);
  64.    delay(250);
  65.    nosound();
  66. #endif
  67. #ifdef AMIGA
  68.    putc(0x07, stderr);
  69. #endif
  70. }
  71.  
  72. void my_signalhandler(INT sig_number)     // sets f_err if ctrl+c or ctrl+brk
  73. {
  74.    f_err = ERR_USER;
  75.    pipeit("\nUser break\n");
  76. }
  77.  
  78. #ifdef DOS                                // handles hardware errors
  79. #ifdef __BORLANDC__
  80. INT harderrhandler(UINT deverr, UINT errc, UINT * devhdr)
  81. #else
  82. INT __far harderrhandler(UINT deverr, UINT errc, UINT * devhdr)
  83. #endif
  84. {
  85.    f_criterr = 'A' + deverr & 0xff;
  86.    f_err = ERR_OTHER;
  87.    return (0x3);
  88. }
  89. #endif
  90.  
  91. void set_handler(void)                    // initializes handlers
  92. {
  93. #if defined(DOS) && !defined(__BORLANDC__)
  94.    signal(SIGBREAK, my_signalhandler);    // set ctrl-break/-c handlers
  95. #endif
  96.    signal(SIGINT, my_signalhandler);
  97. #if defined(DOS) && !defined(__CONSOLE__) // set hardware error handler
  98. #ifdef __BORLANDC__
  99.    harderr(harderrhandler);
  100. #else
  101.    _harderr(harderrhandler);
  102. #endif
  103. #endif
  104. }
  105.  
  106.