static CompletionState*
cmpl_init_state (void)
{
- gchar *getcwd_buf;
+ gchar *sys_getcwd_buf;
gchar *utf8_cwd;
CompletionState *new_state;
new_state = g_new (CompletionState, 1);
- /* g_get_current_dir() returns a GSystemCodepageString */
- getcwd_buf = g_get_current_dir ();
- utf8_cwd = g_filename_to_utf8 (getcwd_buf);
- g_free (getcwd_buf);
+ /* g_get_current_dir() returns a string in the "system" charset */
+ sys_getcwd_buf = g_get_current_dir ();
+ utf8_cwd = g_filename_to_utf8 (sys_getcwd_buf);
+ g_free (sys_getcwd_buf);
tryagain:
if (!new_state->reference_dir)
{
/* Directories changing from underneath us, grumble */
- strcpy (getcwd_buf, G_DIR_SEPARATOR_S);
+ strcpy (utf8_cwd, G_DIR_SEPARATOR_S);
goto tryagain;
}
else
{
/* If no possible candidates, use the cwd */
- gchar *curdir = g_get_current_dir ();
- gchar *utf8_curdir = g_filename_to_utf8 (curdir);
+ gchar *sys_curdir = g_get_current_dir ();
+ gchar *utf8_curdir = g_filename_to_utf8 (sys_curdir);
- g_free (curdir);
+ g_free (sys_curdir);
new_dir = open_dir (utf8_curdir, cmpl_state);
if (stat_subdirs)
{
- /* Here we know path->str is a GSystemCodepageString */
+ /* Here we know path->str is a "system charset" string */
if (stat (path->str, &ent_sbuf) >= 0 && S_ISDIR (ent_sbuf.st_mode))
sent->entries[i].is_dir = TRUE;
else
static gchar*
find_parent_dir_fullname (gchar* dirname)
{
- gchar *orig_dir;
+ gchar *sys_orig_dir;
gchar *result;
gchar *sys_cwd;
gchar *sys_dirname;
- orig_dir = g_get_current_dir ();
-
+ sys_orig_dir = g_get_current_dir ();
sys_dirname = g_filename_from_utf8 (dirname);
if (chdir (sys_dirname) != 0 || chdir ("..") != 0)
{
g_free (sys_dirname);
+ g_free (sys_orig_dir)
cmpl_errno = errno;
return NULL;
}
result = g_filename_to_utf8 (sys_cwd);
g_free (sys_cwd);
- if (chdir (orig_dir) != 0)
+ if (chdir (sys_orig_dir) != 0)
{
cmpl_errno = errno;
+ g_free (sys_orig_dir)
return NULL;
}
- g_free (orig_dir);
+ g_free (sys_orig_dir);
return result;
}