diff lisp/config.el @ 428:3ecd8885ac67 r21-2-22

Import from CVS: tag r21-2-22
author cvs
date Mon, 13 Aug 2007 11:28:15 +0200
parents
children 308d34e9f07d
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/config.el	Mon Aug 13 11:28:15 2007 +0200
@@ -0,0 +1,70 @@
+;;; config.el --- access configuration parameters
+
+;; Copyright (C) 1997 Sun Microsystems, Inc.
+
+;; Author:   Martin Buchholz
+;; Keywords: configure
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+
+;;; Synched up with: not in FSF.
+
+;;; Commentary:
+
+;;; Code:
+
+
+(defvar config-value-file (expand-file-name "config.values" doc-directory)
+  "File containing configuration parameters and their values.")
+
+(defvar config-value-hash-table nil
+  "Hash table to store configuration parameters and their values.")
+
+;;;###autoload
+(defun config-value-hash-table ()
+  "Return hash table of configuration parameters and their values."
+  (when (null config-value-hash-table)
+    (setq config-value-hash-table (make-hash-table :size 300))
+    (save-excursion
+      (let ((buf (get-buffer-create " *Config*")))
+	(set-buffer buf)
+	(erase-buffer)
+	(insert-file-contents config-value-file)
+	(goto-char (point-min))
+	(condition-case nil
+	    (while t
+	      (let* ((key (read buf))
+		     (value (read buf))
+		     (prev (gethash key config-value-hash-table)))
+		(cond ((null prev)
+		       (puthash key value config-value-hash-table))
+		      ((atom prev)
+		       (puthash key (list prev value) config-value-hash-table))
+		      (t
+		       (nconc prev (list value))))))
+	  (end-of-file nil)))
+      (kill-buffer " *Config*")))
+  config-value-hash-table)
+
+;;;###autoload
+(defun config-value (config-symbol)
+  "Return the value of the configuration parameter CONFIG_SYMBOL."
+  (gethash config-symbol (config-value-hash-table)))
+
+(provide 'config)
+;;; config.el ends here