int GDALJP2Box::DumpReadable( FILE *fpOut, int nIndentLevel ) { if( fpOut == NULL ) fpOut = stdout; int i; for(i=0;i<nIndentLevel;i++) fprintf( fpOut, " " ); fprintf( fpOut, " Type=%s, Offset=" CPL_FRMT_GIB "/" CPL_FRMT_GIB", Data Size=" CPL_FRMT_GIB, szBoxType, nBoxOffset, nDataOffset, GetDataLength() ); if( IsSuperBox() ) { fprintf( fpOut, " (super)" ); } fprintf( fpOut, "\n" ); if( IsSuperBox() ) { GDALJP2Box oSubBox( GetFILE() ); for( oSubBox.ReadFirstChild( this ); strlen(oSubBox.GetType()) > 0; oSubBox.ReadNextChild( this ) ) { oSubBox.DumpReadable( fpOut, nIndentLevel + 1 ); } } if( EQUAL(GetType(),"uuid") ) { char *pszHex = CPLBinaryToHex( 16, GetUUID() ); for(i=0;i<nIndentLevel;i++) fprintf( fpOut, " " ); fprintf( fpOut, " UUID=%s", pszHex ); if( EQUAL(pszHex,"B14BF8BD083D4B43A5AE8CD7D5A6CE03") ) fprintf( fpOut, " (GeoTIFF)" ); if( EQUAL(pszHex,"96A9F1F1DC98402DA7AED68E34451809") ) fprintf( fpOut, " (MSI Worldfile)" ); if( EQUAL(pszHex,"BE7ACFCB97A942E89C71999491E3AFAC") ) fprintf( fpOut, " (XMP)" ); CPLFree( pszHex ); fprintf( fpOut, "\n" ); } return 0; }
int GDALJP2Box::DumpReadable( FILE *fpOut ) { if( fpOut == NULL ) fpOut = stdout; fprintf( fpOut, " Type=%s, Offset=%d/%d, Data Size=%d", szBoxType, (int) nBoxOffset, (int) nDataOffset, (int)(nBoxLength - (nDataOffset - nBoxOffset)) ); if( IsSuperBox() ) { fprintf( fpOut, " (super)" ); } fprintf( fpOut, "\n" ); if( IsSuperBox() ) { GDALJP2Box oSubBox( GetFILE() ); for( oSubBox.ReadFirstChild( this ); strlen(oSubBox.GetType()) > 0; oSubBox.ReadNextChild( this ) ) { oSubBox.DumpReadable( fpOut ); } printf( " (end of %s subboxes)\n", szBoxType ); } if( EQUAL(GetType(),"uuid") ) { char *pszHex = CPLBinaryToHex( 16, GetUUID() ); fprintf( fpOut, " UUID=%s", pszHex ); if( EQUAL(pszHex,"B14BF8BD083D4B43A5AE8CD7D5A6CE03") ) fprintf( fpOut, " (GeoTIFF)" ); if( EQUAL(pszHex,"96A9F1F1DC98402DA7AED68E34451809") ) fprintf( fpOut, " (MSI Worldfile)" ); CPLFree( pszHex ); fprintf( fpOut, "\n" ); } return 0; }
FILE16 *url_open(const char *url, const char *base, const char *type, char **merged_url) { char *scheme, *host, *path, *m_url, *r_url; int port, i; FILE16 *f; #ifdef HAVE_LIBZ int len, gzipped = 0; #endif /* Determine the merged URL */ if(!(m_url = url_merge(url, base, &scheme, &host, &port, &path))) return 0; #ifdef HAVE_LIBZ len = strlen(m_url); if(len > 3 && strcmp8(m_url+len-3, ".gz") == 0) gzipped = 1; #endif /* printf("<%s> <%s> <%d> <%s>\n", scheme, host ? host : "", port, path); printf("%s\n", m_url); */ /* Pass to the appropriate opening function */ for(i=0; i<NSCHEME; i++) if(strcmp(scheme, schemes[i].scheme) == 0) { f = schemes[i].open(m_url, host, port, path, type, &r_url); Free(scheme); if(host) Free(host); Free(path); if(!f) return f; #ifdef HAVE_LIBZ if(gzipped) { /* We have a gzip-compressed file which we hand to gzopen * for further processing. */ gzFile gfile; FILE *file = GetFILE(f); if(!f) { LT_ERROR1(LEFILE, "Can't attach gzip processor to URL \"%s\"\n", m_url); Free(m_url); return 0; } #ifdef macintosh gfile =gzdopen(dup(fileno(file)), *type == 'r' ? "rb" : "wb"); #else gfile = gzdopen(dup(fileno(file)), type); #endif Fclose(f); f = MakeFILE16FromGzip(gfile, type); } #endif if(r_url) { Free(m_url); m_url = r_url; } if(f && merged_url) *merged_url = m_url; else Free(m_url); return f; } /* Not implemented */ LT_ERROR1(LEFILE, "Error: scheme \"%s\" not implemented\n", scheme); Free(scheme); if(host) Free(host); Free(path); Free(m_url); return 0; }