OSDN Git Service

[Fix] #40233 FILE ポインタの参照処理ミスを修正. / FILE pointer reference processing corrections.
authordeskull <deskull@users.sourceforge.jp>
Sun, 19 Apr 2020 09:18:22 +0000 (18:18 +0900)
committerdeskull <deskull@users.sourceforge.jp>
Sun, 19 Apr 2020 09:18:22 +0000 (18:18 +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 b39310f..5af1727 100644 (file)
@@ -376,7 +376,7 @@ 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(auto_dump_stream, buf, mark)) continue;
+                       if (!open_auto_dump(&auto_dump_stream, buf, mark)) continue;
 
                        auto_dump_printf(auto_dump_stream, _("\n# カラーの設定\n\n", "\n# Color redefinitions\n\n"));
                        for (i = 0; i < 256; i++)
@@ -396,7 +396,7 @@ void do_cmd_colors(player_type *creature_ptr)
                                        i, kv, rv, gv, bv);
                        }
 
-                       close_auto_dump(auto_dump_stream, mark);
+                       close_auto_dump(&auto_dump_stream, mark);
                        msg_print(_("カラーの設定をファイルに書き出しました。", "Dumped color redefinitions."));
                }
                else if (i == '3')
index 794817f..2033673 100644 (file)
  * @param fname ファイル名
  * @return なし
  */
-static void macro_dump(FILE *auto_dump_stream, concptr fname)
+static void macro_dump(FILE **fpp, 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(auto_dump_stream, buf, mark)) return;
+       if (!open_auto_dump(fpp, buf, mark)) return;
+
+       auto_dump_printf(*fpp, _("\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(auto_dump_stream, "A:%s\n", buf);
+               auto_dump_printf(*fpp, "A:%s\n", buf);
                ascii_to_text(buf, macro__pat[i]);
-               auto_dump_printf(auto_dump_stream, "P:%s\n", buf);
-               auto_dump_printf(auto_dump_stream, "\n");
+               auto_dump_printf(*fpp, "P:%s\n", buf);
+               auto_dump_printf(*fpp, "\n");
        }
 
-       close_auto_dump(auto_dump_stream, mark);
+       close_auto_dump(fpp, mark);
 }
 
 
@@ -114,7 +115,7 @@ static errr keymap_dump(concptr fname)
 
        path_build(buf, sizeof(buf), ANGBAND_DIR_USER, fname);
        FILE_TYPE(FILE_TYPE_TEXT);
-       if (!open_auto_dump(auto_dump_stream, buf, mark)) return -1;
+       if (!open_auto_dump(&auto_dump_stream, buf, mark)) return -1;
 
        auto_dump_printf(auto_dump_stream, _("\n# 自動キー配置セーブ\n\n", "\n# Automatic keymap dump\n\n"));
        for (int i = 0; i < 256; i++)
@@ -131,7 +132,7 @@ static errr keymap_dump(concptr fname)
                auto_dump_printf(auto_dump_stream, "C:%d:%s\n", mode, key);
        }
 
-       close_auto_dump(auto_dump_stream, mark);
+       close_auto_dump(&auto_dump_stream, mark);
        return 0;
 }
 
@@ -200,7 +201,7 @@ void do_cmd_macros(player_type *creature_ptr)
                        sprintf(tmp, "%s.prf", creature_ptr->base_name);
                        if (!askfor(tmp, 80)) continue;
 
-                       macro_dump(auto_dump_stream, tmp);
+                       macro_dump(&auto_dump_stream, tmp);
                        msg_print(_("マクロを追加しました。", "Appended macros."));
                }
                else if (i == '3')
index 38a0cb3..8929e3c 100644 (file)
@@ -104,7 +104,7 @@ 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(auto_dump_stream, buf, mark)) continue;
+                       if (!open_auto_dump(&auto_dump_stream, buf, mark)) continue;
 
                        auto_dump_printf(auto_dump_stream, _("\n# モンスターの[色/文字]の設定\n\n", "\n# Monster attr/char definitions\n\n"));
                        for (i = 0; i < max_r_idx; i++)
@@ -117,7 +117,7 @@ void do_cmd_visuals(player_type *creature_ptr)
                                        (byte)(r_ptr->x_attr), (byte)(r_ptr->x_char));
                        }
 
-                       close_auto_dump(auto_dump_stream, mark);
+                       close_auto_dump(&auto_dump_stream, mark);
                        msg_print(_("モンスターの[色/文字]をファイルに書き出しました。", "Dumped monster attr/chars."));
                        break;
                }
@@ -130,7 +130,7 @@ 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(auto_dump_stream, buf, mark)) continue;
+                       if (!open_auto_dump(&auto_dump_stream, buf, mark)) continue;
 
                        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++)
@@ -155,7 +155,7 @@ void do_cmd_visuals(player_type *creature_ptr)
                                        (byte)(k_ptr->x_attr), (byte)(k_ptr->x_char));
                        }
 
-                       close_auto_dump(auto_dump_stream, mark);
+                       close_auto_dump(&auto_dump_stream, mark);
                        msg_print(_("アイテムの[色/文字]をファイルに書き出しました。", "Dumped object attr/chars."));
                        break;
                }
@@ -168,7 +168,7 @@ 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(auto_dump_stream, buf, mark)) continue;
+                       if (!open_auto_dump(&auto_dump_stream, buf, mark)) continue;
 
                        auto_dump_printf(auto_dump_stream, _("\n# 地形の[色/文字]の設定\n\n", "\n# Feature attr/char definitions\n\n"));
                        for (i = 0; i < max_f_idx; i++)
@@ -184,7 +184,7 @@ void do_cmd_visuals(player_type *creature_ptr)
                                        (byte)(f_ptr->x_attr[F_LIT_DARK]), (byte)(f_ptr->x_char[F_LIT_DARK]));
                        }
 
-                       close_auto_dump(auto_dump_stream, mark);
+                       close_auto_dump(&auto_dump_stream, mark);
                        msg_print(_("地形の[色/文字]をファイルに書き出しました。", "Dumped feature attr/chars."));
                        break;
                }
index b53e4cc..ec6027c 100644 (file)
@@ -323,25 +323,25 @@ void auto_dump_printf(FILE *auto_dump_stream, concptr fmt, ...)
  * @param mark 出力するヘッダマーク
  * @return ファイルポインタを取得できたらTRUEを返す
  */
-bool open_auto_dump(FILE *auto_dump_stream, concptr buf, concptr mark)
+bool open_auto_dump(FILE **fpp, concptr buf, concptr mark)
 {
        char header_mark_str[80];
        concptr auto_dump_mark = mark;
        sprintf(header_mark_str, auto_dump_header, auto_dump_mark);
        remove_auto_dump(buf, mark);
-       auto_dump_stream = my_fopen(buf, "a");
-       if (!auto_dump_stream)
+       *fpp = my_fopen(buf, "a");
+       if (!fpp)
        {
                msg_format(_("%s を開くことができませんでした。", "Failed to open %s."), buf);
                msg_print(NULL);
                return FALSE;
        }
 
-       fprintf(auto_dump_stream, "%s\n", header_mark_str);
+       fprintf(*fpp, "%s\n", header_mark_str);
        auto_dump_line_num = 0;
-       auto_dump_printf(auto_dump_stream, _("# *警告!!* 以降の行は自動生成されたものです。\n",
+       auto_dump_printf(*fpp, _("# *警告!!* 以降の行は自動生成されたものです。\n",
                "# *Warning!*  The lines below are an automatic dump.\n"));
-       auto_dump_printf(auto_dump_stream, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
+       auto_dump_printf(*fpp, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
                "# Don't edit them; changes will be deleted and replaced automatically.\n"));
        return TRUE;
 }
@@ -351,14 +351,14 @@ bool open_auto_dump(FILE *auto_dump_stream, concptr buf, concptr mark)
  * Append foot part and close auto dump.
  * @return なし
  */
-void close_auto_dump(FILE *auto_dump_stream, concptr auto_dump_mark)
+void close_auto_dump(FILE **fpp, concptr auto_dump_mark)
 {
        char footer_mark_str[80];
        sprintf(footer_mark_str, auto_dump_footer, auto_dump_mark);
-       auto_dump_printf(auto_dump_stream, _("# *警告!!* 以降の行は自動生成されたものです。\n",
+       auto_dump_printf(*fpp, _("# *警告!!* 以降の行は自動生成されたものです。\n",
                "# *Warning!*  The lines below are an automatic dump.\n"));
-       auto_dump_printf(auto_dump_stream, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\n",
+       auto_dump_printf(*fpp, _("# *警告!!* 後で自動的に削除されるので編集しないでください。\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);
+       fprintf(*fpp, "%s (%d)\n", footer_mark_str, auto_dump_line_num);
+       my_fclose(*fpp);
 }
index e8a5fc5..da7208b 100644 (file)
@@ -8,5 +8,5 @@ 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(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, concptr auto_dump_mark);
+bool open_auto_dump(FILE **fpp, concptr buf, concptr mark);
+void close_auto_dump(FILE **fpp, concptr auto_dump_mark);