void ConductHeader::on_line(std::string& line){ long idx; char fromname[MAX_NAME_LENGTH], toname[MAX_NAME_LENGTH]; long fromnode, tonode; double cond; /* 1, ADCE.1, NPANEL.13, 14.025 $ Contact */ if(sscanf(line.c_str(), format, &idx, &fromname, &fromnode, &toname, &tonode, &cond) != 6){ throw CruncherException("node parse failed for "+line); } system.on_conduct(idx, trim_name(fromname), fromnode, trim_name(toname), tonode, cond); }
static int parse_line_new(gds_keyval_parse_state_t first_val) { gds_keyval_parse_state_t val; char *tmp; int rc; val = first_val; while (GDS_UTIL_KEYVAL_PARSE_NEWLINE != val && GDS_UTIL_KEYVAL_PARSE_DONE != val) { rc = save_param_name (); if (GDS_SUCCESS != rc) { return rc; } if (GDS_UTIL_KEYVAL_PARSE_MCAVAR == val) { trim_name (key_buffer, "-mca", NULL); trim_name (key_buffer, "--mca", NULL); val = gds_util_keyval_yylex(); if (GDS_UTIL_KEYVAL_PARSE_VALUE == val) { if (NULL != gds_util_keyval_yytext) { tmp = strdup(gds_util_keyval_yytext); if ('\'' == tmp[0] || '\"' == tmp[0]) { trim_name (tmp, "\'", "\'"); trim_name (tmp, "\"", "\""); } keyval_callback(key_buffer, tmp); free(tmp); } } else { parse_error(4); return GDS_ERROR; } } else if (GDS_UTIL_KEYVAL_PARSE_ENVEQL == val) { trim_name (key_buffer, "-x", "="); trim_name (key_buffer, "--x", NULL); val = gds_util_keyval_yylex(); if (GDS_UTIL_KEYVAL_PARSE_VALUE == val) { add_to_env_str(key_buffer, gds_util_keyval_yytext); } else { parse_error(5); return GDS_ERROR; } } else if (GDS_UTIL_KEYVAL_PARSE_ENVVAR == val) { trim_name (key_buffer, "-x", "="); trim_name (key_buffer, "--x", NULL); add_to_env_str(key_buffer, NULL); } else { /* we got something unexpected. Bonk! */ parse_error(6); return GDS_ERROR; } val = gds_util_keyval_yylex(); } return GDS_SUCCESS; }
/* * ndmp_restore_extract_params * * Go through the restore parameters and check them and extract them * by setting NLP flags and other values. * * Parameters: * * Returns: * 0: on success * -1: otherwise */ int ndmp_restore_extract_params(ndmpd_session_t *session, ndmpd_module_params_t *params) { char *bkpath, *rspath; ndmp_lbr_params_t *nlp; if ((nlp = ndmp_get_nlp(session)) == NULL) { NDMP_LOG(LOG_DEBUG, "nlp == NULL"); return (-1); } /* Extract directory from where the backup was made. */ if ((bkpath = get_backup_path_v2(params)) == NULL) return (NDMP_ILLEGAL_ARGS_ERR); nlp->nlp_restore_bk_path = bkpath; /* The number of the selections. */ if ((nlp->nlp_nfiles = get_nfiles(session, params)) == 0) return (NDMP_ILLEGAL_ARGS_ERR); NDMP_LOG(LOG_DEBUG, "nfiles: %d", nlp->nlp_nfiles); if ((rspath = get_restore_dest(params)) == NULL) return (NDMP_ILLEGAL_ARGS_ERR); if (fs_is_rdonly(rspath)) { MOD_LOG(params, "Error: Can't restore to a read-only volume: \"%s\"\n", rspath); return (NDMP_ILLEGAL_ARGS_ERR); } if (fs_is_chkpntvol(rspath)) { MOD_LOG(params, "Error: Can't restore to a checkpoint: \"%s\"\n", rspath); return (NDMP_ILLEGAL_ARGS_ERR); } if (same_path(bkpath, rspath)) rspath = ""; if ((nlp->nlp_restore_path = strdup(rspath)) == NULL) return (NDMP_NO_MEM_ERR); bkpath = trim_name(bkpath); if (correct_ents(params, nlp->nlp_nfiles, bkpath) < 0) { free(nlp->nlp_restore_path); return (NDMP_ILLEGAL_ARGS_ERR); } if (check_restore_paths(params, nlp->nlp_nfiles, rspath) < 0) { free(nlp->nlp_restore_path); return (NDMP_ILLEGAL_ARGS_ERR); } MOD_LOG(params, "Restoring %d files.\n", nlp->nlp_nfiles); MOD_LOG(params, "Restoring to: \"%s\".\n", nlp->nlp_restore_path); MOD_LOG(params, "Record size: %d\n", session->ns_mover.md_record_size); return (NDMP_NO_ERR); }