int
add_station ( Arr * networks, char * net, char * sta, Arr * sinfo )
{
    Arr * stations;
    Arr * sold;
    char * latency;

    if ( networks == NULL )
        networks = newarr( strcmp );

    if ( sold = get_station( networks, net, sta ) )
    {
        sinfo_update( sold, sinfo );
        clrarr( sinfo, pffree );
    }
    else
    {
        if ( get_stations( networks, net ) == NULL ) 
            add_network( networks, net );

        if ( !(stations = get_stations( networks, net ) ) ) return 0;
        setarr( stations, sta, create_pf( sinfo, PFARR ) );
    }

    return 1;
}
示例#2
0
TC_Error_Code TCDS_Binary_Harmonic::LoadHarmonicData(IDX_entry *pIDX)
{
    // Find the indicated Master station
    if(!strlen(pIDX->IDX_reference_name)) {
        strncpy(pIDX->IDX_reference_name, get_station (pIDX->IDX_ref_dbIndex),
                MAXNAMELEN - 1 );
        pIDX->IDX_reference_name[MAXNAMELEN - 1] = '\0';

//        TIDE_RECORD *ptiderec = (TIDE_RECORD *)calloc(sizeof(TIDE_RECORD), 1);
//        read_tide_record (pIDX->IDX_ref_dbIndex, ptiderec);
//        free( ptiderec );

        IDX_entry *pIDX_Ref = &m_IDX_array.Item(pIDX->IDX_ref_dbIndex);
        Station_Data *pRefSta = pIDX_Ref->pref_sta_data;
        pIDX->pref_sta_data = pRefSta;
        pIDX->station_tz_offset = -pRefSta->meridian + (pRefSta->zone_offset * 3600);
    }
    return TC_NO_ERROR;
}