diff options
Diffstat (limited to 'apps/interpreters/bas/fs.h')
-rw-r--r-- | apps/interpreters/bas/fs.h | 236 |
1 files changed, 157 insertions, 79 deletions
diff --git a/apps/interpreters/bas/fs.h b/apps/interpreters/bas/fs.h index 5dd1027f9..ed4055908 100644 --- a/apps/interpreters/bas/fs.h +++ b/apps/interpreters/bas/fs.h @@ -1,32 +1,73 @@ -#ifndef FILE_H -#define FILE_H +/**************************************************************************** + * apps/interpreters/bas/fs.h + * + * Copyright (c) 1999-2014 Michael Haardt + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Adapted to NuttX and re-released under a 3-clause BSD license: + * + * Copyright (C) 2014 Gregory Nutt. All rights reserved. + * Authors: Alan Carvalho de Assis <Alan Carvalho de Assis> + * Gregory Nutt <gnutt@nuttx.org> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ -#include "str.h" +#ifndef __APPS_EXAMPLES_BAS_FS_H +#define __APPS_EXAMPLES_BAS_FS_H -struct FileStream -{ - int dev,tty; - int recLength; - - int infd; - char inBuf[1024]; - size_t inSize,inCapacity; +/**************************************************************************** + * Included Files + ****************************************************************************/ - int outfd; - int outPos; - int outLineWidth; - int outColWidth; - char outBuf[1024]; - size_t outSize,outCapacity; - int outforeground,outbackground; - - int randomfd; - int recPos; - char *recBuf; - struct StringField field; +#include "str.h" - int binaryfd; -}; +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ #define FS_COLOUR_BLACK 0 #define FS_COLOUR_BLUE 1 @@ -54,66 +95,103 @@ struct FileStream #define FS_LOCK_SHARED 1 #define FS_LOCK_EXCLUSIVE 2 +/**************************************************************************** + * Public Types + ****************************************************************************/ + +struct FileStream +{ + int dev,tty; + int recLength; + + int infd; + char inBuf[1024]; + size_t inSize,inCapacity; + + int outfd; + int outPos; + int outLineWidth; + int outColWidth; + char outBuf[1024]; + size_t outSize,outCapacity; + int outforeground,outbackground; + + int randomfd; + int recPos; + char *recBuf; + struct StringField field; + + int binaryfd; +}; + +/**************************************************************************** + * Public Data + ****************************************************************************/ + extern const char *FS_errmsg; -extern int FS_opendev(int dev, int infd, int outfd); -extern int FS_openin(const char *name); -extern int FS_openinChn(int chn, const char *name, int mode); -extern int FS_openout(const char *name); -extern int FS_openoutChn(int chn, const char *name, int mode, int append); -extern int FS_openrandomChn(int chn, const char *name, int mode, int recLength); -extern int FS_openbinaryChn(int chn, const char *name, int mode); -extern int FS_freechn(void); -extern int FS_flush(int dev); -extern int FS_close(int dev); +/**************************************************************************** + * Public Function Prototypes + ****************************************************************************/ + +int FS_opendev(int dev, int infd, int outfd); +int FS_openin(const char *name); +int FS_openinChn(int chn, const char *name, int mode); +int FS_openout(const char *name); +int FS_openoutChn(int chn, const char *name, int mode, int append); +int FS_openrandomChn(int chn, const char *name, int mode, int recLength); +int FS_openbinaryChn(int chn, const char *name, int mode); +int FS_freechn(void); +int FS_flush(int dev); +int FS_close(int dev); #ifdef CONFIG_SERIAL_TERMIOS -extern int FS_istty(int chn); +int FS_istty(int chn); #else # define FS_istty(chn) (1) #endif -extern int FS_lock(int chn, off_t offset, off_t length, int mode, int w); -extern int FS_truncate(int chn); -extern void FS_shellmode(int chn); -extern void FS_fsmode(int chn); -extern void FS_xonxoff(int chn, int on); -extern int FS_put(int chn); -extern int FS_putChar(int dev, char ch); -extern int FS_putChars(int dev, const char *chars); -extern int FS_putString(int dev, const struct String *s); -extern int FS_putItem(int dev, const struct String *s); -extern int FS_putbinaryString(int chn, const struct String *s); -extern int FS_putbinaryInteger(int chn, long int x); -extern int FS_putbinaryReal(int chn, double x); -extern int FS_getbinaryString(int chn, struct String *s); -extern int FS_getbinaryInteger(int chn, long int *x); -extern int FS_getbinaryReal(int chn, double *x); -extern int FS_nextcol(int dev); -extern int FS_nextline(int dev); -extern int FS_tab(int dev, int position); -extern int FS_cls(int chn); -extern int FS_locate(int chn, int line, int column); -extern int FS_colour(int chn, int foreground, int background); -extern int FS_get(int chn); -extern int FS_getChar(int dev); -extern int FS_eof(int chn); -extern long int FS_loc(int chn); -extern long int FS_lof(int chn); -extern int FS_width(int dev, int width); -extern int FS_zone(int dev, int zone); -extern long int FS_recLength(int chn); -extern void FS_field(int chn, struct String *s, long int position, long int length); -extern int FS_appendToString(int dev, struct String *s, int onl); -extern int FS_inkeyChar(int dev, int ms); -extern void FS_sleep(double s); -extern int FS_seek(int chn, long int record); -extern void FS_closefiles(void); -extern int FS_charpos(int chn); -extern int FS_copy(const char *from, const char *to); -extern int FS_portInput(int address); -extern int FS_memInput(int address); -extern int FS_portOutput(int address, int value); -extern int FS_memOutput(int address, int value); +int FS_lock(int chn, off_t offset, off_t length, int mode, int w); +int FS_truncate(int chn); +void FS_shellmode(int chn); +void FS_fsmode(int chn); +void FS_xonxoff(int chn, int on); +int FS_put(int chn); +int FS_putChar(int dev, char ch); +int FS_putChars(int dev, const char *chars); +int FS_putString(int dev, const struct String *s); +int FS_putItem(int dev, const struct String *s); +int FS_putbinaryString(int chn, const struct String *s); +int FS_putbinaryInteger(int chn, long int x); +int FS_putbinaryReal(int chn, double x); +int FS_getbinaryString(int chn, struct String *s); +int FS_getbinaryInteger(int chn, long int *x); +int FS_getbinaryReal(int chn, double *x); +int FS_nextcol(int dev); +int FS_nextline(int dev); +int FS_tab(int dev, int position); +int FS_cls(int chn); +int FS_locate(int chn, int line, int column); +int FS_colour(int chn, int foreground, int background); +int FS_get(int chn); +int FS_getChar(int dev); +int FS_eof(int chn); +long int FS_loc(int chn); +long int FS_lof(int chn); +int FS_width(int dev, int width); +int FS_zone(int dev, int zone); +long int FS_recLength(int chn); +void FS_field(int chn, struct String *s, long int position, long int length); +int FS_appendToString(int dev, struct String *s, int onl); +int FS_inkeyChar(int dev, int ms); +void FS_sleep(double s); +int FS_seek(int chn, long int record); +void FS_closefiles(void); +int FS_charpos(int chn); +int FS_copy(const char *from, const char *to); +int FS_portInput(int address); +int FS_memInput(int address); +int FS_portOutput(int address, int value); +int FS_memOutput(int address, int value); -#endif +#endif /* __APPS_EXAMPLES_BAS_FS_H */ |