1 #include "io-dump/dump-remover.h"
2 #include "io-dump/dump-util.h"
3 #include "io/read-pref-file.h"
4 #include "term/z-form.h"
5 #include "util/angband-files.h"
8 * @brief prefファイルを選択して処理する /
9 * Ask for a "user pref line" and process it
10 * @brief prf出力内容を消去する /
11 * Remove old lines automatically generated before.
12 * @param orig_file 消去を行うファイル名
13 * @param auto_dump_mark 出力するヘッダマーク
15 void remove_auto_dump(concptr orig_file, concptr auto_dump_mark)
18 bool between_mark = false;
21 long header_location = 0;
22 char header_mark_str[80];
23 char footer_mark_str[80];
25 strnfmt(header_mark_str, sizeof(header_mark_str), auto_dump_header, auto_dump_mark);
26 strnfmt(footer_mark_str, sizeof(footer_mark_str), auto_dump_footer, auto_dump_mark);
27 size_t mark_len = strlen(footer_mark_str);
30 orig_fff = angband_fopen(orig_file, "r");
35 FILE *tmp_fff = nullptr;
36 char tmp_file[FILE_NAME_SIZE];
37 if (!open_temporary_file(&tmp_fff, tmp_file)) {
42 if (angband_fgets(orig_fff, buf, sizeof(buf))) {
44 fseek(orig_fff, header_location, SEEK_SET);
53 if (!strcmp(buf, header_mark_str)) {
54 header_location = ftell(orig_fff);
59 fprintf(tmp_fff, "%s\n", buf);
65 if (!strncmp(buf, footer_mark_str, mark_len)) {
67 if (!sscanf(buf + mark_len, " (%d)", &tmp) || tmp != line_num) {
68 fseek(orig_fff, header_location, SEEK_SET);
78 angband_fclose(orig_fff);
79 angband_fclose(tmp_fff);
82 tmp_fff = angband_fopen(tmp_file, "r");
83 orig_fff = angband_fopen(orig_file, "w");
84 while (!angband_fgets(tmp_fff, buf, sizeof(buf))) {
85 fprintf(orig_fff, "%s\n", buf);
88 angband_fclose(orig_fff);
89 angband_fclose(tmp_fff);