summaryrefslogtreecommitdiff
path: root/gtk/gtkfilesel.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@src.gnome.org>1998-05-01 04:23:59 +0000
committerOwen Taylor <otaylor@src.gnome.org>1998-05-01 04:23:59 +0000
commit05bc6a5b3639869eee69cfa4a2db8b8968b247cb (patch)
tree58bad8f48d24c88dfc95206defe79dd0464256f6 /gtk/gtkfilesel.c
parente909f843f8e2949144e624ce1af4fd1737396f62 (diff)
downloadgtk+-05bc6a5b3639869eee69cfa4a2db8b8968b247cb.tar.gz
Merged changes from gtk-1-0. Check ChangeLog for details.
Diffstat (limited to 'gtk/gtkfilesel.c')
-rw-r--r--gtk/gtkfilesel.c22
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;
}