summaryrefslogtreecommitdiff
path: root/readline/histfile.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2000-03-15 11:44:17 +0000
committerEli Zaretskii <eliz@gnu.org>2000-03-15 11:44:17 +0000
commitefbc55c18dedba1f638e2e64de1b39c57a91c7e9 (patch)
tree0d27e741c1ff411938594ada0793d06dcfb2c8c4 /readline/histfile.c
parent44e17056ec76c28bd6a756c8c45d59924847b128 (diff)
downloadgdb-efbc55c18dedba1f638e2e64de1b39c57a91c7e9.tar.gz
(read_history_range, history_truncate_file, history_do_write) [__MSDOS__]:
Allow for a `_' to replace the leading dot in hard-wrired file names.
Diffstat (limited to 'readline/histfile.c')
-rw-r--r--readline/histfile.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/readline/histfile.c b/readline/histfile.c
index 3325b7fc1f7..9437e992566 100644
--- a/readline/histfile.c
+++ b/readline/histfile.c
@@ -140,6 +140,16 @@ read_history_range (filename, from, to)
input = history_filename (filename);
file = open (input, O_RDONLY|O_BINARY, 0666);
+
+#ifdef __MSDOS__
+ /* MSDOS doesn't allow leading dots in file names. Try again
+ with the dot replaced by an underscore. */
+ if (file < 0 && !filename)
+ {
+ input[strlen (input) - 8] = '_';
+ file = open (input, O_RDONLY|O_BINARY, 0666);
+ }
+#endif
if ((file < 0) || (fstat (file, &finfo) == -1))
goto error_and_exit;
@@ -233,6 +243,16 @@ history_truncate_file (fname, lines)
filename = history_filename (fname);
file = open (filename, O_RDONLY|O_BINARY, 0666);
+#ifdef __MSDOS__
+ /* MSDOS doesn't allow leading dots in file names. Try again
+ with the dot replaced by an underscore. */
+ if (file < 0 && !fname)
+ {
+ filename[strlen (filename) - 8] = '_';
+ file = open (filename, O_RDONLY|O_BINARY, 0666);
+ }
+#endif
+
if (file == -1 || fstat (file, &finfo) == -1)
goto truncate_exit;
@@ -314,8 +334,23 @@ history_do_write (filename, nelements, overwrite)
if ((file = open (output, mode, 0600)) == -1)
{
+#ifdef __MSDOS__
+ /* MSDOS doesn't allow leading dots in file names. If this is
+ the default file name, try again with the dot replaced by an
+ underscore. */
+ if (!filename)
+ {
+ output[strlen (output) - 8] = '_';
+ if ((file = open (output, mode, 0600)) == -1)
+ {
+ FREE (output);
+ return (errno);
+ }
+ }
+#else
FREE (output);
return (errno);
+#endif
}
if (nelements > history_length)