Пример #1
0
coordsys * load_coordsys( const char *code )
{
    crdsys_source_def *csd;
    char cscode[CRDSYS_CODE_LEN+1];
    int nch;
    double epoch = 0;
    int sts;
    coordsys *cs= NULL;

    /* Look for an @ character, defining an epoch */
    for( nch = 0; code[nch] != 0 && code[nch] != '@'; nch++ ) {}
    if( code[nch] && ! parse_epoch( code+nch+1, &epoch ) )
    {
        return NULL;
    }
    if( nch > CRDSYS_CODE_LEN ) return NULL;
    strncpy(cscode,code,nch);
    cscode[nch] = 0;

    for( sts = MISSING_DATA, csd = sources;
            sts == MISSING_DATA && csd;
            csd = csd->next ) if( csd->getcs )
        {

            sts = (*csd->getcs)( csd->data, CS_ID_UNAVAILABLE, cscode, &cs );
        }

    if( cs ) define_coordsys_epoch(cs,epoch);
    return cs;
}
Пример #2
0
uint deps_add(struct deps *deps, const char *name, int flags, const char *vers) {
	uint epoch = 0;
	char *v = NULL, *r = NULL, buf[1000];
	
	if (vers && *vers) {
		buf[sizeof (buf) - 1] = '\0';
		strncpy(buf, vers, sizeof (buf) - 1);
		v = parse_epoch(buf, &epoch);
		r = parse_ver(v);
	}
	return deps_add_evr(deps, name, flags, epoch, v, r);
}