static PyObject *PyRRD_dump( PyObject UNUSED(*self), PyObject * args) { PyObject *r; int argc; char **argv; if (create_args("dump", args, &argc, &argv) < 0) return NULL; if (rrd_dump(argc, argv) != 0) { PyErr_SetString(ErrorObject, rrd_get_error()); rrd_clear_error(); r = NULL; } else { Py_INCREF(Py_None); r = Py_None; } destroy_args(&argv); return r; }
static PyObject *PyRRD_resize( PyObject UNUSED(*self), PyObject * args) { PyObject *r; char **argv; int argc, ts; if (create_args("resize", args, &argc, &argv) < 0) return NULL; if ((ts = rrd_resize(argc, argv)) == -1) { PyErr_SetString(ErrorObject, rrd_get_error()); rrd_clear_error(); r = NULL; } else { Py_INCREF(Py_None); r = Py_None; } destroy_args(&argv); return r; }
static PyObject *PyRRD_updatev( PyObject UNUSED(*self), PyObject * args) { PyObject *r; int argc; char **argv; rrd_info_t *data; if (create_args("updatev", args, &argc, &argv) < 0) return NULL; if ((data = rrd_update_v(argc, argv)) == NULL) { PyErr_SetString(ErrorObject, rrd_get_error()); rrd_clear_error(); r = NULL; } else { r = PyDict_FromInfo(data); rrd_info_free(data); } destroy_args(&argv); return r; }
/* [user thread] */ bool _al_show_display_menu(ALLEGRO_DISPLAY *display, ALLEGRO_MENU *menu) { #ifdef CREATE_WINDOW_FOR_MENU ARGS *args; if (!ensure_gtk_thread()) { return false; } args = create_args(); if (!args) { return false; } args->display = display; args->menu = menu; return wait_for_args(do_show_display_menu, args); #else (void) display; (void) menu; return false; #endif }
static PyObject *PyRRD_xport( PyObject UNUSED(*self), PyObject * args) { PyObject *r; int argc, xsize; char **argv, **legend_v; time_t start, end; unsigned long step, col_cnt; rrd_value_t *data, *datai; if (create_args("xport", args, &argc, &argv) < 0) return NULL; if (rrd_xport(argc, argv, &xsize, &start, &end, &step, &col_cnt, &legend_v, &data) == -1) { PyErr_SetString(ErrorObject, rrd_get_error()); rrd_clear_error(); r = NULL; } else { PyObject *meta_dict, *data_list, *legend_list, *t; unsigned long i, j; rrd_value_t dv; unsigned long row_cnt = ((end - start) / step); r = PyDict_New(); meta_dict = PyDict_New(); legend_list = PyList_New(col_cnt); data_list = PyList_New(row_cnt); PyDict_SetItem(r, PyString_FromString("meta"), meta_dict); PyDict_SetItem(r, PyString_FromString("data"), data_list); datai = data; PyDict_SetItem(meta_dict, PyString_FromString("start"), PyInt_FromLong((long) start)); PyDict_SetItem(meta_dict, PyString_FromString("end"), PyInt_FromLong((long) end)); PyDict_SetItem(meta_dict, PyString_FromString("step"), PyInt_FromLong((long) step)); PyDict_SetItem(meta_dict, PyString_FromString("rows"), PyInt_FromLong((long) row_cnt)); PyDict_SetItem(meta_dict, PyString_FromString("columns"), PyInt_FromLong((long) col_cnt)); PyDict_SetItem(meta_dict, PyString_FromString("legend"), legend_list); for (i = 0; i < col_cnt; i++) { PyList_SET_ITEM(legend_list, i, PyString_FromString(legend_v[i])); } for (i = 0; i < row_cnt; i++) { t = PyTuple_New(col_cnt); PyList_SET_ITEM(data_list, i, t); for (j = 0; j < col_cnt; j++) { dv = *(datai++); if (isnan(dv)) { PyTuple_SET_ITEM(t, j, Py_None); Py_INCREF(Py_None); } else { PyTuple_SET_ITEM(t, j, PyFloat_FromDouble((double) dv)); } } } for (i = 0; i < col_cnt; i++) { rrd_freemem(legend_v[i]); } rrd_freemem(legend_v); rrd_freemem(data); } destroy_args(&argv); return r; }
static PyObject *PyRRD_fetch( PyObject UNUSED(*self), PyObject * args) { PyObject *r; rrd_value_t *data, *datai; unsigned long step, ds_cnt; time_t start, end; int argc; char **argv, **ds_namv; if (create_args("fetch", args, &argc, &argv) < 0) return NULL; if (rrd_fetch(argc, argv, &start, &end, &step, &ds_cnt, &ds_namv, &data) == -1) { PyErr_SetString(ErrorObject, rrd_get_error()); rrd_clear_error(); r = NULL; } else { /* Return : ((start, end, step), (name1, name2, ...), [(data1, data2, ..), ...]) */ PyObject *range_tup, *dsnam_tup, *data_list, *t; unsigned long i, j, row; rrd_value_t dv; row = (end - start) / step; r = PyTuple_New(3); range_tup = PyTuple_New(3); dsnam_tup = PyTuple_New(ds_cnt); data_list = PyList_New(row); PyTuple_SET_ITEM(r, 0, range_tup); PyTuple_SET_ITEM(r, 1, dsnam_tup); PyTuple_SET_ITEM(r, 2, data_list); datai = data; PyTuple_SET_ITEM(range_tup, 0, PyInt_FromLong((long) start)); PyTuple_SET_ITEM(range_tup, 1, PyInt_FromLong((long) end)); PyTuple_SET_ITEM(range_tup, 2, PyInt_FromLong((long) step)); for (i = 0; i < ds_cnt; i++) PyTuple_SET_ITEM(dsnam_tup, i, PyString_FromString(ds_namv[i])); for (i = 0; i < row; i++) { t = PyTuple_New(ds_cnt); PyList_SET_ITEM(data_list, i, t); for (j = 0; j < ds_cnt; j++) { dv = *(datai++); if (isnan(dv)) { PyTuple_SET_ITEM(t, j, Py_None); Py_INCREF(Py_None); } else { PyTuple_SET_ITEM(t, j, PyFloat_FromDouble((double) dv)); } } } for (i = 0; i < ds_cnt; i++) rrd_freemem(ds_namv[i]); rrd_freemem(ds_namv); /* rrdtool don't use PyMem_Malloc :) */ rrd_freemem(data); } destroy_args(&argv); return r; }
Call builtin_setTempo(Env parent_env, Args args) { Number n = (Number)args_get(args, 0); Closure k = (Closure)args_get(args, 1); tempo = (int)n->value; return create_call(k, create_args(0)); }
int main(int argc, char **argv) { signal(SIGINT, handle_signal); char line[MAXLINE]; /* The current input line */ /* Points to the beginning of the list of current command tokens */ cmd_tok *current_cmd = NULL; /* Points to a token within the command tokens list */ cmd_tok *current_tok_ptr = NULL; print_prompt(); int length = 0; while((length = getln(line, MAXLINE)) > 0) { if (length == 1 && line[0] == '\n') { /* They pushed enter without any text */ print_prompt(); continue; } char *token = strtok(line, " "); current_cmd = create_cmd_tok(token); current_tok_ptr = current_cmd; token = strtok(NULL, " "); /* Continue to tokenize input line */ while (token != NULL) { current_tok_ptr->next_token = create_cmd_tok(token); current_tok_ptr = current_tok_ptr->next_token; token = strtok(NULL, " "); } /* Process the command */ /* Check if it was one of the internal commands: exit, cd */ if (strcmp(current_cmd->current_token, "exit") == 0) { destroy_cmd_toks(current_cmd); return 0; } else if (strcmp(current_cmd->current_token, "cd") == 0) { char *directory = NULL; int num_args = get_num_tokens(current_cmd); if (num_args == 1) { /* The user just typed "cd". Go to home directory. */ directory = getenv("HOME"); } else { /* Get the token after "cd" */ directory = current_cmd->next_token->current_token; } int cd_return_val = chdir(directory); /* chdir returns 0 if successful */ if (cd_return_val != 0) { /* Print error messages */ char *error_msg = (char *)malloc(sizeof(argv[0]) + sizeof(directory) + 7*sizeof(char)); strcpy(error_msg, argv[0]); strcat(error_msg, ": cd: "); strcat(error_msg, directory); perror(error_msg); free(error_msg); } } else { /* Assume input was an external executable command */ char **args = create_args(current_cmd); /* In case executable is not on path, allocate memory for args[0] with ./ prepended */ char *arg0 = NULL; int child_pid = fork(); if (child_pid == 0) { execvp(args[0], args); /* execvp only returns if it fails */ /* Didn't find command on path, try looking in current directory */ arg0 = (char *)malloc(sizeof(args[0]) + 3*sizeof(char)); strcpy(arg0, "./"); strcat(arg0, args[0]); execvp(arg0, args); /* Couldn't find command */ print_cmd_not_found(args[0]); return 0; } else { signal(SIGINT, child_terminate_handler); wait(NULL); } signal(SIGINT, handle_signal); free(args); free(arg0); } /* Free and reset command pointers */ destroy_cmd_toks(current_cmd); current_cmd = NULL; current_tok_ptr = NULL; print_prompt(); } /* In case they exit with control-D, want prompt to show up on new line */ printf("\n"); return 0; }