diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-02-01 19:47:12 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-02-01 19:47:12 +0000 |
commit | 37259910ba73b71e4c32e5913e4d44c245c4502d (patch) | |
tree | 9b5b0a7b3d6180141c3f9d959b6c04647e4a6810 /apps/examples/usbterm/usbterm_main.c | |
parent | 6d35541209058b86bda7b34e47fa28c8c959d365 (diff) | |
download | px4-nuttx-37259910ba73b71e4c32e5913e4d44c245c4502d.tar.gz px4-nuttx-37259910ba73b71e4c32e5913e4d44c245c4502d.tar.bz2 px4-nuttx-37259910ba73b71e4c32e5913e4d44c245c4502d.zip |
Use realine instead of fgets in several other places
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@4357 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'apps/examples/usbterm/usbterm_main.c')
-rw-r--r-- | apps/examples/usbterm/usbterm_main.c | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/apps/examples/usbterm/usbterm_main.c b/apps/examples/usbterm/usbterm_main.c index d51101dd7..066c6f548 100644 --- a/apps/examples/usbterm/usbterm_main.c +++ b/apps/examples/usbterm/usbterm_main.c @@ -50,6 +50,8 @@ #include <errno.h> #include <debug.h> +#include <apps/readline.h> + #include <nuttx/usb/usbdev.h> #include <nuttx/usb/usbdev_trace.h> @@ -297,9 +299,32 @@ int MAIN_NAME(int argc, char *argv[]) fputs("usbterm> ", stdout); fflush(stdout); - /* Get the next line of input from stdin */ + /* Get the next line of input */ + +#ifdef CONFIG_EXAMPLES_USBTERM_FGETS + /* fgets returns NULL on end-of-file or any I/O error */ + + if (fgets(g_usbterm.outbuffer, CONFIG_EXAMPLES_USBTERM_BUFLEN, stdin) == NULL) + { + printf("ERROR: fgets failed: %d\n", errno); + return 1; + } +#else + ret = readline(g_usbterm.outbuffer, CONFIG_EXAMPLES_USBTERM_BUFLEN, stdin, stdout); + + /* Readline normally returns the number of characters read, + * but will return 0 on end of file or a negative value + * if an error occurs. Either will cause the session to + * terminate. + */ - if (fgets(g_usbterm.outbuffer, CONFIG_EXAMPLES_USBTERM_BUFLEN, stdin)) + if (ret <= 0) + { + printf("ERROR: readline failed: %d\n", ret); + return 1; + } +#endif + else { /* Send the line of input via USB */ |