/* * window_write() * * dopisuje liniê do bufora danego okna. */ int window_write(int id, const /*locale*/ char *line) { window_t *w = window_exist(id); readline_window_t *r = readline_window(w); int i = 1; if (!line || !w) return -1; /* je¶li ca³y bufor zajêty, zwolnij pierwsz± liniê i przesuñ do góry */ if (r->line[MAX_LINES_PER_SCREEN - 1]) { xfree(r->line[0]); memmove(&(r->line[0]), &(r->line[1]), sizeof(char *) * (MAX_LINES_PER_SCREEN - 1)); r->line[MAX_LINES_PER_SCREEN - 1] = xstrdup(line); } else { /* znajd¼ pierwsz± woln± liniê i siê wpisz. */ for (i = 0; i < MAX_LINES_PER_SCREEN; i++) if (!r->line[i]) { r->line[i] = xstrdup(line); break; } } if (w != window_current) { set_prompt(current_prompt()); rl_redisplay(); } return 0; }
static VALUE ruby_print_window(int argc, VALUE *argv, VALUE self) { #if 0 window_t *w = NULL; char *args[9] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; int i; if (type(argv[0]) == T_FIXNUM) { /* id of window. */ if (argc < 1 || argv > 10) { rb_raise(rb_eArgError, "print_window(): accepts 1-10 params, but %d given", argc); return Qnil; } if (!(w = window_exist(FIX2INT(argv[0])))) { rb_raise(rb_eIndexError, "print_window(): window_exist(%d) failed\n", FIX2INT(argv[0])); return Qnil; } } else if (TYPE(argv[0]) == T_STRING) { /* target */ if (TYPE(argv[1]) == T_STRING) } if (TYPE(obj) == T_STRING) query_name = RSTRING(argv[0])->ptr; else if (TYPE(obj) == T_FIXNUM); /* XXX ? */ Check_Type(argv[0], T_STRING); for (i = 1; i < argc; i++) { Check_Type(argv[i], T_STRING); args[i-1] = RSTRING(argv[i])->ptr; } tmp = str = xstrdup(RSTRING(argv[0])->ptr); while ((line = split_line(&str))) { char *tmp = format_string(line); window_print(window_exist(dest), fstring_new(tmp)); xfree(tmp); } xfree(tmp); #endif return Qnil; }
PyObject *python_build_window_id(int id) { window_t *w; if (!(w = window_exist(id))) { PyErr_SetString(PyExc_RuntimeError, _("Can't find window with given id")); return NULL; } return (PyObject *)python_build_window_w(w); }