JBVariable * jb_variable_get_variable_or_error (const char *name) { JBVariable *variable; g_return_val_if_fail(name != NULL, NULL); variable = jb_variable_get_variable(name); if (variable == NULL) g_error("variable \"%s\" does not exist", name); return variable; }
void jb_check_host_system (void) { char *output; gboolean status = FALSE; if (jb_variable_get_variable("host-cpu") != NULL) return; /* already checked */ jb_message_checking("the host system type"); if (jb_exec(&output, NULL, "jbsrc/tools/config.sub `jbsrc/tools/config.guess`")) { char **fields; int len; fields = g_strsplit(output, "-", 0); len = g_strv_length(fields); if (len == 3) { jb_variable_set_string("host-cpu", fields[0]); jb_variable_set_string("host-manufacturer", fields[1]); jb_variable_set_string("host-kernel", NULL); jb_variable_set_string("host-os", fields[2]); status = TRUE; } else if (len == 4) { jb_variable_set_string("host-cpu", fields[0]); jb_variable_set_string("host-manufacturer", fields[1]); jb_variable_set_string("host-kernel", fields[2]); jb_variable_set_string("host-os", fields[3]); status = TRUE; } g_strfreev(fields); } if (status) jb_message_result_string(output); else jb_message_result_string("unknown"); g_free(output); if (! status) jb_error("unable to determine host system type"); }
JBVariable * ensure_variable (JBVariableType *type, const char *name) { JBVariable *variable; g_return_val_if_fail(name != NULL, NULL); variable = jb_variable_get_variable(name); if (variable == NULL) { variable = variable_new(type, name, NULL, NULL, 0); add_variable(variable); } return variable; }
static char * get_expansion (const char *varname, GHashTable *extra_variables) { JBVariable *variable; if (extra_variables != NULL) { const char *extra_value; if (g_hash_table_lookup_extended(extra_variables, varname, NULL, (gpointer) &extra_value)) return g_strdup(extra_value != NULL ? extra_value : ""); } variable = jb_variable_get_variable(varname); if (variable != NULL) return jb_variable_evaluate(variable); jb_error("unknown variable \"%s\"", varname); }
static void handle_variable (const char *pair) { char *name; char *value; JBVariable *variable; GError *err = NULL; if (! parse_variable(pair, &name, &value)) jb_error("invalid variable specification \"%s\"", pair); variable = jb_variable_get_variable(name); if (variable == NULL || (variable->flags & JB_VARIABLE_USER_SETTABLE) == 0) jb_error("unknown variable \"%s\"", name); if (! jb_variable_set_from_string(variable, value, &err)) jb_error("invalid value \"%s\" for %s variable \"%s\": %s", value, variable->type->name, name, err->message); variable->user_set = TRUE; }