Changeset 4628


Ignore:
Timestamp:
10/21/11 11:44:07 (10 years ago)
Author:
paulf
Message:

added location code handling to TYPE_MAGNITUDE message routines

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/libsrc/util/rw_mag.c

    r3353 r4628  
    204204    if( len >= TRACE_STA_LEN ) return( -1 ); 
    205205    strncpy( pMci[nchan].sta, begtok, len ); 
    206         pMci[nchan].sta[len] = '\0'; 
     206    pMci[nchan].sta[len] = '\0'; 
    207207    begtok += len + 1; 
    208208 
     
    210210    if( len >= TRACE_CHAN_LEN ) return( -1 ); 
    211211    strncpy( pMci[nchan].comp, begtok, len ); 
    212         pMci[nchan].comp[len] = '\0'; 
     212    pMci[nchan].comp[len] = '\0'; 
    213213    begtok += len + 1; 
    214214 
    215     len = tokenlength( begtok, ' ' ); 
    216     if( len >= TRACE_NET_LEN ) return( -1 ); 
    217     strncpy( pMci[nchan].net, begtok, len ); 
    218         pMci[nchan].net[len] = '\0'; 
    219     begtok += len + 1; 
     215    len = tokenlength( begtok, '.' ); 
     216    if (len == 2) { 
     217        /* we have a location code! */ 
     218        if( len >= TRACE_NET_LEN ) return( -1 ); 
     219        strncpy( pMci[nchan].net, begtok, len ); 
     220        pMci[nchan].net[len] = '\0'; 
     221        begtok += len + 1; 
     222        pMci[nchan].loc[0] = '\0'; 
     223        len = tokenlength( begtok, ' ' ); 
     224        if (len == 2) { 
     225            strncpy( pMci[nchan].loc, begtok, len ); 
     226            pMci[nchan].loc[len] = '\0'; 
     227            begtok += len + 1; 
     228        } 
     229    } else { 
     230        /* we are probably looking at a decimal point further down in the line  
     231           indicating that this is just a SCN (old style message) */ 
     232        len = tokenlength( begtok, ' ' ); 
     233        if( len >= TRACE_NET_LEN ) return( -1 ); 
     234        strncpy( pMci[nchan].net, begtok, len ); 
     235        pMci[nchan].net[len] = '\0'; 
     236        begtok += len + 1; 
     237    } 
    220238 
    221239    while( begtok[0] == ' ' && begtok[0] != '\0' ) begtok++;    /* go to next non-blank char */ 
     
    251269 *******************************************************************/ 
    252270int wr_mag( MAG_INFO *pMag, char *buf, int buflen ) 
     271{ 
     272        return(wr_mag_internal(pMag, buf, buflen, 0)); 
     273} 
     274int wr_mag_scnl( MAG_INFO *pMag, char *buf, int buflen ) 
     275{ 
     276        return(wr_mag_internal(pMag, buf, buflen, 1)); 
     277} 
     278int wr_mag_internal( MAG_INFO *pMag, char *buf, int buflen, int scnl_flag) 
    253279{ 
    254280  char     tmp[256]; /* working buffer */ 
     
    296322  { 
    297323      return( wr_chan_mag( (MAG_CHAN_INFO *)pMag->pMagAux, pMag->nchannels,  
    298                            buf, buflen) ); 
     324                           buf, buflen, scnl_flag) ); 
    299325  } 
    300326    
     
    309335 * Returns 0 on success, -1 on failure (potential buffer overflow) * 
    310336 *******************************************************************/ 
    311 int wr_chan_mag( MAG_CHAN_INFO *pMci, int nchannels, char *buf, int buflen ) 
     337int wr_chan_mag( MAG_CHAN_INFO *pMci, int nchannels, char *buf, int buflen , int scnl_flag) 
    312338{ 
    313339  int i; 
     
    316342  for (i = 0; i < nchannels; i++) 
    317343  { 
    318     sprintf(line,  
     344    if (scnl_flag) { 
     345        sprintf(line,  
     346            "%s.%s.%s.%s %.2f %.2f %.2f %9.2E %9.2f %9.2f %9.2E %9.2f %9.2f\n", 
     347            /*s  c  n l mag  dist corr Amp1 Time1 Period1 Amp2 Time2 Period2 */ 
     348            pMci[i].sta, pMci[i].comp, pMci[i].net, pMci[i].loc, 
     349                        pMci[i].mag, pMci[i].dist, pMci[i].corr,  
     350            pMci[i].Amp1, 
     351            ( (pMci[i].Time1 < 0.0) ? -1.0 : pMci[i].Time1), 
     352            ( (pMci[i].Period1 < 0.0) ? -1.0 : pMci[i].Period1), 
     353            pMci[i].Amp2, 
     354            ( (pMci[i].Time2 < 0.0) ? -1.0 : pMci[i].Time2), 
     355            ( (pMci[i].Period2 < 0.0) ? -1.0 : pMci[i].Period2)); 
     356    } else { 
     357        sprintf(line,  
    319358            "%s.%s.%s %.2f %.2f %.2f %9.2E %9.2f %9.2f %9.2E %9.2f %9.2f\n", 
    320359            /*s  c  n mag  dist corr Amp1 Time1 Period1 Amp2 Time2 Period2 */ 
     
    327366            ( (pMci[i].Time2 < 0.0) ? -1.0 : pMci[i].Time2), 
    328367            ( (pMci[i].Period2 < 0.0) ? -1.0 : pMci[i].Period2)); 
     368    } 
    329369     
    330       if ( strappend(buf, buflen, line)) 
     370    if ( strappend(buf, buflen, line)) 
    331371        return( -1 ); 
    332372  } 
Note: See TracChangeset for help on using the changeset viewer.