Added linked-list.[ch] --- a general purpose linked list module.
authorJohn Darrington <john@darrington.wattle.id.au>
Fri, 21 Jan 2005 11:59:39 +0000 (11:59 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Fri, 21 Jan 2005 11:59:39 +0000 (11:59 +0000)
Fixed numerous memory leaks.
Canonicalised the test output file names.

35 files changed:
src/ChangeLog
src/Makefile.am
src/examine.q
src/file-handle.h
src/file-handle.q
src/font.h
src/glob.c
src/groff-font.c
src/linked-list.c [new file with mode: 0644]
src/linked-list.h [new file with mode: 0644]
src/postscript.c
src/set.q
tests/bugs/alpha-freq.sh
tests/bugs/big-input-2.sh
tests/bugs/big-input.sh
tests/bugs/comment-at-eof.sh
tests/bugs/compute-fmt.sh
tests/bugs/computebug.sh
tests/bugs/crosstabs.sh
tests/bugs/data-crash.sh
tests/bugs/double-frequency.sh
tests/bugs/examine-1sample.sh
tests/bugs/get.sh
tests/bugs/html-frequency.sh
tests/bugs/multipass.sh
tests/bugs/random.sh
tests/bugs/recode-copy-bug.sh
tests/bugs/t-test-alpha.sh
tests/bugs/t-test-alpha2.sh
tests/bugs/t-test-with-temp.sh
tests/bugs/t-test.sh
tests/bugs/temporary.sh
tests/bugs/terminate.sh
tests/bugs/val-labs-trailing-slash.sh
tests/bugs/val-labs.sh

index 956324affe1f295d396a6b14eed40f621dcd2677..0e90b935da38c79ccfa73b3b5244f6d8aee0e9af 100644 (file)
@@ -1,3 +1,10 @@
+Fri Jan 21 19:54:14 WST 2005 John Darrington <john@darrington.wattle.id.au>
+
+       * linked-list.[ch] Added
+
+       * examine.q file-handle.[hq] font.h glob.c groff-font.c postscript.c 
+         set.q:    Yet more memory leaks
+
 Tue Jan 18 23:12:40 WST 2005 John Darrington <john@darrington.wattle.id.au>
 
        * t-test.q examine.q : More memory leaks fixed.
index 01d651d4f5fc22ba2c0f8279a20a294540ef8a69..1a6216d9f224d7f0f3e3b8ecf8ded18a700d336e 100644 (file)
@@ -74,8 +74,8 @@ file-type.c filename.c filename.h flip.c font.h format.c format.def   \
 format.h formats.c get.c getline.c getline.h glob.c glob.h             \
 groff-font.c group.c group.h group_proc.h \
 hash.c hash.h histogram.c histogram.h \
-html.c htmlP.h include.c inpt-pgm.c lexer.c    \
-lexer.h levene.c levene.h log.h loop.c magic.c magic.h main.c main.h   \
+html.c htmlP.h include.c inpt-pgm.c lexer.c lexer.h levene.c levene.h \
+linked-list.c linked-list.h log.h loop.c magic.c magic.h main.c main.h \
 matrix-data.c mis-val.c misc.c misc.h modify-vars.c                    \
 moments.c moments.h numeric.c output.c output.h \
 percentiles.c percentiles.h permissions.c \
index d49f9f165ac3479b4988f07fecefa16b1995b09c..4e28f23917501542defa0803efbc9cc4667b9610 100644 (file)
@@ -218,6 +218,19 @@ cmd_examine(void)
   if ( dependent_vars ) 
     free (dependent_vars);
 
+  {
+    struct factor *f = factors ;
+    while ( f ) 
+      {
+       struct factor *ff = f;
+
+       f = f->next;
+       free ( ff->fs );
+       hsh_destroy ( ff->fstats ) ;
+       free ( ff ) ;
+      }
+  }
+
   subc_list_double_destroy(&percentile_list);
 
   return CMD_SUCCESS;
index 00a79109601465fdf05f69710421aec690dd427e..ba0d75108d9e9d48afeec4ecba8d48b0b4ae3155 100644 (file)
@@ -31,9 +31,15 @@ enum file_handle_mode
     MODE_BINARY                 /* Fixed-length records. */
   };
 
+
+
+void fh_init(void);
+void fh_done(void);
+
 /* Parsing handles. */
 struct file_handle *fh_parse (void);
 
+
 /* Opening and closing handles. */
 void **fh_open (struct file_handle *, const char *type, const char *mode);
 int fh_close (struct file_handle *, const char *type, const char *mode);
index 9c3a81a366a4bf5de31e657ba27e6a8ee6a8ae3b..cc499a995111855d1a21fe3cb0a12e01e7a5a3a8 100644 (file)
@@ -30,6 +30,8 @@
 #include "error.h"
 #include "magic.h"
 #include "var.h"
+#include "linked-list.h"
+
 /* (headers) */
 
 /* File handle. */
@@ -215,6 +217,15 @@ create_file_handle (const char *handle_name, const char *filename)
   return handle;
 }
 
+void
+destroy_file_handle(struct file_handle *fh, void *aux UNUSED)
+{
+  free (fh->name);
+  free (fh->filename);
+  fn_free_identity (fh->identity);
+  free (fh);
+}
+
 static const char *
 mode_name (const char *mode) 
 {
@@ -304,6 +315,10 @@ fh_close (struct file_handle *h, const char *type, const char *mode)
   return h->open_cnt;
 }
 
+
+static struct linked_list *handle_list;
+
+
 /* Parses a file handle name, which may be a filename as a string or
    a file handle name as an identifier.  Returns the file handle or
    NULL on failure. */
@@ -330,11 +345,13 @@ fh_parse (void)
       char *handle_name = xmalloc (strlen (filename) + 3);
       sprintf (handle_name, "\"%s\"", filename);
       handle = create_file_handle (handle_name, filename);
+      ll_push_front(handle_list, handle);
       free (handle_name);
     }
 
   lex_get ();
 
+
   return handle;
 }
 
@@ -386,6 +403,23 @@ handle_get_tab_width (const struct file_handle *handle)
   return handle->tab_width;
 }
 
+
+void 
+fh_init(void)
+{
+  handle_list = ll_create(destroy_file_handle,0);
+}
+
+void 
+fh_done(void)
+{
+  assert(handle_list);
+  
+  ll_destroy(handle_list);
+  handle_list = 0;
+}
+
+
 /*
    Local variables:
    mode: c
index 67c276cd683b2de1b477f52f05868d5877d484b4..c612c9f47085c06d239678169bf4c7151d24a399 100644 (file)
@@ -135,6 +135,7 @@ struct font_desc *groff_read_font (const char *fn);
 struct font_desc *groff_find_font (const char *dev, const char *name);
 int groff_read_DESC (const char *dev_name, struct groff_device_info * dev);
 void groff_init (void);
+void groff_done (void);
 
 struct font_desc *default_font (void);
 
index 457be8ace071b856fff5cd17d5fc5dd94d14bd16..159c48296bade021e084902dc88934636dc88919 100644 (file)
@@ -127,6 +127,7 @@ init_glob (int argc UNUSED, char **argv)
 #endif /* ENABLE_NLS */
 
   fn_init ();
+  fh_init ();
   getl_initialize ();
 
   /* PORTME: If your system/OS has the nasty tendency to halt with a
@@ -187,6 +188,8 @@ done_glob(void)
   free(logfn);
   done_settings();
   ds_destroy (&tokstr);
+
+  fh_done();
 }
 
 static void
index 331da33d38dbd07ec4239f35e2a07b05cadc066a..2787a793c9d35a53c34aa686f7c83b8bad6fd1ba 100644 (file)
@@ -48,12 +48,6 @@ static void add_kern (struct font_desc * font, int ch1, int ch2, int adjust);
 /* Typical whitespace characters for tokenizing. */
 static const char whitespace[] = " \t\n\r\v";
 
-void
-groff_init (void)
-{
-  space_index = font_char_name_to_index ("space");
-}
-
 /* Some notes on the groff_font(8) manpage:
 
    DESC file format: A typical PostScript `res' would be 72000, with
@@ -447,6 +441,20 @@ static struct
   }
 hash;
 
+void
+groff_init (void)
+{
+  space_index = font_char_name_to_index ("space");
+}
+
+void
+groff_done (void)
+{
+  free (hash.tab) ;
+  pool_destroy(hash.ar);
+}
+
+
 /* Searches for NAME in the global character code table, returns the
    index if found; otherwise inserts NAME and returns the new
    index. */
diff --git a/src/linked-list.c b/src/linked-list.c
new file mode 100644 (file)
index 0000000..a98a3a1
--- /dev/null
@@ -0,0 +1,102 @@
+/* PSPP - computes sample statistics.
+   Copyright (C) 2005 Free Software Foundation, Inc.
+   Written by John Darrington <john@darrington.wattle.id.au>
+
+   This program is free software; you can redistribute it and/or
+   modify it under the terms of the GNU General Public License as
+   published by the Free Software Foundation; either version 2 of the
+   License, or (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+   02111-1307, USA. */
+
+#include <config.h>
+#include <assert.h>
+#include <stdlib.h>
+
+#include "alloc.h"
+#include "linked-list.h"
+
+/* Iteration */
+
+/* Return the first element in LL */
+void *
+ll_first (const struct linked_list *ll, struct ll_iterator *li)
+{
+  assert(ll); 
+
+  li->p = ll->head;
+
+  return ll->head->entry;
+}
+
+/* Return the next element in LL iterated by LI */
+void *
+ll_next (const struct linked_list *ll, struct ll_iterator *li)
+{
+  assert( ll ) ;
+
+  li->p = li->p->next;
+
+  if ( ! li->p ) 
+    return 0;
+
+  return li->p->entry;
+}
+
+
+/* Create a linked list.
+   Elements will be freed using F and AUX
+*/
+struct linked_list *
+ll_create( ll_free_func *f , void *aux)
+{
+  struct linked_list *ll = xmalloc ( sizeof(struct linked_list) ) ;
+
+  ll->head = 0;
+  ll->free = f;
+  ll->aux  = aux;
+
+  return ll;
+}
+
+
+/* Destroy a linked list */
+void
+ll_destroy(struct linked_list *ll)
+{
+  struct node *n = ll->head;
+
+  while (n)
+    {
+      struct node *nn = n->next;
+      if ( ll->free ) 
+       ll->free(n->entry, ll->aux);
+      free (n);
+      n = nn;
+    }
+
+  free (ll);
+}
+
+
+/* Push a an element ENTRY onto the list LL */
+void
+ll_push_front(struct linked_list *ll, void *entry)
+{
+  struct node *n ; 
+  assert (ll);
+
+  n = xmalloc (sizeof(struct node) );
+  n->next = ll->head;
+  n->entry = entry;
+  ll->head = n;
+}
+
diff --git a/src/linked-list.h b/src/linked-list.h
new file mode 100644 (file)
index 0000000..56c8f41
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef LL_H
+#define LL_H
+
+
+struct node
+{
+  void *entry;
+  struct node *next;
+};
+
+
+
+typedef void ll_free_func (void *, void *aux);
+
+struct linked_list
+{
+  struct node *head;
+  ll_free_func *free;
+  void *aux;
+};
+
+
+struct ll_iterator
+{
+  struct node *p;
+};
+
+
+/* Iteration */
+
+/* Return the first element in LL */
+void * ll_first (const struct linked_list *ll, struct ll_iterator *li);
+
+/* Return the next element in LL iterated by LI */
+void * ll_next (const struct linked_list *ll, struct ll_iterator *li);
+
+/* Create a linked list.
+   Elements will be freed using F and AUX
+*/
+struct linked_list * ll_create( ll_free_func *F , void *aux);
+
+/* Destroy a linked list LL */
+void ll_destroy(struct linked_list *ll);
+
+/* Push a an element ENTRY onto the list LL */
+void ll_push_front(struct linked_list *ll, void *entry);
+
+#endif
index 4a2fab0b5848e82f45adec32feb7fb36c5dc8eea..7b1f6e1562d58b473c4087d2f681602a6805daa8 100644 (file)
@@ -267,6 +267,7 @@ static unsigned hash_font_entry (const void *, void *param);
 static void free_font_entry (void *, void *foo);
 static struct font_entry *load_font (struct outp_driver *, const char *dit);
 static void init_fonts (void);
+static void done_fonts (void);
 
 static void dump_lines (struct outp_driver *this);
 
@@ -297,6 +298,8 @@ ps_open_global (struct outp_class *this UNUSED)
 static int
 ps_close_global (struct outp_class *this UNUSED)
 {
+  groff_done ();
+  done_fonts ();
   return 1;
 }
 
@@ -2815,6 +2818,12 @@ init_fonts (void)
                         NULL, NULL);
 }
 
+static void
+done_fonts (void)
+{
+ hsh_destroy (ps_fonts);
+}
+
 /* Loads the font having Groff name DIT into THIS driver instance.
    Specifically, adds it into the THIS driver's `loaded' hash
    table. */
@@ -2901,6 +2910,9 @@ struct outp_class postscript_class =
   ps_text_get_size,
   ps_text_metrics,
   ps_text_draw,
+
+  NULL,
+  NULL
 };
 
 /* EPSF driver class.  FIXME: Probably doesn't work right. */
@@ -2942,6 +2954,9 @@ struct outp_class epsf_class =
   ps_text_get_size,
   ps_text_metrics,
   ps_text_draw,
+
+  NULL,
+  NULL
 };
 
 #endif /* NO_POSTSCRIPT */
index b6bcb23f7a5aa36a5fdcb06113df5c393e4a1ae6..120606fb66eddc3822a1f370fda4f5c9c42778fe 100644 (file)
--- a/src/set.q
+++ b/src/set.q
@@ -1054,13 +1054,15 @@ set_viewport(int sig_num UNUSED)
 void
 done_settings(void)
 {
-  free(set_pager);
-  free(set_journal);
-
-  free(cmd.s_endcmd);
-  free(cmd.s_prompt);
-  free(cmd.s_cprompt);
-  free(cmd.s_dprompt);
+  if ( rng ) 
+    gsl_rng_free (rng);
+  free (set_pager);
+  free (set_journal);
+
+  free (cmd.s_endcmd);
+  free (cmd.s_prompt);
+  free (cmd.s_cprompt);
+  free (cmd.s_dprompt);
 }
 
 
index 102f98bae090ffa89cb38c4df4b35e558015a7ba..fcd4eaca3d4a5236d58b42bf497b50682bd3ce41 100755 (executable)
@@ -4,6 +4,7 @@
 # crash if given an alphanumeric variable
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 834522628e75360e72e0248e453a8b9d9aaa12d1..cb89adf471217ed67ba28e8edd09d2a4444c79ea 100755 (executable)
@@ -6,6 +6,7 @@
 
 TEMPDIR=/tmp/pspp-tst-$$
 TESTFILE=$TEMPDIR/`basename $0`.sps
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index d15cde4e12f28f24ba1398989df17b2500b2c483..740147ea75ba194d270fc8c17b8b31aff9140ebe 100755 (executable)
@@ -5,6 +5,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 0042b431b126622330e85b0c4ccbc12a8bdee178..6f6ff259c392efb3bbcbd8c85e8dff18a136e000 100755 (executable)
@@ -4,6 +4,7 @@
 # infinite loop.  Thus, this test passes as long as it completes.
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 90947510f4264f670e523fded17a33a52e8dc003..b192f0c3704c1f6b9fc40281d412fc7ea6ffa80c 100755 (executable)
@@ -5,6 +5,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 6340d52179ae327b4fb8010a49f4aebff2f45360..01675aea8bab812e064114aa42a8ff2dc8246927 100755 (executable)
@@ -3,6 +3,7 @@
 # This program tests for a bug in the `compute' command
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index a850750d7f128beececf68b5fec1ccd41d507b4f..1635fe589dbabafa8456fbc4b65cf773faf4402e 100755 (executable)
@@ -3,6 +3,7 @@
 # This program tests for a bug which crashed pspp when doing a crosstabs
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index d005680d3503d6af359fd438d6c6c96bd6a33747..b96c476ed9b4e2112cd9d14a02dec509dbef0845 100755 (executable)
@@ -4,6 +4,7 @@
 # invalid input
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index e52b7185f6de352250b80075e461e96965cfd5b8..9e90edc63c562fea8a2c3a2b7a44233f73dbf347 100755 (executable)
@@ -4,6 +4,7 @@
 # Commands existed in a input file
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 497ee89225f8e53ac52c650bfa2f16df816b6a97..b988d9e2fffff7eda984cad2965b28a905ea4c2e 100755 (executable)
@@ -4,6 +4,7 @@
 # would crash if a data file with only one case was presented
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 3a57df03443a60abf950cc0189c1123ee0204bb5..d6c3f7936a360fc29677624eecd5735e1b1ff5c4 100755 (executable)
@@ -5,6 +5,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 474735fc74ba0bec85bfcdefcfdb36ffd187ef89..ba000ee2efc9c9f7066d1d46f8b26b2c8bc24b8a 100755 (executable)
@@ -6,6 +6,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`
 
index 004235478b2dbae62baf0ee6816c887a02abf650..bd4c2c396c991037de567c2d167f6d22972f89d7 100755 (executable)
@@ -4,6 +4,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
@@ -47,7 +48,7 @@ mkdir -p $TEMPDIR
 cd $TEMPDIR
 
 activity="create program"
-cat > $TEMPDIR/rnd.sps <<EOF
+cat > $TESTFILE <<EOF
 data list list /id * abc *.
 begin data.
 1 3.5
@@ -67,7 +68,7 @@ DESCRIPTIVES
 EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
-$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/rnd.sps
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TESTFILE
 if [ $? -ne 0 ] ; then no_result ; fi
 
 
index 0f4acd777c834aa0b1066a37ab09aaffa5f722b8..52393f43a430eb2f575ede98303038471d38ddcd 100755 (executable)
@@ -4,6 +4,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
@@ -47,7 +48,7 @@ mkdir -p $TEMPDIR
 cd $TEMPDIR
 
 activity="create program"
-cat > $TEMPDIR/rnd.sps <<EOF
+cat > $TESTFILE <<EOF
 set seed=10.
 input program.
 + loop #i = 1 to 20.
@@ -64,7 +65,7 @@ EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
 activity="run program"
-$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/rnd.sps
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TESTFILE
 if [ $? -ne 0 ] ; then no_result ; fi
 
 
index 0d9ed17124cc8219765bcd20f1ef7b86ba1bfaa2..559c5198014e9457e563e63c70d4645d409a8105 100755 (executable)
@@ -3,6 +3,7 @@
 # This program tests ....
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 23771c497bb8843e33ff529a8f4819e28c3626aa..093c2cb70c02ae62b34d653777940e204e5f7bbb 100755 (executable)
@@ -5,6 +5,7 @@
 # BUG #11227
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index c59f5e700838a8cf069810c4b318bf74ed4afe82..bf74ec8e4b7a2bbc4b9a0400454960800414f12e 100755 (executable)
@@ -4,6 +4,7 @@
 #  a single alpha variable is specified for the independent variable
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index b7803d20a163e68e45508f953c604d8dc2114514..0c46357073654ef46c14a6c167ac3997d8f8c31b 100755 (executable)
@@ -4,6 +4,7 @@
 # works ok with a TEMPORARY transformation
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 6ce101f0a298765f4bbe00ea6e3bc6abb9e0a2f4..2b747c623dfa19cb2a5ed459963b3e5a9950d417 100755 (executable)
@@ -5,6 +5,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
@@ -48,7 +49,7 @@ mkdir -p $TEMPDIR
 cd $TEMPDIR
 
 activity="create program"
-cat > $TEMPDIR/rnd.sps <<EOF
+cat > $TESTFILE <<EOF
 DATA LIST LIST /id * a * .
 BEGIN DATA.
 1 3.5
@@ -66,7 +67,7 @@ if [ $? -ne 0 ] ; then no_result ; fi
 
 #The syntax was invalid.  Therefore pspp must return non zero.
 activity="run program"
-$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/rnd.sps > /dev/null
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TESTFILE > /dev/null
 if [ $? -ne 1 ] ; then fail ; fi
 
 pass;
index efb39ecc6b53dacb3fd6535a914b08b1ad40982d..3fbe18421123e280c680ee66c281808d3b742e24 100755 (executable)
@@ -4,6 +4,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
@@ -47,7 +48,7 @@ mkdir -p $TEMPDIR
 cd $TEMPDIR
 
 activity="create program"
-cat > $TEMPDIR/rnd.sps <<EOF
+cat > $TESTFILE <<EOF
 DATA LIST LIST NOTABLE /x *.
 begin data.
 1
@@ -69,7 +70,7 @@ list.
 EOF
 if [ $? -ne 0 ] ; then no_result ; fi
 
-$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/rnd.sps
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TESTFILE
 if [ $? -ne 0 ] ; then no_result ; fi
 
 
index 6e1168b6d0e8f132547a171a875f5b82a604f938..2f7d79196f702d36bbff83fda38f35f0a1a18619 100755 (executable)
@@ -6,6 +6,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 6a16984aa0431e7ec5ec2c66bd6e6a38d760bef6..d2dfabd825c393039b930f23fb78b10c5e9edea7 100755 (executable)
@@ -4,6 +4,7 @@
 # which caused a crash if it had a trailing /
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
index 9fcf39ed0663314b470969898c845104c8a8b710..b1e7abb0e689ec29e8bababc8a0ebc264386d6bf 100755 (executable)
@@ -5,6 +5,7 @@
 
 
 TEMPDIR=/tmp/pspp-tst-$$
+TESTFILE=$TEMPDIR/`basename $0`.sps
 
 here=`pwd`;
 
@@ -48,7 +49,7 @@ mkdir -p $TEMPDIR
 cd $TEMPDIR
 
 activity="create program"
-cat > $TEMPDIR/rnd.sps <<EOF
+cat > $TESTFILE <<EOF
 DATA LIST LIST /a * pref * .
 BEGIN DATA.
     1.00     1.00    
@@ -66,7 +67,7 @@ if [ $? -ne 0 ] ; then no_result ; fi
 
 #Invalid syntax --- return value is non zero.
 activity="run program"
-$SUPERVISOR $here/../src/pspp -o raw-ascii $TEMPDIR/rnd.sps > /dev/null
+$SUPERVISOR $here/../src/pspp -o raw-ascii $TESTFILE > /dev/null
 if [ $? -ne 1 ] ; then fail ; fi
 
 pass;