SF.net SVN: geany:[4670] branches/sm
statc at users.sourceforge.net
statc at xxxxx
Mon Feb 15 09:41:12 UTC 2010
Revision: 4670
http://geany.svn.sourceforge.net/geany/?rev=4670&view=rev
Author: statc
Date: 2010-02-15 09:41:12 +0000 (Mon, 15 Feb 2010)
Log Message:
-----------
Use absolute paths to project files. Particularly, paths to recent projects' files are now stored as absolute.
Modified Paths:
--------------
branches/sm/ChangeLog
branches/sm/src/project.c
branches/sm/src/sm.c
branches/sm/src/utils.c
branches/sm/src/utils.h
Modified: branches/sm/ChangeLog
===================================================================
--- branches/sm/ChangeLog 2010-02-14 16:57:07 UTC (rev 4669)
+++ branches/sm/ChangeLog 2010-02-15 09:41:12 UTC (rev 4670)
@@ -1,3 +1,10 @@
+2010-02-15 Eugene Arshinov <earshinov(at)gmail(dot)com>
+
+ * src/project.c, src/sm.c, src/utils.c, src/utils.h:
+ Use absolute paths to project files. Particularly, paths to recent
+ projects' files are now stored as absolute.
+
+
2010-02-07 Eugene Arshinov <earshinov(at)gmail(dot)com>
* src/main.c:
Modified: branches/sm/src/project.c
===================================================================
--- branches/sm/src/project.c 2010-02-14 16:57:07 UTC (rev 4669)
+++ branches/sm/src/project.c 2010-02-15 09:41:12 UTC (rev 4670)
@@ -724,7 +724,8 @@
p = app->project;
setptr(p->name, g_strdup(name));
- setptr(p->file_name, g_strdup(file_name));
+ setptr(p->file_name, utils_get_absolute_path(file_name));
+
/* use "." if base_path is empty */
setptr(p->base_path, g_strdup(NZV(base_path) ? base_path : "./"));
@@ -929,12 +930,8 @@
if (load_config(locale_file_name))
{
- gchar *utf8_filename = utils_get_utf8_from_locale(locale_file_name);
-
ui_set_statusbar(TRUE, _("Project \"%s\" opened."), app->project->name);
-
- ui_add_recent_project_file(utf8_filename);
- g_free(utf8_filename);
+ ui_add_recent_project_file(app->project->file_name);
return TRUE;
}
else
@@ -956,6 +953,7 @@
{
GKeyFile *config;
GeanyProject *p;
+ gchar *utf8_filename;
/* there should not be an open project */
g_return_val_if_fail(app->project == NULL && filename != NULL, FALSE);
@@ -968,12 +966,13 @@
}
p = create_project();
+ utf8_filename = utils_get_utf8_from_locale(filename);
stash_group_load_from_key_file(indent_group, config);
p->name = utils_get_setting_string(config, "project", "name", GEANY_STRING_UNTITLED);
p->description = utils_get_setting_string(config, "project", "description", "");
- p->file_name = utils_get_utf8_from_locale(filename);
+ p->file_name = utils_get_absolute_path(utf8_filename);
p->base_path = utils_get_setting_string(config, "project", "base_path", "");
p->file_patterns = g_key_file_get_string_list(config, "project", "file_patterns", NULL, NULL);
@@ -990,6 +989,7 @@
g_signal_emit_by_name(geany_object, "project-open", config);
g_key_file_free(config);
+ g_free(utf8_filename);
update_ui();
return TRUE;
}
Modified: branches/sm/src/sm.c
===================================================================
--- branches/sm/src/sm.c 2010-02-14 16:57:07 UTC (rev 4669)
+++ branches/sm/src/sm.c 2010-02-15 09:41:12 UTC (rev 4670)
@@ -323,14 +323,8 @@
*/
if (strchr(argv0, G_DIR_SEPARATOR) == NULL)
executable_path = argv0;
- else if (g_path_is_absolute(argv0))
- executable_path = argv0;
else
- {
- gchar * curdir = g_get_current_dir();
- executable_path = g_build_filename(curdir, argv0, NULL); /* never freed */
- g_free(curdir);
- }
+ executable_path = utils_get_absolute_path(argv0); /* never freed */
sm_program_val.length = strlen(executable_path);
sm_program_val.value = (char *)executable_path;
Modified: branches/sm/src/utils.c
===================================================================
--- branches/sm/src/utils.c 2010-02-14 16:57:07 UTC (rev 4669)
+++ branches/sm/src/utils.c 2010-02-15 09:41:12 UTC (rev 4670)
@@ -1973,3 +1973,21 @@
}
return ret;
}
+
+
+/* Get absolute path corresponding to @c filename relative to the current directory.
+ * If given @c filename is already absolute, it is just copied and returned.
+ * @param filename file path, relative or absolute
+ * @return absolute file path, must be g_free()'d when no longer needed */
+gchar *utils_get_absolute_path(const gchar *filename)
+{
+ if (g_path_is_absolute(filename))
+ return g_strdup(filename);
+ else
+ {
+ gchar *curdir = g_get_current_dir();
+ gchar *ret = g_build_filename(curdir, filename, NULL);
+ g_free(curdir);
+ return ret;
+ }
+}
Modified: branches/sm/src/utils.h
===================================================================
--- branches/sm/src/utils.h 2010-02-14 16:57:07 UTC (rev 4669)
+++ branches/sm/src/utils.h 2010-02-15 09:41:12 UTC (rev 4670)
@@ -231,4 +231,6 @@
GArray * utils_option_entry_reverse_parse(const GOptionEntry * optentry);
+gchar *utils_get_absolute_path(const gchar *filename);
+
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Commits
mailing list