1 /**************************************************************************** 2 * * 3 * GNAT RUN-TIME COMPONENTS * 4 * * 5 * A - T R A N S * 6 * * 7 * C Implementation File * 8 * * 9 * Copyright (C) 1992-2020, Free Software Foundation, Inc. * 10 * * 11 * GNAT is free software; you can redistribute it and/or modify it under * 12 * terms of the GNU General Public License as published by the Free Soft- * 13 * ware Foundation; either version 3, or (at your option) any later ver- * 14 * sion. GNAT is distributed in the hope that it will be useful, but WITH- * 15 * OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * 16 * or FITNESS FOR A PARTICULAR PURPOSE. * 17 * * 18 * As a special exception under Section 7 of GPL version 3, you are granted * 19 * additional permissions described in the GCC Runtime Library Exception, * 20 * version 3.1, as published by the Free Software Foundation. * 21 * * 22 * You should have received a copy of the GNU General Public License and * 23 * a copy of the GCC Runtime Library Exception along with this program; * 24 * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see * 25 * <http://www.gnu.org/licenses/>. * 26 * * 27 * GNAT was originally developed by the GNAT team at New York University. * 28 * Extensive contributions were provided by Ada Core Technologies Inc. * 29 * * 30 ****************************************************************************/ 31 32 #include <stdio.h> 33 34 #ifndef IN_RTS 35 #include "config.h" 36 #include "system.h" 37 #endif 38 39 /* Don't use macros versions of this functions on VxWorks since they cause 40 imcompatible changes in some VxWorks versions */ 41 #ifdef __vxworks 42 #undef getchar 43 #undef putchar 44 #undef feof 45 #undef ferror 46 #undef fileno 47 #endif 48 49 /* Function wrappers are needed to access the values from Ada which are 50 defined as C macros. */ 51 52 FILE *c_stdin (void); 53 FILE *c_stdout (void); 54 FILE *c_stderr (void); 55 int seek_set_function (void); 56 int seek_end_function (void); 57 void *null_function (void); 58 int c_fileno (FILE *); 59 60 FILE * c_stdin(void)61c_stdin (void) 62 { 63 return stdin; 64 } 65 66 FILE * c_stdout(void)67c_stdout (void) 68 { 69 return stdout; 70 } 71 72 FILE * c_stderr(void)73c_stderr (void) 74 { 75 return stderr; 76 } 77 78 #ifndef SEEK_SET /* Symbolic constants for the "fseek" function: */ 79 #define SEEK_SET 0 /* Set file pointer to offset */ 80 #define SEEK_CUR 1 /* Set file pointer to its current value plus offset */ 81 #define SEEK_END 2 /* Set file pointer to the size of the file plus offset */ 82 #endif 83 84 int seek_set_function(void)85seek_set_function (void) 86 { 87 return SEEK_SET; 88 } 89 90 int seek_end_function(void)91seek_end_function (void) 92 { 93 return SEEK_END; 94 } 95 null_function(void)96void *null_function (void) 97 { 98 return NULL; 99 } 100 101 int c_fileno(FILE * s)102c_fileno (FILE *s) 103 { 104 return fileno (s); 105 } 106