Re: [Tracker] Proposed patch: use '~' in the config file
- From: "Luca Bellonda" <lbellonda gmail com>
- To: jamiemcc blueyonder co uk, tracker-list gnome org
- Subject: Re: [Tracker] Proposed patch: use '~' in the config file
- Date: Thu, 8 Mar 2007 22:24:30 +0100
jamie ha scritto:
> thanks but would it not be simpler to use the posix realpath? (man
> realpath for info)
> I am not sure if it converts "~" for us as well as allowing relative
> paths?
> feel free to resubmit patch using realpath if it does. If not can you
> also include realpath anyhow
Ok, this is the patch including realpath and some debugging info. I leaved '~' handling,
it is invisible if you don't prefix a name with tilde.
bye
Luca Bellonda
Index: tracker-utils.c
===================================================================
--- tracker-utils.c (revisione 537)
+++ tracker-utils.c (copia locale)
@@ -24,6 +24,7 @@
#include <unistd.h>
#include <fcntl.h>
#include <time.h>
+#include <limits.h>
#include <glib/gprintf.h>
#include <glib/gprintf.h>
#include <glib/gstdio.h>
@@ -1699,33 +1700,84 @@
}
}
+static GSList *
+check_dir_name ( GSList* list, char *input_name )
+{
+ tracker_debug ("checking dir names : %s", input_name );
+ int is_converted = FALSE;
+ if( '~' == input_name[0] ) {
+ const char* home_dir = g_get_home_dir ();
+ if( (NULL != home_dir) && (strlen (home_dir)>0) ) {
+ int is_separator = FALSE;
+ char * new_name ;
+ if( G_DIR_SEPARATOR == input_name[1] )
+ is_separator = TRUE;
+ else
+ if(G_DIR_SEPARATOR == home_dir[strlen(home_dir)-1] )
+ is_separator = TRUE;
+ new_name = g_strdup_printf ( "%s%s%s", home_dir, (is_separator? "":G_DIR_SEPARATOR_S), &input_name[1] );
+ if( ( NULL!= new_name ) && (strlen(new_name)<=PATH_MAX) ) {
+ char resolved_name[PATH_MAX+2];
+ if( realpath (new_name, resolved_name) != NULL )
+ list = g_slist_prepend (list, g_strdup (resolved_name));
+ else
+ list = g_slist_prepend (list, g_strdup (new_name));
+ is_converted = TRUE;
+ }
+ if( NULL!= new_name )
+ g_free (new_name);
+ }
+ }
+ if(!is_converted)
+ {
+ char resolved_name[PATH_MAX+2];
+ if( realpath (input_name, resolved_name) != NULL )
+ list = g_slist_prepend (list, g_strdup (resolved_name));
+ else
+ list = g_slist_prepend (list, g_strdup (input_name));
+ }
+ tracker_debug ("resolved to %s\n", list->data );
+ return list;
+}
-static GSList *
-array_to_list (char **array)
+GSList *
+tracker_array_to_list (char **array)
{
- GSList *list;
- int i;
+ GSList *list;
+ int i;
- list = NULL;
+ list = NULL;
- for (i = 0; array[i] != NULL; i++) {
- if (strlen (array[i]) > 0) {
- list = g_slist_prepend (list, g_strdup (array[i]));
- }
- }
+ for (i = 0; array[i] != NULL; i++) {
+ if (strlen (array[i]) > 0) {
+ list = check_dir_name( list, array[i]);
+ }
+ }
- g_strfreev (array);
+ g_strfreev (array);
- return list;
+ return list;
}
+GSList *
+generic_array_to_list (char **array)
+{
+ GSList *list;
+ int i;
+ list = NULL;
-GSList *
-tracker_array_to_list (char **array)
-{
- return array_to_list (array);
+ for (i = 0; array[i] != NULL; i++) {
+ if (strlen (array[i]) > 0) {
+ list = g_slist_prepend (list, g_strdup (array[i]));
+ }
+ }
+
+ g_strfreev (array);
+
+ return list;
+
}
@@ -1921,7 +1973,6 @@
}
-
void
tracker_load_config_file ()
{
@@ -2026,7 +2077,7 @@
NULL);
if (values) {
- tracker->watch_directory_roots_list = array_to_list (values);
+ tracker->watch_directory_roots_list = tracker_array_to_list (values);
} else {
tracker->watch_directory_roots_list = g_slist_prepend (tracker->watch_directory_roots_list, g_strdup (g_get_home_dir ()));
}
@@ -2038,7 +2089,7 @@
NULL);
if (values) {
- tracker->no_watch_directory_list = array_to_list (values);
+ tracker->no_watch_directory_list = tracker_array_to_list (values);
} else {
tracker->no_watch_directory_list = NULL;
@@ -2077,7 +2128,7 @@
NULL);
if (values) {
- tracker->no_index_file_types = array_to_list (values);
+ tracker->no_index_file_types = generic_array_to_list (values);
} else {
tracker->no_index_file_types = NULL;
}
@@ -2129,7 +2180,7 @@
additional_mboxes = g_key_file_get_string_list (key_file, "Emails", "AdditionalMBoxesToIndex", NULL, NULL);
- tracker->additional_mboxes_to_index = array_to_list (additional_mboxes);
+ tracker->additional_mboxes_to_index = tracker_array_to_list (additional_mboxes);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]