OSDN Git Service

[Fix] #40233 auto_dump_stream ファイルディスクリプタ周りをビルドが通るように展開. / Expand so that the build...
authordeskull <deskull@users.sourceforge.jp>
Fri, 10 Apr 2020 16:56:14 +0000 (01:56 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Fri, 10 Apr 2020 16:56:14 +0000 (01:56 +0900)
src/cmd/cmd-dump.c
src/cmd/cmd-macro.c
src/cmd/cmd-visuals.c
src/io/read-pref-file.c
src/io/read-pref-file.h

index 31985ca..a3bd72e 100644 (file)
@@ -69,6 +69,7 @@
 #include "english.h"
 
 #include "diary-subtitle-table.h"
+#include "io/write-diary.h"
 
 // Clipboard variables for copy&paste in visual mode
 static TERM_COLOR attr_idx = 0;
@@ -81,10 +82,8 @@ static SYMBOL_CODE char_idx_feat[F_LIT_MAX];
 static char hack[17] = "dwsorgbuDWvyRGBU";
 
 /*!
-<<<<<<< HEAD
  * @brief prefファイルを選択して処理する /
  * Ask for a "user pref line" and process it
-=======
  * @brief prf出力内容を消去する /
  * Remove old lines automatically generated before.
  * @param orig_file 消去を行うファイル名
@@ -181,28 +180,6 @@ static void remove_auto_dump(concptr orig_file)
        fd_kill(tmp_file);
 }
 
-
-/*!
- * @brief prfファイルのフォーマットに従った内容を出力する /
- * Dump a formatted line, using "vstrnfmt()".
- * @param fmt 出力内容
- */
-static void auto_dump_printf(concptr fmt, ...)
-{
-       va_list vp;
-       char buf[1024];
-       va_start(vp, fmt);
-       (void)vstrnfmt(buf, sizeof(buf), fmt, vp);
-       va_end(vp);
-       for (concptr p = buf; *p; p++)
-       {
-               if (*p == '\n') auto_dump_line_num++;
-       }
-
-       fprintf(auto_dump_stream, "%s", buf);
-}
-
-
 /*!
  * @brief prfファイルをファイルオープンする /
  * Open file to append auto dump.
@@ -210,7 +187,7 @@ static void auto_dump_printf(concptr fmt, ...)
  * @param mark 出力するヘッダマーク
  * @return ファイルポインタを取得できたらTRUEを返す
  */
-static bool open_auto_dump(concptr buf, concptr mark)
+static bool open_auto_dump(FILE *auto_dump_stream, concptr buf, concptr mark)
 {
        char header_mark_str[80];
        auto_dump_mark = mark;
@@ -226,9 +203,9 @@ static bool open_auto_dump(concptr buf, concptr mark)
 
        fprintf(auto_dump_stream, "%s\n", header_mark_str);
        auto_dump_line_num = 0;
-       auto_dump_printf(_("# *警告!!* 以降の行は自動生成されたものです。\n",
+       auto_dump_printf(auto_dump_stream, _("# *警告!!* 以降の行は自動生成されたものです。\n",
                "# *Warning!*  The lines below are an automatic dump.\n"));
-       auto_dump_printf(_("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
+       auto_dump_printf(auto_dump_stream, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
                "# Don't edit them; changes will be deleted and replaced automatically.\n"));
        return TRUE;
 }
@@ -238,13 +215,13 @@ static bool open_auto_dump(concptr buf, concptr mark)
  * Append foot part and close auto dump.
  * @return なし
  */
-static void close_auto_dump(void)
+static void close_auto_dump(FILE *auto_dump_stream)
 {
        char footer_mark_str[80];
        sprintf(footer_mark_str, auto_dump_footer, auto_dump_mark);
-       auto_dump_printf(_("# *警告!!* 以降の行は自動生成されたものです。\n",
+       auto_dump_printf(auto_dump_stream, _("# *警告!!* 以降の行は自動生成されたものです。\n",
                "# *Warning!*  The lines below are an automatic dump.\n"));
-       auto_dump_printf(_("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
+       auto_dump_printf(auto_dump_stream, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
                "# Don't edit them; changes will be deleted and replaced automatically.\n"));
        fprintf(auto_dump_stream, "%s (%d)\n", footer_mark_str, auto_dump_line_num);
        my_fclose(auto_dump_stream);
@@ -464,6 +441,7 @@ void do_cmd_colors(player_type *creature_ptr)
        int i;
        char tmp[160];
        char buf[1024];
+       FILE *auto_dump_stream;
        FILE_TYPE(FILE_TYPE_TEXT);
        screen_save();
        while (TRUE)
@@ -497,9 +475,9 @@ void do_cmd_colors(player_type *creature_ptr)
                        if (!askfor(tmp, 70)) continue;
 
                        path_build(buf, sizeof(buf), ANGBAND_DIR_USER, tmp);
-                       if (!open_auto_dump(buf, mark)) continue;
+                       if (!open_auto_dump(auto_dump_stream, buf, mark)) continue;
 
-                       auto_dump_printf(_("\n# カラーの設定\n\n", "\n# Color redefinitions\n\n"));
+                       auto_dump_printf(auto_dump_stream, _("\n# カラーの設定\n\n", "\n# Color redefinitions\n\n"));
                        for (i = 0; i < 256; i++)
                        {
                                int kv = angband_color_table[i][0];
@@ -512,12 +490,12 @@ void do_cmd_colors(player_type *creature_ptr)
 
                                if (i < 16) name = color_names[i];
 
-                               auto_dump_printf(_("# カラー '%s'\n", "# Color '%s'\n"), name);
-                               auto_dump_printf("V:%d:0x%02X:0x%02X:0x%02X:0x%02X\n\n",
+                               auto_dump_printf(auto_dump_stream, _("# カラー '%s'\n", "# Color '%s'\n"), name);
+                               auto_dump_printf(auto_dump_stream, "V:%d:0x%02X:0x%02X:0x%02X:0x%02X\n\n",
                                        i, kv, rv, gv, bv);
                        }
 
-                       close_auto_dump();
+                       close_auto_dump(auto_dump_stream);
                        msg_print(_("カラーの設定をファイルに書き出しました。", "Dumped color redefinitions."));
                }
                else if (i == '3')
index 7bbbd83..e772e41 100644 (file)
  * @param fname ファイル名
  * @return なし
  */
-static void macro_dump(concptr fname)
+static void macro_dump(FILE *auto_dump_stream, concptr fname)
 {
        static concptr mark = "Macro Dump";
        char buf[1024];
        path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
        FILE_TYPE(FILE_TYPE_TEXT);
-       if (!open_auto_dump(buf, mark)) return;
+       if (!open_auto_dump(auto_dump_stream, buf, mark)) return;
 
-       auto_dump_printf(_("\n# 自動マクロセーブ\n\n", "\n# Automatic macro dump\n\n"));
+       auto_dump_printf(auto_dump_stream, _("\n# 自動マクロセーブ\n\n", "\n# Automatic macro dump\n\n"));
        for (int i = 0; i < macro__num; i++)
        {
                ascii_to_text(buf, macro__act[i]);
-               auto_dump_printf("A:%s\n", buf);
+               auto_dump_printf(auto_dump_stream, "A:%s\n", buf);
                ascii_to_text(buf, macro__pat[i]);
-               auto_dump_printf("P:%s\n", buf);
-               auto_dump_printf("\n");
+               auto_dump_printf(auto_dump_stream, "P:%s\n", buf);
+               auto_dump_printf(auto_dump_stream, "\n");
        }
 
-       close_auto_dump();
+       close_auto_dump(auto_dump_stream);
 }
 
 
@@ -98,6 +98,7 @@ static void do_cmd_macro_aux_keymap(char *buf)
  */
 static errr keymap_dump(concptr fname)
 {
+       FILE *auto_dump_stream;
        static concptr mark = "Keymap Dump";
        char key[1024];
        char buf[1024];
@@ -113,9 +114,9 @@ static errr keymap_dump(concptr fname)
 
        path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
        FILE_TYPE(FILE_TYPE_TEXT);
-       if (!open_auto_dump(buf, mark)) return -1;
+       if (!open_auto_dump(auto_dump_stream, buf, mark)) return -1;
 
-       auto_dump_printf(_("\n# 自動キー配置セーブ\n\n", "\n# Automatic keymap dump\n\n"));
+       auto_dump_printf(auto_dump_stream, _("\n# 自動キー配置セーブ\n\n", "\n# Automatic keymap dump\n\n"));
        for (int i = 0; i < 256; i++)
        {
                concptr act;
@@ -126,11 +127,11 @@ static errr keymap_dump(concptr fname)
                buf[1] = '\0';
                ascii_to_text(key, buf);
                ascii_to_text(buf, act);
-               auto_dump_printf("A:%s\n", buf);
-               auto_dump_printf("C:%d:%s\n", mode, key);
+               auto_dump_printf(auto_dump_stream, "A:%s\n", buf);
+               auto_dump_printf(auto_dump_stream, "C:%d:%s\n", mode, key);
        }
 
-       close_auto_dump();
+       close_auto_dump(auto_dump_stream);
        return 0;
 }
 
@@ -150,6 +151,7 @@ void do_cmd_macros(player_type *creature_ptr)
 {
        char tmp[1024];
        char buf[1024];
+       FILE *auto_dump_stream;
        BIT_FLAGS mode = rogue_like_commands ? KEYMAP_MODE_ROGUE : KEYMAP_MODE_ORIG;
        FILE_TYPE(FILE_TYPE_TEXT);
        screen_save();
@@ -198,7 +200,7 @@ void do_cmd_macros(player_type *creature_ptr)
                        sprintf(tmp, "%s.prf", creature_ptr->base_name);
                        if (!askfor(tmp, 80)) continue;
 
-                       macro_dump(tmp);
+                       macro_dump(auto_dump_stream, tmp);
                        msg_print(_("マクロを追加しました。", "Appended macros."));
                }
                else if (i == '3')
index ab51ce8..a5a2ac1 100644 (file)
@@ -66,6 +66,7 @@ static void print_visuals_menu(concptr choice_msg)
  */
 void do_cmd_visuals(player_type *creature_ptr)
 {
+       FILE *auto_dump_stream;
        char tmp[160];
        char buf[1024];
        bool need_redraw = FALSE;
@@ -103,20 +104,20 @@ void do_cmd_visuals(player_type *creature_ptr)
                        if (!askfor(tmp, 70)) continue;
 
                        path_build(buf, sizeof(buf), ANGBAND_DIR_USER, tmp);
-                       if (!open_auto_dump(buf, mark)) continue;
+                       if (!open_auto_dump(auto_dump_stream, buf, mark)) continue;
 
-                       auto_dump_printf(_("\n# モンスターの[色/文字]の設定\n\n", "\n# Monster attr/char definitions\n\n"));
+                       auto_dump_printf(auto_dump_stream, _("\n# モンスターの[色/文字]の設定\n\n", "\n# Monster attr/char definitions\n\n"));
                        for (i = 0; i < max_r_idx; i++)
                        {
                                monster_race *r_ptr = &r_info[i];
                                if (!r_ptr->name) continue;
 
-                               auto_dump_printf("# %s\n", (r_name + r_ptr->name));
-                               auto_dump_printf("R:%d:0x%02X/0x%02X\n\n", i,
+                               auto_dump_printf(auto_dump_stream, "# %s\n", (r_name + r_ptr->name));
+                               auto_dump_printf(auto_dump_stream, "R:%d:0x%02X/0x%02X\n\n", i,
                                        (byte)(r_ptr->x_attr), (byte)(r_ptr->x_char));
                        }
 
-                       close_auto_dump();
+                       close_auto_dump(auto_dump_stream);
                        msg_print(_("モンスターの[色/文字]をファイルに書き出しました。", "Dumped monster attr/chars."));
                        break;
                }
@@ -129,9 +130,9 @@ void do_cmd_visuals(player_type *creature_ptr)
                        if (!askfor(tmp, 70)) continue;
 
                        path_build(buf, sizeof(buf), ANGBAND_DIR_USER, tmp);
-                       if (!open_auto_dump(buf, mark)) continue;
+                       if (!open_auto_dump(auto_dump_stream, mbuf, mark)) continue;
 
-                       auto_dump_printf(_("\n# アイテムの[色/文字]の設定\n\n", "\n# Object attr/char definitions\n\n"));
+                       auto_dump_printf(auto_dump_stream, _("\n# アイテムの[色/文字]の設定\n\n", "\n# Object attr/char definitions\n\n"));
                        for (KIND_OBJECT_IDX k_idx = 0; k_idx < max_k_idx; k_idx++)
                        {
                                GAME_TEXT o_name[MAX_NLEN];
@@ -149,12 +150,12 @@ void do_cmd_visuals(player_type *creature_ptr)
                                        object_desc(creature_ptr, o_name, &forge, OD_FORCE_FLAVOR);
                                }
 
-                               auto_dump_printf("# %s\n", o_name);
-                               auto_dump_printf("K:%d:0x%02X/0x%02X\n\n", (int)k_idx,
+                               auto_dump_printf(auto_dump_stream, "# %s\n", o_name);
+                               auto_dump_printf(auto_dump_stream, "K:%d:0x%02X/0x%02X\n\n", (int)k_idx,
                                        (byte)(k_ptr->x_attr), (byte)(k_ptr->x_char));
                        }
 
-                       close_auto_dump();
+                       close_auto_dump(auto_dump_stream);
                        msg_print(_("アイテムの[色/文字]をファイルに書き出しました。", "Dumped object attr/chars."));
                        break;
                }
@@ -167,23 +168,23 @@ void do_cmd_visuals(player_type *creature_ptr)
                        if (!askfor(tmp, 70)) continue;
 
                        path_build(buf, sizeof(buf), ANGBAND_DIR_USER, tmp);
-                       if (!open_auto_dump(buf, mark)) continue;
+                       if (!open_auto_dump(auto_dump_stream, buf, mark)) continue;
 
-                       auto_dump_printf(_("\n# 地形の[色/文字]の設定\n\n", "\n# Feature attr/char definitions\n\n"));
+                       auto_dump_printf(auto_dump_stream, _("\n# 地形の[色/文字]の設定\n\n", "\n# Feature attr/char definitions\n\n"));
                        for (i = 0; i < max_f_idx; i++)
                        {
                                feature_type *f_ptr = &f_info[i];
                                if (!f_ptr->name) continue;
                                if (f_ptr->mimic != i) continue;
 
-                               auto_dump_printf("# %s\n", (f_name + f_ptr->name));
-                               auto_dump_printf("F:%d:0x%02X/0x%02X:0x%02X/0x%02X:0x%02X/0x%02X\n\n", i,
+                               auto_dump_printf(auto_dump_stream, "# %s\n", (f_name + f_ptr->name));
+                               auto_dump_printf(auto_dump_stream, "F:%d:0x%02X/0x%02X:0x%02X/0x%02X:0x%02X/0x%02X\n\n", i,
                                        (byte)(f_ptr->x_attr[F_LIT_STANDARD]), (byte)(f_ptr->x_char[F_LIT_STANDARD]),
                                        (byte)(f_ptr->x_attr[F_LIT_LITE]), (byte)(f_ptr->x_char[F_LIT_LITE]),
                                        (byte)(f_ptr->x_attr[F_LIT_DARK]), (byte)(f_ptr->x_char[F_LIT_DARK]));
                        }
 
-                       close_auto_dump();
+                       close_auto_dump(auto_dump_stream);
                        msg_print(_("地形の[色/文字]をファイルに書き出しました。", "Dumped feature attr/chars."));
                        break;
                }
index ad401f1..5dc4615 100644 (file)
@@ -301,7 +301,7 @@ static void remove_auto_dump(concptr orig_file)
  * Dump a formatted line, using "vstrnfmt()".
  * @param fmt 出力内容
  */
-void auto_dump_printf(concptr fmt, ...)
+void auto_dump_printf(FILE *auto_dump_stream, concptr fmt, ...)
 {
        va_list vp;
        char buf[1024];
@@ -324,7 +324,7 @@ void auto_dump_printf(concptr fmt, ...)
  * @param mark 出力するヘッダマーク
  * @return ファイルポインタを取得できたらTRUEを返す
  */
-bool open_auto_dump(concptr buf, concptr mark)
+bool open_auto_dump(FILE *auto_dump_stream, concptr buf, concptr mark)
 {
        char header_mark_str[80];
        auto_dump_mark = mark;
@@ -340,9 +340,9 @@ bool open_auto_dump(concptr buf, concptr mark)
 
        fprintf(auto_dump_stream, "%s\n", header_mark_str);
        auto_dump_line_num = 0;
-       auto_dump_printf(_("# *警告!!* 以降の行は自動生成されたものです。\n",
+       auto_dump_printf(auto_dump_stream, _("# *警告!!* 以降の行は自動生成されたものです。\n",
                "# *Warning!*  The lines below are an automatic dump.\n"));
-       auto_dump_printf(_("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
+       auto_dump_printf(auto_dump_stream, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
                "# Don't edit them; changes will be deleted and replaced automatically.\n"));
        return TRUE;
 }
@@ -352,13 +352,13 @@ bool open_auto_dump(concptr buf, concptr mark)
  * Append foot part and close auto dump.
  * @return なし
  */
-void close_auto_dump(void)
+void close_auto_dump(FILE *auto_dump_stream)
 {
        char footer_mark_str[80];
        sprintf(footer_mark_str, auto_dump_footer, auto_dump_mark);
-       auto_dump_printf(_("# *警告!!* 以降の行は自動生成されたものです。\n",
+       auto_dump_printf(auto_dump_stream, _("# *警告!!* 以降の行は自動生成されたものです。\n",
                "# *Warning!*  The lines below are an automatic dump.\n"));
-       auto_dump_printf(_("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
+       auto_dump_printf(auto_dump_stream, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
                "# Don't edit them; changes will be deleted and replaced automatically.\n"));
        fprintf(auto_dump_stream, "%s (%d)\n", footer_mark_str, auto_dump_line_num);
        my_fclose(auto_dump_stream);
index 8e7d52a..d4b4f76 100644 (file)
@@ -4,6 +4,6 @@ extern errr process_pref_file(player_type *creature_ptr, concptr name);
 extern errr process_autopick_file(player_type *creature_ptr, concptr name);
 extern errr process_histpref_file(player_type *creature_ptr, concptr name);
 
-void auto_dump_printf(concptr fmt, ...);
-bool open_auto_dump(concptr buf, concptr mark);
-void close_auto_dump(void);
+void auto_dump_printf(FILE *auto_dump_stream, concptr fmt, ...);
+bool open_auto_dump(FILE *auto_dump_stream, concptr buf, concptr mark);
+void close_auto_dump(FILE *auto_dump_stream);