diff options
author | Eli Zaretskii <eliz@gnu.org> | 2000-03-15 11:44:17 +0000 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2000-03-15 11:44:17 +0000 |
commit | 057b35a099f05ecc348479bb573617aa9cf1241c (patch) | |
tree | 70771b8a9bb318790fb3c79e21f9b7bb2820f700 /readline/histfile.c | |
parent | bd0856513e8ff76014ea70e3d2cefefcf69111f6 (diff) | |
download | gdb-057b35a099f05ecc348479bb573617aa9cf1241c.zip gdb-057b35a099f05ecc348479bb573617aa9cf1241c.tar.gz gdb-057b35a099f05ecc348479bb573617aa9cf1241c.tar.bz2 |
(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.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/readline/histfile.c b/readline/histfile.c index 3325b7f..9437e99 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) |