libstocks_return_code download_stocks(char *stocks, stock **stock_datas, yahoo_source source) { char *stocks_server=NULL; char *url_beg=NULL; char *url_end=NULL; char *url; char *data; libstocks_return_code error; #ifdef DEBUG printf("*download_stocks\n"); #endif switch (source) { case YAHOO_US: stocks_server = (char *)yahoo_us_stocks_server; break; case YAHOO_EUROPE: stocks_server = (char *)yahoo_eu_stocks_server; break; } url_beg = (char *)yahoo_url_beg; url_end = (char *)yahoo_url_end; url = (char *)malloc(strlen(url_beg) +strlen(url_end) +strlen(stocks)+1); if (url==NULL) { fprintf(stderr,"Memory allocating error (%s line %d)\n" ,__FILE__, __LINE__); exit(1); } strcpy(url, url_beg); strcat(url, stocks); strcat(url, url_end); error=http_get(url, stocks_server, &data); free(url); if (error) return error; *stock_datas = parse_csv_file(data); free(data); if (!(*stock_datas)) return ERRPCSV; return 0; }
void DiveLogImportDialog::on_buttonBox_accepted() { if (ui->tabWidget->currentIndex() == 0) { for (int i = 0; i < fileNames.size(); ++i) { parse_csv_file(fileNames[i].toUtf8().data(), ui->CSVTime->value() - 1, ui->CSVDepth->value() - 1, VALUE_IF_CHECKED(CSVTemperature), VALUE_IF_CHECKED(CSVpo2), VALUE_IF_CHECKED(CSVcns), VALUE_IF_CHECKED(CSVstopdepth), ui->CSVSeparator->currentIndex(), specialCSV.contains(ui->knownImports->currentIndex()) ? CSVApps[ui->knownImports->currentIndex()].name.toUtf8().data() : "csv", ui->CSVUnits->currentIndex()); } } else { for (int i = 0; i < fileNames.size(); ++i) { parse_manual_file(fileNames[i].toUtf8().data(), ui->ManualSeparator->currentIndex(), ui->Units->currentIndex(), VALUE_IF_CHECKED(DiveNumber), VALUE_IF_CHECKED(Date), VALUE_IF_CHECKED(Time), VALUE_IF_CHECKED(Duration), VALUE_IF_CHECKED(Location), VALUE_IF_CHECKED(Gps), VALUE_IF_CHECKED(MaxDepth), VALUE_IF_CHECKED(MeanDepth), VALUE_IF_CHECKED(Buddy), VALUE_IF_CHECKED(Notes), VALUE_IF_CHECKED(Weight), VALUE_IF_CHECKED(Tags)); } } process_dives(true, false); MainWindow::instance()->refreshDisplay(); }
int TestParse::parseCSVprofile(int units, std::string file) { verbose = 1; char *params[55]; int pnr = 0; // Numbers are column numbers params[pnr++] = strdup("numberField"); params[pnr++] = intdup(0); params[pnr++] = strdup("dateField"); params[pnr++] = intdup(1); params[pnr++] = strdup("starttimeField"); params[pnr++] = intdup(2); params[pnr++] = strdup("timeField"); params[pnr++] = intdup(3); params[pnr++] = strdup("depthField"); params[pnr++] = intdup(4); params[pnr++] = strdup("tempField"); params[pnr++] = intdup(5); params[pnr++] = strdup("pressureField"); params[pnr++] = intdup(6); // Numbers are indexes of possible options params[pnr++] = strdup("datefmt"); params[pnr++] = intdup(2); params[pnr++] = strdup("units"); params[pnr++] = intdup(units); params[pnr++] = NULL; return parse_csv_file(file.c_str(), params, pnr - 1, "csv"); }
void TestParse::testParseHUDC() { char *params[37]; int pnr = 0; params[pnr++] = strdup("timeField"); params[pnr++] = intdup(0); params[pnr++] = strdup("depthField"); params[pnr++] = intdup(1); params[pnr++] = strdup("tempField"); params[pnr++] = intdup(5); params[pnr++] = strdup("po2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor1Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor3Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("cnsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("ndlField"); params[pnr++] = intdup(2); params[pnr++] = strdup("ttsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("stopdepthField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("pressureField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("setpointField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("separatorIndex"); params[pnr++] = intdup(2); params[pnr++] = strdup("units"); params[pnr++] = intdup(0); params[pnr++] = strdup("hw"); params[pnr++] = strdup("\"DC text\""); params[pnr++] = NULL; QCOMPARE(parse_csv_file(SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearHUDC.csv", params, pnr - 1, "csv"), 0); QCOMPARE(dive_table.nr, 1); /* * CSV import uses time and date stamps relative to current * time, thus we need to use a static (random) timestamp */ if (dive_table.nr > 0) { struct dive *dive = dive_table.dives[dive_table.nr - 1]; dive->when = 1255152761; dive->dc.when = 1255152761; } QCOMPARE(save_dives("./testhudcout.ssrf"), 0); FILE_COMPARE("./testhudcout.ssrf", SUBSURFACE_TEST_DATA "/dives/TestDiveSeabearHUDC.xml"); }
void TestParse::parseDL7() { char *params[51]; int pnr = 0; params[pnr++] = strdup("dateField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("datefmt"); params[pnr++] = intdup(0); params[pnr++] = strdup("starttimeField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("numberField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("timeField"); params[pnr++] = intdup(1); params[pnr++] = strdup("depthField"); params[pnr++] = intdup(2); params[pnr++] = strdup("tempField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("po2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor1Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor2Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("o2sensor3Field"); params[pnr++] = intdup(-1); params[pnr++] = strdup("cnsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("ndlField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("ttsField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("stopdepthField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("pressureField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("setpointField"); params[pnr++] = intdup(-1); params[pnr++] = strdup("separatorIndex"); params[pnr++] = intdup(3); params[pnr++] = strdup("units"); params[pnr++] = intdup(0); params[pnr++] = strdup("hw"); params[pnr++] = strdup("DL7"); params[pnr++] = 0; clear_dive_file_data(); QCOMPARE(parse_csv_file(SUBSURFACE_TEST_DATA "/dives/DL7.zxu", params, pnr - 1, "DL7"), 0); QCOMPARE(dive_table.nr, 3); QCOMPARE(save_dives("./testdl7out.ssrf"), 0); FILE_COMPARE("./testdl7out.ssrf", SUBSURFACE_TEST_DATA "/dives/DL7.xml"); clear_dive_file_data(); }
/* Retrieve the information associated with a given PMU */ pmu_info_t* pmct_get_pmu_info(unsigned int nr_coretype, const char* processor_model) { int i = 0; if (!pmu_info_vector_gbl) { pmu_info_vector_gbl=(pmu_info_t **)malloc(sizeof(pmu_info_t *)*MAX_CORE_TYPES); for (i = 0; i < MAX_CORE_TYPES; i++) pmu_info_vector_gbl[i]=NULL; /* Reserve memory for this as well */ virtual_counter_info_gbl=malloc(sizeof(virtual_counter_info_t)); if (processor_model) { if(build_default_pmu_info(pmu_info_vector_gbl,processor_model) != 0) goto free_up_on_error; } else { if(parse_pmc_info_file(pmu_info_vector_gbl,virtual_counter_info_gbl) != 0) goto free_up_on_error; } for (i = 0; i < nr_pmus_gbl; i++) { if(parse_csv_file(pmu_info_vector_gbl[i]) != 0) goto free_up_on_error; } } if (nr_coretype >= nr_pmus_gbl) return NULL; else return pmu_info_vector_gbl[nr_coretype]; free_up_on_error: if (pmu_info_vector_gbl) { for (i = 0; i < MAX_CORE_TYPES; i++) /* Warning: A more sophisticated free function shold be included for individual vector components */ if (pmu_info_vector_gbl[i]) free(pmu_info_vector_gbl[i]); free(pmu_info_vector_gbl); pmu_info_vector_gbl=NULL; } if (virtual_counter_info_gbl) { free(virtual_counter_info_gbl); virtual_counter_info_gbl=NULL; } return NULL; }
void CSVImportDialog::on_buttonBox_accepted() { char *error = NULL; parse_csv_file(ui->CSVFile->text().toUtf8().data(), ui->CSVTime->value(), ui->CSVDepth->value(), VALUE_IF_CHECKED(CSVTemperature), VALUE_IF_CHECKED(CSVpo2), VALUE_IF_CHECKED(CSVcns), VALUE_IF_CHECKED(CSVstopdepth), &error); if (error != NULL) { mainWindow()->showError(error); free(error); error = NULL; } process_dives(TRUE, FALSE); mainWindow()->refreshDisplay(); }
//属性を指定する、今のところatt_set1.txtから指定している //voidじゃない方がいい、エラー返したりとか //入力の属性リストはtest1.csv指定しているが、ファイル名を可変にしたらここも変える int att_set(attribute_set *att_set, int att_num, char *inputcsv, char *useratt) { int i, j; int d = att_num; att_set->value = NULL; att_set->num = 0; char *path; path = inputcsv; attribute_list *list = malloc(sizeof(attribute_list)); if (list == NULL) return -1; import_att_list(d, list, path); char delimit = ',';//パースの区切り文字 Parsed_CSV_t parsed; Parsed_CSV_t *p; p = &parsed; path = useratt; if (parse_csv_file(path, delimit, p) != 0){ printf("parse_csv_file error %d\n", parse_csv_file(path, delimit, p)); clear_att_list(list); return -1; } v_vector *ptr = NULL, *temp = NULL; //att_list内のカテゴリ分のatt_setを生成する for (i = 0; i < list->cnum; i++) { //mallocで全部のカテゴリのメモリ確保 if (i == 0) { att_set->value = (v_vector*)malloc(sizeof(v_vector)); if (att_set->value == NULL) { clear_att_list(list); return -1; } init_vector(att_set->value, 0); ptr = att_set->value; att_set->num++; } else { ptr->next = (v_vector*)malloc(sizeof(v_vector)); if (ptr->next == NULL) { clear_att_list(list); clear_att_set_value(att_set->value); return -1; } init_vector(ptr->next, i); ptr = ptr->next; att_set->num++; } } for (i = 0; i < parsed.line_cnt; i++) {//listは属性リスト? attribute_search(list, att_set, parsed.lines[i]->cols[0], parsed.lines[i]->cols[1]); } clear_att_list(list); return 0; }