|
|
1.1 root 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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.