чување e8b4e766ff073bb758f8f8414e820f874db97200
родитељ 226dd84946345695e9e9f5818efe5f7706a5b581
Аутор: Страхиња Радић <contact@strahinja.org>
Датум: Mon, 21 Feb 2022 16:39:05 +0100
AUTHORS,description,owner: New files; separate sled.c globals in config.def.h
Signed-off-by: Страхиња Радић <contact@strahinja.org>
Diffstat:
измењених датотека: 6, додавања: 33(+), брисања: 1(-)
diff --git a/AUTHORS b/AUTHORS
@@ -0,0 +1 @@
+Strahinya Radich <contact@strahinja.org>
diff --git a/config.def.h b/config.def.h
@@ -1,5 +1,12 @@
/* See the file LICENSE for copyright and license details. */
+/* Comment out to not create backups */
+#define CREATE_BACKUPS
+
+#ifdef SLED_C_GLOBALS
+static const char* backup_suffix = "~";
+#endif /* SLED_C_GLOBALS */
+
#define DLG_FG TB_BLACK
#define DLG_BG TB_WHITE
#define ERROR_FG TB_WHITE | TB_BOLD
@@ -21,6 +28,7 @@
#define TITLE_FG TB_BLACK
#define TITLE_BG TB_WHITE
+#ifdef SLED_C_GLOBALS
int cancel_close(struct DrawState* state);
int enter_command_mode(struct DrawState* state);
int enter_insert_mode(struct DrawState* state);
@@ -188,6 +196,7 @@ static const struct Key command_keys[] = {
{ .ev = { .ch = 'w' }, .callback = move_next_word }
};
/* clang-format on */
+#endif /* SLED_C_GLOBALS */
void format_filename(char* result, size_t result_size, const char* format,
const struct DrawState* state);
diff --git a/config.h b/config.h
@@ -1,5 +1,12 @@
/* See the file LICENSE for copyright and license details. */
+/* Comment out to not create backups */
+#define CREATE_BACKUPS
+
+#ifdef SLED_C_GLOBALS
+static const char* backup_suffix = "~";
+#endif /* SLED_C_GLOBALS */
+
#define DLG_FG TB_BLACK
#define DLG_BG TB_WHITE
#define ERROR_FG TB_WHITE | TB_BOLD
@@ -21,6 +28,7 @@
#define TITLE_FG TB_BLACK
#define TITLE_BG TB_WHITE
+#ifdef SLED_C_GLOBALS
int cancel_close(struct DrawState* state);
int enter_command_mode(struct DrawState* state);
int enter_insert_mode(struct DrawState* state);
@@ -188,6 +196,7 @@ static const struct Key command_keys[] = {
{ .ev = { .ch = 'w' }, .callback = move_next_word }
};
/* clang-format on */
+#endif /* SLED_C_GLOBALS */
void format_filename(char* result, size_t result_size, const char* format,
const struct DrawState* state);
diff --git a/description b/description
@@ -0,0 +1 @@
+Једноставни уређивач текста
diff --git a/owner b/owner
@@ -0,0 +1 @@
+Страхиња Радић
diff --git a/sled.c b/sled.c
@@ -15,6 +15,8 @@
#define TB_OPT_V1_COMPAT
#define TB_IMPL
+#define SLED_C_GLOBALS
+
#include "version.h"
#include "util.h"
#include "draw.h"
@@ -37,6 +39,7 @@ enum {
SAVE_ERR_CANT_MOVE_FILE = 3
};
+extern const char* backup_suffix;
extern const char* errors[];
extern const char* actions[];
extern const char* mode_labels[];
@@ -286,23 +289,29 @@ save_file(struct DrawState* state)
{
FILE* output = NULL;
char* buf = NULL;
+#ifdef CREATE_BACKUPS
char* backup_filename = NULL;
+#endif
struct stat st;
if (!(buf = calloc(MAXBUFLINE, 1)))
return SAVE_ERR_CANT_ALLOC;
+#ifdef CREATE_BACKUPS
if (!(backup_filename = calloc(MAXPATH, 1)))
return SAVE_ERR_CANT_ALLOC;
+#endif
strcpy(state->action, actions[ACT_WRITING]);
redraw_status(state);
+#ifdef CREATE_BACKUPS
if (stat(state->filename, &st) != -1)
{
strcpy(backup_filename, state->filename);
- strcat(backup_filename, "~");
+ strcat(backup_filename, backup_suffix);
rename(state->filename, backup_filename);
}
+#endif
if (!(output = fopen(state->filename, "wt")))
return SAVE_ERR_CANT_OPEN_FILE;
@@ -318,7 +327,9 @@ save_file(struct DrawState* state)
save_file_cleanup:
fclose(output);
+#ifdef CREATE_BACKUPS
free(backup_filename);
+#endif
free(buf);
*state->action = 0;
return SAVE_ERR_NONE;