aboutsummaryrefslogtreecommitdiffstats
path: root/pc
diff options
context:
space:
mode:
Diffstat (limited to 'pc')
-rw-r--r--pc/ChangeLog15
-rw-r--r--pc/Makefile30
-rw-r--r--pc/Makefile.tst141
-rw-r--r--pc/config.h4
-rw-r--r--pc/gawkmisc.pc8
-rw-r--r--pc/popen.c12
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__
diff --git a/pc/popen.c b/pc/popen.c
index 287b0b9b..3410e2ca 100644
--- a/pc/popen.c
+++ b/pc/popen.c
@@ -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);
}