+Tue Mar 23 08:00:42 WAST 2004 John Darrington <john@darrington.wattle.id.au>
+
+ * sort.c: Added missing call to temp_file_close. Changed error
+ messages to warnings.
+
+ * set.q: Improved setting of set_view{length,width} to be more tolerant
+ of buggy OSes.
+
Sun Mar 21 10:11:14 WST 2004 John Darrington <john@darrington.wattle.id.au>
* val-labs.c: Fixed a bug where PSPP would crash, if VALUE LABELS was
#else /* !HAVE_TERMCAP_H */
int tgetent (char *, const char *);
int tgetnum (const char *);
+int tgetflag (const char *);
#endif /* !HAVE_TERMCAP_H */
#endif /* !HAVE_LIBTERMCAP */
static char term_buffer[16384];
#endif
- /* Workable defaults before we determine the real terminal size. */
- set_viewwidth = 79;
- set_viewlength = 24;
-
-
+ set_viewwidth = -1;
+ set_viewlength = -1;
#if __DJGPP__ || __BORLANDC__
{
/* This code stolen from termcap.info, though modified. */
termtype = getenv ("TERM");
if (!termtype)
- msg (FE, _("Specify a terminal type with `setenv TERM <yourtype>'."));
+ msg (FE, _("Specify a terminal type with the TERM environment variable."));
success = tgetent (term_buffer, termtype);
if (success <= 0)
}
else
{
- set_viewlength = tgetnum ("li");
- set_viewwidth = tgetnum ("co") - 1;
+ /* NOTE: Do not rely upon tgetnum returning -1 if the value is
+ not available. It's supposed to do it, but not all platforms
+ do (eg Cygwin) .
+ */
+ if ( tgetflag("li"))
+ set_viewlength = tgetnum ("li");
+
+ if ( tgetflag("co"))
+ set_viewwidth = tgetnum ("co") - 1;
}
}
-#else
- {
- char *s;
+#endif /* HAVE_LIBTERMCAP */
/* Try the environment variables */
- s = getenv("COLUMNS");
- if ( s ) set_viewwidth = atoi(s);
+ if ( -1 == set_viewwidth )
+ {
+ char *s = getenv("COLUMNS");
+ if ( s ) set_viewwidth = atoi(s);
+ }
- s = getenv("LINES");
- if ( s ) set_viewlength = atoi(s);
- }
-#endif /* !HAVE_LIBTERMCAP */
+ if ( -1 == set_viewwidth )
+ {
+ char *s = getenv("LINES");
+ if ( s ) set_viewlength = atoi(s);
+ }
+
+
+ /* Last resort. Use hard coded values */
+ if ( 0 > set_viewwidth ) set_viewwidth = 79;
+ if ( 0 > set_viewlength ) set_viewlength = 24;
}
{
if (xsrt->temp_dir != NULL && rmdir (xsrt->temp_dir) == -1)
{
- msg (SE, _("%s: Error removing directory for temporary files: %s."),
+ msg (SW, _("%s: Error removing directory for temporary files: %s."),
xsrt->temp_dir, strerror (errno));
xsrt->temp_dir = NULL;
}
{
char *temp_file = get_temp_file_name (xsrt, file_idx);
if (simulate_error () || remove (temp_file) != 0)
- msg (SE, _("%s: Error removing temporary file: %s."),
+ msg (SW, _("%s: Error removing temporary file: %s."),
temp_file, strerror (errno));
}
}
break;
}
free (c);
+ close_temp_file (xsrt, file_idx, file);
}
static void