home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume24 / chemtab / part02 / cleanup.c < prev    next >
C/C++ Source or Header  |  1991-03-12  |  3KB  |  108 lines

  1. /*
  2.  * chemtab - a periodic table data base (C) 1990 Jim King (pulsar@lsrhs)
  3.  *
  4.  * cleanup.c    Cleanup (exit) routine
  5.  */
  6.  
  7. #include <curses.h>
  8. #include <stdio.h>
  9. #include <signal.h>
  10. #include "windows.h"
  11. #include "variables.h"
  12. #include "tune.h"
  13.  
  14. /*
  15.  * cleanup() - no input
  16.  *
  17.  * purpose:  Handle any quit or ^C signal nicely.
  18.  */
  19.  
  20. cleanup()
  21. {
  22.     char    c, str[80];            /* input */
  23. #ifdef    PRINTQ
  24.     char    que[80];            /* print queue */
  25. #endif    PRINTQ
  26.  
  27. #ifdef    ReGIS
  28.     if (regis) endregis();
  29. #endif    ReGIS
  30.     if (trans) {                /* transcript flag */
  31. l1:        mvwaddstr(btm, 0, 0, "Would you like your transcript printed out? ");
  32.         wrefresh(btm);
  33.         cur = btm;
  34.         xp = 44; yp = 0;
  35.         noecho();
  36.         crmode();
  37.         c = getchar();
  38.         if (c == 'n') {
  39.             wclear(btm);
  40.             wrefresh(btm);
  41.         } else if (c == '?') {
  42.             help(1);
  43.             goto l1;
  44.         } else {            /* else print it out */
  45.             wprintw(btm, "yes");
  46.             wrefresh(btm);
  47.             echo(); nocrmode();
  48. #ifdef    PRINTQ
  49.             wclear(btm);
  50.             mvwaddstr(btm, 0, 0, "Queue to print to: ");
  51.             wrefresh(btm);
  52.             cur = btm; xp = 21; yp = 0;
  53.             gets(que);
  54.             sprintf(str, "%s%s %d.chemtab", PRINTER, que, getpid());
  55. #else    PRINTQ
  56.             sprintf(str, "%s %d.chemtab", PRINTER, getpid());
  57. #endif    PRINTQ
  58.             fclose(fp);
  59.             wclear(btm);
  60.             wrefresh(btm);
  61.             clear(); refresh();
  62.             system(str);
  63.         }
  64.     }
  65.     fclose(fp);                /* close things up */
  66.     echo();
  67.     nocrmode();
  68.     clear(); refresh();
  69.     endwin();                /* turn off curses */
  70.     if (trans) {
  71.         printf("A copy of your transcript can be found in the file %d.chemtab\n", getpid());
  72.     /*    printf("\nYou can pick up your printout at the printer to the left of\n");
  73.         printf("The White-Board, labelled Happy.  Look for your last name in >><<'s on\n");
  74.         printf("the top line of each printout.  Good luck with Chemistry.\n");
  75.      */ }
  76.     fflush(stdout);                /* just make sure.. */
  77.     exit(1);                /* quit nicely */
  78. }
  79.  
  80. #ifdef    USERSHELL
  81. stop()    /* Handle a ^Z */
  82. {
  83.     char    sh[80];
  84.  
  85.     strcpy(sh, getenv("SHELL"));
  86.     if (!strlen(sh))
  87.         strcpy(sh, USERSHELL);
  88. #ifdef    ReGIS
  89.     if (regis) endregis();
  90. #endif  ReGIS
  91.     clear(); refresh();
  92.     signal(SIGTSTP, SIG_DFL);
  93.     printf("Type 'exit' to return to chemtab...\n");
  94.     system(sh);
  95.     clear(); refresh();
  96.     signal(SIGTSTP, stop);
  97.     if (needsit(stdscr)) { touchwin(stdscr); wrefresh(stdscr); }
  98.     if (needsit(graph)) { touchwin(graph); wrefresh(graph); }
  99.     if (needsit(mn)) { touchwin(mn); wrefresh(mn); }
  100.     if (needsit(srt)) { touchwin(srt); wrefresh(srt); }
  101.     if (needsit(btm)) { touchwin(btm); wrefresh(btm); }
  102.     if (hlp != NULL) { touchwin(hlp); wrefresh(hlp); }
  103.     wmove(cur, yp, xp);
  104.     wrefresh(mn);
  105.     crmode();
  106. }
  107. #endif    USERSHELL
  108.