summaryrefslogtreecommitdiff
path: root/apps/interpreters
diff options
context:
space:
mode:
authorGregory Nutt <gnutt@nuttx.org>2014-11-06 13:19:41 -0600
committerGregory Nutt <gnutt@nuttx.org>2014-11-06 13:19:41 -0600
commit4a1150d2cb2721cc2e7facd02294932d8683f721 (patch)
treecdeba332da68bb51041f3fb6acb5c7cc16e250de /apps/interpreters
parentf932428e641eb178465b9cfb2f6d0608cec34898 (diff)
downloadnuttx-4a1150d2cb2721cc2e7facd02294932d8683f721.tar.gz
nuttx-4a1150d2cb2721cc2e7facd02294932d8683f721.tar.bz2
nuttx-4a1150d2cb2721cc2e7facd02294932d8683f721.zip
BAS: Experimenta change -- ignore carriage returns in CRLF sequence
Diffstat (limited to 'apps/interpreters')
-rw-r--r--apps/interpreters/bas/fs.c54
1 files changed, 31 insertions, 23 deletions
diff --git a/apps/interpreters/bas/fs.c b/apps/interpreters/bas/fs.c
index 790774543..df4258d1f 100644
--- a/apps/interpreters/bas/fs.c
+++ b/apps/interpreters/bas/fs.c
@@ -285,24 +285,43 @@ static int edit(int chn, int onl)
#else
if ((f->inCapacity + 1) < sizeof(f->inBuf))
{
- if (ch != '\n')
+ /* Ignore carriage returns that may accompnay a CRLF sequence.
+ * REVISIT: Some environments may have other line termination rules
+ */
+
+ if (ch != '\r')
{
- if (ch >= '\0' && ch < ' ')
+ /* Is this a new line character */
+
+ if (ch != '\n')
{
- FS_putChar(chn, '^');
- FS_putChar(chn, ch ? (ch + 'a' - 1) : '@');
+ /* No.. escape control characters other than newline and
+ * carriage return
+ */
+
+ if (ch >= '\0' && ch < ' ')
+ {
+ FS_putChar(chn, '^');
+ FS_putChar(chn, ch ? (ch + 'a' - 1) : '@');
+ }
+
+ /* Output normal, printable characters */
+
+ else
+ {
+ FS_putChar(chn, ch);
+ }
}
- else
+
+ /* Echo the newline (or not) */
+
+ else if (onl)
{
- FS_putChar(chn, ch);
+ FS_putChar(chn, '\n');
}
- }
- else if (onl)
- {
- FS_putChar(chn, '\n');
- }
- f->inBuf[f->inCapacity++] = ch;
+ f->inBuf[f->inCapacity++] = ch;
+ }
}
#endif
}
@@ -813,7 +832,6 @@ int FS_lock(int chn, off_t offset, off_t length, int mode, int w)
int FS_truncate(int chn)
{
-#ifdef CONFIG_INTERPRETER_BAS_HAVE_FTRUNCATE
int fd;
off_t o;
@@ -844,10 +862,6 @@ int FS_truncate(int chn)
}
return 0;
-#else
- FS_errmsg = strerror(ENOSYS);
- return -1;
-#endif
}
void FS_shellmode(int dev)
@@ -1669,12 +1683,6 @@ int FS_appendToString(int chn, struct String *s, int onl)
f->inSize = f->inCapacity = 0;
}
- if (s->length >= 2 && s->character[s->length - 2] == '\r')
- {
- s->character[s->length - 2] = '\n';
- --s->length;
- }
-
return 0;
}
}