diff options
author | Rebecca Schulman <rebecka@eazel.com> | 2001-03-06 00:12:57 +0000 |
---|---|---|
committer | Rebecca Schulman <rebecka@src.gnome.org> | 2001-03-06 00:12:57 +0000 |
commit | 87d6d540f8abab008b1258f9e2e2e7125b77bb3d (patch) | |
tree | e6422f588589732f7311915fd9490d87fa8b2a8b /libnautilus-private/nautilus-medusa-support.c | |
parent | 27595df3f8eee96513a422f757e8dafbc116190b (diff) | |
download | nautilus-87d6d540f8abab008b1258f9e2e2e7125b77bb3d.tar.gz |
Complete most of bug 5520, that turning medusa on when cron isn't running
2001-03-03 Rebecca Schulman <rebecka@eazel.com>
Complete most of bug 5520, that turning medusa on when cron
isn't running should tell the user this, and, if possible,
how to start cron.
reviewed by: Mike Engber <engber@eazel.com>
* libnautilus-extensions/nautilus-global-preferences.c:
(global_preferences_use_fast_search_changed_callback):
Add dialog that comes up if the fast search preference is
enabled in the preference dialog when cron is off.
The dialog will tell the user about cron and how to
turn it on on linux systems.
* libnautilus-extensions/nautilus-medusa-support.c:
(nautilus_medusa_add_system_state_changed_callback),
(nautilus_medusa_check_cron_is_enabled):
* libnautilus-extensions/nautilus-medusa-support.h:
Add hack to check if cron is actually running using cron.
* acconfig.h:
* configure.in:
Add HAVE_PROC_PROCESS_FILES, so we know whether we can
check proc files for whether cron is running
* src/nautilus-first-time-druid.c: (back_update_page_callback),
(set_up_medusa_page), (next_medusa_page_callback),
(set_up_cron_information_page), (nautilus_first_time_druid_show):
Add cron interface to the first time druid that tells users how to
turn on cron if necessary, as per Arlo's design.
Final text still needs to be added here.
* libnautilus-extensions/nautilus-mime-actions.c:
(application_can_handle_uri),
(nautilus_mime_has_any_applications_for_file),
(nautilus_mime_has_any_applications_for_file_type):
* libnautilus-extensions/nautilus-mime-actions.h:
* libnautilus-extensions/nautilus-program-choosing.c:
(choose_application_callback), (application_cannot_open_location):
Old change that never got committed, reviewed by Darin Adler
<darin@eazel.com>
Diffstat (limited to 'libnautilus-private/nautilus-medusa-support.c')
-rw-r--r-- | libnautilus-private/nautilus-medusa-support.c | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/libnautilus-private/nautilus-medusa-support.c b/libnautilus-private/nautilus-medusa-support.c index 6e591b1fc..373ea98d5 100644 --- a/libnautilus-private/nautilus-medusa-support.c +++ b/libnautilus-private/nautilus-medusa-support.c @@ -26,9 +26,15 @@ #include <config.h> #include <glib.h> + #include <string.h> +#include <sys/types.h> +#include <stdio.h> +#include <dirent.h> +#include "nautilus-glib-extensions.h" #include "nautilus-medusa-support.h" +#include "nautilus-string.h" #ifdef HAVE_MEDUSA #include <libmedusa/medusa-system-state.h> @@ -74,3 +80,59 @@ nautilus_medusa_add_system_state_changed_callback (NautilusMedusaChangedCallback callback_data); #endif } + + +NautilusCronStatus +nautilus_medusa_check_cron_is_enabled (void) +{ +#ifdef HAVE_PROC_PROCESS_FILES + DIR *proc_directory; + struct dirent *file; + char *stat_file_name; + FILE *stat_file; + char stat_file_data[128]; + const char *stat_file_process_name; + int process_number, bytes_read; + + /* We figure out whether cron is running by reading the proc + directory, and checking for a process named or ending with + "crond" */ + + proc_directory = opendir ("/proc"); + if (proc_directory == NULL) { + return NAUTILUS_CRON_STATUS_UNKNOWN; + } + + file = readdir (proc_directory); + while (file != NULL) { + /* Process files have numbers */ + if (nautilus_str_to_int (file->d_name, + &process_number)) { + stat_file_name = g_strdup_printf ("/proc/%d/stat", process_number); + stat_file = fopen (stat_file_name, "r"); + g_free (stat_file_name); + + if (stat_file == NULL) { + continue; + } + + bytes_read = fread (stat_file_data, sizeof (char), NAUTILUS_N_ELEMENTS (stat_file_data) - 1, stat_file); + fclose (stat_file); + stat_file_data[bytes_read] = 0; + + stat_file_process_name = strchr (stat_file_data, ' ') + 1; + + if (nautilus_str_has_prefix (stat_file_process_name, "(crond)")) { + return NAUTILUS_CRON_STATUS_ON; + } + + } + file = readdir (proc_directory); + } + + closedir (proc_directory); + return NAUTILUS_CRON_STATUS_OFF; +#else + return NAUTILUS_CRON_STATUS_UNKNOWN; +#endif +} |