summaryrefslogtreecommitdiffstats
path: root/libconfig/.svn/text-base/config.m.svn-base
diff options
context:
space:
mode:
Diffstat (limited to 'libconfig/.svn/text-base/config.m.svn-base')
-rw-r--r--libconfig/.svn/text-base/config.m.svn-base287
1 files changed, 0 insertions, 287 deletions
diff --git a/libconfig/.svn/text-base/config.m.svn-base b/libconfig/.svn/text-base/config.m.svn-base
deleted file mode 100644
index b0d13a9..0000000
--- a/libconfig/.svn/text-base/config.m.svn-base
+++ /dev/null
@@ -1,287 +0,0 @@
-#include "conf.h"
-#include "config.h"
-#include "nastipc.h"
-#include "thread.h"
-
-#include "BuffIO.h"
-#include "ArrayData.h"
-#include "DictData.h"
-#include "NumData.h"
-#include "StringData.h"
-
-#include <netdb.h>
-#include <stdlib.h>
-
-RCSID("$Id: config.m,v 1.5 2001/11/09 15:54:38 shmit Exp $");
-
-/*
- * Global variables.
- */
-static DictData *root;
-char config_filen[MAXPATHLEN];
-struct nast_config config;
-
-static int
-config_read(const char *filename)
-{
- BuffIO *confFile;
-
- confFile = [[[BuffIO new] init: filename] setEOL: ';'];
- if (confFile == nil) {
- fprintf(stderr, "ERROR: Couldn't load config file.");
- return -1;
- }
-
- root = [[DictData new] setFromBuffer: [confFile getCurOff]
- withLength: [confFile getLength]];
-
- /* We've duplicated all the data in here into private storage. */
- [confFile free];
-
- if (root == nil) {
- fprintf(stderr, "ERROR: Couldn't parse config file.");
- return -1;
- }
- return 0;
-}
-
-static int
-get_val(const char *name, void *dst, enum data_type type)
-{
- id node;
-
- node = [[root findChild: name] getData];
- if (node == nil)
- return 0;
-
- switch (type) {
- case NUMBER:
- if (![node isKindOf: [NumData class]]) {
- fprintf(stderr, "Node `%s' in `%s' should be a number.",
- name, config_filen);
- return -1;
- }
- *(int *)dst = [node getNum];
- break;
- case STRING:
- if (![node isKindOf: [StringData class]]) {
- fprintf(stderr, "Node `%s' in `%s' should be a string.",
- name, config_filen);
- return -1;
- }
- *(char **)dst = [node createCStr];
- break;
- case ARRAY:
- fprintf(stderr, "ERROR: Can't load array into C yet.");
- return -1;
- case DICTIONARY:
- fprintf(stderr, "ERROR: Can't load dictionary into C yet.");
- return -1;
- default:
- fprintf(stderr, "ERROR: Don't know what to do with type `%d'.",
- type);
- return -1;
- }
-
- return 0;
-}
-
-/*
- * Sets configuration variables to defaults, in case they're not set
- * elsewhere.
- */
-void
-config_setdefaults()
-{
- /* Set the defaults. */
- config.description = "Description not set in config file.";
- config.nast_dir = DATADIR;
- config.nast_sock = NASTHOLE;
- config.nast_cdb_file = "nast.cdb";
- config.mysql_host = DBHOST;
- config.mysql_user = DBUSER;
- config.mysql_pass = DBPASS;
- config.nofork_flag = 0;
- config.null_cache_timeout = 60;
- config.tcp_port = 31337;
-
- return;
-}
-
-/*
- * Initializes configuration variables from config file.
- */
-int
-config_init()
-{
- snprintf(config_filen, sizeof(config_filen),
- "%s/nastd.conf", config.nast_dir);
- if (config_read(config_filen) == -1)
- return -1;
-
- /*
- * Now grab all the top-level config information.
- */
- if (get_val("description", &config.description, STRING) == -1)
- return -1;
-
- if (get_val("nast_dir", &config.nast_dir, STRING) == -1)
- return -1;
-
- if (get_val("nast_sock", &config.nast_sock, STRING) == -1)
- return -1;
-
- if (get_val("nast_cdb_file", &config.nast_cdb_file, STRING) == -1)
- return -1;
-
- if (get_val("mysql_host", &config.mysql_host, STRING) == -1)
- return -1;
-
- if (get_val("mysql_user", &config.mysql_user, STRING) == -1)
- return -1;
-
- if (get_val("mysql_pass", &config.mysql_pass, STRING) == -1)
- return -1;
-
- if (get_val("null_cache_timeout", &config.null_cache_timeout,
- NUMBER) == -1)
- return -1;
-
- if (get_val("tcp_port", &config.tcp_port, NUMBER) == -1)
- return -1;
-
- return 0;
-}
-
-void
-config_delete()
-{
- [root free];
-}
-
-static enum data_type
-getctype(id node)
-{
- if ([node isKindOf: [StringData class]])
- return STRING;
- else if ([node isKindOf: [NumData class]])
- return NUMBER;
- else if ([node isKindOf: [ArrayData class]])
- return ARRAY;
- else if ([node isKindOf: [DictData class]])
- return DICTIONARY;
- else {
- return -1;
- }
-}
-
-void *
-config_find(void *root_node, const char *name, enum data_type *type)
-{
- id rootNode, dstNode;
-
- if (root_node == NULL)
- root_node = root;
-
- rootNode = (id)root_node;
- if ([rootNode isKindOf: [DictData class]] == NO) {
- fprintf(stderr, "Trying to find `%s' in non-dictionary.", name);
- return NULL;
- }
-
- dstNode = [[rootNode findChild: name] getData];
- if (dstNode == nil)
- return NULL;
- *type = getctype(dstNode);
- return dstNode;
-}
-
-void *
-config_arrayitemat(void *array, int index, enum data_type *type)
-{
- id arrayNode, dstNode;
-
- if (array == NULL)
- return NULL;
-
- arrayNode = (id)array;
- if ([arrayNode isKindOf: [ArrayData class]] == NO) {
- fprintf(stderr, "Trying to index in non-array.");
- return NULL;
- }
-
- if (index >= [arrayNode numObjects])
- return NULL;
-
- dstNode = [arrayNode objectAt: index];
- if (dstNode == nil)
- return NULL;
- *type = getctype(dstNode);
- return dstNode;
-}
-
-void *
-config_dictitemat(void *dict, const char *name, enum data_type *type)
-{
- id dictNode, dstNode;
-
- if (dict == NULL)
- return NULL;
-
- dictNode = (id)dict;
- if ([dictNode isKindOf: [DictData class]] == NO) {
- fprintf(stderr, "Trying to find `%s' in non-dictionary.", name);
- return NULL;
- }
-
- dstNode = [[dictNode findChild: name] getData];
- if (dstNode == nil)
- return NULL;
- *type = getctype(dstNode);
- return dstNode;
-}
-
-void *
-getdata(void *itemref, void *dst, enum data_type want_type)
-{
- id item;
-
- if (itemref == NULL)
- return NULL;
-
- item = (id)itemref;
- if ([item isKindOf: [DataObject class]] == NO) {
- fprintf(stderr, "Can only deref DataObject types "
- "or sub-classes.");
- return NULL;
- }
-
- switch (want_type) {
- case NUMBER:
- if ([item isKindOf: [NumData class]] == NO)
- return NULL;
- *(int *)dst = [item getNum];
- break;
- case STRING:
- if ([item isKindOf: [StringData class]] == NO)
- return NULL;
- *(char **)dst = [item createCStr];
- break;
- case ARRAY:
- if ([item isKindOf: [ArrayData class]] == NO)
- return NULL;
- dst = [item getData];
- break;
- case DICTIONARY:
- if ([item isKindOf: [DictData class]] == NO)
- return NULL;
- dst = [item getData];
- break;
- default:
- fprintf(stderr,
- "Can't deref type `%d': unknown type.", want_type);
- return NULL;
- }
-
- return dst;
-}