Commit Graph

15047 Commits

Author SHA1 Message Date
Tambet Ingo
85c6e1e5ec 2008-09-24 Tambet Ingo <tambet@gmail.com>
* Implement required "save_secrets" and "delete_connection" methods of the
	VPN plugin UI interface.
	Add the password widgets to the properties UI so that the passwords can be
	edited/deleted from the UI. Reorganize the code a bit to avoid duplicate
	code (using VPNC plugin as a template).

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4090 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-24 07:19:22 +00:00
Tambet Ingo
0f418a3509 2008-09-24 Tambet Ingo <tambet@gmail.com>
* libnm-glib/nm-vpn-plugin-ui-interface.c: Add type checking to
	all the public function arguments.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4089 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-24 07:19:17 +00:00
Tambet Ingo
b37fc86385 2008-09-22 Tambet Ingo <tambet@gmail.com>
* src/vpn-manager/nm-vpn-connection.c: Add a signal handler for the
	"Failure" signal from VPN plugins, store the failure reason, and
	use it when the state is changed to failure.

	* introspection/nm-vpn-plugin.xml: Fix the "Failure" signal's type
	description.

	* include/NetworkManagerVPN.h (NMVPNConnectionStateReason): Add a new
	reason to the end of the list to not break the API.
	(NMVPNPluginFailure): Move it here (from libnm-glib/nm-vpn-plugin.h)
	so it can be shared by plugins and daemon.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4088 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-22 15:29:00 +00:00
Leonardo Ferreira Fontenelle
75e283e368 2008-09-21 Leonardo Ferreira Fontenelle <leonardof@gnome.org>
* pt_BR.po: Updated Brazilian Portuguese translation by Henrique P. 
	Machado.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4087 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-21 19:18:59 +00:00
Luca Ferretti
fbc2178340 2008-09-20 Luca Ferretti <elle.uca@libero.it>
* it.po: Updated Italian translation by Francesco Marletta.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4086 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-20 21:06:33 +00:00
Luca Ferretti
70a23f7d20 2008-09-20 Luca Ferretti <elle.uca@libero.it>
* it.po: Updated Italian translation by Francesco Marletta.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4085 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-20 21:04:23 +00:00
Luca Ferretti
6d3cbd1761 2008-09-20 Luca Ferretti <elle.uca@libero.it>
* it.po:  Updated Italian translation by Francesco Marletta.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4084 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-20 21:00:15 +00:00
Luca Ferretti
097d8d564d 2008-09-20 Luca Ferretti <elle.uca@libero.it>
* it.po: Updated Italian translation by Francesco Marletta.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4083 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-20 20:56:05 +00:00
Dan Williams
ba2ad655de Check return value of sethostname(2)
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4082 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-19 17:40:48 +00:00
Dan Williams
3a0b1d645b SaveHostname should be async
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4081 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-19 17:14:08 +00:00
Dan Williams
e26a6a046e Use a glibc header for ifreq, not the linux header
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4080 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-19 17:13:30 +00:00
Dan Williams
0ab563c5ab Add required include
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4079 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-19 17:12:15 +00:00
Dan Williams
8d19530da2 2008-09-18 Dan Williams <dcbw@redhat.com>
Patch from Alexander Sack <asac@ubuntu.com>

	* configure.in
	  system-settings/plugins/Makefile.am
	  system-settings/plugins/ifupdown/Makefile.am
	  system-settings/plugins/ifupdown/interface_parser.c
	  system-settings/plugins/ifupdown/interface_parser.h
	  system-settings/plugins/ifupdown/nm-ifupdown-connection.c
	  system-settings/plugins/ifupdown/nm-ifupdown-connection.h
	  system-settings/plugins/ifupdown/parser.c
	  system-settings/plugins/ifupdown/parser.h
	  system-settings/plugins/ifupdown/plugin.c
	  system-settings/plugins/ifupdown/plugin.h
		- Implement a Debian/Ubuntu legacy network configuration plugin
			(gnome.org #551941)



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4078 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-18 15:29:59 +00:00
Dan Williams
9d5a2291f7 2008-09-18 Dan Williams <dcbw@redhat.com>
Implement support for honoring configured and automatic hostnames, and for
	setting the configured hostname.

	* introspection/nm-ip4-config.xml
	  src/nm-ip4-config.c
	  src/nm-ip4-config.h
	  src/dhcp-manager/nm-dhcp-manager.c
		- Remove useless hostname property; it's not really part of the IPv4
			config

	* introspection/nm-settings-system.xml
	  libnm-glib/nm-dbus-settings-system.c
	  libnm-glib/nm-dbus-settings-system.h
		- Add SetHostname() call to system settings D-Bus interface
		- Add Hostname property to system settings D-Bus interface
		- (nm_dbus_settings_system_save_hostname,
		   nm_dbus_settings_system_get_hostname): implement

	* src/nm-device.c
	  src/nm-device.h
		- (nm_device_get_dhcp4_config): implement

	* src/nm-manager.c
	  src/nm-manager.h
		- Fetch and track system settings service hostname changes, and proxy
			the changes via a GObject property of the manager

	* system-settings/src/nm-system-config-interface.c
	  system-settings/src/nm-system-config-interface.h
		- Replace nm_system_config_interface_supports_add() with a capabilities
			bitfield

	* system-settings/src/nm-system-config-error.c
	  system-settings/src/nm-system-config-error.h
		- Add additional errors

	* system-settings/src/dbus-settings.c
	  system-settings/src/dbus-settings.h
		- (get_property, nm_sysconfig_settings_class_init): add hostname
			property; first plugin returning a hostname wins
		- (impl_settings_add_connection): use plugin capabilities instead of
			nm_system_config_interface_supports_add()
		- (impl_settings_save_hostname): implement hostname saving

	* src/NetworkManagerPolicy.c
		- (lookup_thread_run_cb, lookup_thread_worker, lookup_thread_new,
		   lookup_thread_die): implement an asynchronous hostname lookup thread
			which given an IPv4 address tries to look up the hostname for that
			address with reverse DNS
		- (get_best_device): split out best device code from
			update_routing_and_dns()
		- (update_etc_hosts): update /etc/hosts with the machine's new hostname
			to preserve the 127.0.0.1 reverse mapping that so many things require
		- (set_system_hostname): set a given hostname
		- (update_system_hostname): implement hostname policy; a configured
			hostname (from the system settings service) is used if available,
			otherwise an automatically determined hostname from DHCP, VPN, etc.
			If there was no automatically determined hostname, reverse DNS of
			the best device's IP address will be used, and as a last resort the
			hostname 'localhost.localdomain' is set.
		- (update_routing_and_dns): use get_best_device(); update the system
			hostname when the network config changes
		- (hostname_changed): update system hostname if the system settings
			service signals a hostname change
		- (nm_policy_new): list for system settings service hostname changes
		- (nm_policy_destroy): ensure that an in-progress hostname lookup thread
			gets told to die

	* system-settings/plugins/keyfile/plugin.c
	  system-settings/plugins/ifcfg-suse/plugin.c
		- (get_property, sc_plugin_ifcfg_class_init): implement hostname and
			capabilities properties

	* system-settings/plugins/ifcfg-fedora/shvar.c
		- (svOpenFile): re-enable R/W access of ifcfg files since the plugin
			writes out /etc/sysconfig/network now

	* system-settings/plugins/ifcfg-fedora/plugin.c
		- (plugin_get_hostname): get hostname from /etc/sysconfig/network
		- (plugin_set_hostname): save hostname to /etc/sysconfig/network
		- (sc_network_changed_cb): handle changes to /etc/sysconfig/network
		- (sc_plugin_ifcfg_init): monitor /etc/sysconfig/network for changes
		- (get_property, set_property, sc_plugin_ifcfg_class_init): implement
			hostname get/set and capabilities get



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4077 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-18 15:16:44 +00:00
Dan Williams
410a0cf5e3 2008-09-18 Dan Williams <dcbw@redhat.com>
* libnm-util/nm-setting-wireless.c
		- (nm_setting_wireless_ap_security_compatible): only verify pairwise and
			group ciphers if the wireless-security setting explicitly specified
			them, effectively making the default be "all ciphers"  (idea from
			Alexander Sack)



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4076 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-18 14:59:37 +00:00
Dan Williams
3028e29272 Flag connections as loaded before getting unmanaged devices as that can trigger connection recursive connection reloads (Alexander Sack)
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4075 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-18 14:46:57 +00:00
Dan Williams
d2ef616e51 Fill error when object isn't a connection (Alexander Sack)
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4074 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-18 13:31:11 +00:00
Ilkka Tuohela
5735b02376 Updated Finnish translation
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4073 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-18 11:17:50 +00:00
Ilkka Tuohela
49311ee4b9 Updated Finnish translation
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4072 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-18 11:16:21 +00:00
Petr Kovar
0c5fb97a66 2008-09-17 Petr Kovar <pknbe@volny.cz>
* cs.po: Updated Czech translation by Jiri Eischmann.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4071 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-17 20:28:43 +00:00
Dan Williams
7464db9a14 Fix a crash (Alexander Sack)
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4070 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-17 04:41:01 +00:00
Dan Williams
0b82d7b681 2008-09-15 Dan Williams <dcbw@redhat.com>
Patch from Alexander Sack <asac@ubuntu.com>

	* src/named-manager/nm-named-manager.c
		- (dispatch_resolvconf): respect resolvconf exit code



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4069 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-15 14:41:17 +00:00
Wouter Bolsterlee
2393a275d5 2008-09-15 Wouter Bolsterlee <wbolster@svn.gnome.org>
* nl.po: Updated Dutch translation by Wouter Bolsterlee.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4068 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-15 08:59:03 +00:00
Wouter Bolsterlee
052af0c320 Add fr to LINGUAS and sort it
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4067 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-15 08:46:53 +00:00
Wouter Bolsterlee
d9cbabd7f2 Add nl to LINGUAS
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4066 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-15 08:46:12 +00:00
Wouter Bolsterlee
845d542e09 2008-09-15 Wouter Bolsterlee <wbolster@svn.gnome.org>
* nl.po: Updated Dutch translation by Wouter Bolsterlee.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4065 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-15 08:45:41 +00:00
Wouter Bolsterlee
152c111b15 typo fix
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4064 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-15 08:18:30 +00:00
Wouter Bolsterlee
0ea6efacfc 2008-09-15 Wouter Bolsterlee <wbolster@svn.gnome.org>
* nl.po: Added Dutch translation by Tino Meinen.


git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4063 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-15 08:18:17 +00:00
Wouter Bolsterlee
74ff91609e 2008-09-15 Wouter Bolsterlee <wbolster@svn.gnome.org>
* nl.po: Updated Dutch translation by Tino Meinen.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4062 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-15 08:14:42 +00:00
Ilkka Tuohela
a1fad29211 Updated Finnish translation
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4061 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-14 12:15:20 +00:00
Tambet Ingo
2f5ed47908 2008-09-12 Tambet Ingo <tambet@gmail.com>
* src/named-manager/nm-named-manager.c (dispatch_netconfig): Make it compile
	again. Add some debugging.

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4060 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-12 11:22:06 +00:00
Daniel Nylander
d8c3e8e7fd sv.po: Updated Swedish translation
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4059 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-12 06:19:35 +00:00
Dan Williams
4a15d37c27 Add compare flag to ignore secrets
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4058 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-11 20:54:02 +00:00
Dan Williams
485b73cee9 2008-09-11 Dan Williams <dcbw@redhat.com>
* system-settings/plugins/keyfile/plugin.c
		- (update_connection_settings): update connection manually, since
			nm_exported_connection_update() does authentication
		- (dir_changed): update_connection_settings() doesn't need to return
			an error



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4057 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-11 09:43:21 +00:00
Dan Williams
04f835191a 2008-09-10 Dan Williams <dcbw@redhat.com>
* src/nm-openvpn-service.c
		- Clean up management socket and connect timer when the plugin stops;
			becuase of this openvpn's output needs to be processed from the
			child watch callback otherwise it gets lost when the management
			socket is cleaned up during the state change to STOPPED.
		- Fix parsing of private key auth failure



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4056 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-11 01:17:10 +00:00
Jorge Gonzalez
92ead43d3b Updated Spanish translation
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4055 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-10 19:08:43 +00:00
Jorge Gonzalez
05350e665b Updated Spanish translation
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4054 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-10 19:08:30 +00:00
Dan Williams
12c4bda8b5 2008-09-09 Dan Williams <dcbw@redhat.com>
* common-gnome/keyring-helpers.c
	  common-gnome/keyring-helpers.h
		- Add defines for secret tags in the keyring
		- (keyring_helpers_delete_secret): delete a secret from the keyring for
			a given connection UUID
		- (keyring_helpers_save_secret): vpn service is always going to be
			vpnc's

	* auth-dialog/main.c
		- (get_secrets): use secret tag #defines; vpn service will always be
			vpnc's

	* properties/nm-vpnc.c
	  properties/nm-vpnc.h
		- (fill_vpn_passwords): fill secrets in the UI if the connection is
			system-scope
		- (update_connection): fill secrets if the connection is system-scope
			so they can be saved with the system settings service
		- (save_secrets, delete_connection): implement



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4053 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-09 20:29:59 +00:00
Dan Williams
a2cbab1624 2008-09-09 Dan Williams <dcbw@redhat.com>
* libnm-glib/nm-vpn-plugin-ui-interface.c
	  libnm-glib/nm-vpn-plugin-ui-interface.h
	  libnm-glib/libnm_glib_vpn.ver
		- (nm_vpn_plugin_ui_interface_delete_connection): called when the plugin
			should clean up resources related to the connection (like keyring
			secrets)
		- (nm_vpn_plugin_ui_widget_interface_save_secrets): called when the plugin
			should save user-scope secrets (like to the keyring)



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4052 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-09 20:25:01 +00:00
Inaki Larranaga Murgoitio
24ac6fe055 2008-09-09 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
* eu.po: Updated Basque translation.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4051 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-09 15:03:54 +00:00
Inaki Larranaga Murgoitio
22032a310d 2008-09-09 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
* eu.po: Updated Basque translation.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4050 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-09 14:52:58 +00:00
Inaki Larranaga Murgoitio
6c2282ab8b 2008-09-09 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
* eu.po: Updated Basque translation.




git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4049 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-09 14:43:47 +00:00
Inaki Larranaga Murgoitio
b6c667762e 2008-09-09 Inaki Larranaga Murgoitio <dooteo@euskalgnu.org>
* eu.po: Updated Basque translation.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4048 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-09 14:26:03 +00:00
Dan Williams
796829ce62 2008-09-08 Dan Williams <dcbw@redhat.com>
Patch from Alexander Sack <asac@ubuntu.com>

	* libnm-util/crypto_gnutls.c
	  libnm-util/crypto_nss.c
		- (crypto_init, crypto_deinit): just use a boolean instead of a refcount

	* libnm-util/nm-utils.c
	  libnm-util/nm-utils.h
	  libnm-util/libnm-util.ver
		- (nm_utils_init): initialize libnm-util
		- (nm_utils_deinit): de-initialize libnm-util and clean up resources

	* libnm-util/nm-setting-8021x.c
		- (nm_setting_802_1x_class_init): init libnm-util when needed



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4047 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-08 18:35:21 +00:00
Dan Williams
a5de3b4656 Include config.h for TARGET_*
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4046 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-08 18:10:39 +00:00
Tomasz Dominikowski
cd4920942c 2008-09-08 Tomasz Dominikowski <tdominikowski@aviary.pl>
* pl.po: Updated Polish translation

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4045 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-08 17:51:14 +00:00
Tomasz Dominikowski
52d52847fb 2008-09-08 Tomasz Dominikowski <tdominikowski@aviary.pl>
* pl.po: Updated Polish translation

git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4044 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-08 17:49:51 +00:00
Dan Williams
0760152f9f 2008-09-05 Dan Williams <dcbw@redhat.com>
Patch from Roy Marples <roy@marples.name> and others

	* configure.in
	  src/named-manager/nm-named-manager.c
		- Add support for resolvconf; use --with-resolvconf at configure time
			to enable it



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4043 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-05 18:57:07 +00:00
Dan Williams
bb6b79a2a6 2008-09-05 Dan Williams <dcbw@redhat.com>
* libnm-util/crypto_nss.c
	  libnm-util/crypto_gnutls.c
	  libnm-util/crypto.h
		- (crypto_init): return error when init fails



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4042 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-05 18:10:39 +00:00
Dan Williams
814336ec8a 2008-09-05 Dan Williams <dcbw@redhat.com>
* src/nm-openvpn-service.c
		- (nm_openvpn_start_openvpn_binary): send --script-security=2 to allow
			the plugin's scripts to be run.  Requires OpenVPN 2.1-rc9 or later,
			distros with older versions should patch this out.



git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4041 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
2008-09-05 17:18:41 +00:00