111
|
1 /****************************************************************************
|
|
2 * *
|
|
3 * GNAT COMPILER COMPONENTS *
|
|
4 * *
|
|
5 * C I O *
|
|
6 * *
|
|
7 * C Implementation File *
|
|
8 * *
|
|
9 * Copyright (C) 1992-2015, 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 #ifdef IN_RTS
|
|
33 #include "tconfig.h"
|
|
34 #include "tsystem.h"
|
|
35 #include <sys/stat.h>
|
|
36 #else
|
|
37 #include "config.h"
|
|
38 #include "system.h"
|
|
39 #endif
|
|
40
|
|
41 #include "adaint.h"
|
|
42
|
|
43 /* We need L_tmpnam definition */
|
|
44 #include <stdio.h>
|
|
45
|
|
46 #ifdef __cplusplus
|
|
47 extern "C" {
|
|
48 #endif
|
|
49
|
|
50 /* Don't use macros on GNU/Linux since they cause incompatible changes between
|
|
51 glibc 2.0 and 2.1 */
|
|
52 #ifdef __linux__
|
|
53 #undef putchar
|
|
54 #undef getchar
|
|
55 #undef fputc
|
|
56 #undef stderr
|
|
57 #undef stdout
|
|
58 #endif
|
|
59
|
|
60 /* Don't use macros versions of this functions on VxWorks since they cause
|
|
61 imcompatible changes in some VxWorks versions */
|
|
62 #ifdef __vxworks
|
|
63 #undef getchar
|
|
64 #undef putchar
|
|
65 #undef feof
|
|
66 #undef ferror
|
|
67 #undef fileno
|
|
68 #endif
|
|
69
|
|
70 #ifdef RTX
|
|
71 #include <windows.h>
|
|
72 #include <Rtapi.h>
|
|
73 #endif
|
|
74
|
|
75 int
|
|
76 get_char (void)
|
|
77 {
|
|
78 #ifdef VMS
|
|
79 return decc$getchar();
|
|
80 #else
|
|
81 return getchar ();
|
|
82 #endif
|
|
83 }
|
|
84
|
|
85 int
|
|
86 get_int (void)
|
|
87 {
|
|
88 int x;
|
|
89
|
|
90 scanf (" %d", &x);
|
|
91 return x;
|
|
92 }
|
|
93
|
|
94 void
|
|
95 put_int (int x)
|
|
96 {
|
|
97 #ifdef RTX
|
|
98 RtPrintf ("%d", x);
|
|
99 #else
|
|
100 /* Use fprintf rather than printf, since the latter is unbuffered
|
|
101 on vxworks */
|
|
102 fprintf (stdout, "%d", x);
|
|
103 #endif
|
|
104 }
|
|
105
|
|
106 void
|
|
107 put_int_stderr (int x)
|
|
108 {
|
|
109 #ifdef RTX
|
|
110 RtPrintf ("%d", x);
|
|
111 #else
|
|
112 fprintf (stderr, "%d", x);
|
|
113 #endif
|
|
114 }
|
|
115
|
|
116 void
|
|
117 put_char (int c)
|
|
118 {
|
|
119 #ifdef RTX
|
|
120 RtPrintf ("%c", c);
|
|
121 #else
|
|
122 putchar (c);
|
|
123 #endif
|
|
124 }
|
|
125
|
|
126 void
|
|
127 put_char_stderr (int c)
|
|
128 {
|
|
129 #ifdef RTX
|
|
130 RtPrintf ("%c", c);
|
|
131 #else
|
|
132 fputc (c, stderr);
|
|
133 #endif
|
|
134 }
|
|
135
|
|
136 #ifdef __vxworks
|
|
137
|
|
138 char *
|
|
139 mktemp (char *template)
|
|
140 {
|
|
141 #if !(defined (__RTP__) || defined (VTHREADS))
|
|
142 static char buf[L_tmpnam]; /* Internal buffer for name */
|
|
143
|
|
144 /* If parameter is NULL use internal buffer */
|
|
145 if (template == NULL)
|
|
146 template = buf;
|
|
147
|
|
148 __gnat_tmp_name (template);
|
|
149 return template;
|
|
150 #else
|
|
151 return tmpnam (NULL);
|
|
152 #endif
|
|
153 }
|
|
154 #endif
|
|
155
|
|
156 #ifdef __cplusplus
|
|
157 }
|
|
158 #endif
|