Imported from archive.
[mudpy.git] / lib / muff / muffconf.py
index 44c344c..7992f12 100644 (file)
@@ -1,45 +1,47 @@
 """Configuration objects for the MUFF Engine"""
 
-# Copyright (c) 2005 mudpy, Jeremy Stanley <fungi@yuggoth.org>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-#    - Redistributions of source code must retain the above copyright
-#      notice, this list of conditions and the following disclaimer.
-#    - Redistributions in binary form must reproduce the above
-#      copyright notice, this list of conditions and the following
-#      disclaimer in the documentation and/or other materials provided
-#      with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
-# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
-# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-# POSSIBILITY OF SUCH DAMAGE.
-
+# Copyright (c) 2005 mudpy, Jeremy Stanley <fungi@yuggoth.org>, all rights reserved.
+# Licensed per terms in the LICENSE file distributed with this software.
 
+# muff configuration files use the ini format supported by ConfigParser
 import ConfigParser
-import string
 
+# need os for testing whether the config file exists and is readable
+import os
+
+# hack to load all modules in teh muff package
 import muff
 for module in muff.__all__:
        exec("import " + module)
 
-config_data = ConfigParser.SafeConfigParser()
+# list of places to look for the config
 config_dirs = [".", "./etc", "/usr/local/muff", "/usr/local/muff/etc", "/etc/muff", "/etc" ]
+
+# name of the config file
 config_name = "muff.conf"
-config_files = []
+
+# find the config file
 for each_dir in config_dirs:
-       config_files.append(each_dir + "/" + config_name)
-config_data.read(config_files)
+       config_file = each_dir + "/" + config_name
+       if os.access(config_file, os.R_OK): break
+
+# read the config
+config_data = ConfigParser.SafeConfigParser()
+config_data.read(config_file)
+
+def get(section, option):
+       """Convenience function to get configuration data."""
+       return config_data.get(section, option)
+
+def getfloat(section, option):
+       "Convenience function to get floating-point configuration data."""
+       return config_data.getfloat(section, option)
+
+def getint(section, option):
+       """Convenience function to get integer configuration data."""
+       return config_data.getint(section, option)
+
+def set(section, option, value):
+       """Convenienve function to set miscellaneous configuration data."""
+       return muffmisc.setlong(config_data, section, option, value)