PyObject *ekg_config_set(ekg_configObj * self, PyObject * key, PyObject * value) { char *name = PyString_AsString(key); variable_t *v; debug("[python] Setting '%s' config option to '%s'\n", name, PyString_AsString(value)); v = variable_find(name); if (!v) { PyErr_SetString(PyExc_LookupError, "unknown variable"); return NULL; } if (v->type == VAR_INT || v->type == VAR_BOOL || v->type == VAR_MAP) { if (!PyInt_Check(value)) { PyErr_SetString(PyExc_TypeError, "invalid type"); return NULL; } variable_set(name, ekg_itoa(PyInt_AsLong(value))); } else { if (!PyString_Check(value)) { PyErr_SetString(PyExc_TypeError, "invalid type"); return NULL; } variable_set(name, PyString_AsString(value)); } Py_INCREF(Py_None); return Py_None; }
struct variable* variable_copy(struct context *context, const struct variable* v) { // DEBUGPRINT("variable_copy"); vm_null_check(context, v); struct variable *u = variable_new(context, (enum VarType)v->type); variable_set(context, u, v); return u; }
int dmenuSetCountryVariable(dialogMenuItem *tmp) { variable_set((char *)tmp->data, FALSE); #ifdef WITH_SYSCONS /* Don't prompt the user for a keymap if they're using the default locale. */ if (!strcmp(variable_get(VAR_COUNTRY), DEFAULT_COUNTRY)) return DITEM_SUCCESS; return keymapMenuSelect(tmp); #else return DITEM_SUCCESS; #endif }
static int ekg_config_setattr(PyObject *o, char *name, PyObject *value) { struct variable *v = variable_find(name); if (!v) { PyErr_SetString(PyExc_LookupError, "unknown variable"); return -1; } if (value == NULL) { PyErr_SetString(PyExc_TypeError, "can't delete config variables"); return -1; } if (v->type == VAR_INT || v->type == VAR_BOOL || v->type == VAR_MAP) { if (!PyInt_Check(value)) { PyErr_SetString(PyExc_TypeError, "invalid type"); return -1; } if (variable_set(name, itoa(PyInt_AsLong(value)), 0)) { PyErr_SetString(PyExc_ValueError, "invalid value"); return -1; } } else { if (!PyString_Check(value)) { PyErr_SetString(PyExc_TypeError, "invalid type"); return -1; } if (variable_set(name, PyString_AsString(value), 0)) { PyErr_SetString(PyExc_ValueError, "invalid value"); return -1; } } return 0; }
int dmenuSetVariables(dialogMenuItem *tmp) { char *cp1, *cp2; char *copy = strdup((char *)tmp->data); for (cp1 = copy; cp1 != NULL;) { cp2 = index(cp1, ','); if (cp2 != NULL) *cp2++ = '\0'; variable_set(cp1, *cp1 != '_'); cp1 = cp2; } free(copy); return DITEM_SUCCESS; }
int dmenuSetKmapVariable(dialogMenuItem *tmp) { char *lang; int err; variable_set((char *)tmp->data, TRUE); lang = variable_get(VAR_KEYMAP); if (lang != NULL) { err = loadKeymap(lang); if (err == -1) msgConfirm("No appropriate keyboard map found, sorry."); else if (err == -2) msgConfirm("Error installing keyboard map, errno = %d.", errno); } return DITEM_SUCCESS; }
/* For a given string, call it or spit out an undefined command diagnostic */ int dispatchCommand(char *str) { int i; char *cp; if (!str || !*str) { msgConfirm("Null or zero-length string passed to dispatchCommand"); return DITEM_FAILURE; } /* If it's got a newline, trim it */ if ((cp = index(str, '\n')) != NULL) *cp = '\0'; /* If it's got a `=' sign in there, assume it's a variable setting */ if (index(str, '=')) { if (isDebug()) msgDebug("dispatch: setting variable `%s'\n", str); variable_set(str, 0); i = DITEM_SUCCESS; } else { /* A command might be a pathname if it's encoded in argv[0], which we also support */ if ((cp = rindex(str, '/')) != NULL) str = cp + 1; if (isDebug()) msgDebug("dispatch: calling resword `%s'\n", str); if (!call_possible_resword(str, NULL, &i)) { msgNotify("Warning: No such command ``%s''", str); i = DITEM_FAILURE; } /* * Allow a user to prefix a command with "noError" to cause * us to ignore any errors for that one command. */ if (i != DITEM_SUCCESS && variable_get(VAR_NO_ERROR)) i = DITEM_SUCCESS; variable_unset(VAR_NO_ERROR); } return i; }
static int parse_buffer(const char *str, char **entry, char **value) { int ret; size_t len; char *val; const char *ptr; *value = *entry = NULL; if ( ! *str ) return -1; ptr = strchr(str, '='); len = (ptr) ? (size_t) (ptr - str) : strlen(str); ret = strip_value(entry, str, len); if ( ret < 0 ) return ret; if ( ! ptr ) return 0; ret = strip_value(&val, ptr + 1, strlen(ptr + 1)); if ( ret < 0 ) return ret; if ( val ) ret = value_resolve_variable(val, value); free_val(&val); if ( ret < 0 ) return ret; if ( **entry == '$' ) ret = variable_set((*entry) + 1, *value); return ret; }
int dmenuSetVariable(dialogMenuItem *tmp) { variable_set((char *)tmp->data, *((char *)tmp->data) != '_'); return DITEM_SUCCESS; }
/* * variable_undigest() * * rozszyfrowuje skrót zmiennych z listy kontaktów i ustawia wszystko, * co trzeba. * * - digest - ci±g znaków. * * 0/-1 */ int variable_undigest(const char *digest) { const char *p = digest; if (!digest) return -1; while (*p) { struct variable *v; list_t l; for (v = NULL, l = variables; l; l = l->next) { struct variable *w = l->data; if (!strncmp(p, w->short_name, 2)) { v = w; break; } } if (!v) { gg_debug(GG_DEBUG_MISC, "// unknown short \"%c%c\"\n", p[0], p[1]); return -1; } p += 2; if (v->type == VAR_INT || v->type == VAR_BOOL || v->type == VAR_MAP) { char *end; int val; val = strtol(p, &end, 10); variable_set(v->name, itoa(val), 0); p = end; } if (v->type == VAR_STR) { char *val = NULL; if (*p == '-') { val = NULL; p++; } else { const char *q; char *tmp; int len = 0, base64 = 0; if (*p == '+') { base64 = 1; p++; } for (q = p; *q && *q != ':'; q++, len++) ; tmp = xstrmid(p, 0, len); gg_debug(GG_DEBUG_MISC, "// got string variable \"%s\"\n", tmp); if (base64) { val = base64_decode(tmp); xfree(tmp); } else val = tmp; p += len + 1; } gg_debug(GG_DEBUG_MISC, "// setting variable %s = \"%s\"\n", v->name, ((val) ? val : "(null)")); variable_set(v->name, val, 0); xfree(val); } } return 0; }