home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / GAMES / infocom_src.lha / infocom.c < prev    next >
Text File  |  1993-03-03  |  3KB  |  136 lines

  1. /*
  2. **    File:    infocom.c
  3. **
  4. **    (C)opyright 1987-1992 InfoTaskforce.
  5. */
  6.  
  7. #include    "infocom.h"
  8.  
  9. int
  10. main ( argc,argv )
  11. int        argc ;
  12. char    *argv[] ;
  13. {
  14.     extern boolean    attribute ;
  15.     extern boolean    echo_in ;
  16.     extern boolean    enhanced ;
  17.     extern boolean    page_out ;
  18.     extern boolean    pre_load ;
  19.     extern boolean    xfer ;
  20.     extern boolean    stop ;
  21.     extern int        sig_async ;
  22.     extern int        sig_action ;
  23.  
  24.     word            opt        = NO_OPTIONS ;
  25.     int                i ;
  26.  
  27.     --argc ;
  28.     if (( argc == 1 ) || ( argc == 2 ))
  29.     {
  30.         if ( argc == 2 )
  31.         {
  32.             if ( argv[1][0] == '-' )
  33.             {
  34.                 i = 0 ;
  35.                 while ( argv[1][++i] != '\0' )
  36.                 {
  37.                     switch ( argv[1][i] )
  38.                     {
  39.                         case 'a':
  40.                                     attribute = TRUE ;
  41.                                     break ;
  42.                         case 'e':
  43.                                     echo_in = TRUE ;
  44.                                     break ;
  45.                         case 'h':
  46.                                     opt |= HEAD_INFO ;
  47.                                     break ;
  48.                         case 'l':
  49.                                     pre_load = TRUE ;
  50.                                     break ;
  51.                         case 'n':
  52.                                     enhanced = TRUE ;
  53.                                     break ;
  54.                         case 'o':
  55.                                     opt |= OBJECTS ;
  56.                                     break ;
  57.                         case 'p':
  58.                                     page_out = TRUE ;
  59.                                     break ;
  60.                         case 'r':
  61.                                     opt |= TREE ;
  62.                                     break ;
  63.                         case 's':
  64.                                     opt |= SHOW_PROPS ;
  65.                                     break ;
  66.                         case 't':
  67.                                     xfer = TRUE ;
  68.                                     break ;
  69.                         case 'v':
  70.                                     opt |= VOCABULARY ;
  71.                                     break ;
  72.                         case 'x':
  73.                                     opt |= EXTENDED_VOCAB ;
  74.                                     break ;
  75.                         default :
  76.                                     printf ( "Unrecognised Option: %c\n",argv[1][i] ) ;
  77.                     }
  78.                 }
  79.             }
  80.             else
  81.                 usage ( argv[0] ) ;
  82.         }
  83.         INIT_SIGNAL () ;
  84.         if ( open_file ( argv[argc] ) )
  85.         {
  86.             if ( stop == FALSE )
  87.             { /* Level 1 patch installed  -mlk */
  88.                 INIT_IO () ;
  89.                 init () ;
  90.                 init_script () ;
  91.                 if ( opt )
  92.                 {
  93.                     sig_async = SH_NO_IO ;
  94.                     if ( sig_action != SH_NO_SIGNAL )
  95.                         SIGNAL_QUIT ( sig_action ) ;
  96.                     options ( opt ) ;
  97.                     sig_async = SH_EXIT ;
  98.                     deallocate () ;
  99.                 }
  100.                 else
  101.                 {  /* level 1 patch installed  -mlk */
  102.                     if ( stop == FALSE )
  103.                     {
  104.                         init_interpreter ( TRUE ) ;
  105.                         sig_async = SH_NORMAL ;
  106.                         if ( sig_action != SH_NO_SIGNAL )
  107.                             SIGNAL_QUIT ( sig_action ) ;
  108.                         execute_opcode () ;
  109.                     }
  110.                     sig_async = SH_EXIT ;
  111.                     deallocate () ;
  112.                     EXIT_IO () ;
  113.                 }
  114.             }
  115.             close_script () ;
  116.             close_file () ;
  117.         }
  118.         else
  119.             printf ( "Failed to Open File %s\n",argv[argc] ) ;
  120.     }
  121.     else
  122.         usage ( argv[0] ) ;
  123.     if ( sig_action != SH_NO_SIGNAL )
  124.         SIGNAL_QUIT ( sig_action ) ;
  125.  
  126.     return ( 0 ) ;
  127. }
  128.  
  129. Void
  130. usage ( program_name )
  131. char    *program_name ;
  132. {
  133.     printf ( "Usage: %s [-aehlnoprstvx] <filename>\n",program_name ) ;
  134.     exit ( 0 ) ;
  135. }
  136.