summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-08 00:25:58 +0000
committerj-p-e-g <j-p-e-g@c06c8d41-db1a-0410-9941-cceddc491573>2008-07-08 00:25:58 +0000
commitd0650b984a9d22727429bceb1d51a3dfb8aa84ef (patch)
treefc2affc4477918b9935d69433c8a822fcfd5c3c6
parent12c06e3c2402f48325bf48d31e588af5ccab1c08 (diff)
downloadcrawl-ref-d0650b984a9d22727429bceb1d51a3dfb8aa84ef.tar.gz
crawl-ref-d0650b984a9d22727429bceb1d51a3dfb8aa84ef.zip
Save macro.txt and wininit.txt in the settings folder, both using the
macro_dir option. We might want to rename said option. git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@6447 c06c8d41-db1a-0410-9941-cceddc491573
-rw-r--r--crawl-ref/docs/options_guide.txt12
-rw-r--r--crawl-ref/settings/init.txt1
-rw-r--r--crawl-ref/source/files.cc4
-rw-r--r--crawl-ref/source/initfile.cc14
-rw-r--r--crawl-ref/source/libgui.cc18
-rw-r--r--crawl-ref/source/macro.cc11
6 files changed, 42 insertions, 18 deletions
diff --git a/crawl-ref/docs/options_guide.txt b/crawl-ref/docs/options_guide.txt
index 9e708949d5..e27245e8d8 100644
--- a/crawl-ref/docs/options_guide.txt
+++ b/crawl-ref/docs/options_guide.txt
@@ -17,7 +17,7 @@ The contents of this text are:
weapon, book, chaos_knight, death_knight, priest,
race, class, random_pick, good_random
2- File System and Sound.
- crawl_dir, morgue_dir, save_dir, sound
+ crawl_dir, morgue_dir, save_dir, macro_dir, sound
3- Lua files.
stash.lua, wield.lua, kills.lua, runrest.lua,
gearset.lua, eat.lua, pickup.lua, trapwalk.lua
@@ -280,8 +280,9 @@ good_random = true
================
crawl_dir = <path>
- Directory for reading macro.txt.
- It should end with the path delimiter.
+ The path used for the relative paths when looking for other
+ files. Defaults to the directory that contains the Crawl
+ executable.
morgue_dir = morgue
Directory where morgue dumps files (morgue*.txt and
@@ -292,6 +293,11 @@ save_dir = saves
ignored depending on the settings used to compile Crawl, but
should be honoured for the official Crawl binaries.
+macro_dir = settings/
+ Directory for reading macro.txt.
+ For tile games, wininit.txt will also be stored here.
+ It should end with the path delimiter.
+
sound = <regex>:<path to sound file>
Plays the sound file if a message contains regex. The regex
should not include commas or colons. For example
diff --git a/crawl-ref/settings/init.txt b/crawl-ref/settings/init.txt
index cd1f75f9bb..0354100b66 100644
--- a/crawl-ref/settings/init.txt
+++ b/crawl-ref/settings/init.txt
@@ -71,6 +71,7 @@
# crawl_dir = <path>
# morgue_dir = morgue
# save_dir = saves
+macro_dir = settings/
# sound = <regex>:<path to sound file>
##### 3- Lua Files #################################################
diff --git a/crawl-ref/source/files.cc b/crawl-ref/source/files.cc
index c906a36123..f00a8cf58a 100644
--- a/crawl-ref/source/files.cc
+++ b/crawl-ref/source/files.cc
@@ -527,19 +527,19 @@ std::string datafile_path(std::string basename,
#endif
for (unsigned b = 0, size = bases.size(); b < size; ++b)
- {
for (unsigned p = 0; p < sizeof(prefixes) / sizeof(*prefixes); ++p)
{
std::string name = bases[b] + prefixes[p] + basename;
if (file_exists(name))
return (name);
}
- }
// Die horribly.
if (croak_on_fail)
+ {
end(1, false, "Cannot find data file '%s' anywhere, aborting\n",
basename.c_str());
+ }
return ("");
}
diff --git a/crawl-ref/source/initfile.cc b/crawl-ref/source/initfile.cc
index 098db26920..08ca799cb2 100644
--- a/crawl-ref/source/initfile.cc
+++ b/crawl-ref/source/initfile.cc
@@ -1134,10 +1134,10 @@ static std::string _find_crawlrc()
}
// Check all possibilities for init.txt
- for ( int i = 0; locations_data[i][1] != NULL; ++i )
+ for (int i = 0; locations_data[i][1] != NULL; ++i)
{
// Don't look at unset options
- if ( locations_data[i][0] != NULL )
+ if (locations_data[i][0] != NULL)
{
const std::string rc =
catpath(locations_data[i][0], locations_data[i][1]);
@@ -1808,7 +1808,7 @@ void game_options::read_option_line(const std::string &str, bool runscript)
// Keep unlowercased field around
const std::string orig_field = field;
- if (key != "name" && key != "crawl_dir"
+ if (key != "name" && key != "crawl_dir" && key != "macro_dir"
&& key != "race" && key != "class" && key != "ban_pickup"
&& key != "autopickup_exceptions"
&& key != "stop_travel" && key != "sound"
@@ -2174,6 +2174,10 @@ void game_options::read_option_line(const std::string &str, bool runscript)
// if the user puts two crawl_dir lines in the init file.
SysEnv.crawl_dir = field;
}
+ else if (key == "macro_dir")
+ {
+ macro_dir = field;
+ }
#endif
else if (key == "race")
{
@@ -3039,10 +3043,10 @@ void get_system_environment(void)
}
#endif
- // The full path to the init file -- this over-rides CRAWL_DIR
+ // The full path to the init file -- this overrides CRAWL_DIR.
SysEnv.crawl_rc = check_string( getenv("CRAWL_RC") );
- // rename giant and giant spiked clubs
+ // Rename giant and giant spiked clubs.
SysEnv.board_with_nail = (getenv("BOARD_WITH_NAIL") != NULL);
#ifdef MULTIUSER
diff --git a/crawl-ref/source/libgui.cc b/crawl-ref/source/libgui.cc
index 8b5ae1db7f..6fb7c56f7e 100644
--- a/crawl-ref/source/libgui.cc
+++ b/crawl-ref/source/libgui.cc
@@ -28,6 +28,7 @@
#include "it_use2.h"
#include "externs.h"
#include "guic.h"
+#include "initfile.h"
#include "message.h"
#include "misc.h"
#include "mon-util.h"
@@ -804,8 +805,23 @@ static void _libgui_save_prefs()
strncpy(dummy_str[pref_mode][idx], (char *)p->ptr, MAX_PREF_CHAR);
}
+ // Use the same directory as for macros.
+ // (Yes, this is an arbitrary decision.)
+ std::string dir = !Options.macro_dir.empty() ? Options.macro_dir :
+ !SysEnv.crawl_dir.empty() ? SysEnv.crawl_dir : "";
+
+ if (!dir.empty())
+ {
+#ifndef DGL_MACRO_ABSOLUTE_PATH
+ if (dir[dir.length() - 1] != FILE_SEPARATOR)
+ dir += FILE_SEPARATOR;
+#endif
+ }
+
const char *baseTxt = "wininit.txt";
- std::string winTxtString = datafile_path(baseTxt, false, true);
+ std::string winTxtString = dir + baseTxt;
+ if ( (fp = fopen(winTxtString.c_str(), "w")) == NULL )
+ winTxtString = datafile_path(baseTxt, false, true);
const char *winTxt = winTxtString.c_str()[0] == 0 ? baseTxt
: winTxtString.c_str();
diff --git a/crawl-ref/source/macro.cc b/crawl-ref/source/macro.cc
index 5f2542bf39..712cd8c39d 100644
--- a/crawl-ref/source/macro.cc
+++ b/crawl-ref/source/macro.cc
@@ -158,7 +158,7 @@ static int userfunc_getindex(const std::string &fname)
return (i);
}
- // Pass 2 to hunt for gaps
+ // Pass 2 to hunt for gaps.
for (int i = 0, count = userfunctions.size(); i < count; ++i)
{
if (userfunctions[i].empty())
@@ -172,14 +172,11 @@ static int userfunc_getindex(const std::string &fname)
return (userfunctions.size() - 1);
}
-/*
- * Returns the name of the file that contains macros.
- */
+// Returns the name of the file that contains macros.
static std::string get_macro_file()
{
- std::string dir =
- !Options.macro_dir.empty()? Options.macro_dir :
- !SysEnv.crawl_dir.empty()? SysEnv.crawl_dir : "";
+ std::string dir = !Options.macro_dir.empty() ? Options.macro_dir :
+ !SysEnv.crawl_dir.empty() ? SysEnv.crawl_dir : "";
if (!dir.empty())
{