static bool read_script(struct key *key) { static struct buffer input_buffer; static const char *line = ""; enum status_code code; if (!line || !*line) { if (input_buffer.data && *input_buffer.data == ':') { line = "<Enter>"; memset(&input_buffer, 0, sizeof(input_buffer)); } else if (!io_get(&script_io, &input_buffer, '\n', true)) { io_done(&script_io); return false; } else { line = input_buffer.data; } } code = get_key_value(&line, key); if (code != SUCCESS) die("Error reading script: %s", get_status_message(code)); return true; }
void SessionImpl::transmit( const Response& response, const function< void ( const error_code&, size_t ) >& callback ) const { auto hdrs = m_settings->get_default_headers( ); if ( m_resource not_eq nullptr ) { const auto m_resource_headers = m_resource->m_pimpl->m_default_headers; hdrs.insert( m_resource_headers.begin( ), m_resource_headers.end( ) ); } hdrs.insert( m_headers.begin( ), m_headers.end( ) ); auto response_headers = response.get_headers( ); hdrs.insert( response_headers.begin( ), response_headers.end( ) ); auto payload = make_shared< Response >( ); payload->set_headers( hdrs ); payload->set_body( response.get_body( ) ); payload->set_version( response.get_version( ) ); payload->set_protocol( response.get_protocol( ) ); payload->set_status_code( response.get_status_code( ) ); payload->set_status_message( response.get_status_message( ) ); if ( payload->get_status_message( ).empty( ) ) { payload->set_status_message( m_settings->get_status_message( payload->get_status_code( ) ) ); } m_request->m_pimpl->m_socket->start_write( Http::to_bytes( payload ), callback ); }
static int read_option(char *opt, size_t optlen, char *value, size_t valuelen, void *data) { struct config_state *config = data; enum status_code status = ERROR_NO_OPTION_VALUE; config->lineno++; /* Check for comment markers, since read_properties() will * only ensure opt and value are split at first " \t". */ optlen = strcspn(opt, "#"); if (optlen == 0) return OK; if (opt[optlen] == 0) { /* Look for comment endings in the value. */ size_t len = strcspn(value, "#"); if (len < valuelen) { valuelen = len; value[valuelen] = 0; } status = set_option(opt, value); } if (status != SUCCESS) { warn("%s line %d: %s near '%.*s'", config->path, config->lineno, get_status_message(status), (int) optlen, opt); config->errors = TRUE; } /* Always keep going if errors are encountered. */ return OK; }
static void set_repo_config_option(char *name, char *value, enum status_code (*cmd)(int, const char **)) { const char *argv[SIZEOF_ARG] = { name, "=" }; int argc = 1 + (cmd == option_set_command); enum status_code error; if (!argv_from_string(argv, &argc, value)) error = ERROR_TOO_MANY_OPTION_ARGUMENTS; else error = cmd(argc, argv); if (error != SUCCESS) warn("Option 'tig.%s': %s", name, get_status_message(error)); }
static void set_repo_config_option(char *name, char *value, enum status_code (*cmd)(int, const char **)) { const char *argv[SIZEOF_ARG] = { name, "=" }; int argc = 1 + (cmd == option_set_command); enum status_code code; if (!argv_from_string(argv, &argc, value)) code = error("Too many arguments"); else code = cmd(argc, argv); if (code != SUCCESS) warn("Option 'tig.%s': %s", name, get_status_message(code)); }
void text_response(const stat_t status, char_t *buf) { if (txt.text_verbosity == TV_SILENT) return; // skip all this char units[] = "inch"; if (cm_get_units_mode(MODEL) != INCHES) { strcpy(units, "mm"); } if ((status == STAT_OK) || (status == STAT_EAGAIN) || (status == STAT_NOOP)) { fprintf_P(stderr, prompt_ok, units); } else { fprintf_P(stderr, prompt_err, units, get_status_message(status), buf); } nvObj_t *nv = nv_body+1; if (nv_get_type(nv) == NV_TYPE_MESSAGE) { fprintf(stderr, (char *)*nv->stringp); } fprintf(stderr, "\n"); }
static int read_option(char *opt, size_t optlen, char *value, size_t valuelen, void *data) { struct config_state *config = data; enum status_code status = ERROR_NO_OPTION_VALUE; config->lineno++; /* Check for comment markers, since read_properties() will * only ensure opt and value are split at first " \t". */ optlen = strcspn(opt, "#"); if (optlen == 0) return OK; if (opt[optlen] == 0) { /* Look for comment endings in the value. */ size_t len = strcspn(value, "#"); const char *argv[SIZEOF_ARG]; int argc = 0; if (len < valuelen) { valuelen = len; value[valuelen] = 0; } if (!argv_from_string(argv, &argc, value)) status = error("Too many option arguments for %s", opt); else status = set_option(opt, argc, argv); } if (status != SUCCESS) { warn("%s:%d: %s", config->path, config->lineno, get_status_message(status)); config->errors = TRUE; } /* Always keep going if errors are encountered. */ return OK; }
enum request run_prompt_command(struct view *view, const char *argv[]) { enum request request; const char *cmd = argv[0]; size_t cmdlen = cmd ? strlen(cmd) : 0; if (!cmd) return REQ_NONE; if (string_isnumber(cmd)) { int lineno = view->pos.lineno + 1; if (parse_int(&lineno, cmd, 0, view->lines + 1) == SUCCESS) { if (!lineno) lineno = 1; select_view_line(view, lineno - 1); report_clear(); } else { report("Unable to parse '%s' as a line number", cmd); } } else if (iscommit(cmd)) { int lineno; if (!(view->ops->column_bits & view_column_bit(ID))) { report("Jumping to commits is not supported by the %s view", view->name); return REQ_NONE; } for (lineno = 0; lineno < view->lines; lineno++) { struct view_column_data column_data = {}; struct line *line = &view->line[lineno]; if (view->ops->get_column_data(view, line, &column_data) && column_data.id && !strncasecmp(column_data.id, cmd, cmdlen)) { string_ncopy(view->env->search, cmd, cmdlen); select_view_line(view, lineno); report_clear(); return REQ_NONE; } } report("Unable to find commit '%s'", view->env->search); return REQ_NONE; } else if (cmdlen > 1 && (cmd[0] == '/' || cmd[0] == '?')) { char search[SIZEOF_STR]; if (!argv_to_string(argv, search, sizeof(search), " ")) { report("Failed to copy search string"); return REQ_NONE; } if (!strcmp(search + 1, view->env->search)) return cmd[0] == '/' ? REQ_FIND_NEXT : REQ_FIND_PREV; string_ncopy(view->env->search, search + 1, strlen(search + 1)); return cmd[0] == '/' ? REQ_SEARCH : REQ_SEARCH_BACK; } else if (cmdlen > 1 && cmd[0] == '!') { struct view *next = &pager_view; bool copied; /* Trim the leading '!'. */ argv[0] = cmd + 1; copied = argv_format(view->env, &next->argv, argv, FALSE, TRUE); argv[0] = cmd; if (!copied) { report("Argument formatting failed"); } else { /* When running random commands, initially show the * command in the title. However, it maybe later be * overwritten if a commit line is selected. */ argv_to_string(next->argv, next->ref, sizeof(next->ref), " "); next->dir = NULL; open_pager_view(view, OPEN_PREPARED | OPEN_WITH_STDERR); } } else if (!strcmp(cmd, "save-display")) { const char *path = argv[1] ? argv[1] : "tig-display.txt"; if (!save_display(path)) report("Failed to save screen to %s", path); else report("Saved screen to %s", path); } else if (!strcmp(cmd, "exec")) { struct run_request req = { view->keymap, {}, argv + 1 }; enum status_code code = parse_run_request_flags(&req.flags, argv + 1); if (code != SUCCESS) { report("Failed to execute command: %s", get_status_message(code)); } else { return exec_run_request(view, &req); } } else if (!strcmp(cmd, "toggle")) { enum view_flag flags = VIEW_NO_FLAGS; enum status_code code = prompt_toggle(view, argv, &flags); const char *action = get_status_message(code); if (code != SUCCESS) { report("%s", action); return REQ_NONE; } prompt_update_display(flags); if (*action) report("%s", action); } else if (!strcmp(cmd, "script")) { if (is_script_executing()) { report("Scripts cannot be run from scripts"); } else if (!open_script(argv[1])) { report("Failed to open %s", argv[1]); } } else { struct key key = {}; enum status_code code; enum view_flag flags = VIEW_NO_FLAGS; /* Try :<key> */ key.modifiers.multibytes = 1; string_ncopy(key.data.bytes, cmd, cmdlen); request = get_keybinding(view->keymap, &key, 1); if (request != REQ_NONE) return request; /* Try :<command> */ request = get_request(cmd); if (request != REQ_UNKNOWN) return request; code = set_option(argv[0], argv_size(argv + 1), &argv[1]); if (code != SUCCESS) { report("%s", get_status_message(code)); return REQ_NONE; } if (!strcmp(cmd, "set")) { struct prompt_toggle *toggle; toggle = find_prompt_toggle(option_toggles, ARRAY_SIZE(option_toggles), "", argv[1], strlen(argv[1])); if (toggle) flags = toggle->flags; } if (flags) { prompt_update_display(flags); } else { request = view_can_refresh(view) ? REQ_REFRESH : REQ_SCREEN_REDRAW; if (!strcmp(cmd, "color")) init_colors(); resize_display(); redraw_display(TRUE); } } return REQ_NONE; }
void check_error(const status_t status) { if (status == CUSOLVER_STATUS_SUCCESS) return; std::cerr << "cuSOLVER error: " << get_status_message(status) << "\n"; }