Commit 43fb7d9a authored by Dave Love's avatar Dave Love

(Fwrite_region): If APPEND arg is an integer, seek to

that offset before writing.  Move gcpro region past call of
Ffile_regular_p.
parent 21c34da3
/* File IO for GNU Emacs.
Copyright (C) 1985,86,87,88,93,94,95,96,97,98,1999 Free Software Foundation, Inc.
Copyright (C) 1985,86,87,88,93,94,95,96,97,98,99,2000
Free Software Foundation, Inc.
This file is part of GNU Emacs.
......@@ -4317,7 +4318,8 @@ DEFUN ("write-region", Fwrite_region, Swrite_region, 3, 7,
When called from a program, takes three arguments:\n\
START, END and FILENAME. START and END are buffer positions.\n\
Optional fourth argument APPEND if non-nil means\n\
append to existing file contents (if any).\n\
append to existing file contents (if any). If it is an integer,\n\
seek to that offset in the file before writing.\n\
Optional fifth argument VISIT if t means\n\
set the last-save-file-modtime of buffer to this file's modtime\n\
and mark buffer not modified.\n\
......@@ -4615,8 +4617,6 @@ This does code conversion according to the value of\n\
#endif /* not DOS_NT */
#endif /* not VMS */
UNGCPRO;
if (desc < 0)
{
#ifdef CLASH_DETECTION
......@@ -4624,19 +4624,31 @@ This does code conversion according to the value of\n\
if (!auto_saving) unlock_file (lockname);
errno = save_errno;
#endif /* CLASH_DETECTION */
UNGCPRO;
report_file_error ("Opening output file", Fcons (filename, Qnil));
}
record_unwind_protect (close_file_unwind, make_number (desc));
if (!NILP (append) && !NILP (Ffile_regular_p (filename)))
if (lseek (desc, 0, 2) < 0)
{
{
long ret;
if (NUMBERP (append))
ret = lseek (desc, XINT (append), 1);
else
ret = lseek (desc, 0, 2);
if (ret < 0)
{
#ifdef CLASH_DETECTION
if (!auto_saving) unlock_file (lockname);
if (!auto_saving) unlock_file (lockname);
#endif /* CLASH_DETECTION */
report_file_error ("Lseek error", Fcons (filename, Qnil));
}
UNGCPRO;
report_file_error ("Lseek error", Fcons (filename, Qnil));
}
}
UNGCPRO;
#ifdef VMS
/*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment