sled

Једноставни уређивач текста
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 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:
AAUTHORS | 1+
Mconfig.def.h | 9+++++++++
Mconfig.h | 9+++++++++
Adescription | 1+
Aowner | 1+
Msled.c | 13++++++++++++-
измењених датотека: 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;