2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
25 #include <dbmem.h> // must be last header!
27 void set_config_cmd(char* arg
)
31 sscanf(arg
,"%s %n",var
,&n
);
32 if (n
>= 0 && n
< strlen(arg
))
33 for (val
= arg
+ n
; *val
!= '\0' && isspace(*val
); val
++)
37 mprintf("setting '%s' to '%s'\n",var
,val
);
38 config_set_string(var
,val
);
39 config_set_priority(var
,PRIORITY_TRANSIENT
);
40 Status("Config variable set.");
44 void get_config_cmd(char* arg
)
49 sscanf(arg
,"%s ",var
);
50 mprintf("getting '%s'\n",var
);
51 if (config_get_raw(var
,buf
,sizeof(buf
)))
54 sprintf(outbuf
,"Value: %s",buf
);
58 Status("No such config var");
62 void eval_config_cmd(char* arg
)
69 sscanf(arg
,"%s %n",var
,&n
);
70 for (val
= arg
+ n
; *val
!= '\0' && isspace(*val
); val
++)
72 config_get_raw(var
,valbuf
,sizeof(valbuf
));
73 sprintf(cmdbuf
,val
,valbuf
);
74 if (CommandExecute(cmdbuf
))
75 Status("No such command.");
79 void ifdef_config_cmd(char* arg
)
83 sscanf(arg
,"%s %n",var
,&n
);
84 for (cmd
= arg
+ n
; *cmd
!= '\0' && isspace(*cmd
); cmd
++)
86 if (config_is_defined(var
))
87 if (CommandExecute(cmd
))
88 Status("No such command.");
92 void ifndef_config_cmd(char* arg
)
96 sscanf(arg
,"%s %n",var
,&n
);
97 for (cmd
= arg
+ n
; *cmd
!= '\0' && isspace(*cmd
); cmd
++)
99 if (!config_is_defined(var
))
100 if (CommandExecute(cmd
))
101 Status("No such command.");
105 void undef_config_cmd(char* arg
)
109 sscanf(arg
,"%s %n", var
, &n
);
110 for (cmd
= arg
+ n
; *cmd
!= '\0' && isspace(*cmd
); cmd
++)
118 ////////////////////////////////////////
121 static const char* iter_prefix
;
122 static char* iter_val
;
124 #define INCLUDE_PATH "include_path"
126 // @TODO: lift this cap
128 static char (*include_files
)[80];
129 static int files_found
;
131 static bool include_iter(char* var
)
133 if (strnicmp(iter_prefix
,var
,strlen(iter_prefix
)) == 0
134 && files_found
< MAX_FILES
)
137 int i
= files_found
++;
138 strncpy(include_files
[i
],iter_val
,sizeof(include_files
[i
]));
143 void process_config_includes(const char* prefix
)
149 iter_prefix
= prefix
;
151 include_files
= Malloc(sizeof(*include_files
)*MAX_FILES
);
153 config_get_raw_all(include_iter
,buf
,sizeof(buf
));
155 for (i
= 0; i
< files_found
; i
++)
158 find_file_in_config_path(fbuf
,include_files
[i
],INCLUDE_PATH
);
162 include_files
= NULL
;
165 ////////////////////////////////////////
168 #define SCRIPT_PATH "script_path"
170 static bool script_iter(char* var
)
172 if (strnicmp(iter_prefix
,var
,strlen(iter_prefix
)) == 0)
175 find_file_in_config_path(buf
,iter_val
,SCRIPT_PATH
);
176 CommandRunScript(buf
);
181 void process_config_scripts(const char* prefix
)
185 iter_prefix
= prefix
;
186 config_get_raw_all(script_iter
,buf
,sizeof(buf
));
190 ////////////////////////////////////////////////////////////
192 // @ROBUSTIFY: make args const.
193 BOOL
find_file_in_config_path(char* targ
, char* filename
, char* path_var
)
196 char pathbuf
[256] = "";
198 DatapathClear(&path
);
199 config_get_raw(path_var
,pathbuf
,sizeof(pathbuf
));
200 DatapathAdd(&path
,pathbuf
);
201 result
= DatapathFind(&path
,filename
,targ
,80);