|
| |||||||||||||
#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... |