static int copy_classic(PyObject *base, PyObject *result) { PyObject *bases, *basebase; int i, l, err=-1; if (append_new(result, base) < 0) return -1; bases = PyObject_GetAttr(base, str__bases__); if (bases == NULL) return -1; l = PyTuple_Size(bases); if (l < 0) goto end; for (i=0; i < l; i++) { basebase = PyTuple_GET_ITEM(bases, i); if (copy_classic(basebase, result) < 0) goto end; } err = 0; end: Py_DECREF(bases); return err; }
void do_setenv(char **t, t_env *env) { t_env_node *node; char *value; int i; if (t[1] == NULL || t[2] == NULL) return; i = 3; value = my_strdup(t[2]); while (t[i] != NULL) { value = my_strcat(value, my_strdup(" ")); value = my_strcat(value, my_strdup(t[i++])); } value = trim_quote(value); node = find_node(env->list, t[1]); if (node == NULL) node = append_new(env->list, t[1], value); else update_value(env->list, t[1], value); if (env->list == NULL) env->list = node; clean_wordtab(env->environ); env->environ = convert_to_tab(env->list); free(value); }
static int copy_mro(PyObject *mro, PyObject *result) { PyObject *base; int i, l; l = PyTuple_Size(mro); if (l < 0) return -1; for (i=0; i < l; i++) { base = PyTuple_GET_ITEM(mro, i); if (append_new(result, base) < 0) return -1; } return 0; }