]> icculus.org git repositories - theoddone33/hhexen.git/blob - base/c_cvar.c
osezer patch 001
[theoddone33/hhexen.git] / base / c_cvar.c
1 //*************************************************************************
2 //**
3 //** cvar.c : HHexen : Dan Olson
4 //**
5 //** This material is not supported by Activision
6 //**
7 //*************************************************************************
8
9 // HEADER FILES -----------------------------------------------------------
10
11 #include <string.h>
12 #include "h2def.h"
13 #include "cvar.h"
14
15 // MACROS -----------------------------------------------------------------
16
17 // TYPES ------------------------------------------------------------------
18
19 // EXTERNAL FUNCTION PROTOTYPES -------------------------------------------
20
21 // PUBLIC FUNCTION PROTOTYPES ---------------------------------------------
22
23 // PRIVATE FUNCTION PROTOTYPES --------------------------------------------
24
25 void    CV_Init (void);
26 cvar_t  *CV_Find (char *name);
27 void    CV_Set (char *name, char *string);
28 cvar_t  *CV_Get (char *name, char *string);
29 void    CV_Shutdown (void);
30
31 // EXTERNAL DATA DECLARATIONS ---------------------------------------------
32
33 // PUBLIC DATA DEFINITIONS ------------------------------------------------
34
35 // PRIVATE DATA DEFINITIONS -----------------------------------------------
36
37 cvar_t  *cvar_list;
38
39 // CODE -------------------------------------------------------------------
40
41 void CV_Init (void)
42 {
43 }
44
45 cvar_t  *CV_Find (char *name)
46 {
47         cvar_t  *c;
48
49         for (c = cvar_list ; c ; c = c->next)
50         {
51                 if (!strcmp (c->name, name))
52                         return c;
53         }
54         return NULL;
55 }
56
57 void CV_Set (char *name, char *string)
58 {
59         cvar_t  *c;
60
61         c = CV_Find (name);
62         if (!c)
63         {
64                 ST_Message ("Tried to access non-existent cvar.\n");
65                 return;
66         }
67         c->value = atof(string);
68         c->string = string;
69 }
70
71 cvar_t  *CV_Get (char *name, char *string)
72 {
73         cvar_t  *c;
74
75         if ((c = CV_Find(name)) != NULL)
76         {
77                 // Malloc
78                 c = (cvar_t *) malloc (sizeof (cvar_t));
79                 c->name = strdup (name);
80                 c->string = strdup (string);
81                 // Set
82                 c->next = cvar_list;
83                 cvar_list = c;
84                 CV_Set (name, string);
85         }
86         return c;
87 }
88
89 void CV_Shutdown (void)
90 {
91         cvar_t  *v,*next;
92
93         v = cvar_list;
94
95         while (v)
96         {
97                 next = v->next;
98                 free (v->name);
99                 free (v->string);
100                 free (v);
101                 v = next;
102         }
103 }