diff --git a/src/sbbs3/dosxtrn/dosxtrn.c b/src/sbbs3/dosxtrn/dosxtrn.c index 7eef071384c405ef84e1dbeb41d2b51c7b7b232b..b13cc75c737b0f9ae691e34dd370d6ce7ac22e8a 100644 --- a/src/sbbs3/dosxtrn/dosxtrn.c +++ b/src/sbbs3/dosxtrn/dosxtrn.c @@ -13,21 +13,9 @@ * See the GNU General Public License for more details: gpl.txt or * * http://www.fsf.org/copyleft/gpl.html * * * - * Anonymous FTP access to the most recent released source is available at * - * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net * - * * - * Anonymous CVS access to the development source and modification history * - * is available at cvs.synchro.net:/cvsroot/sbbs, example: * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login * - * (just hit return, no password is necessary) * - * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src * - * * * For Synchronet coding style and modification guidelines, see * * http://www.synchro.net/source.html * * * - * You are encouraged to submit any modifications (preferably in Unix diff * - * format) via e-mail to mods@synchro.net * - * * * Note: If this box doesn't appear square, then you need to fix your tabs. * ****************************************************************************/ @@ -461,8 +449,10 @@ int main(int argc, char **argv) char exec_dir[128]; char* envvar[MAX_ENVVARS]; char* arg[MAX_ARGS]; + char* ini_fname = exec_dir; int i,c,d,envnum=0; int mode = SBBSEXEC_MODE_UNSPECIFIED; + int argn; FILE* fp; BOOL x64=FALSE; BOOL success=FALSE; @@ -475,7 +465,7 @@ int main(int argc, char **argv) ,"%s - Copyright %s Rob Swindell\n" ,id_string, __DATE__+7); fprintf(stderr - ,"usage: dosxtrn <path/dosxtrn.env> [NT|x64] [node_num] [mode]\n"); + ,"usage: dosxtrn <path/dosxtrn.env> [NT|x64] [node_num] [mode] [ini_file]\n"); return(1); } @@ -485,14 +475,24 @@ int main(int argc, char **argv) sprintf(dll,"%s%s",exec_dir,VDD_FILENAME); DllName=dll; - if(argc>2) { - if(strcmp(argv[2],"x64") == 0) + argn = 2; + if(argn < argc) { + if(strcmp(argv[argn],"x64") == 0) x64=TRUE; + argn++; + } + if(argn < argc && IS_DIGIT(argv[argn][0])) { + node_num=atoi(argv[argn]); + argn++; + } + if(argn < argc && IS_DIGIT(argv[argn][0])) { + mode = atoi(argv[argn]); + argn++; + } + if(argn < argc) { + ini_fname = argv[argn]; + argn++; } - if(argc>3) - node_num=atoi(argv[3]); - if(argc>4) - mode=atoi(argv[4]); if(mode == SBBSEXEC_MODE_UNSPECIFIED) mode = SBBSEXEC_MODE_DEFAULT; @@ -575,7 +575,7 @@ int main(int argc, char **argv) fprintf(stderr,"vdd handle=%d\n",vdd); fprintf(stderr,"mode=%d\n",mode); #endif - vdd_str(VDD_LOAD_INI_FILE, exec_dir); + vdd_str(VDD_LOAD_INI_FILE, ini_fname); vdd_str(VDD_LOAD_INI_SECTION, getfname(arg[0])); @@ -610,9 +610,20 @@ int main(int argc, char **argv) strcpy(p,"RET"); if((fp=fopen(argv[1],"w+"))==NULL) { fprintf(stderr,"!Error opening %s\n",argv[1]); - return(3); + } else { + fprintf(fp,"%d",i); + fclose(fp); } - fprintf(fp,"%d",i); + strcpy(p,"ERR"); + if(i == -1) { + if((fp=fopen(argv[1],"w+"))==NULL) { + fprintf(stderr,"!Error opening %s\n",argv[1]); + } else { + fprintf(fp,"%d\n%s\n", errno, strerror(errno)); + fclose(fp); + } + } else + remove(argv[1]); /* Restore original ISRs */ _dos_setvect(0x14,oldint14);