~ubuntu-branches/ubuntu/quantal/nautilus-share/quantal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
2007-09-22  Sebastien Estienne <sebastien.estienne@gmail.com>

	* A patch from Edward Catmur to implements a checkbox and keyfile 
	entry to set whether guest access is allowed on a particular share

2007-08-13  Jorge Gonzalez <jorgegonz@svn.gnome.org>

        * configure.in: Added 'es' (Spanish) to ALL_LINGUAS.

2007-08-11  Inaki Larranaga Murgoitio  <dooteo@zundan.com>

        * configure.in: Added 'eu' (Basque) to ALL_LINGUAS.

2007-05-21  Jordi Mas <jmas@softcatala.org>

	* configure.in: Added Catalan to ALL_LINGUAS

2007-05-16  David Lodge <dave@cirt.net>

	* configure.in: Added en_GB to ALL_LINGUAS

2007-04-03  Pema Geyleg <pema.geyleg@gmail.com>

	* dz.po: Updated dzongkha translation.

2006-06-14  Federico Mena Quintero  <federico@novell.com>

	Fix https://bugzilla.novell.com/show_bug.cgi?id=183413:

	* src/nautilus-share.c (PropertyPage): Add a "was_writable"
	field.  We'll use this to know if we need to change the folder's
	permissions once share gets modified:  we want to be able to
	remove write permission as soon as possible if the share gets
	modified to be read-only.
	(create_property_page): Set page->was_writable.
	(NEED_ALWAYS_MASK, NEED_IF_WRITABLE_MASK, NEED_ALL_MASK): New
	macros for the sets of permissions that we may need to change in
	the usershared folder.
	(remove_from_saved_permissions): New function.  Removes a subset
	of permissions from the ones we had saved previously.
	(restore_write_permissions): New helper function.
	(restore_saved_permissions): Use remove_from_saved_permissions()
	with NEED_ALL_MASK so that we remove all the permissions that we
	added previously.
	(property_page_commit): If the page is no longer writable, restore
	the write permissions that we added.

2006-06-08  Federico Mena Quintero  <federico@novell.com>

	Fix https://bugzilla.novell.com/show_bug.cgi?id=181811:

	* src/shares.c (samba_configuration_supports_guest_ok): New
	function.  Calls "testparm -s --parameter-name='usershare allow
	guests'" to see if Samba is configured to support "guest_ok=y"
	when calling "net usershare".
	(add_share): Call samba_configuration_supports_guest_ok(), and
	then add "guest_ok=y" to the "net usershare" command line if
	appropriate.

	* src/nautilus-share.c (confirm_sharing_permissions): For
	read-only usershares, we need go+rx permissions on the shared
	folder.  For writable usershares, we also need go+w.  Check the
	group permissions instead of just the other ones.
	(message_confirm_missing_permissions): Check the group permissions
	as well as the other permissions.
	(save_changed_permissions): Save the mask of needed permissions in
	a single key, instead of using three separate keys for r/w/x.
	(remove_permissions): Use a mask of needed permissions rather than
	individual flags.
	(restore_saved_permissions): Likewise.  Also, read the octal
	string that was saved in save_changed_permissions().

2006-05-03  Federico Mena Quintero  <federico@novell.com>

	Fix https://bugzilla.novell.com/show_bug.cgi?id=170212 - restore
	the permissions of folders when unsharing them if we had to modify
	them.

	* src/nautilus-share.c (save_changed_permissions): New function;
	creates a GKeyFile in
	~/.gnome2/nautilus-share-modified-permissions to save a list of
	the folders for which we had to add permissions.
	(restore_saved_permissions): New function; the counterpart to
	restore_saved_permissions().  Restores the permissions of a
	directory.
	(confirm_sharing_permissions): Call save_changed_permissions()
	after chmod() succeeds.  Return an enum rather than a boolean.
	(property_page_commit): Call restore_saved_permissions() if we are
	unsharing a folder, or if we failed to share the folder.

2006-02-21  Federico Mena Quintero  <federico@novell.com>

	* configure.in: Remove the requirements for d-bus and libdaemon.
	Removed the subdirectories we don't need anymore.

	* src/Makefile.am: Remove the smbshared entries; we only need the
	extension's .so now.

	* Makefile.am (SUBDIRS): Removed the dbus directory; we don't
	install anything from there anymore.

	* src/nautilus-share.h: Removed d-bus includes.

	* src/nautilus-share.c (property_page_commit): Oops, fix reversed
	return value when the user cancels the operation during the
	permissions check.
	(message_confirm_missing_permissions): Set the default response to
	the "accept" button.

2006-02-21  Federico Mena Quintero  <federico@novell.com>

	* src/nautilus-share.c (confirm_sharing_permissions): Renamed from
	check_sharing_permissions().  Now we let the user cancel the operation.
	(message_confirm_missing_permissions): Renamed from
	message_missing_permissions().  Now we present a confirmation
	dialog instead of an information one.
	(property_page_commit): Don't do anything if the user decides he
	doesn't want us to change his folder's permissions.

2006-02-20  Federico Mena Quintero  <federico@novell.com>

	* src/nautilus-share.c (property_page_commit): Check that the
	folder we are trying to share has enough "other" permissions.
	Fixes https://bugzilla.novell.com/show_bug.cgi?id=149615
	(check_sharing_permissions): New function.

	* src/shares.c (net_usershare_run): Return an error when our
	spawned command exits with a signal; we were returning success in
	this case with an empty GKeyFile, which the caller doesn't like.

2006-02-06  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (net_usershare_run): Oops, fix a printf format.
	Fixes https://bugzilla.novell.com/show_bug.cgi?id=147065

2006-01-26  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (net_usershare_run): Oops, don't propagate an error
	when there wasn't one.

	* interfaces/share-dialog.glade.in: Turn on word wrapping in the
	label_status widget; make it left-justified, and selectable.

	* src/nautilus-share.c (property_page_commit): Return a boolean
	success code.
	(button_apply_clicked_cb): Don't close the standalone window if we
	fail to commit the page.  This lets the user see the error message.

2006-01-19  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c: Add a bunch of debug logging code, enabled with
	#ifdef VERBOSE.

	* src/nautilus-share.c (share_this_folder_callback): Set the
	page->standalone_window.
	(PropertyPage): Add a standalone_window field.
	(button_apply_clicked_cb): Destroy the standalone_window if we
	have it.
	(property_page_commit): Oops, pass a NULL ShareInfo to
	shares_modify_share() if we want to remove a share.

2006-01-19  Federico Mena Quintero  <federico@ximian.com>

	Finish the code for "net usershare add -l".  This makes "net
	usershare" print back the info for the modified share; we use this
	possibly-modified info to synchronize our view of the available
	shares, since it is the canonical info, instead of assuming that
	what we passed to "net usershare" is the canonical info.

	* src/shares.c (replace_shares_from_key_file): New function; takes
	a GKeyFile and replaces the corresponding ShareInfo structures in
	our hashes.
	(refresh_shares): Simply use replace_shares_from_key_file().  Free
	the goddamn key_file; we were leaking it.
	(add_key_group_to_hashes): Remove old ShareInfo structures from
	the hashes if they have the same share name or path as the ones
	that come in the key file group.
	(add_share): Use replace_shares_from_key_file(), since we use "net
	usershare -l" now to get back the modified share info.

	* src/nautilus-share.c (property_page_check_sensitivity): If
	"share this folder" is enabled, also enable the apply button if
	the folder was not initially shared (i.e. enable it not only if
	the rest of the property page is dirty).

2006-01-19  Federico Mena Quintero  <federico@ximian.com>

	Fine-tune the explicit-apply code.

	* src/nautilus-share.c (create_property_page): Turn on underlining
	in the apply button label, and set its image explicitly.
	(nautilus_share_get_file_items): make the context menu item be
	"Sharing Options" instead of just "Share".
	(create_property_page): Oops, restore the "toggled" callback for
	the share/don't whare checkbutton.
	(on_checkbutton_share_folder_toggled): Simply call
	property_page_set_sensitivity(); remove the instant-apply code.
	(left_share_comment_text_entry): Removed unused function.
	(modify_share_comment_text_entry): Removed unused function.
	(modify_share_name_text_entry): Removed the instant-apply code.
	(left_share_name_text_entry): Removed unused function.
	(on_checkbutton_share_rw_ro_toggled): Removed unused function.
	(create_property_page): Removed the instant-apply code.
	(PropertyPage): Add a was_initially_shared field.  We use this to
	know when to enable/disable the apply button.  Add an is_dirty
	field to know when the other fields have changed.
	(create_property_page): Set page->was_initially_shared
	appropriately.
	(modify_share_name_text_entry): Turn on page->is_dirty and call
	property_page_check_sensitivity().
	(modify_share_comment_text_entry): Likewise.
	(on_checkbutton_rw_ro_toggled): Likewise; in addition, call
	property_page_check_sensitivity().
	(property_page_set_controls_sensitivity): Renamed from
	property_page_set_sensitivity().
	(property_page_check_sensitivity): New function; sets the
	sensitivity of *all* the widgets based on the state of the
	property page.
	(on_checkbutton_share_folder_toggled): Simply use
	property_page_check_sensitivity().

2006-01-19  Federico Mena Quintero  <federico@ximian.com>

	* debug-net-usershare (add_share): Add a want_echo argument.
	(toplevel): if the user specifies "add -l", pass want_echo=True to
	add_share().
	(add_share): Make the sharename lowercase, like "net usershare" does.
	(delete_share): Likewise.

	* src/nautilus-share.c (create_property_page): Set the label of
	the apply button as appropriate: "Create Share" / "Modify Share".

	* interfaces/share-dialog.glade.in: Oops, show the Cancel dialog
	by default; we'll hide it in the code as appropriate.  Fix the
	capitalization of all the labels.

2006-01-18  Federico Mena Quintero  <federico@ximian.com>

	Make the standalone dialog and the property page explicit-apply
	instead of instant-apply.

	* interfaces/share-dialog.glade.in: Make the bottom separator
	invisible.  Change the button's label to "Write changes to share";
	add a Cancel button for use with the standalone dialog.  Add
	underlined mnemonics.

	* src/shares.c (add_share): Use "net usershare add -l" to have it
	print back the canonicalized info for the share.
	(add_key_group_to_hashes): Use add_share_info_to_hashes() instead
	of adding the ShareInfo by hand.

	* src/nautilus-share.c (get_share_info_for_file_info): Do not
	assert that the share_info we get back exist; there's a race
	condition in that the share could be removed between the time the
	caller learns about it and the time we query for it.
	(PropertyPage): Added fields for button_cancel and button_apply.
	(create_property_page): Load the "button_cancel" and
	"button_apply" widgets.
	(create_property_page): Do not connect to "toggled" on the check
	buttons; this won't be instant-apply.  Do not connect to "changed"
	on the comment entry.
	(on_checkbutton_share_rw_ro_toggled): #if-ed out
	(on_checkbutton_share_folder_toggled): #if-ed out
	(nautilus_share_get_property_pages): Hide the Cancel button.
	(button_callback): Removed.
	(share_this_folder_callback): Connect to the Cancel button so that
	it destroys the standalone sharing window.
	(create_property_page): Connect to button_apply.
	(button_apply_clicked_cb): New callback; just commits the property
	page.

2006-01-18  Federico Mena Quintero  <federico@ximian.com>

	* src/nautilus-share.c (NETWORK_SHARE_PREFIX): Ahem, I missed one
	slash in "network:///".
	(get_share_info_for_file_info): New function.  This is intended to
	be the master "is this NautilusFileInfo worthy of consideration" function.
	(file_get_share_status_file): Simply use
	get_share_info_for_file_info() and get_share_status_and_free_share_info().
	(nautilus_share_get_property_pages): Use
	get_share_info_for_file_info() instead of duplicating the code
	that checks for shareability.
	(nautilus_share_get_file_items): Likewise.
	(file_get_share_status): Removed.

	* src/nautilus-share.h: Removed prototype for file_get_share_status().

2006-01-18  Federico Mena Quintero  <federico@ximian.com>

	* src/nautilus-share.c (file_get_share_status_file): Match the
	file's URI against the "network://share-" prefix from gnome-vfs's
	network method, and get the info for the corresponding share name.
	(get_share_status_share_name): New helper function.
	(get_share_status_and_free_share_info): New helper function.
	(file_get_share_status): Use get_share_status_and_free_share_info().

2006-01-17  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (refresh_shares): To list the info for all the
	shares we need "net usershare info", not "net usershare list".
	The latter only lists the share names.

	* debug-net-usershare (command): Likewise; use "info" instead of
	"list" to print the full info for all the shares.

2006-01-16  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (net_usershare_run): Use different printf
	formats depending on whether we got an empty error string from
	"net usershare".

	* src/shares.c (DEBUG_SHARES): #undef this; the code seems to work.

	* src/shares.c (net_usershare_run): Let the ret_key_file be NULL.
	In that case, this won't attempt to parse the stdout of "net usershare".
	(add_share): Don't expect a key file from net_usershare_run().
	(modify_share): Implement in terms of remove_share() and add_share().
	(remove_share): Implement in terms of "net usershare delete".

2006-01-13  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (net_usershare_run): Don't use G_SPAWN_FILE_AND_ARGV_ZERO.
	(refresh_shares): g_message() if net_usershare_run() fails.
	(add_share): Implement the call to net_usershare_run().
	(add_share_info_to_hashes): New helper function.
	(remove_share_info_from_hashes): New helper function.

2006-01-12  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (shares_get_share_info_for_path): Oops, fix the
	GError assertion.
	(shares_get_share_info_for_share_name): Likewise.
	(add_key_group_to_hashes): Fix the sense of strcmp().

	* src/shares.c (DEBUG_SHARES): Add a debugging flag so that we
	call a stub program instead of "net usershare".

2006-01-12  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (add_key_group_to_hashes): New helper function to
	get the share info out of a key file group.
	(refresh_shares): Call net_usershare_run() to get a GKeyFile out
	of "net usershare"; extract the share info groups from it.

2006-01-11  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (refresh_shares): Return a GError.
	(refresh_if_needed): Likewise.
	(shares_get_path_is_shared): Take a GError argument; make the
	return value be a success condition.
	(shares_get_share_info_for_path): Likewise.
	(shares_get_share_name_exists): Likewise.
	(shares_get_share_info_for_share_name): Likewise.
	(shares_get_share_info_list): Likewise.
	(throw_error_on_refresh): New debugging variable.
	(shares_set_debug): Add an error_on_refresh argument.
	(refresh_shares): Throw an error if throw_error_on_refresh is set.
	(net_usershare_run): New function to run "net usershare" and parse
	its output into a GKeyFile.

	* src/nautilus-share.c (property_page_share_name_is_valid): Pass a
	GError to the shares.h functions.
	(file_get_share_status): Likewise.
	(create_property_page): Likewise.  Also, throw an error dialog if
	we can't get the sharing info.

2006-01-10  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.c (refresh_if_needed): New function; refreshes the
	share list at a limited rate determined by an update counter and a
	timestamp.
	(refresh_shares): Took out of the #ifdef block along with its
	helper functions.
	(shares_get_path_is_shared): Call refresh_if_needed().
	(shares_get_share_info_for_path): Likewise.
	(shares_get_share_name_exists): Likewise.
	(shares_get_share_info_for_share_name): Likewise.
	(shares_modify_share): Likewise.
	(shares_get_share_info_list): Likewise.

2006-01-09  Federico Mena Quintero  <federico@ximian.com>

	* src/shares.[ch]: New files with small API that maintains a
	list of current shares and talks to Samba's utilities for
	modifying user shares.

	* src/nautilus-share.h: Removed the prototypes for
	nautilsu_share_get_type() and nautilus_share_register_type(); they
	are internal to nautilus-share.c now.

	* src/nautilus-share.c: Removed the d-bus includes.  Removed the
	global g_dbus.  Made all functions static except for the module
	API.  Put the unfinished share-editor stuff in an "#if 0".
	(nautilus_module_initialize): Remove the d-bus initialization
	code.  Pass NAUTILUS_SHARE_LOCALEDIR to bindtextdomain().
	(nautilus_share_get_file_items): Don't copy the file list.
	Instead, ref the fileinfo; release it when the menu item gets
	destroyed by using g_object_set_data_full().
	(get_fullpath_from_fileinfo): Assert that the fileinfo is not
	NULL.
	(PropertyPage): New PropertyPage structure, it holds all the
	fields for a property page (widgets, xml, etc.).
	(create_property_page): Create a PropertyPage and hook it to the
	appropriate widgets, so that we can keep track of them easily, and
	free their memory as appropriate.  Move all the widget fields from
	here to that structure.
	(free_property_page_cb): New callback; free the XML and other data
	when the property page's main widget is destroyed.
	(xml): Removed.  This should not be global!
	(g_sharename): Removed.  This should not be global!
	(create_property_page): Use g_filename_display_basename() to get
	the fallback name from the path; g_path_get_basename() would give
	us a string potentially not in UTF-8 encoding.
	(create_property_page): Pass the PropertyPage to the callbacks,
	instead of special-casing each one for strings or a file info.
	Connect to "changed" on the text entries, not "focus-out-event".
	(create_property_page): Connect the signal handlers *after*
	setting the initial widget states so that they don't interfere
	with the settings.
	(create_property_page): Don't set the ->active field in toggle
	buttons directly!  Call gtk_toggle_button_set_active().
	(create_property_page): Compute the string length from the entry
	with g_utf8_strlen(); not plain strlen().
	(commit_property_page): New function; take a PropertyPage and
	commit its properties to the shares_*() functions.
	(on_checkbutton_share_rw_ro_toggled): Use commit_property_page().
	(left_share_name_text_entry): Fix the prototype; this was taking
	the wrong event type.  Now it gets passed a PropertyPage in the
	user_data.  Use commit_property_page().
	(property_page_set_sensitivity): New helper function.
	(on_checkbutton_share_folder_toggled): Use
	property_page_set_sensitivity().  Use property_page_commit().
	(property_page_set_error): Renamed from set_error().  Take a
	PropertyPage rather than a widget.  Take an error message; we'll
	get this in the GError from the backend.
	(property_page_set_warning): Renamed from set_warning().  Take a
	PropertyPage rather than a widget.
	(property_page_set_normal): Renamed form set_normal().  Take a
	PropertyPage rather than a widget.
	(validate_fields): New helper function.
	(create_property_page): Connect to "changed" on the name entry
	instead of "key-release-event".
	(property_page_share_name_is_valid): New helper function.
	(modify_share_name_text_entry): Use property_page_share_name_is_valid().
	(left_share_name_text_entry): Likewise.
	(modify_share_name_text_entry): New callback.
	(file_get_share_status): Use the shares functions instead of the
	d-bus backend.
	(file_get_share_status_file): Remove redundant tests.

	* src/Makefile.am (libnautilus_share_la_CFLAGS): Don't define GNOMELOCALEDIR.

	* configure.in: Add "AM_GLIB_DEFINE_LOCALEDIR(NAUTILUS_SHARE_LOCALEDIR)".

	* ChangeLog: Start the ChangeLog.