summaryrefslogtreecommitdiff
path: root/src
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
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')
-rw-r--r--src/dged/buffer.c4
-rw-r--r--src/main/main.c3
2 files changed, 5 insertions, 2 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;
diff --git a/src/main/main.c b/src/main/main.c
index 70c62a3..e9f7938 100644
--- a/src/main/main.c
+++ b/src/main/main.c
@@ -39,6 +39,7 @@
#include "cmds.h"
#include "completion.h"
#include "frame-hooks.h"
+#include "revision.h"
#include "version.h"
/* welcome.h is generated from welcome.inc with
@@ -169,7 +170,7 @@ static void usage(void) {
}
static void version(void) {
- printf("dged - %s\n© Albert Cervin 2024\n", DGED_VERSION);
+ printf("dged - %s (%s)\n© Albert Cervin 2025\n", DGED_VERSION, DGED_REVISION);
}
int main(int argc, char *argv[]) {