home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / GAMES / BOINKO21 / SRC / SRC / EXTERNAL.C < prev    next >
C/C++ Source or Header  |  2000-12-09  |  2KB  |  116 lines

  1. /*
  2.  * External.c
  3.  * 
  4.  * Routines for external programs
  5.  *
  6.  */
  7.  
  8. #include <aes.h>
  9. #include <vdi.h>
  10. #include <string.h>
  11. #include <time.h>
  12. #include <tos.h>
  13. #include <process.h>
  14. #include <stdlib.h>
  15. #include <stdio.h>     /* for the string functions */
  16. #include <ext.h>
  17.  
  18. #include "boink.h"
  19.  
  20. typedef struct _shelw{
  21. char *newcmd;
  22. long psetlimit;
  23. long prenice;
  24. char *defdir;
  25. char *env;
  26. } SHELW;
  27.  
  28. extern int AES_type;
  29.  
  30. int
  31. run_web_browser(char *temp_file)
  32. {
  33.     char env_path[128];
  34.     SHELW myshellw;
  35.     char *tomyshellw = (char *)&myshellw;
  36.     char *browser_name;
  37.     char *temp_name;
  38.     char *app_name;
  39.     int i;
  40.  
  41.     shel_envrn(&temp_name,"WWW_CLIENT");
  42.  
  43.     if (temp_name == (char *)NULL)
  44.         shel_envrn(&temp_name,"BROWSER");
  45.  
  46.     if ((char *)temp_name == (char *)NULL)
  47.         return(-1);
  48.  
  49.     for (i = 1; i < strlen(temp_name);i++) 
  50.     {
  51.         /* Make certain it's not a space or = sign */
  52.         if((temp_name[i] != 32)&&(temp_name[i] != 61))
  53.             break;
  54.     }
  55.         
  56.     browser_name = (char *)&temp_name[i];
  57. /*    browser_name = (char *)&temp_name[3];*/
  58.  
  59.     app_name = strrchr(browser_name,92);
  60.  
  61.     app_name = (char *)&app_name[1];
  62.  
  63.     if (av_id != -100)
  64.     {
  65.         if (send_vastart(app_name, temp_file) == 1)
  66.             return(1);
  67.     }
  68.     
  69.     strcpy(env_path,"PATH=$HOME,$PATH,");
  70.     strcat(env_path,browser_name);
  71.  
  72.      myshellw.newcmd = browser_name;
  73.     myshellw.defdir = browser_name;
  74.     myshellw.env = env_path;
  75.  
  76.     switch( AES_type )
  77.     {
  78.     case    AES_MagiC:
  79.         shel_write(1,1,100,browser_name,temp_file);
  80.         break;    /* Ends:    case AES_MagiC */
  81.  
  82.     case    AES_nAES:
  83.         shel_write(0,1,1,browser_name,temp_file);
  84.         break;    /* Ends:    case AES_nAES */
  85.  
  86.     case    AES_Geneva:
  87.         strcpy(env_path,"PATH=");
  88.         strcat(env_path,browser_name);
  89.         myshellw.env = env_path;
  90.  
  91.         shel_write(0|0x800|0x400,0,0,tomyshellw,temp_file);
  92.  
  93.         break;    /* Ends:    case AES_Geneva */
  94.  
  95.     case    AES_MTOS:
  96.         shel_write(0|0x800|0x400,0,0,tomyshellw,temp_file);
  97.  
  98.         break;    /* Ends:    case AES_MTOS */
  99.  
  100.     case    AES_single:
  101. /* I know of no legal way for a GEM program to start another without exiting */
  102. /* I have just put a normal Pexec here for now, so replace it with your code */
  103.  
  104.         Pexec(0,browser_name,temp_file,env_path);
  105.         break;    /* Ends:    case AES_single */
  106.     
  107.     default:        /* some default method (MTOS?) for future multitaskers */
  108.         break;    /* Ends:    default */
  109.  
  110.     }    /* Ends:    switch( AES_type ) */
  111.  
  112.     graf_mouse(0,NULL);
  113.  
  114.     return(1);
  115. }
  116.