static int parse_line( char* in, M3u_Playlist::entry_t& entry ) { int result = 0; // file entry.file = in; entry.type = ""; in = parse_filename( in, entry ); // track entry.track = -1; entry.decimal_track = 0; in = parse_track( in, entry, &result ); // name entry.name = in; in = parse_name( in ); // time entry.length = -1; in = parse_time( in, &entry.length, &result ); // loop entry.intro = -1; entry.loop = -1; if ( *in == '-' ) { entry.loop = entry.length; in++; } else { in = parse_time_( in, &entry.loop ); if ( entry.loop >= 0 ) { entry.intro = entry.length - entry.loop; if ( *in == '-' ) // trailing '-' means that intro length was specified { in++; entry.intro = entry.loop; entry.loop = entry.length - entry.intro; } } } in = next_field( in, &result ); // fade entry.fade = -1; in = parse_time( in, &entry.fade, &result ); // repeat entry.repeat = -1; in = parse_int( in, &entry.repeat, &result ); return result; }
static void parse_rmc(struct gps_tpv *tpv, const char **token) { if (is_status_valid(token[1][0])) { parse_time(tpv->time, token[0]); tpv->latitude = parse_angular_distance(token[2], token[3][0]); tpv->longitude = parse_angular_distance(token[4], token[5][0]); tpv->track = parse_track(token[7], 'T'); tpv->speed = parse_speed(token[6], 'N'); parse_date(tpv->time, token[8]); } }
static void parse_vtg(struct gps_tpv *tpv, const char **token) { tpv->track = parse_track(token[0], token[1][0]); tpv->speed = parse_speed(token[6], token[7][0]); }