|
|
#include <sysdep.h>
#include "libjwgc.h"
Go to the source code of this file.
Defines | |
#define | max(a, b) ((a > b) ? (a) : (b)) |
Functions | |
void | jVars_read_conf (char *file, int locksettings) |
void | jVars_read_defaults () |
void | jVars_set_error (char *errorstr) |
char * | jVars_get_error () |
int | jVars_set_personal_var (char *var, char *value) |
int | jVars_unset_personal_var (char *var) |
int | jVars_init () |
void | jVars_set_change_handler (jVar jvar, void(*)() handler) |
void | jVars_set_check_handler (jVar jvar, int(*)() handler) |
void | jVars_set_show_handler (jVar jvar, int(*)() handler) |
void | jVars_set_defaults_handler (void(*)() handler) |
void * | jVars_get (jVar name) |
char * | jVars_show (jVar name) |
int | jVars_set (jVar name, void *setting) |
char * | jVars_itos (jVar jvar) |
jVar | jVars_stoi (char *jvar) |
Variables | |
int | jVars_fixed [jNumVars] |
int | jVars_types [jNumVars] |
char * | jVars_strings [jNumVars] |
void * | jVars_contents [jNumVars] |
char * | varfiledefaults |
char * | varfilefixed |
char * | varfilepersonal |
char * | varerrorstr |
|
Definition at line 30 of file JVariables.c. |
|
Definition at line 293 of file JVariables.c. References jNumVars, and jVars_contents. Referenced by eval_expr(), fake_startup_packet(), jab_on_state_handler(), jabber_init(), jabutil_presnew(), jwg_on_event_handler(), jwgc_change_presence_event_handler(), main(), and run_initprogs(). 00295 { 00296 if (name >= jNumVars || name < 0) { 00297 return NULL; 00298 } 00299 00300 if (jVars_contents[name]) { 00301 return jVars_contents[name]; 00302 } 00303 else { 00304 return NULL; 00305 } 00306 }
|
|
|
|
Definition at line 147 of file JVariables.c. References DEFVARS, dprintf(), dVars, FIXEDVARS, getenv(), jVar, jVars_contents, jVars_fixed, jVars_read_defaults(), jVars_set_error(), jVars_strings, jVars_types, USRVARS, varerrorstr, varfiledefaults, varfilefixed, and varfilepersonal. Referenced by main(). 00148 { 00149 jVar i; 00150 struct passwd *pwd; 00151 char *envptr, *homedir; 00152 00153 dprintf(dVars, "Initializing variable manager...\n"); 00154 00155 varfiledefaults = NULL; 00156 varfilefixed = NULL; 00157 varfilepersonal = NULL; 00158 varerrorstr = NULL; 00159 00160 for (i = 0; i < jNumVars; i++) { 00161 jVars_fixed[i] = 0; 00162 jVars_contents[i] = NULL; 00163 jVars_check_handler[i] = NULL; 00164 jVars_change_handler[i] = NULL; 00165 jVars_show_handler[i] = NULL; 00166 } 00167 00168 if ((envptr = (char *) getenv("HOME"))) { 00169 homedir = strdup(envptr); 00170 } 00171 else { 00172 if (!(pwd = getpwuid((int) getuid()))) { 00173 jVars_set_error("Can't find your entry in /etc/passwd."); 00174 return 0; 00175 } 00176 homedir = strdup(pwd->pw_dir); 00177 } 00178 00179 varfilepersonal = (char *)malloc(sizeof(char) * 00180 (strlen(homedir) + 1 + strlen(USRVARS) + 1)); 00181 strcpy(varfilepersonal, homedir); 00182 strcat(varfilepersonal, "/"); 00183 strcat(varfilepersonal, USRVARS); 00184 00185 varfilefixed = (char *)malloc(strlen(DATADIR) + strlen(FIXEDVARS) + 2); 00186 sprintf(varfilefixed, "%s/%s", DATADIR, FIXEDVARS); 00187 00188 varfiledefaults = (char *)malloc(strlen(DATADIR) + strlen(DEFVARS) + 2); 00189 sprintf(varfiledefaults, "%s/%s", DATADIR, DEFVARS); 00190 00191 jVars_strings[jVarUsername] = "username"; 00192 jVars_types[jVarUsername] = jTypeString; 00193 00194 jVars_strings[jVarPassword] = "password"; 00195 jVars_types[jVarPassword] = jTypeString; 00196 00197 jVars_strings[jVarServer] = "server"; 00198 jVars_types[jVarServer] = jTypeString; 00199 00200 jVars_strings[jVarResource] = "resource"; 00201 jVars_types[jVarResource] = jTypeString; 00202 00203 jVars_strings[jVarPort] = "port"; 00204 jVars_types[jVarPort] = jTypeNumber; 00205 00206 jVars_strings[jVarPriority] = "priority"; 00207 jVars_types[jVarPriority] = jTypeNumber; 00208 00209 #ifdef USE_SSL 00210 jVars_strings[jVarUseSSL] = "usessl"; 00211 jVars_types[jVarUseSSL] = jTypeBool; 00212 #endif /* USE_SSL */ 00213 00214 jVars_strings[jVarInitProgs] = "initprogs"; 00215 jVars_types[jVarInitProgs] = jTypeString; 00216 00217 jVars_strings[jVarJID] = "jid"; 00218 jVars_types[jVarJID] = jTypeString; 00219 00220 jVars_strings[jVarPresence] = "presence"; 00221 jVars_types[jVarPresence] = jTypeString; 00222 00223 #ifdef USE_GPGME 00224 jVars_strings[jVarUseGPG] = "usegpg"; 00225 jVars_types[jVarUseGPG] = jTypeBool; 00226 00227 jVars_strings[jVarGPGPass] = "gpgpass"; 00228 jVars_types[jVarGPGPass] = jTypeString; 00229 00230 jVars_strings[jVarGPGKeyID] = "gpgkeyid"; 00231 jVars_types[jVarGPGKeyID] = jTypeString; 00232 #endif /* USE_GPGME */ 00233 00234 if (*jVars_defaults_handler) { 00235 jVars_defaults_handler(); 00236 } 00237 jVars_read_defaults(); 00238 00239 return 1; 00240 }
|
|
Definition at line 398 of file JVariables.c. References jVars_strings. 00400 { 00401 return jVars_strings[jvar]; 00402 }
|
|
Definition at line 420 of file JVariables.c. References dprintf(), dVars, jVar, jVars_fixed, jVars_set(), and jVars_stoi(). Referenced by jVars_read_defaults(). 00423 { 00424 FILE *fp; 00425 char *cp, *nameptr, *valptr; 00426 char varbfr[512]; 00427 jVar curvar; 00428 00429 dprintf(dVars, "Reading configuration file: %s\n", file); 00430 fp = fopen(file, "r"); 00431 if (fp) { 00432 dprintf(dVars, "Successfully opened.\n"); 00433 while (fgets(varbfr, sizeof(varbfr), fp) != (char *) 0) { 00434 varbfr[511] = '\0'; 00435 cp = varbfr; 00436 00437 while (*cp && isspace(*cp)) 00438 cp++; 00439 00440 if (!*cp || *cp == '=' || *cp == '#') 00441 continue; 00442 00443 nameptr = cp; 00444 while (*cp && !isspace(*cp) && (*cp != '=')) 00445 cp++; 00446 00447 *cp = '\0'; 00448 dprintf(dVars, "Found variable %s.\n", nameptr); 00449 curvar = jVars_stoi(nameptr); 00450 if (curvar < 0) 00451 continue; 00452 cp++; 00453 00454 while (*cp && (isspace(*cp) || *cp == '=')) 00455 cp++; 00456 00457 if (!*cp) 00458 continue; 00459 00460 valptr = cp; 00461 00462 while (*cp && (*cp != '\n')) 00463 cp++; 00464 00465 if (!*cp) 00466 continue; 00467 00468 if (*cp == '\n') 00469 *cp = '\0'; 00470 00471 if (valptr) { 00472 jVars_set(curvar, valptr); 00473 if (locksettings) { 00474 jVars_fixed[curvar] = 1; 00475 } 00476 } 00477 } 00478 fclose(fp); 00479 } 00480 }
|
|
|
|
Definition at line 333 of file JVariables.c. References jVars_contents, jVars_fixed, jVars_set_error(), and jVars_types. Referenced by jVars_read_conf(), jwg_on_event_handler(), jwg_set_defaults_handler(), jwgc_change_resource_event_handler(), and main(). 00336 { 00337 void *oldsetting; 00338 00339 if (name < 0 || name >= jNumVars) { 00340 jVars_set_error("Variable does not exist."); 00341 return 0; 00342 } 00343 00344 if (!setting) { 00345 jVars_set_error("No setting specified."); 00346 return 0; 00347 } 00348 00349 if (*jVars_check_handler[name]) { 00350 if (!(jVars_check_handler[name] (setting))) { 00351 /* handler is expected to set error */ 00352 return 0; 00353 } 00354 } 00355 00356 if (jVars_fixed[name]) { 00357 jVars_set_error("The variable you've selected can not be changed."); 00358 return 0; 00359 } 00360 else { 00361 oldsetting = jVars_contents[name]; 00362 if (jVars_types[name] == jTypeString) { 00363 jVars_contents[name] = strdup(setting); 00364 } 00365 else if (jVars_types[name] == jTypeNumber) { 00366 int *intset; 00367 intset = (int *)malloc(sizeof(int)); 00368 *intset = atoi(setting); 00369 jVars_contents[name] = intset; 00370 } 00371 else if (jVars_types[name] == jTypeBool) { 00372 int *intset; 00373 intset = (int *)malloc(sizeof(int)); 00374 *intset = 0; 00375 if (!strcmp(setting, "on") 00376 || !strcmp(setting, "enable") 00377 || !strcmp(setting, "enabled") 00378 || !strcmp(setting, "true") 00379 || !strcmp(setting, "1")) { 00380 *intset = 1; 00381 } 00382 jVars_contents[name] = intset; 00383 } 00384 00385 if (*jVars_change_handler[name]) { 00386 jVars_change_handler[name] (oldsetting, jVars_contents[name]); 00387 } 00388 00389 if (oldsetting != NULL) { 00390 free(oldsetting); 00391 } 00392 } 00393 00394 return 1; 00395 }
|
|
Definition at line 262 of file JVariables.c. Referenced by setup_jwgc_variable_handlers(). 00265 { 00266 jVars_change_handler[jvar] = handler; 00267 }
|
|
Definition at line 270 of file JVariables.c. Referenced by setup_jwgc_variable_handlers(). 00273 { 00274 jVars_check_handler[jvar] = handler; 00275 }
|
|
Definition at line 286 of file JVariables.c. Referenced by main(). 00288 { 00289 jVars_defaults_handler = handler; 00290 }
|
|
Referenced by jVars_init(), jVars_set(), jVars_show(), jwgc_check_presence_event_handler(), and jwgc_show_password_event_handler(). |
|
Definition at line 65 of file JVariables.c. References varfilepersonal. 00068 { 00069 int written; 00070 FILE *fpin, *fpout; 00071 char *varfilebackup, varbfr[512]; 00072 00073 written = 0; 00074 00075 if (!varfilepersonal) 00076 return 0; 00077 00078 varfilebackup = (char *)malloc(sizeof(char) * 00079 (strlen(varfilepersonal) + 7 + 1)); 00080 strcpy(varfilebackup, varfilepersonal); 00081 strcat(varfilebackup, ".backup"); 00082 00083 if (!(fpout = fopen(varfilebackup, "w"))) 00084 return 0; 00085 00086 if ((fpin = fopen(varfilepersonal, "r")) != NULL) { 00087 while (fgets(varbfr, sizeof varbfr, fpin) != (char *) 0) { 00088 varbfr[511] = '\0'; 00089 00090 if (varline(varbfr, var)) { 00091 fprintf(fpout, "%s = %s\n", var, value); 00092 written = 1; 00093 } 00094 else 00095 fprintf(fpout, "%s\n", varbfr); 00096 } 00097 fclose(fpin); 00098 } 00099 00100 if (!written) 00101 fprintf(fpout, "%s = %s\n", var, value); 00102 00103 if (fclose(fpout) == EOF) 00104 return 0; 00105 00106 if (rename(varfilebackup, varfilepersonal)) 00107 return 0; 00108 00109 return 1; 00110 }
|
|
Definition at line 278 of file JVariables.c. Referenced by setup_jwgc_variable_handlers(). 00281 { 00282 jVars_show_handler[jvar] = handler; 00283 }
|
|
Definition at line 309 of file JVariables.c. References jNumVars, jVars_contents, and jVars_set_error(). Referenced by jwg_on_event_handler(). 00311 { 00312 if (name >= jNumVars || name < 0) { 00313 jVars_set_error("Variable unknown."); 00314 return NULL; 00315 } 00316 00317 if (*jVars_show_handler[name]) { 00318 if (!(jVars_show_handler[name] ())) { 00319 /* handler is expected to set error */ 00320 return NULL; 00321 } 00322 } 00323 00324 if (jVars_contents[name]) { 00325 return jVars_contents[name]; 00326 } 00327 else { 00328 return (char *)"<not set>"; 00329 } 00330 }
|
|
Definition at line 405 of file JVariables.c. References jVar, and jVars_strings. Referenced by eval_expr(), jVars_read_conf(), and jwg_on_event_handler(). 00407 { 00408 jVar i; 00409 00410 for (i = 0; i < jNumVars; i++) { 00411 if (!strcmp(jvar, jVars_strings[i])) { 00412 return i; 00413 } 00414 } 00415 00416 return -1; 00417 }
|
|
Definition at line 113 of file JVariables.c. References varfilepersonal. 00115 { 00116 FILE *fpin, *fpout; 00117 char *varfilebackup, varbfr[512]; 00118 00119 varfilebackup = (char *)malloc(sizeof(char) * 00120 (strlen(varfilepersonal) + 7 + 1)); 00121 strcpy(varfilebackup, varfilepersonal); 00122 strcat(varfilebackup, ".backup"); 00123 00124 if (!(fpout = fopen(varfilebackup, "w"))) 00125 return 0; 00126 00127 if ((fpin = fopen(varfilepersonal, "r")) != NULL) { 00128 while (fgets(varbfr, sizeof varbfr, fpin) != (char *) 0) { 00129 varbfr[511] = '\0'; 00130 00131 if (!varline(varbfr, var)) 00132 fprintf(fpout, "%s\n", varbfr); 00133 } 00134 fclose(fpin); 00135 } 00136 00137 if (fclose(fpout) == EOF) 00138 return 0; 00139 00140 if (rename(varfilebackup, varfilepersonal)) 00141 return 0; 00142 00143 return 1; 00144 }
|
|
Definition at line 19 of file JVariables.c. Referenced by jVars_get(), jVars_init(), jVars_set(), and jVars_show(). |
|
Definition at line 16 of file JVariables.c. Referenced by jVars_init(), jVars_read_conf(), and jVars_set(). |
|
Definition at line 18 of file JVariables.c. Referenced by jVars_init(), jVars_itos(), and jVars_stoi(). |
|
Definition at line 17 of file JVariables.c. Referenced by jVars_init(), and jVars_set(). |
|
Definition at line 34 of file JVariables.c. Referenced by jVars_init(), and jVars_set_error(). |
|
Definition at line 31 of file JVariables.c. Referenced by jVars_init(), and jVars_read_defaults(). |
|
Definition at line 32 of file JVariables.c. Referenced by jVars_init(), and jVars_read_defaults(). |
|
Definition at line 33 of file JVariables.c. Referenced by jVars_init(), jVars_read_defaults(), jVars_set_personal_var(), and jVars_unset_personal_var(). |
Last updated at Tue Dec 18 21:07:42 PST 2007. | This site and project hosted by... |