/** * librdf_uri_is_file_uri: * @uri: #librdf_uri object * * Test if a URI points to a filename. * * Return value: Non zero if the URI points to a file **/ int librdf_uri_is_file_uri(librdf_uri* uri) { LIBRDF_ASSERT_OBJECT_POINTER_RETURN_VALUE(uri, librdf_uri, 1); return raptor_uri_uri_string_is_file_uri(librdf_uri_as_string(uri)); }
/** * raptor_www_fetch: * @www: WWW object * @uri: URI to read from * * Start a WWW content retrieval for the given URI, returning data via the write_bytes handler. * * Return value: non-0 on failure. **/ int raptor_www_fetch(raptor_www *www, raptor_uri *uri) { int status = 1; www->uri = raptor_new_uri_for_retrieval(uri); www->locator.uri = uri; www->locator.line= -1; www->locator.column= -1; if(www->uri_filter) if(www->uri_filter(www->uri_filter_user_data, uri)) return status; #ifdef RAPTOR_WWW_NONE status = raptor_www_file_fetch(www); #else if(raptor_uri_uri_string_is_file_uri(raptor_uri_as_string(www->uri))) status = raptor_www_file_fetch(www); else { #ifdef RAPTOR_WWW_LIBCURL status = raptor_www_curl_fetch(www); #endif #ifdef RAPTOR_WWW_LIBXML status = raptor_www_libxml_fetch(www); #endif #ifdef RAPTOR_WWW_LIBFETCH status = raptor_www_libfetch_fetch(www); #endif } #endif if(!status && www->status_code && www->status_code != 200){ raptor_www_error(www, "Resolving URI failed with HTTP status %d", www->status_code); status = 1; } www->failed = status; return www->failed; }
static raptor_uri* raptor_default_new_uri(void *context, const unsigned char *uri_string) { unsigned char *p; size_t len; /* If uri_string is "file:path-to-file", turn it into a correct file:URI */ if(raptor_uri_uri_string_is_file_uri(uri_string)) { unsigned char *fragment=NULL; char *filename; raptor_uri* uri=NULL; filename=raptor_uri_uri_string_to_filename_fragment(uri_string, &fragment); if(filename && !access(filename, R_OK)) { uri=(raptor_uri*)raptor_uri_filename_to_uri_string(filename); /* If there was a fragment, reattach it to the new URI */ if(fragment) { unsigned char *new_fragment; raptor_uri* new_uri; new_fragment=(unsigned char*)RAPTOR_MALLOC(cstring, strlen((const char*)fragment) + 1 + sizeof(char*)); if(!new_fragment) return NULL; *new_fragment='#'; strcpy((char*)new_fragment+1, (const char*)fragment); new_uri=raptor_new_uri_relative_to_base(uri, new_fragment); RAPTOR_FREE(cstring, new_fragment); raptor_free_uri(uri); uri=new_uri; } } if(filename) RAPTOR_FREE(cstring, filename); if(fragment) RAPTOR_FREE(cstring, fragment); if(uri) return uri; } len=strlen((const char*)uri_string); p=(unsigned char*)RAPTOR_MALLOC(raptor_uri, len + sizeof(char*)); if(!p) return NULL; strcpy((char*)p, (const char*)uri_string); return (raptor_uri*)p; }
/** * raptor_uri_is_file_uri: * @uri_string: The URI string to check * * @Deprecated: use raptor_uri_uri_string_is_file_uri * * Check if a URI string is a file: URI. * * Return value: Non zero if URI string is a file: URI **/ int raptor_uri_is_file_uri(const unsigned char* uri_string) { return raptor_uri_uri_string_is_file_uri(uri_string); }