diff options
author | Owen Taylor <otaylor@src.gnome.org> | 1998-05-01 04:23:59 +0000 |
---|---|---|
committer | Owen Taylor <otaylor@src.gnome.org> | 1998-05-01 04:23:59 +0000 |
commit | 05bc6a5b3639869eee69cfa4a2db8b8968b247cb (patch) | |
tree | 58bad8f48d24c88dfc95206defe79dd0464256f6 /gtk/gtkfilesel.c | |
parent | e909f843f8e2949144e624ce1af4fd1737396f62 (diff) | |
download | gtk+-05bc6a5b3639869eee69cfa4a2db8b8968b247cb.tar.gz |
Merged changes from gtk-1-0. Check ChangeLog for details.
Diffstat (limited to 'gtk/gtkfilesel.c')
-rw-r--r-- | gtk/gtkfilesel.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/gtk/gtkfilesel.c b/gtk/gtkfilesel.c index e1e7d4998e..376ef764c4 100644 --- a/gtk/gtkfilesel.c +++ b/gtk/gtkfilesel.c @@ -1436,7 +1436,13 @@ cmpl_last_valid_char (CompletionState* cmpl_state) static gchar* cmpl_completion_fullname (gchar* text, CompletionState* cmpl_state) { - if (text[0] == '/') + static char nothing[2] = ""; + + if (!cmpl_state_okay (cmpl_state)) + { + return nothing; + } + else if (text[0] == '/') { strcpy (cmpl_state->updated_text, text); } @@ -1515,10 +1521,14 @@ cmpl_init_state (void) if (!getcwd (getcwd_buf, MAXPATHLEN)) #endif { - cmpl_errno = errno; - return NULL; + /* Oh joy, we can't get the current directory. Um..., we should have + * a root directory, right? Right? (Probably not portable to non-Unix) + */ + strcpy (getcwd_buf, "/"); } +tryagain: + new_state->reference_dir = NULL; new_state->completion_dir = NULL; new_state->active_completion_dir = NULL; @@ -1542,7 +1552,11 @@ cmpl_init_state (void) new_state->reference_dir = open_dir (getcwd_buf, new_state); if (!new_state->reference_dir) - return NULL; + { + /* Directories changing from underneath us, grumble */ + strcpy (getcwd_buf, "/"); + goto tryagain; + } return new_state; } |