|
|
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.