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; }
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); }