# HG changeset patch # User J. Ali Harlow # Date 1466613164 -3600 # Node ID a166277bc796b6a1dd16d6244439bfaf584c7e55 # Parent 43ffed8669ceef44931bddb68ff8c6715db6f8aa Remove obsolete file URI support diff -r 43ffed8669ce -r a166277bc796 plover/uri-handler.c --- a/plover/uri-handler.c Wed Jun 22 17:04:28 2016 +0100 +++ b/plover/uri-handler.c Wed Jun 22 17:32:44 2016 +0100 @@ -26,13 +26,11 @@ #include "plover/plover.h" #include "uri-handler.h" -static GList *open_razor_files; - static gboolean has_valid_scheme(const char *uri) { /* - * RFC 2396 defines valid schemes as: - * scheme = alpha *( alpha | digit | "+" | "-" | "." ) + * RFC 3986 defines valid schemes as: + * scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) */ const char *s; if (!g_ascii_isalpha(*uri)) @@ -65,20 +63,13 @@ { GFile *file; GFileInfo *info; - gchar *path; int retval; GError *err=NULL; g_message("uri_mkdir(%s)",uri); file=file_for_uri(uri); - path=g_file_get_path(file); - if (path) + retval=!g_file_make_directory(file,NULL,&err); + if (retval) { - retval=razor_file_default_mkdir(path,mode,error); - g_free(path); - } - else if (!g_file_make_directory(file,NULL,&err)) - { - retval=-1; if (g_error_matches(err,G_IO_ERROR,G_IO_ERROR_EXISTS)) { info=g_file_query_info(file,G_FILE_ATTRIBUTE_STANDARD_TYPE, @@ -97,8 +88,6 @@ if (err) plover_propagate_g_error(error,err); } - else - retval=0; g_object_unref(file); return retval; } @@ -106,48 +95,13 @@ int uri_unlink(const char *uri,struct razor_error **error) { GFile *file; - gchar *path; int retval; GError *err=NULL; g_message("uri_unlink(%s)",uri); file=file_for_uri(uri); - path=g_file_get_path(file); - if (path) - { - retval=razor_file_default_unlink(path,error); - g_free(path); - } - else if (!g_file_delete(file,NULL,&err)) - { + retval=!g_file_delete(file,NULL,&err); + if (retval) plover_propagate_g_error(error,err); - retval=-1; - } - else - retval=0; - g_object_unref(file); - return retval; -} - -int uri_open(const char *uri,int flags,mode_t mode,struct razor_error **error) -{ - GFile *file; - gchar *path; - int retval; - GError *err=NULL; - g_message("uri_open(%s)",uri); - file=file_for_uri(uri); - path=g_file_get_path(file); - if (path) - { - retval=razor_file_default_open(path,flags,mode,error); - g_free(path); - } - else - { - razor_set_error(error,RAZOR_GENERAL_ERROR,RAZOR_GENERAL_ERROR_FAILED, - uri,"File is not local"); - retval=-1; - } g_object_unref(file); return retval; } @@ -156,25 +110,14 @@ struct razor_error **error) { GFile *src,*dst; - gchar *src_path,*dst_path; int retval; GError *err=NULL; g_message("uri_move(%s,%s)",src_uri,dst_uri); src=file_for_uri(src_uri); dst=file_for_uri(dst_uri); - src_path=g_file_get_path(src); - dst_path=g_file_get_path(dst); - if (src_path && dst_path) - retval=razor_file_default_move(src_path,dst_path,error); - else if (!g_file_move(src,dst,G_FILE_COPY_OVERWRITE,NULL,NULL,NULL,&err)) - { + retval=!g_file_move(src,dst,G_FILE_COPY_OVERWRITE,NULL,NULL,NULL,&err); + if (retval) plover_propagate_g_error(error,err); - retval=-1; - } - else - retval=0; - g_free(src_path); - g_free(dst_path); g_object_unref(src); g_object_unref(dst); return retval; @@ -184,212 +127,107 @@ struct razor_error **error) { GFile *file; - gchar *path; void *addr; char *contents; gsize len; GError *err=NULL; g_message("uri_get_contents(%s)",uri); file=file_for_uri(uri); - path=g_file_get_path(file); - if (path) - { - g_object_unref(file); - addr=razor_file_default_get_contents(path,length,private,error); - if (addr) - open_razor_files=g_list_prepend(open_razor_files,addr); - g_free(path); - } - else if (!g_file_load_contents(file,NULL,&contents,&len,NULL,&err)) + if (!g_file_load_contents(file,NULL,&contents,&len,NULL,&err)) { plover_propagate_g_error(error,err); - g_object_unref(file); addr=NULL; } else { - g_object_unref(file); addr=contents; if (length) *length=len; } + g_object_unref(file); return addr; } static int uri_free_contents(void *addr,size_t length) { - int retval; - GList *lnk; g_message("uri_free_contents(%p)",addr); - lnk=g_list_find(open_razor_files,addr); - if (lnk) - { - open_razor_files=g_list_delete_link(open_razor_files,lnk); - retval=razor_file_default_free_contents(addr,length); - } - else - { - g_free(addr); - retval=0; - } - return retval; + g_free(addr); + return 0; } int uri_is_directory(const char *uri,struct razor_error **error) { GFile *file; GFileInfo *info; - gchar *path; int retval; GError *err=NULL; g_message("uri_is_directory(%s)",uri); file=file_for_uri(uri); - path=g_file_get_path(file); - if (path) + info=g_file_query_info(file,G_FILE_ATTRIBUTE_STANDARD_TYPE, + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,NULL,&err); + if (info) { - retval=razor_file_default_is_directory(path,error); - g_free(path); + if (g_file_info_get_file_type(info)==G_FILE_TYPE_DIRECTORY) + retval=1; + else + retval=0; + g_object_unref(info); } else { - info=g_file_query_info(file,G_FILE_ATTRIBUTE_STANDARD_TYPE, - G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,NULL,&err); - if (info) - { - if (g_file_info_get_file_type(info)==G_FILE_TYPE_DIRECTORY) - retval=1; - else - retval=0; - g_object_unref(info); - } - else - { - retval=-1; - plover_propagate_g_error(error,err); - } + retval=-1; + plover_propagate_g_error(error,err); } g_object_unref(file); return retval; } -char *uri_mkdtemp_near(const char *uri,const char *template, - struct razor_error **error) -{ - GFile *file; - gchar *path,*tmpuri; - char *tmppath,*retval; - GError *err=NULL; - g_message("uri_mkdtemp_near(%s)",uri); - file=file_for_uri(uri); - path=g_file_get_path(file); - g_object_unref(file); - if (path) - { - tmppath=razor_file_default_mkdtemp_near(path,template,error); - g_free(path); - if (tmppath) - { - file=g_file_new_for_path(tmppath); - tmpuri=g_file_get_uri(file); - g_object_unref(file); - retval=strdup(tmpuri); - g_free(tmpuri); - } - else - retval=NULL; - } - else - { - razor_set_error(error,RAZOR_GENERAL_ERROR,RAZOR_GENERAL_ERROR_FAILED, - uri,"File is not local"); - retval=NULL; - } - return retval; -} - -struct uri_dir { - void *razor_file_default; - GFileEnumerator *enumerator; -}; - void *uri_opendir(const char *uri,struct razor_error **error) { GFile *file; - gchar *path; - struct uri_dir *dir; + GFileEnumerator *dir; GError *err=NULL; g_message("uri_opendir(%s)",uri); - dir=g_new0(struct uri_dir,1); file=file_for_uri(uri); - path=g_file_get_path(file); - if (path) - { - dir->razor_file_default=razor_file_default_opendir(path,error); - if (!dir->razor_file_default) - { - g_free(dir); - dir=NULL; - } - g_free(path); - } - else - { - dir->enumerator=g_file_enumerate_children(file, - G_FILE_ATTRIBUTE_STANDARD_NAME,G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, - NULL,&err); - if (!dir->enumerator) - { - g_free(dir); - dir=NULL; - plover_propagate_g_error(error,err); - } - } + dir=g_file_enumerate_children(file,G_FILE_ATTRIBUTE_STANDARD_NAME, + G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,NULL,&err); + if (!dir) + plover_propagate_g_error(error,err); g_object_unref(file); return dir; } char *uri_readdir(void *dp,struct razor_error **error) { - struct uri_dir *dir=dp; + GFileEnumerator *dir=dp; char *name; GError *err=NULL; GFileInfo *info; g_message("uri_readdir(%p)",dp); - if (dir->razor_file_default) - name=razor_file_default_readdir(dir->razor_file_default,error); + info=g_file_enumerator_next_file(dir,NULL,&err); + if (!info) + { + name=NULL; + plover_propagate_g_error(error,err); + } else { - info=g_file_enumerator_next_file(dir->enumerator,NULL,&err); - if (!info) - { - name=NULL; - plover_propagate_g_error(error,err); - } - else - { - name=strdup(g_file_info_get_name(info)); - g_object_unref(info); - } + name=strdup(g_file_info_get_name(info)); + g_object_unref(info); } return name; } int uri_closedir(void *dp,struct razor_error **error) { - struct uri_dir *dir=dp; + GFileEnumerator *dir=dp; int retval; GError *err=NULL; g_message("uri_closedir(%p)",dp); - if (dir->razor_file_default) - retval=razor_file_default_closedir(dir->razor_file_default,error); - else - { - retval=g_file_enumerator_close(dir->enumerator,NULL,&err)?0:-1; - if (retval) - plover_propagate_g_error(error,err); - g_object_unref(dir->enumerator); - } - g_free(dir); + retval=!g_file_enumerator_close(dir,NULL,&err); + if (retval) + plover_propagate_g_error(error,err); + g_object_unref(dir); return retval; } @@ -403,12 +241,10 @@ uri_vtable.structure_size=sizeof(uri_vtable); uri_vtable.mkdir=uri_mkdir; uri_vtable.unlink=uri_unlink; - uri_vtable.open=uri_open; uri_vtable.move=uri_move; uri_vtable.get_contents=uri_get_contents; uri_vtable.free_contents=uri_free_contents; uri_vtable.is_directory=uri_is_directory; - uri_vtable.mkdtemp_near=uri_mkdtemp_near; uri_vtable.opendir=uri_opendir; uri_vtable.readdir=uri_readdir; uri_vtable.closedir=uri_closedir;