home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1998 September / PCO_0998.ISO / filesbbs / dos / sbbs_src.exe / SBBS / EXECSBBS / EXECSBBS.C next >
Encoding:
C/C++ Source or Header  |  1997-04-13  |  1.4 KB  |  60 lines

  1. /* execbbs.c */
  2.  
  3. /* Developed 1990-1997 by Rob Swindell; PO Box 501, Yorba Linda, CA 92885 */
  4.  
  5. #include <dos.h>
  6. #include <dir.h>
  7. #include <errno.h>
  8. #include <stdio.h>
  9. #include <stdlib.h>
  10. #include <string.h>
  11. #include <process.h>
  12.  
  13. extern unsigned _heaplen=2048;
  14.  
  15. /* usage: execsbbs start_dir "program parms" sbbspath [r] */
  16.  
  17. int main(int argc, char *argv[])
  18. {
  19.     char path[129],*comspec,*p,*arg[30],c;
  20.     int disk;
  21.  
  22. if(argc<4) {
  23.     printf("This program is for the internal use of Synchronet.\r\n");
  24. /***    Debug stuff
  25.     printf("argc=%d\r\n",argc);
  26.     for(c=0;c<argc;c++)
  27.         printf("argv[%d]='%s'\n",c,argv[c]);
  28. ***/
  29.     return(0); }
  30. disk=getdisk();
  31. getcwd(path,128);
  32. comspec=getenv("COMSPEC");
  33.  
  34. /***                    /* Removed */
  35. strcpy(str,comspec);    /* save comspec */
  36. strcpy(comspec,"");     /* destroy comspec */
  37. ***/
  38.  
  39. if(argv[1][1]==':')                /* drive letter specified */
  40.     setdisk(toupper(argv[1][0])-'A');
  41. chdir(argv[1]);
  42.  
  43. p=strchr(argv[2],' ');
  44. if(p)
  45.     p++;
  46. if(spawnlpe(P_WAIT,comspec,comspec,"/c",argv[2],NULL,environ))
  47.     printf("EXECSBBS: Error %d spawning %s\r\n",errno,argv[2]);
  48. /***
  49. strcpy(comspec,str);    /* restore comspec */
  50. ***/
  51. setdisk(disk);
  52. if(chdir(path))
  53.     printf("\7\r\nEXECBBS: Error changing directory to %s\r\n",path);
  54. for(c=0;c<30;c++)
  55.     arg[c]=argv[c+3];
  56. if(execve(arg[0],arg,environ))
  57.     printf("EXECSBBS: Error %d executing %s\r\n",errno,arg[0]);
  58. return(1);
  59. }
  60.