summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--cpukit/ChangeLog7
-rw-r--r--cpukit/libmisc/Makefile.am4
-rw-r--r--cpukit/libmisc/shell/shell.c16
-rw-r--r--cpukit/libmisc/shell/shell.h19
-rw-r--r--cpukit/libmisc/shell/shell_getprompt.c49
5 files changed, 78 insertions, 17 deletions
diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
index a1eeea70b7..8cb8e698ec 100644
--- a/cpukit/ChangeLog
+++ b/cpukit/ChangeLog
@@ -1,3 +1,10 @@
+2008-08-27 Joel Sherrill <joel.sherrill@OARcorp.com>
+
+ * libmisc/Makefile.am, libmisc/shell/shell.c, libmisc/shell/shell.h:
+ Split out rtems_shell_get_prompt() so it can be overridden by the
+ user.
+ * libmisc/shell/shell_getprompt.c: New file.
+
2008-08-27 Ralf Corsépius <ralf.corsepius@rtems.org>
* libnetworking/libc/getproto.c, libnetworking/libc/getprotoent.c,
diff --git a/cpukit/libmisc/Makefile.am b/cpukit/libmisc/Makefile.am
index 2dfa8d8628..20964f8353 100644
--- a/cpukit/libmisc/Makefile.am
+++ b/cpukit/libmisc/Makefile.am
@@ -77,7 +77,9 @@ libshell_a_SOURCES = shell/cat_file.c shell/cmds.c shell/internal.h \
shell/main_rm.c shell/main_rmdir.c shell/main_sleep.c \
shell/main_stackuse.c shell/main_tty.c shell/main_umask.c \
shell/main_unmount.c shell/main_blksync.c shell/main_whoami.c \
- shell/shell.c shell/shell_cmdset.c shell/shell_getchar.c shell/shellconfig.c \
+ shell/shell.c shell/shell_cmdset.c shell/shell_getchar.c \
+ shell/shell_getprompt.c shell/shellconfig.c \
+\
shell/shellconfig.h shell/shell.h shell/shell_makeargs.c \
shell/str2int.c shell/filemode.c shell/pwcache.c shell/print-ls.c\
shell/write_file.c shell/utils-cp.c shell/utils-ls.c \
diff --git a/cpukit/libmisc/shell/shell.c b/cpukit/libmisc/shell/shell.c
index 02f6bfbd4d..f341764beb 100644
--- a/cpukit/libmisc/shell/shell.c
+++ b/cpukit/libmisc/shell/shell.c
@@ -652,22 +652,6 @@ rtems_task rtems_shell_task(rtems_task_argument task_argument)
rtems_task_delete( RTEMS_SELF );
}
-void rtems_shell_get_prompt(
- rtems_shell_env_t *shell_env,
- char *prompt,
- int size)
-{
- char curdir[256];
-
- /* XXX: show_prompt user adjustable */
- getcwd(curdir,sizeof(curdir));
- snprintf(prompt, size - 1, "%s%s[%s] %c ",
- ((shell_env->taskname) ? shell_env->taskname : ""),
- ((shell_env->taskname) ? " " : ""),
- curdir,
- geteuid()?'$':'#');
-}
-
#define RTEMS_SHELL_MAXIMUM_ARGUMENTS (128)
#define RTEMS_SHELL_CMD_SIZE (128)
#define RTEMS_SHELL_CMD_COUNT (32)
diff --git a/cpukit/libmisc/shell/shell.h b/cpukit/libmisc/shell/shell.h
index 2d3da8312d..904d4e0bd9 100644
--- a/cpukit/libmisc/shell/shell.h
+++ b/cpukit/libmisc/shell/shell.h
@@ -225,6 +225,25 @@ struct rtems_shell_filesystems_tt {
rtems_shell_filesystems_mounter_t mounter;
};
+/**
+ * This method dynamically builds the command line prompt string
+ * and places it in @a prompt.
+ *
+ * @param[in] shell_env is the shell execution environment
+ * @param[in] prompt is a pointer to a string buffer area
+ * @param[in] size is length of the prompt buffer area
+ *
+ * @return This method fills in the memory pointed to by @a prompt.
+ *
+ * @note An application specific implementation can be provided
+ * by the user.
+ */
+void rtems_shell_get_prompt(
+ rtems_shell_env_t *shell_env,
+ char *prompt,
+ size_t size
+);
+
#ifdef __cplusplus
}
#endif
diff --git a/cpukit/libmisc/shell/shell_getprompt.c b/cpukit/libmisc/shell/shell_getprompt.c
new file mode 100644
index 0000000000..5a445a0168
--- /dev/null
+++ b/cpukit/libmisc/shell/shell_getprompt.c
@@ -0,0 +1,49 @@
+/*
+ * Dynamically build the shell prompt
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdio.h>
+#include <time.h>
+
+#include <rtems.h>
+#include <rtems/error.h>
+#include <rtems/libio.h>
+#include <rtems/libio_.h>
+#include <rtems/system.h>
+#include <rtems/shell.h>
+#include "internal.h"
+
+#include <string.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <errno.h>
+#include <pwd.h>
+
+void rtems_shell_get_prompt(
+ rtems_shell_env_t *shell_env,
+ char *prompt,
+ size_t size
+)
+{
+ char curdir[256];
+
+ /* XXX: show_prompt user adjustable */
+ getcwd(curdir,sizeof(curdir));
+ snprintf(prompt, size - 1, "%s%s[%s] %c ",
+ ((shell_env->taskname) ? shell_env->taskname : ""),
+ ((shell_env->taskname) ? " " : ""),
+ curdir,
+ geteuid()?'$':'#');
+}