diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2010-11-18 23:00:31 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2010-11-18 23:00:31 +0200 |
commit | 6f3612539c425da2bc1d34db621696e6a273b01c (patch) | |
tree | 9623b3ac2c54a93e5eed3be2b1dda7f4e4bf0e47 /pc | |
parent | 4e3701015635401df2fc4da58abaab7645f4ebd3 (diff) | |
download | egawk-6f3612539c425da2bc1d34db621696e6a273b01c.tar.gz egawk-6f3612539c425da2bc1d34db621696e6a273b01c.tar.bz2 egawk-6f3612539c425da2bc1d34db621696e6a273b01c.zip |
Bring latest byte code gawk into git. Hurray!
Diffstat (limited to 'pc')
-rw-r--r-- | pc/ChangeLog | 15 | ||||
-rw-r--r-- | pc/Makefile | 30 | ||||
-rw-r--r-- | pc/Makefile.tst | 141 | ||||
-rw-r--r-- | pc/config.h | 4 | ||||
-rw-r--r-- | pc/gawkmisc.pc | 8 | ||||
-rw-r--r-- | pc/popen.c | 12 |
6 files changed, 164 insertions, 46 deletions
diff --git a/pc/ChangeLog b/pc/ChangeLog index aef10213..7a9f9553 100644 --- a/pc/ChangeLog +++ b/pc/ChangeLog @@ -1,3 +1,18 @@ +Fri Nov 12 12:36:18 2010 Scott Deifik <scottd.mail@sbcglobal.net> + + * Makefile.tst: Sync with mainline version. + +Thu Oct 28 08:17:00 2010 Scott Deifik <scottd.mail@sbcglobal.net> + + * Makefile.tst: Sync with mainline version. + +Wed Jul 14 23:05:57 2010 Eli Zaretskii <eliz@gnu.org> + + * config.h (HAVE_USLEEP) [__MINGW32__]: Define. + + * gawkmisc.pc (usleep) [__MINGW32__]: Implementation of `usleep' + for MinGW. + Thu May 6 20:55:14 2010 Arnold D. Robbins <arnold@skeeve.com> * Release 3.1.8: Release tar file made. diff --git a/pc/Makefile b/pc/Makefile index 585e66ab..33afe284 100644 --- a/pc/Makefile +++ b/pc/Makefile @@ -38,6 +38,7 @@ default: #======================= Configuration ================================== RSPFILE = gawk.rsp PRSPFILE = pgawk.rsp +DRSPFILE = dgawk.rsp # # Choose method for passing arguments to the linker. # @@ -56,8 +57,10 @@ PRSPFILE = pgawk.rsp # else use brain-dead approach (emxbnd will need 'tr'). RSP = $(RSPFILE) PRSP = $(PRSPFILE) +DRSP = $(DRSPFILE) LDRSP = @$(RSP) PLDRSP = @$(PRSP) +DLDRSP = @$(DRSP) LNKRSP = $(LDRSP) #------------------------------------------------------------------------ # Some makes do not define MAKE (and ndmake does not allow a define). @@ -90,6 +93,8 @@ DO_LNK = $($(LNK)) DO_BIND= $($(BIND)) DO_PLNK = $($(PLNK)) DO_PBIND= $($(PBIND)) +DO_DLNK = $($(DLNK)) +DO_DBIND= $($(DBIND)) #------------------------------------------------------------------------ # For dynamic extension support, uncomment these lines # pick the appropriate .def file entry for your compiler @@ -113,19 +118,20 @@ pkgdatadir = $(prefix)/share/awk endif LDJG = $(CC) $(LF) -o gawk.exe $(LDRSP) $(LF2) PLDJG = $(CC) $(LF) -o pgawk.exe $(PLDRSP) $(LF2) +DLDJG = $(CC) $(LF) -o dgawk.exe $(DLDRSP) $(LF2) BDJG = stubify -g awk.exe | stubedit awk.exe runfile=gawk djgpp: $(MAK) all \ CC=gcc O=.o CF=-O2 \ - LNK=LDJG PLNK=PLDJG LF=-s LF2=-lm \ - BIND=BDJG PBIND='' + LNK=LDJG PLNK=PLDJG DLNK=DLDJG LF=-s LF2=-lm \ + BIND=BDJG PBIND='' DBIND='' djgpp-debug: $(MAK) all \ CC=gcc O=.o CF='-O2 -g' \ - LNK=LDJG PLNK=PLDJG LF2=-lm \ - BIND=BDJG PBIND='' + LNK=LDJG PLNK=PLDJG DLNK=DLDJG LF2=-lm \ + BIND=BDJG PBIND='' DBIND='' LDJGv1 = $(CC) $(LF) -o gawk $(LDRSP) $(LF2) #BDJGv1 = coff2exe -s /djgpp/bin/go32.exe gawk @@ -322,6 +328,8 @@ AWKOBJS1 = array$O builtin$O eval$O field$O floatcomp$O gawkmisc$O io$O main$O AWKOBJS2 = ext$O msg$O node$O profile$O re$O replace$O version$O $(DYN_OBJ) PAWKOBJS1 = array$O builtin$O eval_p$O field$O floatcomp$O gawkmisc$O io$O main$O PAWKOBJS2 = ext$O msg$O node$O profile_p$O re$O replace$O version$O $(DYN_OBJ) +DAWKOBJS1 = array$O builtin$O debug$O eval_d$O field$O floatcomp$O gawkmisc$O io$O main$O +DAWKOBJS2 = ext$O msg$O node$O profile$O re$O replace$O version$O command$O $(DYN_OBJ) AWKOBJS = $(AWKOBJS1) $(AWKOBJS2) ALLOBJS = $(AWKOBJS) awkgram$O getid$O $(OBJ) @@ -332,6 +340,7 @@ LIBOBJS= getopt$O getopt1$O dfa$O regex$O random$O GAWKOBJS = $(ALLOBJS) $(LIBOBJS) PGAWKOBJS = $(PAWKOBJS1) $(PAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ) +DGAWKOBJS = $(DAWKOBJS1) $(DAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ) # clear out suffixes list # .SUFFIXES: @@ -341,7 +350,7 @@ PGAWKOBJS = $(PAWKOBJS1) $(PAWKOBJS2) $(LIBOBJS) awkgram$O getid$O $(OBJ) $(CC) -c $(CFLAGS) $< # rules to build gawk -all : gawk.exe pgawk.exe +all : gawk.exe pgawk.exe dgawk.exe gawk.exe:: $(GAWKOBJS) $(RSP) $(DO_LNK) @@ -351,6 +360,10 @@ pgawk.exe:: $(PGAWKOBJS) $(PRSP) $(DO_PLNK) $(DO_PBIND) +dgawk.exe:: $(DGAWKOBJS) $(DRSP) + $(DO_DLNK) + $(DO_DBIND) + $(RSPFILE) : $(GAWKOBJS) echo $(AWKOBJS1)$P > $@ echo $(AWKOBJS2)$P >> $@ @@ -361,6 +374,11 @@ $(PRSPFILE) : $(PGAWKOBJS) echo $(PAWKOBJS2)$P >> $@ echo awkgram$O getid$O $(OBJ) $(LIBOBJS)$P >> $@ +$(DRSPFILE) : $(DGAWKOBJS) + echo $(DAWKOBJS1)$P > $@ + echo $(DAWKOBJS2)$P >> $@ + echo awkgram$O getid$O $(OBJ) $(LIBOBJS)$P >> $@ + $(ALLOBJS) eval_p$O profile_p$O: awk.h regex.h config.h gawkmisc$O: pc/gawkmisc.pc @@ -407,7 +425,7 @@ install2: gawk -v prefix=$(prefix) -f install.awk clean: - rm -rf gawk pgawk *.exe gawk.map *.o *.obj core a.out $(RSPFILE) $(PRSPFILE) $(DYN_EXP) + rm -rf gawk pgawk dgawk *.exe gawk.map *.o *.obj core a.out $(RSPFILE) $(PRSPFILE) $(DRSPFILE) $(DYN_EXP) # cd doc && $(MAKE) clean # cd test && $(MAKE) clean # cd awklib && $(MAKE) clean diff --git a/pc/Makefile.tst b/pc/Makefile.tst index 1f91dc59..3cc076d0 100644 --- a/pc/Makefile.tst +++ b/pc/Makefile.tst @@ -115,48 +115,51 @@ srcdir = . CLEANFILES = core core.* fmtspcl.ok # try to keep these sorted -BASIC_TESTS = \ - addcomma anchgsub argarray arrayparm arrayprm2 arrayprm3 arrayref \ - arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty arynocls \ - aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 aryprm8 \ - arysubnm asgext awkpath back89 backgsub childin clobber closebad \ - clsflnam compare compare2 concat1 concat2 concat3 concat4 convfmt \ - datanonl defref delarpm2 delarprm delfunc dynlj eofsplit exitval1 \ - exitval2 fcall_exit fcall_exit2 fldchg fldchgnf fnamedat fnarray \ - fnarray2 fnaryscl fnasgnm \ - fnmisc fordel forref forsimp fsbs fsrs fsspcoln fstabplus funsemnl funsmnam \ - funstack getline getline2 getline3 getlnbuf getnr2tb getnr2tm \ - gsubasgn gsubtest gsubtst2 gsubtst3 gsubtst4 gsubtst5 gsubtst6 \ - hex hsprint inputred intest intprec iobug1 leaddig leadnl litoct \ - longsub longwrds manglprm math membug1 messages minusstr mmap8k \ - mtchi18n nasty nasty2 negexp nested nfldstr nfneg nfset nlfldsep \ - nlinstr nlstrina noeffect nofile nofmtch noloop1 noloop2 nonl noparms \ - nors nulrsend numindex numsubstr octsub ofmt ofmtbig ofmtfidl ofmts \ - onlynl opasnidx opasnslf paramdup paramres paramtyp parse1 parsefld \ - parseme pcntplus prdupval prec printf0 printf1 prmarscl prmreuse \ - prt1eval prtoeval psx96sub rand rebt8b1 redfilnm regeq reindops \ - reparse resplit rs rsnul1nl rsnulbig rsnulbig2 rstest1 rstest2 \ - rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin sortempty \ - splitargv splitarr splitdef splitvar splitwht strcat1 strnum1 \ - strtod subamp subi18n subsepnm subslash substr swaplns synerr1 \ - synerr2 tradanch tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized \ - unterm uparrfs wideidx wideidx2 widesub widesub2 widesub3 \ - widesub4 wjposer1 zero2 zeroe0 zeroflag +BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayprm2 arrayprm3 \ + arrayref arrymem1 arryref2 arryref3 arryref4 arryref5 arynasty \ + arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \ + aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \ + closebad clsflnam compare compare2 concat1 concat2 concat3 concat4 \ + convfmt datanonl defref delarpm2 delarprm delfunc dynlj eofsplit \ + exitval1 exitval2 fcall_exit fcall_exit2 fldchg fldchgnf fnamedat \ + fnarray fnarray2 fnaryscl fnasgnm fnmisc fordel forref forsimp \ + fsbs fsrs fsspcoln fstabplus funsemnl funsmnam funstack getline \ + getline2 getline3 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest gsubtst2 \ + gsubtst3 gsubtst4 gsubtst5 gsubtst6 hex hsprint inputred intest intprec iobug1 \ + leaddig leadnl litoct longsub longwrds manglprm math membug1 messages \ + minusstr mmap8k mtchi18n nasty nasty2 negexp nested nfldstr nfneg \ + nfset nlfldsep nlinstr nlstrina noeffect nofile nofmtch noloop1 \ + noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \ + ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup paramres \ + paramtyp parse1 parsefld parseme pcntplus prdupval prec printf0 \ + printf1 prmarscl prmreuse prt1eval prtoeval psx96sub rand range1 \ + rebt8b1 \ + redfilnm regeq reindops reparse resplit rs rsnul1nl rsnulbig rsnulbig2 \ + rstest1 rstest2 rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin \ + sortempty splitargv splitarr splitdef splitvar splitwht strcat1 strnum1 \ + strtod subamp subi18n subsepnm subslash substr swaplns synerr1 synerr2 \ + tradanch tweakfld uninit2 uninit3 uninit4 uninit5 uninitialized unterm \ + uparrfs wideidx wideidx2 widesub widesub2 widesub3 widesub4 wjposer1 \ + zero2 zeroe0 zeroflag UNIX_TESTS = fflush getlnhd localenl pid pipeio1 pipeio2 poundbang space strftlng GAWK_EXT_TESTS = \ - argtest backw badargs binmode1 clos1way devfd devfd1 devfd2 fieldwdth \ - fsfwfs funlen fwtest fwtest2 gensub gensub2 getlndir gnuops2 gnuops3 \ - gnureops icasefs icasers igncdym igncfs ignrcas2 ignrcase lint lintold \ - manyfiles match1 match2 match3 mbprintf3 mbstr1 nondec nondec2 posix \ - printfbad1 printfbad2 procinfs rebuf regx8bit reint reint2 rsstart1 \ - rsstart2 rsstart3 rstest6 shadow strftime strtonum + aadelete1 aadelete2 aarray1 aasort aasorti \ + argtest backw badargs beginfile1 binmode1 clos1way \ + devfd devfd1 devfd2 \ + fieldwdth fpat1 funlen fsfwfs fwtest fwtest2 gensub gensub2 getlndir \ + gnuops2 gnuops3 gnureops \ + icasefs icasers igncdym igncfs ignrcas2 ignrcase indirectcall lint \ + lintold manyfiles match1 match2 match3 mbstr1 nondec nondec2 patsplit \ + posix printfbad1 printfbad2 \ + procinfs rebuf regx8bit reint reint2 rsstart1 rsstart2 rsstart3 \ + rstest6 shadow splitarg4 strftime strtonum switch2 EXTRA_TESTS = regtest inftest INET_TESTS = inetechu inetecht inetdayu inetdayt MACHINE_TESTS = double1 double2 fmtspcl intformat LOCALE_CHARSET_TESTS = asort asorti fmttest fnarydel fnparydl lc_num1 mbfw1 \ - mbprintf1 mbprintf2 rebt8b2 sort1 sprintfc whiny + mbprintf1 mbprintf2 mbprintf3 rebt8b2 sort1 sprintfc whiny # List of the tests which should be run with --lint option: @@ -165,8 +168,11 @@ NEED_LINT = defref fmtspcl noeffect nofmtch shadow uninit2 uninit3 uninit4 unini # List of the tests which should be run with --lint-old option: NEED_LINT_OLD = lintold +# List of the tests which fail with EXIT CODE 1 +FAIL_CODE1 = fnarray2 fnmisc gsubasgn mixed1 noparms paramdup synerr1 synerr2 unterm + # List of the files that appear in manual tests or are for reserve testing: -GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk switch2.awk +GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk # Message stuff is to make it a little easier to follow. # Make the pass-fail last and dependent on others to avoid @@ -694,6 +700,12 @@ printfbad2: printfbad2.ok @echo $@ @$(AWK) --lint -f $(srcdir)/$@.awk $(srcdir)/$@.in 2>&1 | sed 's;\$(srcdir)/;;g' >_$@ || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +beginfile1:: + @echo $@ + @echo Expect beginfile1 to fail with DJGPP. + @AWKPATH=$(srcdir) $(AWK) -f $@.awk $(srcdir)/$@.awk . ./no/such/file $(srcdir)/Makefile >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ Gt-dummy: # file Maketests, generated from Makefile.am by the Gentests program addcomma: @@ -1312,6 +1324,11 @@ rand: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +range1: + @echo range1 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + rebt8b1: @echo rebt8b1 @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1529,6 +1546,31 @@ getlnhd: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +aadelete1: + @echo aadelete1 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +aadelete2: + @echo aadelete2 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +aarray1: + @echo aarray1 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +aasort: + @echo aasort + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + +aasorti: + @echo aasorti + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + backw: @echo backw @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1545,8 +1587,8 @@ fieldwdth: @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ -fsfwfs: - @echo fsfwfs +fpat1: + @echo fpat1 @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ @@ -1555,6 +1597,11 @@ funlen: @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +fsfwfs: + @echo fsfwfs + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + fwtest: @echo fwtest @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1621,6 +1668,11 @@ ignrcase: @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +indirectcall: + @echo indirectcall + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + lint: @echo lint @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1651,6 +1703,11 @@ nondec: @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +patsplit: + @echo patsplit + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + posix: @echo posix @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @@ -1686,11 +1743,21 @@ shadow: @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +splitarg4: + @echo splitarg4 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + strtonum: @echo strtonum @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ +switch2: + @echo switch2 + @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ + @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@ + double1: @echo double1 @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@ diff --git a/pc/config.h b/pc/config.h index 1cdcd72e..c0295f16 100644 --- a/pc/config.h +++ b/pc/config.h @@ -556,5 +556,9 @@ #if defined(_MSC_VER) || defined(__MINGW32__) # define WEXITSTATUS(stat_val) ((stat_val) & ~0xC0000000) #endif + +#ifdef __MINGW32__ +#define HAVE_USLEEP 1 +#endif /* #define NO_LINT 1 */ diff --git a/pc/gawkmisc.pc b/pc/gawkmisc.pc index 48d4bc3c..1355449c 100644 --- a/pc/gawkmisc.pc +++ b/pc/gawkmisc.pc @@ -280,6 +280,14 @@ int fd; setmode(fd, orig_tty_mode); } } + +/* files_are_same --- return true if files are identical */ + +int +files_are_same(struct stat *f1, struct stat *f2) +{ + return (f1->st_dev == f2->st_dev && f1->st_ino == f2->st_ino); +} #ifdef __EMX__ @@ -87,8 +87,10 @@ scriptify(const char *command) slashify(name, p); if (! (i = unixshell(p))) { char *p = (char *) realloc(name, strlen(name) + 5); - if (p == NULL) + if (p == NULL) { + free(cmd); return NULL; + } name = p; strcat(name, ".bat"); } @@ -98,10 +100,14 @@ scriptify(const char *command) if ((fp = fopen(p, i ? "wb" : "w")) != NULL) { if (! i) fputs("@echo off\n", fp); i = strlen(command); - if ((fwrite(command, 1, i, fp) < i) || (fputc('\n', fp) == EOF)) + if ((fwrite(command, 1, i, fp) < i) || (fputc('\n', fp) == EOF)) { + free(cmd); cmd = NULL; - } else + { + } else { + free(cmd); cmd = NULL; + } if (fp) fclose(fp); return(cmd); } |