Parse --preferences-file in main instead of Preferences.init

Parsing commandline arguments inside Preferences isn't very elegant,
this is better suited for the main function. Also, this change prepares
for taking --curdir into account for --preferences-file as well.
This commit is contained in:
Matthijs Kooijman 2014-04-08 11:19:58 +02:00 committed by Cristian Maglie
parent e494f39255
commit 9e17e52f63
2 changed files with 19 additions and 14 deletions

View File

@ -139,8 +139,20 @@ public class Base {
if (!portableFolder.exists())
portableFolder = null;
File preferencesFile = null;
// Do a first pass over the commandline arguments, the rest of them
// will be processed by the Base constructor. Note that this loop
// does not look at the last element of args, to prevent crashing
// when no parameter was specified to an option. Later, Base() will
// then show an error for these.
for (int i = 0; i < args.length - 1; i++) {
if (args[i].equals("--preferences-file"))
preferencesFile = new File(args[i + 1]);
}
// run static initialization that grabs all the prefs
Preferences.init(args);
Preferences.init(preferencesFile);
try {
File versionFile = getContentFile("lib/version.txt");
@ -402,7 +414,7 @@ public class Base {
i++;
if (i >= args.length)
showError(null, _("Argument required for --preferences-file"), 3);
// Argument should be already processed by Preferences.init(...)
// Argument should be already processed by Base.main(...)
continue;
}
if (args[i].startsWith("--"))

View File

@ -223,7 +223,11 @@ public class Preferences {
static boolean doSave = true;
static protected void init(String args[]) {
static protected void init(File file) {
if (file != null)
preferencesFile = file;
else
preferencesFile = Base.getSettingsFile(Preferences.PREFS_FILE);
// start by loading the defaults, in case something
// important was deleted from the user prefs
@ -255,17 +259,6 @@ public class Preferences {
// clone the hash table
defaults = new Hashtable<String, String>(table);
// next load user preferences file
preferencesFile = Base.getSettingsFile(PREFS_FILE);
// load a preferences file if specified on the command line
if (args != null) {
for (int i = 0; i < args.length - 1; i++) {
if (args[i].equals("--preferences-file"))
preferencesFile = new File(args[i + 1]);
}
}
if (preferencesFile.exists()) {
// load the previous preferences file
try {