Do not display current directory in non-interactive command mode.
authorshort <>
Sat, 13 Sep 2003 18:11:29 +0000 (18:11 +0000)
committershort <>
Sat, 13 Sep 2003 18:11:29 +0000 (18:11 +0000)
src/client/cmdline/cmd_cd.c
src/client/cmdline/cmd_cd.h
src/client/cmdline/cmd_shell.c
src/client/cmdline/main.c

index 9f85e8d..4dde314 100644 (file)
@@ -86,31 +86,37 @@ gchar *r,*s;
 }
 
 
-void cmd_cd(const char **cmd_argv,GError **errp)
+void cmd_cd_internal(const gchar *targetdir,GError **errp)
 {
 CaptiveDirectoryObject *captive_directory_object;
 
+       g_return_if_fail(targetdir!=NULL);
        g_return_if_fail(!errp || !*errp);
 
-       if (cmd_argv[0]) {
-const gchar *targetdir=cmdline_path_from_cwd(cmd_argv[0]);
+       if (!errvfsresult_to_gerr(errp,captive_directory_new_open(
+                       &captive_directory_object,      /* captive_directory_object_return */
+                       cmdline_captive_vfs_object,     /* captive_vfs_object */
+                       targetdir))) {  /* pathname */
+               err_cleanup(errp);
+               g_set_error(errp,CMDLINE_CMD_CD_ERROR,CMDLINE_CMD_CD_ERROR_CANNOT_OPEN_DIRECTORY,
+                               _("Cannot open directory: %s"),targetdir);
+               return;
+               }
 
-               if (!errvfsresult_to_gerr(errp,captive_directory_new_open(
-                               &captive_directory_object,      /* captive_directory_object_return */
-                               cmdline_captive_vfs_object,     /* captive_vfs_object */
-                               targetdir))) {  /* pathname */
-                       err_cleanup(errp);
-                       g_set_error(errp,CMDLINE_CMD_CD_ERROR,CMDLINE_CMD_CD_ERROR_CANNOT_OPEN_DIRECTORY,
-                                       _("Cannot open directory: %s"),targetdir);
-                       return;
-                       }
+       g_object_unref(captive_directory_object);
 
-               g_object_unref(captive_directory_object);
+       g_free((/*de-const*/ gchar *)cmdline_cwd);
+       cmdline_cwd=g_strdup(targetdir);
+       g_assert(g_path_is_absolute(cmdline_cwd));
+}
 
-               g_free((/*de-const*/ gchar *)cmdline_cwd);
-               cmdline_cwd=g_strdup(targetdir);
-               g_assert(g_path_is_absolute(cmdline_cwd));
-               }
+
+void cmd_cd(const char **cmd_argv,GError **errp)
+{
+       g_return_if_fail(!errp || !*errp);
+
+       if (cmd_argv[0])
+               cmd_cd_internal(cmdline_path_from_cwd(cmd_argv[0]),errp);
 
        printf("Guest-OS CWD: %s\n",cmdline_cwd);
 }
index c480f14..a8f1321 100644 (file)
@@ -35,6 +35,7 @@ typedef enum {
 
 extern const struct poptOption cmd_cd_table[];
 
+void cmd_cd_internal(const gchar *targetdir,GError **errp);
 void cmd_cd(const char **cmd_argv,GError **errp);
 
 G_CONST_RETURN gchar *cmdline_path_from_cwd(const gchar *relative);
index 3ed0d36..5e5b3fd 100644 (file)
@@ -72,6 +72,7 @@ char line[1024],*s;
 int errint,line_argc;
 const char **line_argv=NULL;
 gchar *prompt;
+const char *cmd_cd_args[]={NULL};
 
        g_return_if_fail(!errp || !*errp);
 
@@ -79,6 +80,10 @@ gchar *prompt;
        puts(_("Line editing not available, please recompile with readline library installed"));
 #endif /* HAVE_LIBREADLINE */
 
+       cmd_cd(cmd_cd_args,errp);       /* Show current directory. */
+       if (errp && *errp)
+               return;
+
        for (;;) {
                prompt=g_strdup_printf(PROMPT_STRING,cmdline_cwd);
 #ifdef HAVE_LIBREADLINE
index 299c28f..8ff0c23 100644 (file)
@@ -221,7 +221,6 @@ int errint;
 const char **cmd_argv,**csp;
 int cmd_argc;
 GError *gerr=NULL;
-const char *cmd_cd_root_args[]={"/",NULL};
 struct captive_options options;
 
        /* Do not set g_log_set_always_fatal() here as we would not be able
@@ -292,7 +291,7 @@ struct captive_options options;
                }
        captive_options_free(&options);
 
-       cmd_cd(cmd_cd_root_args,&gerr);
+       cmd_cd_internal("/",&gerr);
        if (gerr) {
                err_cleanup(&gerr);
                return EXIT_FAILURE;