OSDN Git Service

projects clean up 1
[pinoc/pinoc.git] / test / lowio_test / lowio_test / lowsrc.c
1 /***********************************************************************/
2 /*                                                                     */
3 /*  FILE        :lowsrc.c                                              */
4 /*  DATE        :Sun, Feb 24, 2013                                     */
5 /*  DESCRIPTION :Program of I/O Stream                                 */
6 /*  CPU TYPE    :H8/3069R                                              */
7 /*                                                                     */
8 /*  This file is generated by Renesas Project Generator (Ver.4.16).    */
9 /*                                                                     */
10 /***********************************************************************/
11                   
12
13
14
15 #include <string.h>
16 #include <stdio.h>
17 #include <stddef.h>
18 #include "typedefine.h"
19 #include "lowsrc.h"
20
21 #if __STDC_VERSION__ == 199901L
22 #ifndef _STDIO_C89
23 /* \83t\83@\83C\83\8b\94Ô\8d\86 */
24 #define STDIN  0                    /* \95W\8f\80\93ü\97Í           (\83R\83\93\83\\81[\83\8b) */
25 #define STDOUT 1                    /* \95W\8f\80\8fo\97Í           (\83R\83\93\83\\81[\83\8b) */
26 #define STDERR 2                    /* \95W\8f\80\83G\83\89\81[\8fo\97Í     (\83R\83\93\83\\81[\83\8b) */
27
28 #define FLMIN  0                    /* \8dÅ\8f¬\82Ì\83t\83@\83C\83\8b\94Ô\8d\86              */
29 #define _MOPENR 0x1
30 #define _MOPENW 0x2
31 #define _MOPENA 0x4
32 #define _MTRUNC 0x8
33 #define _MCREAT 0x10
34 #define _MBIN   0x20
35 #define _MEXCL  0x40
36 #define _MALBUF 0x40
37 #define _MALFIL 0x80
38 #define _MEOF   0x100
39 #define _MERR   0x200
40 #define _MLBF   0x400
41 #define _MNBF   0x800
42 #define _MREAD  0x1000
43 #define _MWRITE 0x2000
44 #define _MBYTE  0x4000
45 #define _MWIDE  0x8000
46 /* \83t\83@\83C\83\8b\83t\83\89\83O */
47 #define O_RDONLY 0x0001 /* \93Ç\82Ý\8d\9e\82Ý\90ê\97p\82É\83I\81[\83v\83\93                      */
48 #define O_WRONLY 0x0002 /* \8f\91\82«\8fo\82µ\90ê\97p\82É\83I\81[\83v\83\93                      */
49 #define O_RDWR   0x0004 /* \93Ç\82Ý\8f\91\82«\81A\97¼\97p\82É\83I\81[\83v\83\93                    */
50 #define O_CREAT  0x0008 /* \83t\83@\83C\83\8b\82ª\91\8dÝ\82µ\82È\82¢\8fê\8d\87\81A\90V\8bK\8dì\90¬          */
51 #define O_TRUNC  0x0010 /* \83t\83@\83C\83\8b\82ª\91\8dÝ\82·\82é\8fê\8d\87\81A\83t\83@\83C\83\8b\83T\83C\83Y\82ð0\82É */
52 #define O_APPEND 0x0020 /* \8e\9f\82É\93Ç\82Ý\8f\91\82«\82ð\8ds\82¤\83t\83@\83C\83\8b\93à\82Ì\88Ê\92u\82ð\90Ý\92è    */
53                         /* 0\81F\83t\83@\83C\83\8b\82Ì\90æ\93ª  1\81F\83t\83@\83C\83\8b\82Ì\8dÅ\8cã        */
54
55 /* \93Á\8eê\95\8e\9a\83R\81[\83h */
56 #define CR 0x0d                     /* \95\9c\8bA                            */
57 #define LF 0x0a                     /* \89ü\8ds                            */
58
59 const int _nfiles = IOSTREAM;  /* \93ü\8fo\97Í\83t\83@\83C\83\8b\90\94\82ð\8ew\92è               */
60 char flmod[IOSTREAM];          /* \83I\81[\83v\83\93\82µ\82½\83t\83@\83C\83\8b\82Ì\83\82\81[\83h\90Ý\92è\8fê\8f\8a */
61
62 unsigned char sml_buf[IOSTREAM];
63
64 #define FPATH_STDIN     "C:\\stdin"
65 #define FPATH_STDOUT    "C:\\stdout"
66 #define FPATH_STDERR    "C:\\stderr"
67
68 /* H8\83m\81[\83}\83\8b\83\82\81[\83h\81ESH\81ERX */
69 #if defined( __2000N__ ) || defined( __2600N__ ) || defined( __300HN__ ) || defined( _SH ) || defined( __RX )
70 /* \95W\8f\80\93ü\97Í\82©\82ç\82Ì1\95\8e\9a\93ü\97Í\8f\88\97\9d */
71 extern void charput(char);
72 /* \95W\8f\80\8fo\97Í\82Ö\82Ì1\95\8e\9a\8fo\97Í\8f\88\97\9d */
73 extern char charget(void);
74 /* \83t\83@\83C\83\8b\82Ö\82Ì1\95\8e\9a\8fo\97Í\8f\88\97\9d */
75 extern char fcharput(char, unsigned char);
76 /* \83t\83@\83C\83\8b\82©\82ç\82Ì1\95\8e\9a\93ü\97Í\8f\88\97\9d */
77 extern char fcharget(char*, unsigned char);
78 /* \83t\83@\83C\83\8b\82Ì\83I\81[\83v\83\93 */
79 extern char fileopen(char*, unsigned char, unsigned char*);
80 /* \83t\83@\83C\83\8b\82Ì\83N\83\8d\81[\83Y */
81 extern char fileclose(unsigned char);
82 /* \83t\83@\83C\83\8b\83|\83C\83\93\83^\82Ì\88Ú\93® */
83 extern char fpseek(unsigned char, long, unsigned char);
84 /* \83t\83@\83C\83\8b\83|\83C\83\93\83^\82Ì\8eæ\93¾ */
85 extern char fptell(unsigned char, long*);
86
87 /* H8\83A\83h\83o\83\93\83X\83g\83\82\81[\83h */
88 #elif defined( __2000A__ ) || defined( __2600A__ ) || defined( __300HA__ ) || defined( __H8SXN__ ) || defined( __H8SXA__ ) || defined( __H8SXM__ ) || defined( __H8SXX__ )
89 /* \95W\8f\80\93ü\97Í\82©\82ç\82Ì1\95\8e\9a\93ü\97Í\8f\88\97\9d */
90 extern void charput(char);
91 /* \95W\8f\80\8fo\97Í\82Ö\82Ì1\95\8e\9a\8fo\97Í\8f\88\97\9d */
92 extern char charget(void);
93 /* \83t\83@\83C\83\8b\82Ö\82Ì1\95\8e\9a\8fo\97Í\8f\88\97\9d */
94 extern char fcharput(char, unsigned char);
95 /* \83t\83@\83C\83\8b\82©\82ç\82Ì1\95\8e\9a\93ü\97Í\8f\88\97\9d */
96 extern char fcharget(char*, unsigned char);
97 /* \83t\83@\83C\83\8b\82Ì\83I\81[\83v\83\93 */
98 /* \88ø\90\94\8ai\94[\83\8c\83W\83X\83^3\8ew\92è */
99 extern char __regparam3 fileopen(char*, unsigned char, unsigned char*);
100 /* \83t\83@\83C\83\8b\82Ì\83N\83\8d\81[\83Y */
101 extern char fileclose(unsigned char);
102 /* \83t\83@\83C\83\8b\83|\83C\83\93\83^\82Ì\88Ú\93® */
103 extern char fpseek(unsigned char, long, unsigned char);
104 /* \83t\83@\83C\83\8b\83|\83C\83\93\83^\82Ì\8eæ\93¾ */
105 extern char fptell(unsigned char, long*);
106
107 /* H8300\81EH8300L */
108 #elif defined( __300__ ) || defined( __300L__ )
109 /* \95W\8f\80\93ü\97Í\82©\82ç\82Ì1\95\8e\9a\93ü\97Í\8f\88\97\9d */
110 extern void charput(char);
111 /* \95W\8f\80\8fo\97Í\82Ö\82Ì1\95\8e\9a\8fo\97Í\8f\88\97\9d */
112 extern char charget(void);
113 /* \83t\83@\83C\83\8b\82Ö\82Ì1\95\8e\9a\8fo\97Í\8f\88\97\9d */
114 extern char fcharput(char, unsigned char);
115 /* \83t\83@\83C\83\8b\82©\82ç\82Ì1\95\8e\9a\93ü\97Í\8f\88\97\9d */
116 extern char fcharget(char*, unsigned char);
117 /* \83t\83@\83C\83\8b\82Ì\83I\81[\83v\83\93 */
118 /* \88ø\90\94\8ai\94[\83\8c\83W\83X\83^3\8ew\92è */
119 extern char __regparam3 fileopen(char*, unsigned char, unsigned char*);
120 /* \83t\83@\83C\83\8b\82Ì\83N\83\8d\81[\83Y */
121 extern char fileclose(unsigned char);
122 /* \83t\83@\83C\83\8b\83|\83C\83\93\83^\82Ì\88Ú\93® */
123 /* \88ø\90\94\8ai\94[\83\8c\83W\83X\83^3\8ew\92è */
124 extern char __regparam3 fpseek(unsigned char, long, unsigned char);
125 /* \83t\83@\83C\83\8b\83|\83C\83\93\83^\82Ì\8eæ\93¾ */
126 extern char fptell(unsigned char, long*);
127 #endif
128
129 #include <stdio.h>
130 FILE *_Files[IOSTREAM]; // \83t\83@\83C\83\8b\8d\\91¢\91Ì
131 char *env_list[] = { //\8aÂ\8b«\95Ï\90\94\95\8e\9a\97ñ\94z\97ñ(**environ)
132     "ENV1=temp01",
133     "ENV2=temp02",
134     "ENV9=end",
135     '\0'            // \8aÂ\8b«\95Ï\90\94\94z\97ñ\8fI\92[NULL
136 };
137
138 char **environ = env_list;
139
140 /****************************************************************************/
141 /* _INIT_IOLIB                                                              */
142 /*  Initialize C library Functions, if necessary.                           */
143 /*  Define USES_SIMIO on Assembler Option.                                  */
144 /****************************************************************************/
145 void _INIT_IOLIB( void )
146 {
147     /* \95W\8f\80\93ü\8fo\97Í\97p\83t\83@\83C\83\8b\82ð\83I\81[\83v\83\93\81A\82Ü\82½\82Í\90\90¬\82µ\82Ü\82·\81B\8aeFILE\8d\\91¢\91Ì\82Ì     */
148     /* \8f\89\8aú\89»\82Í\83\89\83C\83u\83\89\83\8a\93à\82Å\8ds\82Á\82Ä\82¢\82Ü\82·\81B\8ae\83t\83@\83C\83\8b\8d\\91¢\91Ì\82Ì_Buf\83\81\83\93\83o\82É   */
149     /* freopen()\82É\82æ\82Á\82Ä\83\8a\83Z\83b\83g\82³\82ê\82½\83o\83b\83t\83@\8dÅ\8fI\83|\83C\83\93\83^\82ð\8dÄ\90Ý\92è\82µ\82Ü\82·\81B  */
150
151     /* \95W\8f\80\93ü\97Í\97p\83t\83@\83C\83\8b                                                   */
152     if( freopen( FPATH_STDIN, "r", stdin ) == NULL )
153         stdin->_Mode = 0xffff;          /* \83I\81[\83v\83\93\8e¸\94s\8e\9e\82Ì\83A\83N\83Z\83X\8bÖ\8e~     */
154     stdin->_Mode |= _MOPENR;            /* \83t\83@\83C\83\8b\82ð\93Ç\82Ý\8d\9e\82Ý\90ê\97p\82É\90Ý\92è     */
155     stdin->_Mode |= _MNBF;              /* \83f\81[\83^\82Ì\83o\83b\83t\83@\83\8a\83\93\83O\82È\82µ\82É\90Ý\92è */
156     stdin->_Bend = stdin->_Buf + 1;     /* \83o\83b\83t\83@\8dÅ\8fI\83|\83C\83\93\83^\82Ì\8dÄ\90Ý\92è     */
157
158     /* \95W\8f\80\8fo\97Í\97p\83t\83@\83C\83\8b                                                   */
159     if( freopen( FPATH_STDOUT, "w", stdout ) == NULL ) 
160         stdout->_Mode = 0xffff;         /* \83I\81[\83v\83\93\8e¸\94s\8e\9e\82Ì\83A\83N\83Z\83X\8bÖ\8e~     */
161     stdout->_Mode |= _MNBF;             /* \83f\81[\83^\82Ì\83o\83b\83t\83@\83\8a\83\93\83O\82È\82µ\82É\90Ý\92è */
162     stdout->_Bend = stdout->_Buf + 1;   /* \83o\83b\83t\83@\8dÅ\8fI\83|\83C\83\93\83^\82Ì\8dÄ\90Ý\92è     */
163     
164     /* \95W\8f\80\83G\83\89\81[\8fo\97Í\97p\83t\83@\83C\83\8b                                             */
165     if( freopen( FPATH_STDERR, "w", stderr ) == NULL )
166         stderr->_Mode = 0xffff;         /* \83I\81[\83v\83\93\8e¸\94s\8e\9e\82Ì\83A\83N\83Z\83X\8bÖ\8e~     */
167     stderr->_Mode |= _MNBF;             /* \83f\81[\83^\82Ì\83o\83b\83t\83@\83\8a\83\93\83O\82È\82µ\82É\90Ý\92è */
168     stderr->_Bend = stderr->_Buf + 1;   /* \83o\83b\83t\83@\8dÅ\8fI\83|\83C\83\93\83^\82Ì\8dÄ\90Ý\92è     */
169 }
170
171 /****************************************************************************/
172 /* _CLOSEALL                                                                */
173 /****************************************************************************/
174 void _CLOSEALL( void )
175 {
176     int i;
177
178     for( i=0; i < _nfiles; i++ )
179     {
180         /* \83t\83@\83C\83\8b\82ª\83I\81[\83v\83\93\82µ\82Ä\82¢\82é\82©\83`\83F\83b\83N                              */
181         if( _Files[i]->_Mode & (_MOPENR | _MOPENW | _MOPENA ) )
182         fclose( _Files[i] );    /* \83t\83@\83C\83\8b\82ð\83N\83\8d\81[\83Y\82·\82é                    */
183     }
184 }
185
186 /**************************************************************************/
187 /*       open:file open                                                   */
188 /*          Return value:File number (Pass)                               */
189 /*                       -1          (Failure)                            */
190 /**************************************************************************/
191 int open(char *name,                        /* \83t\83@\83C\83\8b\96¼                     */
192      int  mode,                         /* \83I\81[\83v\83\93\83\82\81[\83h                 */
193      int  flg)                          /* \83I\81[\83v\83\93\83t\83\89\83O                 */
194 {
195
196    
197     if( strcmp( name, FPATH_STDIN ) == 0 )      /* \95W\8f\80\93ü\97Í\83t\83@\83C\83\8b       */
198     {
199         if( ( mode & O_RDONLY ) == 0 ) return -1;
200         flmod[STDIN] = mode;
201         return STDIN;
202     }
203     else if( strcmp( name, FPATH_STDOUT ) == 0 )/* \95W\8f\80\8fo\97Í\83t\83@\83C\83\8b       */
204     {
205         if( ( mode & O_WRONLY ) == 0 ) return -1;
206         flmod[STDOUT] = mode;
207         return STDOUT;
208     }
209     else if(strcmp(name, FPATH_STDERR ) == 0 )  /* \95W\8f\80\83G\83\89\81[\8fo\97Í\83t\83@\83C\83\8b */
210     {
211         if( ( mode & O_WRONLY ) == 0 ) return -1;
212         flmod[STDERR] = mode;
213         return STDERR;
214     }
215     else return -1;                             /*\95W\8f\80\93ü\8fo\97Í\88È\8aO\82Ì\83t\83@\83C\83\8b*/
216 }
217
218 int close( int fileno )
219 {
220     return 1;
221 }
222
223 /**************************************************************************/
224 /* write:Data write                                                       */
225 /*  Return value:Number of write characters (Pass)                        */
226 /*               -1                         (Failure)                     */
227 /**************************************************************************/
228 int write(int  fileno,                  /* \83t\83@\83C\83\8b\94Ô\8d\86                   */
229       char *buf,                        /* \93]\91\97\90æ\83o\83b\83t\83@\83A\83h\83\8c\83X         */
230       int  count)                       /* \8f\91\82«\8fo\82µ\95\8e\9a\90\94                 */
231 {
232     unsigned int    i;                  /* \83J\83E\83\93\83g\97p\95Ï\90\94                 */
233     char             c;                 /* \8fo\97Í\95\8e\9a                       */
234
235     /* \83t\83@\83C\83\8b\82Ì\83\82\81[\83h\82ð\83`\83F\83b\83N\82µ\81A\88ê\95\8e\9a\82Ã\82Â\8fo\97Í                       */
236     /* \8f\91\82«\8fo\82µ\90ê\97p or \93Ç\82Ý\8d\9e\82Ý\8f\91\82«\8fo\82µ\97¼\97p\82É\83I\81[\83v\83\93\82³\82ê\82Ä\82¢\82é\82©\94»\92è     */
237     if(flmod[fileno]&O_WRONLY || flmod[fileno]&O_RDWR)
238     {
239         if( fileno == STDIN ) return -1;            /* \95W\8f\80\93ü\97Í           */
240         else if( (fileno == STDOUT) || (fileno == STDERR) ) /* \95W\8f\80\8fo\97Í   */
241         {
242             for( i = count; i > 0; --i )
243             {
244                 c = *buf++;
245                 charput(c);
246             }
247             return count;                /* \8f\91\82«\8fo\82µ\82½\95\8e\9a\90\94\95Ô\8bp\81B        */
248         }
249         else return -1;                  /* \83t\83@\83C\83\8b\8fo\97Í                  */
250     }
251     else return -1;                      /* \83G\83\89\81[                        */
252 }
253
254 int read( int fileno, char *buf, unsigned int count )
255 {
256            unsigned int i;
257
258        /* \83t\83@\83C\83\8b\94Ô\8d\86\82É\8f]\82Á\82Ä\83\82\81[\83h\82ð\83`\83F\83b\83N\82µ\81A\88ê\95\8e\9a\82Ã\82Â\93ü\97Í\82µ\82Ä\83o\83b\83t\83@\82É\8ai\94[ */
259
260        if((flmod[fileno]&_MOPENR) || (flmod[fileno]&O_RDWR)){
261              for(i = count; i > 0u; i--){
262                    *buf = charget();
263                    if(*buf==CR){              /* \89ü\8ds\95\8e\9a\82Ì\92u\82«\8a·\82¦ */
264                          *buf = LF;
265                    }
266                    buf++;
267              }
268              return count;
269        }
270        else {
271              return -1;
272        }
273 }
274
275 long lseek( short fileno, short offset, short base )
276 {
277     return -1L;
278 }
279
280 #define _DONE
281 #endif
282 #endif
283
284 #ifdef _DONE
285 #undef _DONE
286 #else
287 _SINT open(_SBYTE *name, _SINT mode, _SINT flg);
288 _SINT close(_SINT fileno);
289 _SINT read(_SINT fileno, _SBYTE *buf, _UINT count);
290 _SINT write(_SINT fileno, _SBYTE *buf, _UINT count);
291 _SDWORD lseek(_SINT fileno, _SDWORD offset, _SINT base);
292 void _INIT_IOLIB(void);
293 void _CLOSEALL(void);
294
295
296 /* \83t\83@\83C\83\8b\94Ô\8d\86 */
297
298 #define STDIN  0        /* \95W\8f\80\93ü\97Í      \81i\83R\83\93\83\\81[\83\8b\81j */
299 #define STDOUT 1        /* \95W\8f\80\8fo\97Í      \81i\83R\83\93\83\\81[\83\8b\81j */
300 #define STDERR 2        /* \95W\8f\80\83G\83\89\81[\8fo\97Í\81i\83R\83\93\83\\81[\83\8b\81j */
301
302 #define FLMIN  0               /* \8dÅ\8f¬\82Ì\83t\83@\83C\83\8b\94Ô\8d\86 */
303 #define FLMAX  (IOSTREAM-1)    /* \8dÅ\91å\82Ì\83t\83@\83C\83\8b\94Ô\8d\86 */
304
305 /* \83t\83@\83C\83\8b\82Ì\83t\83\89\83O */
306
307 #define O_RDONLY 0x0001     /* \93Ç\82Ý\8d\9e\82Ý\90ê\97p */
308 #define O_WRONLY 0x0002     /* \8f\91\82«\8fo\82µ\90ê\97p */
309 #define O_RDWR   0x0004     /* \93Ç\82Ý\8f\91\82«\97¼\97p */
310
311 /* \93Á\8eê\95\8e\9a\83R\81[\83h */
312
313 #define CR 0x0d     /* \95\9c\8bA     */
314 #define LF 0x0a     /* \89ü\8ds     */
315
316 const _SINT _nfiles = IOSTREAM;
317 struct _iobuf _iob[IOSTREAM];
318 _UBYTE sml_buf[IOSTREAM];
319
320
321 /*************************************************************************/
322 /* \8eQ\8fÆ\8aÖ\90\94\82Ì\90é\8c¾\81F                                                      */
323 /* \83V\83~\83\85\83\8c\81[\83^\81E\83f\83o\83b\83K\82Å\83R\83\93\83\\81[\83\8b\82Ö\82Ì\95\8e\9a\93ü\8fo\97Í\82ð\8ds\82¤                */
324 /*   \83A\83Z\83\93\83u\83\8a\83v\83\8d\83O\83\89\83\80\82Ì\8eQ\8fÆ                                          */
325 /*************************************************************************/
326 extern void charput(_SBYTE);     /* \88ê\95\8e\9a\8fo\97Í\8f\88\97\9d     */
327 extern _SBYTE charget(void);     /* \88ê\95\8e\9a\93ü\97Í\8f\88\97\9d     */
328
329 /*************************************************************************/
330 /* \90Ã\93I\95Ï\90\94\82Ì\92è\8b`\81F                                                      */
331 /* \92á\90\85\8f\80\83C\83\93\83^\83t\83F\81[\83X\83\8b\81[\83`\83\93\82Å\8eg\97p\82·\82é\90Ã\93I\95Ï\90\94\82Ì\92è\8b`                  */
332 /*************************************************************************/
333 _SBYTE flmod[IOSTREAM];      /* \83I\81[\83v\83\93\82µ\82½\83t\83@\83C\83\8b\82Ì\83\82\81[\83h\90Ý\92è\8fê\8f\8a  */
334
335 /*************************************************************************/
336 /*  open:\83t\83@\83C\83\8b\82Ì\83I\81[\83v\83\93                                              */
337 /*        \83\8a\83^\81[\83\93\92l\81F\83t\83@\83C\83\8b\94Ô\8d\86\81i\90¬\8c÷\81j                               */
338 /*                    -1          \81i\8e¸\94s\81j                               */
339 /*************************************************************************/
340 _SINT open(_SBYTE *name,               /* \83t\83@\83C\83\8b\96¼         */
341      _SINT  mode,                      /* \83t\83@\83C\83\8b\82Ì\83\82\81[\83h   */
342      _SINT  flg)                       /* \96¢\8eg\97p             */
343 {
344        /* \83t\83@\83C\83\8b\96¼\82É\8f]\82Á\82Ä\83\82\81[\83h\82ð\83`\83F\83b\83N\82µ\81A\83t\83@\83C\83\8b\94Ô\8d\86\82ð\95Ô\82· */
345
346        if(strcmp((const char *) name,"stdin")==0){          /* \95W\8f\80\93ü\97Í\83t\83@\83C\83\8b   */
347              if((mode&O_RDONLY)==0){
348                       return -1;
349              }
350              flmod[STDIN] = mode;
351              return STDIN;
352        }
353
354        else if(strcmp((const char *) name,"stdout")==0){   /* \95W\8f\80\8fo\97Í\83t\83@\83C\83\8b */
355              if((mode&O_WRONLY)==0){
356                       return -1;
357              }
358              flmod[STDOUT] = mode;
359              return STDOUT;
360        }
361
362        else if(strcmp((const char *) name,"stderr")==0){   /* \95W\8f\80\83G\83\89\81[\8fo\97Í\83t\83@\83C\83\8b */
363              if((mode&O_WRONLY)==0){
364                       return -1;
365              }
366              flmod[STDERR] = mode;
367              return STDERR;
368        }
369
370        else {
371              return -1;     /* \83G\83\89\81[ */
372        }
373 }
374
375 /*************************************************************************/
376 /*  close:\83t\83@\83C\83\8b\82Ì\83N\83\8d\81[\83Y                                             */
377 /*       \83\8a\83^\81[\83\93\92l\81F0          \81i\90¬\8c÷\81j                                 */
378 /*                   -1         \81i\8e¸\94s\81j                                 */
379 /*************************************************************************/
380 _SINT close(_SINT fileno)              /* \83t\83@\83C\83\8b\94Ô\8d\86 */
381 {
382        if((fileno<FLMIN) || (FLMAX<fileno)){ /* \83t\83@\83C\83\8b\94Ô\8d\86\82Ì\94Í\88Í\83`\83F\83b\83N */
383              return -1;
384        }
385        flmod[fileno] = 0;              /* \83t\83@\83C\83\8b\82Ì\83\82\81[\83h\83\8a\83Z\83b\83g */
386        return 0;
387 }
388
389 /*************************************************************************/
390 /*  read:\83f\81[\83^\82Ì\93Ç\82Ý\8d\9e\82Ý                                                */
391 /*        \83\8a\83^\81[\83\93\92l\81F\8eÀ\8dÛ\82É\93Ç\82Ý\8d\9e\82ñ\82¾\95\8e\9a\90\94 \81i\90¬\8c÷\81j                    */
392 /*                            -1 \81i\8e¸\94s\81j                                        */
393 /*************************************************************************/
394 _SINT read(_SINT fileno,          /* \83t\83@\83C\83\8b\94Ô\8d\86           */
395      _SBYTE *buf,                 /* \93]\91\97\90æ\83o\83b\83t\83@\83A\83h\83\8c\83X */
396      _UINT count)                 /* \93Ç\82Ý\8d\9e\82Ý\95\8e\9a\90\94         */
397 {
398        _UINT i;
399
400        /* \83t\83@\83C\83\8b\94Ô\8d\86\82É\8f]\82Á\82Ä\83\82\81[\83h\82ð\83`\83F\83b\83N\82µ\81A\88ê\95\8e\9a\82Ã\82Â\93ü\97Í\82µ\82Ä\83o\83b\83t\83@\82É\8ai\94[ */
401
402        if((flmod[fileno]&O_RDONLY) || (flmod[fileno]&O_RDWR)){
403              for(i = count; i > 0u; i--){
404                    *buf = charget();
405                    if(*buf==CR){              /* \89ü\8ds\95\8e\9a\82Ì\92u\82«\8a·\82¦ */
406                          *buf = LF;
407                    }
408                    buf++;
409              }
410              return count;
411        }
412        else {
413              return -1;
414        }
415 }
416  
417 /*************************************************************************/
418 /*  write:\83f\81[\83^\82Ì\8f\91\82«\8fo\82µ                                               */
419 /*      \83\8a\83^\81[\83\93\92l\81F\8eÀ\8dÛ\82É\8f\91\82«\8fo\82µ\82½\95\8e\9a\90\94  \81i\90¬\8c÷\81j                     */
420 /*                      -1  \81i\8e¸\94s\81j                                         */
421 /*************************************************************************/
422 _SINT write(_SINT fileno,              /* \83t\83@\83C\83\8b\94Ô\8d\86           */
423      _SBYTE *buf,                      /* \93]\91\97\8c³\83o\83b\83t\83@\83A\83h\83\8c\83X */
424      _UINT count)                      /* \8f\91\82«\8fo\82µ\95\8e\9a\90\94         */
425 {
426        _UINT i;
427        _SBYTE c;
428
429        /* \83t\83@\83C\83\8b\94Ô\8d\86\82É\8f]\82Á\82Ä\83\82\81[\83h\82ð\83`\83F\83b\83N\82µ\81A\88ê\95\8e\9a\82Ã\82Â\8fo\97Í */
430
431        if((flmod[fileno]&O_WRONLY) || (flmod[fileno]&O_RDWR)){
432              for(i = count; i > 0u; i--){
433                    c = *buf++;
434                    charput(c);
435              }
436              return count;
437        }
438        else {
439              return -1;
440        }
441 }
442
443 /******************************************************************************/
444 /*  lseek:\83t\83@\83C\83\8b\82Ì\93Ç\82Ý\8d\9e\82Ý\81^\8f\91\82«\8fo\82µ\88Ê\92u\82Ì\90Ý\92è                              */
445 /*    \83\8a\83^\81[\83\93\92l\81F\93Ç\82Ý\8d\9e\82Ý\81^\8f\91\82«\8fo\82µ\88Ê\92u\82Ì\83t\83@\83C\83\8b\90æ\93ª\82©\82ç\82Ì\83I\83t\83Z\83b\83g\81i\90¬\8c÷\81j*/
446 /*                -1  \81i\8e¸\94s\81j                                                */
447 /*      (\83R\83\93\83\\81[\83\8b\93ü\8fo\97Í\82Å\82Í\81Alseek\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82Ü\82¹\82ñ)                   */
448 /******************************************************************************/
449 _SDWORD lseek(_SINT fileno,            /* \83t\83@\83C\83\8b\94Ô\8d\86           */
450        _SDWORD offset,                 /* \93Ç\82Ý\8d\9e\82Ý\81^\8f\91\82«\8fo\82µ\88Ê\92u */
451        _SINT base)                     /* \83I\83t\83Z\83b\83g\82Ì\8bN\93_       */
452 {
453        return -1L;
454 }
455
456 /****************************************************************************/
457 /* _INIT_IOLIB                                                              */
458 /****************************************************************************/
459 void _INIT_IOLIB(void)
460 {
461        FILE *fp;
462
463        for(fp = _iob; fp < _iob+_nfiles; fp++){
464              fp->_bufptr = NULL;
465              fp->_bufcnt = 0L;
466              fp->_buflen = 0L;
467              fp->_bufbase = NULL;
468              fp->_ioflag1 = 0;
469              fp->_ioflag2 = 0;
470              fp->_iofd = 0;
471        }
472
473        if(freopen("stdin", "r", stdin)==NULL){
474              stdin->_ioflag1 = 0xff;
475        }
476        stdin->_ioflag1 |= _IOUNBUF;
477
478        if(freopen("stdout", "w", stdout)==NULL){
479              stdout->_ioflag1 = 0xff;
480        }
481        stdout->_ioflag1 |= _IOUNBUF;
482
483        if(freopen("stderr", "w", stderr)==NULL){
484              stderr->_ioflag1 = 0xff;
485        }
486        stderr->_ioflag1 |= _IOUNBUF;
487 }
488
489 /****************************************************************************/
490 /* _CLOSEALL                                                                */
491 /****************************************************************************/
492 void _CLOSEALL(void)
493 {
494        _SINT i;
495
496        for(i = 0; i < _nfiles; i++){
497              if(_iob[i]._ioflag1 & (_IOREAD | _IOWRITE | _IORW )){
498                    fclose(&_iob[i]);
499              }
500        }
501 }
502 #endif