Beispiel #1
0
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();
}
Beispiel #3
0
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");
}
Beispiel #4
0
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");
}
Beispiel #5
0
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();
}
Beispiel #6
0
/* 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;
}
Beispiel #7
0
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();
}
Beispiel #8
0
//属性を指定する、今のところ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;
}