summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc/shell
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2008-08-27 12:48:41 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2008-08-27 12:48:41 +0000
commitf3db4ac83a4fa6b82d1671eb348ba3e4084dfde6 (patch)
tree359f38f8d01fa4d9c630e1fec28b236d2c543ed9 /cpukit/libmisc/shell
parent2008-08-27 Ralf Corsépius <ralf.corsepius@rtems.org> (diff)
downloadrtems-f3db4ac83a4fa6b82d1671eb348ba3e4084dfde6.tar.bz2
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.
Diffstat (limited to 'cpukit/libmisc/shell')
-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
3 files changed, 68 insertions, 16 deletions
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()?'$':'#');
+}