46
46
#include <string.h>
47
47
48
48
#include "reb-host.h"
49
- #include "host-lib.h"
50
-
51
- #define BUF_SIZE (16*1024)
52
49
53
50
#define SF_DEV_NULL 31 // local flag to mark NULL device
54
51
55
52
// Temporary globals: (either move or remove?!)
56
- static int Std_Inp = 0 ;
57
- static int Std_Out = 1 ;
58
- static FILE * Std_Echo = 0 ;
59
-
60
- static REBOOL Redir_Out = 0 ; // redirection flags
61
- static REBOOL Redir_Inp = 0 ;
62
-
63
- #define PUTE (s ) if (Std_Echo) fputs(s, Std_Echo)
53
+ static int Std_Inp = STDIN_FILENO ;
54
+ static int Std_Out = STDOUT_FILENO ;
55
+ static FILE * Std_Echo = NULL ;
64
56
65
57
extern REBDEV * Devices [];
58
+ extern void Put_Str (REBYTE * buf );
66
59
67
60
#ifndef HAS_SMART_CONSOLE // console line-editing and recall needed
68
- void * Init_Terminal ();
69
- void Quit_Terminal (void * );
70
- int Read_Line (void * , char * , int );
61
+ typedef struct term_data {
62
+ char * buffer ;
63
+ char * residue ;
64
+ char * out ;
65
+ int pos ;
66
+ int end ;
67
+ int hist ;
68
+ } STD_TERM ;
69
+
70
+ STD_TERM * Term_IO ;
71
+
72
+ extern STD_TERM * Init_Terminal ();
73
+ extern void Quit_Terminal (STD_TERM * );
74
+ extern int Read_Line (STD_TERM * , char * , int );
71
75
#endif
72
76
73
- void Put_Str (char * buf );
74
-
75
- void * Term_IO ;
76
-
77
- /*
78
- #define PUTS(s) fputs(s, stdout)
79
- #define GETS(s,len) fgets(s, len, stdin);
80
- #define FLUSH() fflush(stdout)
81
- */
82
77
83
78
static void Handle_Signal (int sig )
84
79
{
85
- Put_Str ("[escape]\n" );
80
+ REBYTE buf [] = "\x1B[1;35;49m[escape]\x1B[0m\n" ;
81
+ Put_Str (buf );
86
82
RL_Escape (0 );
87
83
}
88
84
@@ -93,7 +89,7 @@ static void Init_Signals(void)
93
89
signal (SIGTERM , Handle_Signal );
94
90
}
95
91
96
- static void close_stdio (void )
92
+ static void Close_Stdio (void )
97
93
{
98
94
#ifndef HAS_SMART_CONSOLE
99
95
if (Term_IO ) {
@@ -115,7 +111,7 @@ static void close_stdio(void)
115
111
{
116
112
REBDEV * dev = (REBDEV * )dr ; // just to keep compiler happy above
117
113
118
- close_stdio ();
114
+ Close_Stdio ();
119
115
120
116
CLR_FLAG (dev -> flags , RDF_OPEN );
121
117
return DR_DONE ;
@@ -148,9 +144,7 @@ static void close_stdio(void)
148
144
#ifndef HAS_SMART_CONSOLE
149
145
if (isatty (Std_Inp ))
150
146
Term_IO = Init_Terminal ();
151
- else
152
147
#endif
153
- Term_IO = 0 ;
154
148
//printf("%x\r\n", req->handle);
155
149
}
156
150
else
@@ -171,9 +165,9 @@ static void close_stdio(void)
171
165
{
172
166
REBDEV * dev = Devices [req -> device ];
173
167
174
- close_stdio ();
168
+ Close_Stdio ();
175
169
176
- CLR_FLAG (req -> flags , RRF_OPEN );
170
+ CLR_FLAG (dev -> flags , RRF_OPEN );
177
171
178
172
return DR_DONE ;
179
173
}
0 commit comments