file-roller r2549 - in trunk: . src



Author: paobac
Date: Mon Jan 19 12:53:04 2009
New Revision: 2549
URL: http://svn.gnome.org/viewvc/file-roller?rev=2549&view=rev

Log:
2009-01-19  Paolo Bacchilega  <paobac svn gnome org>

	* src/fr-window.c: 
	* src/file-utils.c: 
	* src/dlg-extract.c: 
	* src/dlg-batch-add.c: 
	* src/dlg-add-folder.c: 
	* src/dlg-add-files.c: 
	
	Fixed bug #563208 â file-roller can't extract to an ftp mounted 
	directory.
	Patch by Gerard Lommerse.


Modified:
   trunk/ChangeLog
   trunk/src/dlg-add-files.c
   trunk/src/dlg-add-folder.c
   trunk/src/dlg-batch-add.c
   trunk/src/dlg-extract.c
   trunk/src/file-utils.c
   trunk/src/fr-window.c

Modified: trunk/src/dlg-add-files.c
==============================================================================
--- trunk/src/dlg-add-files.c	(original)
+++ trunk/src/dlg-add-files.c	Mon Jan 19 12:53:04 2009
@@ -84,8 +84,7 @@
 
 	/* check folder permissions. */
 
-	if (uri_is_dir (current_folder)
-	    && ! check_permissions (current_folder, R_OK | X_OK)) {
+	if (uri_is_dir (current_folder) && ! check_permissions (current_folder, R_OK)) {
 		GtkWidget *d;
 		char      *utf8_path;
 

Modified: trunk/src/dlg-add-folder.c
==============================================================================
--- trunk/src/dlg-add-folder.c	(original)
+++ trunk/src/dlg-add-folder.c	Mon Jan 19 12:53:04 2009
@@ -119,7 +119,7 @@
 
 	/* check folder permissions. */
 
-	if (! check_permissions (selected_folder, R_OK | X_OK)) {
+	if (! check_permissions (selected_folder, R_OK)) {
 		GtkWidget *d;
 		char      *utf8_path;
 

Modified: trunk/src/dlg-batch-add.c
==============================================================================
--- trunk/src/dlg-batch-add.c	(original)
+++ trunk/src/dlg-batch-add.c	Mon Jan 19 12:53:04 2009
@@ -548,7 +548,7 @@
 	_gtk_entry_set_filename_text (GTK_ENTRY (data->a_add_to_entry), automatic_name);
 	g_free (automatic_name);
 
-	if (check_permissions (parent, R_OK|W_OK|X_OK))
+	if (check_permissions (parent, R_OK | W_OK))
 		gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (data->a_location_filechooserbutton), parent);
 	else
 		gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (data->a_location_filechooserbutton), get_home_uri ());

Modified: trunk/src/dlg-extract.c
==============================================================================
--- trunk/src/dlg-extract.c	(original)
+++ trunk/src/dlg-extract.c	Mon Jan 19 12:53:04 2009
@@ -168,7 +168,8 @@
 	/* check extraction directory permissions. */
 
 	if (uri_is_dir (extract_to_dir)
-	    && ! check_permissions (extract_to_dir, R_OK | W_OK | X_OK)) {
+	    && ! check_permissions (extract_to_dir, R_OK | W_OK)) 
+	{
 		GtkWidget *d;
 		char      *utf8_path;
 

Modified: trunk/src/file-utils.c
==============================================================================
--- trunk/src/file-utils.c	(original)
+++ trunk/src/file-utils.c	Mon Jan 19 12:53:04 2009
@@ -1106,6 +1106,7 @@
 	GFile     *file;
 	GFileInfo *info;
 	GError    *err = NULL;
+	gboolean   default_permission_when_unknown = TRUE;
 
 	file = g_file_new_for_uri (uri);
 	info = g_file_query_info (file, "access::*", 0, NULL, &err);
@@ -1114,13 +1115,29 @@
 		g_clear_error (&err);
 		result = FALSE;
 	}
-	else if ((mode & R_OK) && ! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_READ))
-		result = FALSE;
-	else if ((mode & W_OK) && ! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE))
-		result = FALSE;
-	else if ((mode & X_OK) && ! g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE))
-		result = FALSE;
-
+	else {
+		if ((mode & R_OK) == R_OK) {
+			if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_ACCESS_CAN_READ))
+				result = (result && g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_READ));
+			else
+				result = (result && default_permission_when_unknown);
+		}
+		
+		if ((mode & W_OK) == W_OK) {
+			if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE))
+				result = (result && g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE));
+			else
+				result = (result && default_permission_when_unknown);
+		}
+		
+		if ((mode & X_OK) == X_OK) {
+			if (g_file_info_has_attribute (info, G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE))
+				result = (result && g_file_info_get_attribute_boolean (info, G_FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE));
+			else
+				result = (result && default_permission_when_unknown);
+		}
+	}		
+	
 	g_object_unref (info);
 	g_object_unref (file);
 

Modified: trunk/src/fr-window.c
==============================================================================
--- trunk/src/fr-window.c	(original)
+++ trunk/src/fr-window.c	Mon Jan 19 12:53:04 2009
@@ -4209,7 +4209,7 @@
 
 	g_clear_error (&window->priv->drag_error);
 
-	if (! check_permissions (destination_folder, R_OK | W_OK | X_OK)) {
+	if (! check_permissions (destination_folder, R_OK | W_OK)) {
 		char *destination_folder_display_name;
 
 		destination_folder_display_name = g_filename_display_name (destination_folder);
@@ -4289,7 +4289,7 @@
 
 	g_clear_error (&window->priv->drag_error);
 
-	if (! check_permissions (destination_folder, R_OK | W_OK | X_OK)) {
+	if (! check_permissions (destination_folder, R_OK | W_OK)) {
 		char *destination_folder_display_name;
 
 		destination_folder_display_name = g_filename_display_name (destination_folder);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]