From c21bd5f2d9f4ec2230b31040fd3c34cbe417476f Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Tue, 25 Nov 2025 15:20:20 +0100 Subject: Fix mode not being kept on the file Also add a revision to the --version --- src/dged/buffer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/dged/buffer.c') diff --git a/src/dged/buffer.c b/src/dged/buffer.c index 3259534..6337096 100644 --- a/src/dged/buffer.c +++ b/src/dged/buffer.c @@ -440,6 +440,8 @@ void buffer_to_file(struct buffer *buffer) { minibuffer_echo_timeout(4, "wrote %d lines to %s", nlines_to_write, buffer->filename); fclose(file); + struct stat sb; + stat(buffer->filename, &sb); if (rename(backupname, fullname) == -1) { minibuffer_echo("failed to rename backup \"%s\" to \"%s\": %s", backupname, fullname, strerror(errno)); @@ -447,6 +449,7 @@ void buffer_to_file(struct buffer *buffer) { free(backupname); return; } + chmod(buffer->filename, sb.st_mode); free(fullname); free(backupname); @@ -454,7 +457,6 @@ void buffer_to_file(struct buffer *buffer) { buffer->modified = false; undo_push_boundary(&buffer->undo, (struct undo_boundary){.save_point = true}); - struct stat sb; stat(buffer->filename, &sb); buffer->last_write = sb.st_mtim; -- cgit v1.2.3