diff --git a/lang/basic/src.old/initialize.c b/lang/basic/src.old/initialize.c index 9a6e4851..12a79912 100644 --- a/lang/basic/src.old/initialize.c +++ b/lang/basic/src.old/initialize.c @@ -13,8 +13,25 @@ FILE *datfile; initialize() { + register char *cindex, *cptr ; + sprintf(tmpfname,"%s/abc%d",TMP_DIR,getpid()); - strcpy(datfname,program); + /* Find the basename */ + /* Strip leading directories */ + cindex= (char *)0 ; + for ( cptr=program ; *cptr ; cptr++ ) if ( *cptr=='/' ) cindex=cptr ; + if ( !cindex ) cindex= program ; + else { + cindex++ ; + if ( !*cindex ) { + warning("Null program name, assuming \"basic\"") ; + cindex= "basic" ; + } + } + cptr=datfname ; + while ( *cptr++ = *cindex++ ) ; + /* Strip trailing suffix */ + if ( cptr>datfname+3 && cptr[-3]=='.' ) cptr[-3]=0 ; strcat(datfname,".d"); yyin= fopen(inpfile,"r"); emfile= fopen(outfile,"w");