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-2011, 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 #ifdef IN_RTS 35 #include "tconfig.h" 36 #include "tsystem.h" 37 #else 38 #include "config.h" 39 #include "system.h" 40 #endif 41 42 /* Don't use macros versions of this functions on VxWorks since they cause 43 imcompatible changes in some VxWorks versions */ 44 #ifdef __vxworks 45 #undef getchar 46 #undef putchar 47 #undef feof 48 #undef ferror 49 #undef fileno 50 #endif 51 52 /* Function wrappers are needed to access the values from Ada which are 53 defined as C macros. */ 54 55 FILE *c_stdin (void); 56 FILE *c_stdout (void); 57 FILE *c_stderr (void); 58 int seek_set_function (void); 59 int seek_end_function (void); 60 void *null_function (void); 61 int c_fileno (FILE *); 62 63 FILE * c_stdin(void)64c_stdin (void) 65 { 66 return stdin; 67 } 68 69 FILE * c_stdout(void)70c_stdout (void) 71 { 72 return stdout; 73 } 74 75 FILE * c_stderr(void)76c_stderr (void) 77 { 78 return stderr; 79 } 80 81 #ifndef SEEK_SET /* Symbolic constants for the "fseek" function: */ 82 #define SEEK_SET 0 /* Set file pointer to offset */ 83 #define SEEK_CUR 1 /* Set file pointer to its current value plus offset */ 84 #define SEEK_END 2 /* Set file pointer to the size of the file plus offset */ 85 #endif 86 87 int seek_set_function(void)88seek_set_function (void) 89 { 90 return SEEK_SET; 91 } 92 93 int seek_end_function(void)94seek_end_function (void) 95 { 96 return SEEK_END; 97 } 98 null_function(void)99void *null_function (void) 100 { 101 return NULL; 102 } 103 104 int c_fileno(FILE * s)105c_fileno (FILE *s) 106 { 107 return fileno (s); 108 } 109