1 #include "io-dump/dump-remover.h"
2 #include "io-dump/dump-util.h"
3 #include "io/read-pref-file.h"
4 #include "util/angband-files.h"
7 * @brief prefファイルを選択して処理する /
8 * Ask for a "user pref line" and process it
9 * @brief prf出力内容を消去する /
10 * Remove old lines automatically generated before.
11 * @param orig_file 消去を行うファイル名
13 void remove_auto_dump(concptr orig_file, concptr auto_dump_mark)
16 bool between_mark = false;
19 long header_location = 0;
20 char header_mark_str[80];
21 char footer_mark_str[80];
23 sprintf(header_mark_str, auto_dump_header, auto_dump_mark);
24 sprintf(footer_mark_str, auto_dump_footer, auto_dump_mark);
25 size_t mark_len = strlen(footer_mark_str);
28 orig_fff = angband_fopen(orig_file, "r");
33 FILE *tmp_fff = nullptr;
34 char tmp_file[FILE_NAME_SIZE];
35 if (!open_temporary_file(&tmp_fff, tmp_file)) {
40 if (angband_fgets(orig_fff, buf, sizeof(buf))) {
42 fseek(orig_fff, header_location, SEEK_SET);
51 if (!strcmp(buf, header_mark_str)) {
52 header_location = ftell(orig_fff);
57 fprintf(tmp_fff, "%s\n", buf);
63 if (!strncmp(buf, footer_mark_str, mark_len)) {
65 if (!sscanf(buf + mark_len, " (%d)", &tmp) || tmp != line_num) {
66 fseek(orig_fff, header_location, SEEK_SET);
76 angband_fclose(orig_fff);
77 angband_fclose(tmp_fff);
80 tmp_fff = angband_fopen(tmp_file, "r");
81 orig_fff = angband_fopen(orig_file, "w");
82 while (!angband_fgets(tmp_fff, buf, sizeof(buf))) {
83 fprintf(orig_fff, "%s\n", buf);
86 angband_fclose(orig_fff);
87 angband_fclose(tmp_fff);