コード例 #1
0
ファイル: gopal.c プロジェクト: idaohang/gpsbabel-flytec
static void
gopal_rd_init(const char *fname)
{char buff[32];
	char *ck;
	char *filename;
	CHECK_BOOL(optclean);
	if (optminspeed) 
	{
		minspeed=atof(optminspeed);
		if (global_opts.debug_level > 1) fprintf(stderr,"options from command line : gopal minspeed = %s\n",optminspeed);
	}
	else
	minspeed=0;
	if (optmaxspeed) 
	{
		maxspeed=atof(optmaxspeed);
		if (global_opts.debug_level > 1) fprintf(stderr,"options from command line : gopal maxspeed = %s\n",optmaxspeed);
	}
	else
	maxspeed=200;
	if (global_opts.debug_level > 1) fprintf(stderr,"setting minspeed to %5.1lf km/h and maxspeed to %5.1lf km/h\n",minspeed,maxspeed);

	fin = gbfopen(fname, "r", MYNAME);

	memset(buff,0,sizeof(buff));
	if (optdate)
	{  
		memset(&opt_tm, 0, sizeof(opt_tm));
		
		ck = (char *)strptime(optdate, "%Y%m%d", &opt_tm);
		if ((ck == NULL) || (*ck != '\0') || (strlen(optdate) != 8))
		fatal(MYNAME ": Invalid date \"%s\"!\n", optdate);
		else if (opt_tm.tm_year < 70)
		fatal(MYNAME ": Date \"%s\" is out of range (have to be 19700101 or later)!\n", optdate);
		tx = mkgmtime(&opt_tm);
		
	}
	else
	{
		/* remove path */
		filename = get_filename(fname);
		
		if ((strncmp(filename,"track",5)==0)&&(strlen(filename)>13)) // we need at least 13 letters: trackYYYYMMDD...
		{
			strncpy(&buff[0],&filename[5],8);
		}
		else
		if ((strncmp(filename,"A_",2)==0)&&(strlen(filename)>10))// here we expect at least 10 letters: A_YYYYMMDD...
		{
			strncpy(&buff[0],&filename[2],8);
		}
		// in buff we should now have something wich looks like a valid date starting with YYYYMMDD
		ck = (char *)strptime(buff, "%Y%m%d", &filenamedate);
		if (((ck == NULL) || (*ck != '\0') )&&!(optdate))
		fatal(MYNAME ": Invalid date in filename \"%s\", try to set manually using \"optdate\" switch!\n", buff);
		else if (filenamedate.tm_year < 70)
		fatal(MYNAME ": Date \"%s\" is out of range (have to be 19700101 or later)!\n", buff);
		tx= mkgmtime(&filenamedate);
	}
}
コード例 #2
0
ファイル: osm.c プロジェクト: alexbirkett/GPSBabel
static void 
osm_wr_init(const char *fname)
{
	fout = gbfopen(fname, "w", MYNAME);

	osm_init_icons();
	waypoints = avltree_init(0, MYNAME);
	node_id = 0;
}
コード例 #3
0
ファイル: text.c プロジェクト: alexbirkett/GPSBabel
static void
wr_init(const char *fname)
{
	waypoint_count = 0;
	output_name = xstrdup(fname);
	if (!split_output) {
		file_out = gbfopen(fname, "w", MYNAME);
	} 
	mkshort_handle = mkshort_new_handle();
}
コード例 #4
0
ファイル: garmin_txt.c プロジェクト: alexbirkett/GPSBabel
static void
garmin_txt_wr_init(const char *fname)
{
    char *grid_str;

    memset(&gtxt_flags, 0, sizeof(gtxt_flags));

    fout = gbfopen(fname, "wb", MYNAME);

    gtxt_flags.metric = (toupper(*get_option_val(opt_dist, "m")) == 'M');
    gtxt_flags.celsius = (toupper(*get_option_val(opt_temp, "c")) == 'C');
    init_date_and_time_format();
    if (opt_precision) {
        precision = atoi(opt_precision);
        is_fatal(precision < 0, MYNAME ": Invalid precision (%s)!", opt_precision);
    }

    datum_str = get_option_val(opt_datum, NULL);
    grid_str = get_option_val(opt_grid, NULL);

    grid_index = grid_lat_lon_dmm;
    if (grid_str != NULL) {
        int i;

        if (sscanf(grid_str, "%d", &i)) {
            grid_index = (grid_type) i;
            if ((grid_index < GRID_INDEX_MIN) || (grid_index > GRID_INDEX_MAX))
                fatal(MYNAME ": Grid index out of range (%d..%d)!",
                      (int)GRID_INDEX_MIN, (int)GRID_INDEX_MAX);
        }
        else grid_index = gt_lookup_grid_type(grid_str, MYNAME);
    }

    switch(grid_index) {
    case grid_bng: /* force datum to "Ord Srvy Grt Britn" */
        datum_index = DATUM_OSGB36;
        break;
    case grid_swiss: /* force datum to "Ord Srvy Grt Britn" */
        datum_index = DATUM_WGS84;
        break;
    default:
        datum_index = gt_lookup_datum_index(datum_str, MYNAME);
    }

    if (opt_utc != NULL) {
        if (case_ignore_strcmp(opt_utc, "utc") == 0)
            utc_offs = 0;
        else
            utc_offs = atoi(opt_utc);
        utc_offs *= (60 * 60);
        gtxt_flags.utc = 1;
    }
}
コード例 #5
0
ファイル: garmin_txt.c プロジェクト: alexbirkett/GPSBabel
static void
garmin_txt_rd_init(const char *fname)
{
    memset(&gtxt_flags, 0, sizeof(gtxt_flags));

    fin = gbfopen(fname, "rb", MYNAME);
    memset(&header_ct, 0, sizeof(header_ct));

    datum_index = -1;
    grid_index = -1;

    init_date_and_time_format();
}
コード例 #6
0
static void
nav_rd_init(const char *fname)
{
	fin = gbfopen(fname, "r", MYNAME);

	psr = XML_ParserCreate(NULL);
	if (!psr) {
		fatal(MYNAME ":Cannot create XML parser\n");
	}

	XML_SetUnknownEncodingHandler(psr, cet_lib_expat_UnknownEncodingHandler, NULL);
	XML_SetElementHandler(psr, nav_start, nav_end);
}
コード例 #7
0
ファイル: xol.c プロジェクト: alexbirkett/GPSBabel
static void
xol_wr_init(const char *fname)
{
	fout = gbfopen(fname, "w", MYNAME);

	space = 1;
	waypt_init_bounds(&all_bounds);
	short_h = mkshort_new_handle();

	setshort_length(short_h, 1024); 	/* ??? */
	setshort_badchars(short_h, "\r\n\t");
	setshort_mustupper(short_h, 0);
	setshort_mustuniq(short_h, 1);
	setshort_whitespace_ok(short_h, 1);
	setshort_repeating_whitespace_ok(short_h, 1);
	setshort_defname(short_h, "Waypoint");
}
コード例 #8
0
ファイル: gtrnctr.c プロジェクト: idaohang/gpsbabel-flytec
static void
gtc_wr_init(const char *fname)
{
        int i;

        ofd = gbfopen(fname, "w", MYNAME);

	if(opt_sport) {
		for(i = 0; i < MAX_SPORTS; i++) {
			if(0 == case_ignore_strncmp(opt_sport, gtc_sportlist[i], 2)) {
				gtc_sport = i;
				break;
			}
		}
	}
	gtc_course_flag = atoi(opt_course);
}
コード例 #9
0
ファイル: mmo.c プロジェクト: idaohang/gpsbabel-flytec
static void
mmo_read(void)
{
#ifdef MMO_DBG
	const char *sobj = "main";
#endif
	gbfile *fx;
	int i;

	/* copy file to memory stream (needed for seek-ops and piped commands) */

	DBG(("main", "loading file \"%s\".\n", fin->name));
	
	fx = gbfopen(NULL, "wb", MYNAME);
	gbfcopyfrom(fx, fin, 0x7FFFFFFF);
	gbfrewind(fx);
	gbfclose(fin);
	fin = fx;
		
	mmo_obj_ct = gbfgetuint16(fin);
	DBG((sobj, "number of objects = %d\n", mmo_obj_ct));
	
	i = gbfgetuint16(fin);
	if (i != 0xFFFF) fatal(MYNAME ": Marker not equel to 0xFFFF!\n");

	mmo_version = gbfgetuint16(fin);
	DBG((sobj, "version = 0x%02X\n", mmo_version));

	mmo_filemark = 0xFFFF0000UL | be_read16(&mmo_version);
	DBG((sobj, "filemark = 0x%08X\n", mmo_filemark));

	gbfseek(fin, -4, SEEK_CUR);

	while (! gbfeof(fin)) {		/* main read loop */

		(void) mmo_read_object(NULL);

	}

#ifdef MMO_DBG
	printf("\n" MYNAME ":---------------------------------------\n");
	printf(MYNAME ": EOF reached, nice!!!\n");
	printf(MYNAME ": =======================================\n\n");
#endif	
}
コード例 #10
0
ファイル: kml.c プロジェクト: idaohang/gpsbabel-flytec
static void
kml_wr_init(const char *fname)
{
	char u = 's';

	if (opt_units) {
		u = tolower(opt_units[0]);
	} 

	switch(u) {
		case 's': fmt_setunits(units_statute); break;
		case 'm': fmt_setunits(units_metric); break;
		default: fatal("Units argument '%s' should be 's' for statute units or 'm' for metric.", opt_units); break;
	}
	/*
	 * Reduce race conditions with network read link.
	 */	
	ofd = gbfopen(fname, "w", MYNAME);
}
コード例 #11
0
ファイル: unicsv.c プロジェクト: alexbirkett/GPSBabel
static void
unicsv_rd_init(const char *fname)
{
	char *c;
	unicsv_altscale = 1.0;
	unicsv_depthscale = 1.0;
	unicsv_proximityscale = 1.0;

	unicsv_fields_tab = NULL;
	unicsv_fields_tab_ct = 0;
	unicsv_data_type = global_opts.objective;
	unicsv_detect = (! (global_opts.masked_objective & (WPTDATAMASK | TRKDATAMASK | RTEDATAMASK | POSNDATAMASK)));

	unicsv_track = unicsv_route = NULL;
	unicsv_datum_idx = gt_lookup_datum_index(opt_datum, MYNAME);

	fin = gbfopen(fname, "rb", MYNAME);

	if ((c = gbfgetstr(fin)))
		unicsv_fondle_header(c);
	else
		unicsv_fieldsep = NULL;
	if (fin->unicode) cet_convert_init(CET_CHARSET_UTF8, 1);
}
コード例 #12
0
ファイル: sbp.c プロジェクト: alexbirkett/GPSBabel
static void
sbp_rd_init(const char *fname)
{
    file_handle = gbfopen(fname, "r", MYNAME);
}
コード例 #13
0
ファイル: compegps.c プロジェクト: dkm/gpsbabel-python-filter
static void
compegps_wr_init(const char *fname)
{
	fout = gbfopen(fname, "w", MYNAME);
	sh = mkshort_new_handle();
}
コード例 #14
0
ファイル: compegps.c プロジェクト: dkm/gpsbabel-python-filter
static void
compegps_rd_init(const char *fname)
{
	fin = gbfopen(fname, "rb", MYNAME);
	input_datum = DATUM_WGS84;
}
コード例 #15
0
ファイル: text.c プロジェクト: alexbirkett/GPSBabel
static void
text_disp(const waypoint *wpt)
{
	int latint, lonint;
	char tbuf[1024];
	time_t tm = wpt->creation_time;
	gbint32 utmz;
	double utme, utmn;
	char utmzc;
	char *tmpout1, *tmpout2;
	char *altout;
	fs_xml *fs_gpx;

	waypoint_count++;
	
	if (split_output) {
		char *thisfname;
		xasprintf(&thisfname, "%s%d", output_name, waypoint_count);
		file_out = gbfopen(thisfname, "w", MYNAME);
	}
	
	lonint = abs((int) wpt->longitude);
	latint = abs((int) wpt->latitude);

	GPS_Math_WGS84_To_UTM_EN(wpt->latitude, wpt->longitude, 
		&utme, &utmn, &utmz, &utmzc);

	if (tm == 0) 
		tm = time(NULL);
	strftime(tbuf, sizeof(tbuf), "%d-%b-%Y", localtime(&tm));

	tmpout1 = pretty_deg_format(wpt->latitude, wpt->longitude, degformat[2], " ", 0);
	if (wpt->altitude != unknown_alt) {
		xasprintf(&altout, " alt:%d", (int) ( (altunits[0]=='f')?METERS_TO_FEET(wpt->altitude):wpt->altitude) );
	}
	else {
		altout = "";
	}
	xasprintf (&tmpout2, "%s (%d%c %6.0f %7.0f)%s", tmpout1, utmz, utmzc, utme, utmn, altout );
	gbfprintf(file_out, "%-16s  %59s\n",
		(global_opts.synthesize_shortnames) ? mkshort_from_wpt(mkshort_handle, wpt) : wpt->shortname,
		tmpout2);
	xfree(tmpout2);
	xfree(tmpout1);	
	if (altout[0]) 
		xfree(altout);
	

	if (strcmp(wpt->description, wpt->shortname)) {
		gbfprintf(file_out, "%s", wpt->description);
		if (wpt->gc_data->placer) 
			gbfprintf(file_out, " by %s", wpt->gc_data->placer);
		}
		if (wpt->gc_data->terr) {
			gbfprintf(file_out, " - %s / %s - (%d%s / %d%s)\n", 
				gs_get_cachetype(wpt->gc_data->type), gs_get_container(wpt->gc_data->container), 
				(int)(wpt->gc_data->diff / 10), (wpt->gc_data->diff%10)?".5":"", 
				(int)(wpt->gc_data->terr / 10), (wpt->gc_data->terr%10)?".5":""  ); 
	        if (wpt->gc_data->desc_short.utfstring) {
	                char *stripped_html = strip_html(&wpt->gc_data->desc_short);
			gbfprintf (file_out, "\n%s\n", stripped_html);
                	xfree(stripped_html);
       		}
	        if (wpt->gc_data->desc_long.utfstring) {
	                char *stripped_html = strip_html(&wpt->gc_data->desc_long);
			gbfprintf (file_out, "\n%s\n", stripped_html);
                	xfree(stripped_html);
       		}
		if (wpt->gc_data->hint) {
			char *hint = NULL;
			if ( txt_encrypt ) 
				hint = rot13( wpt->gc_data->hint );
			else
				hint = xstrdup( wpt->gc_data->hint );
			gbfprintf (file_out, "\nHint: %s\n", hint);
			xfree( hint );
		}
	}
	else if (wpt->notes && (!wpt->description || strcmp(wpt->notes,wpt->description))) {
		gbfprintf (file_out, "\n%s\n", wpt->notes);
	}

	fs_gpx = NULL;
	if ( includelogs ) {
		fs_gpx = (fs_xml *)fs_chain_find( wpt->fs, FS_GPX);
	}
	
	if ( fs_gpx && fs_gpx->tag ) {
		xml_tag *root = fs_gpx->tag;
		xml_tag *curlog = NULL;
		xml_tag *logpart = NULL;
		curlog = xml_findfirst( root, "groundspeak:log" );
		while ( curlog ) {
			time_t logtime = 0;
			struct tm *logtm = NULL;
			gbfprintf( file_out, "\n" );
			
			logpart = xml_findfirst( curlog, "groundspeak:type" );
			if ( logpart ) {
				gbfprintf( file_out, "%s by ", logpart->cdata );
			}
			
			logpart = xml_findfirst( curlog, "groundspeak:finder" );
			if ( logpart ) {
				gbfprintf( file_out, "%s on ", logpart->cdata );
			}
			
			logpart = xml_findfirst( curlog, "groundspeak:date" );
			if ( logpart ) {
				logtime = xml_parse_time( logpart->cdata, NULL);
				logtm = localtime( &logtime );
				if ( logtm ) {
					gbfprintf( file_out, 
						"%4.4d-%2.2d-%2.2d\n",
						logtm->tm_year+1900,
						logtm->tm_mon+1,
						logtm->tm_mday );
				}
			}
			
			logpart = xml_findfirst( curlog, "groundspeak:log_wpt" );
			if ( logpart ) {
				char *coordstr = NULL;
				float lat = 0;
				float lon = 0;
				coordstr = xml_attribute( logpart, "lat" );
				if ( coordstr ) {
					lat = atof( coordstr );
				}
			        coordstr = xml_attribute( logpart, "lon" );
				if ( coordstr ) {
					lon = atof( coordstr );
				}
				coordstr = pretty_deg_format(lat, lon, degformat[2], " ", 0);
				gbfprintf( file_out, "%s\n", coordstr);
				xfree(coordstr);
			}
			
			logpart = xml_findfirst( curlog, "groundspeak:text" );
			if ( logpart ) {
				char *encstr = NULL;
				char *s = NULL;
				int encoded = 0;
				encstr = xml_attribute( logpart, "encoded" );
				encoded = (encstr[0] != 'F');
				
				if ( txt_encrypt && encoded ) {
					s = rot13( logpart->cdata );
				}
				else {
					s = xstrdup( logpart->cdata );
				}
					
				gbfprintf( file_out, "%s", s ); 
				xfree( s );
			}

			gbfprintf( file_out, "\n" );
			curlog = xml_findnext( root, curlog, "groundspeak:log" );
		}
	}
	if (! suppresssep) 
		gbfprintf(file_out, "\n-----------------------------------------------------------------------------\n");
	else
		gbfprintf(file_out, "\n");

	if (split_output) {
		gbfclose(file_out);
		file_out = NULL;
	}
}
コード例 #16
0
ファイル: gopal.c プロジェクト: idaohang/gpsbabel-flytec
static void
gopal_wr_init(const char *fname)
{
	fout = gbfopen(fname, "w", MYNAME);
}
コード例 #17
0
ファイル: tmpro.c プロジェクト: alexbirkett/GPSBabel
static void 
wr_init(const char *fname)
{
    file_out = gbfopen(fname, "w", MYNAME);
}
コード例 #18
0
ファイル: nmn4.c プロジェクト: alexbirkett/GPSBabel
static void
nmn4_rd_init(const char *fname)
{
	fin = gbfopen(fname, "rb", MYNAME);
}
コード例 #19
0
ファイル: nmn4.c プロジェクト: alexbirkett/GPSBabel
static void
nmn4_wr_init(const char *fname)
{
	fout = gbfopen(fname, "wb", MYNAME);
}
コード例 #20
0
ファイル: vpl.c プロジェクト: alexbirkett/GPSBabel
static void
vpl_rd_init(const char *fname)
{
	vpl_file_in = gbfopen(fname, "r", MYNAME);
}
コード例 #21
0
static void
nav_wr_init(const char *fname)
{
	fatal(MYNAME ": Does not support writing Navicache files.\n");
	fout = gbfopen(fname, "w", MYNAME);
}
コード例 #22
0
ファイル: garmin_xt.c プロジェクト: alexbirkett/GPSBabel
/*******************************************************************************
 * %%%        Reader callbacks                                              %%% *
 *******************************************************************************/
static void
format_garmin_xt_rd_init(const char *fname)
{
	fin = gbfopen(fname, "rb", MYNAME);
}