summaryrefslogtreecommitdiff
path: root/src/dged
diff options
context:
space:
mode:
authorAlbert Cervin <albert@acervin.com>2025-11-25 15:20:20 +0100
committerAlbert Cervin <albert@acervin.com>2025-11-25 15:20:20 +0100
commitc21bd5f2d9f4ec2230b31040fd3c34cbe417476f (patch)
treec4d43d09326ea623172bd2763e7076d5e79dc751 /src/dged
parentf5645976b2ed01e643db9183826b6afdf9a96541 (diff)
downloaddged-c21bd5f2d9f4ec2230b31040fd3c34cbe417476f.tar.gz
dged-c21bd5f2d9f4ec2230b31040fd3c34cbe417476f.tar.xz
dged-c21bd5f2d9f4ec2230b31040fd3c34cbe417476f.zip
Fix mode not being kept on the file
Also add a revision to the --version
Diffstat (limited to 'src/dged')
-rw-r--r--src/dged/buffer.c4
1 files changed, 3 insertions, 1 deletions
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;