@@ -34,7 +34,7 @@ void restore_term(void)
34
34
sigchain_pop_common ();
35
35
}
36
36
37
- int save_term (int full_duplex )
37
+ int save_term (enum save_term_flags flags )
38
38
{
39
39
if (term_fd < 0 )
40
40
term_fd = open ("/dev/tty" , O_RDWR );
@@ -47,11 +47,11 @@ int save_term(int full_duplex)
47
47
return 0 ;
48
48
}
49
49
50
- static int disable_bits (tcflag_t bits )
50
+ static int disable_bits (enum save_term_flags flags , tcflag_t bits )
51
51
{
52
52
struct termios t ;
53
53
54
- if (save_term (0 ) < 0 )
54
+ if (save_term (flags ) < 0 )
55
55
goto error ;
56
56
57
57
t = old_term ;
@@ -71,14 +71,14 @@ static int disable_bits(tcflag_t bits)
71
71
return -1 ;
72
72
}
73
73
74
- static int disable_echo (void )
74
+ static int disable_echo (enum save_term_flags flags )
75
75
{
76
- return disable_bits (ECHO );
76
+ return disable_bits (flags , ECHO );
77
77
}
78
78
79
- static int enable_non_canonical (void )
79
+ static int enable_non_canonical (enum save_term_flags flags )
80
80
{
81
- return disable_bits (ICANON | ECHO );
81
+ return disable_bits (flags , ICANON | ECHO );
82
82
}
83
83
84
84
#elif defined(GIT_WINDOWS_NATIVE )
@@ -126,15 +126,15 @@ void restore_term(void)
126
126
hconin = hconout = INVALID_HANDLE_VALUE ;
127
127
}
128
128
129
- int save_term (int full_duplex )
129
+ int save_term (enum save_term_flags flags )
130
130
{
131
131
hconin = CreateFileA ("CONIN$" , GENERIC_READ | GENERIC_WRITE ,
132
132
FILE_SHARE_READ , NULL , OPEN_EXISTING ,
133
133
FILE_ATTRIBUTE_NORMAL , NULL );
134
134
if (hconin == INVALID_HANDLE_VALUE )
135
135
return -1 ;
136
136
137
- if (full_duplex ) {
137
+ if (flags & SAVE_TERM_DUPLEX ) {
138
138
hconout = CreateFileA ("CONOUT$" , GENERIC_READ | GENERIC_WRITE ,
139
139
FILE_SHARE_WRITE , NULL , OPEN_EXISTING ,
140
140
FILE_ATTRIBUTE_NORMAL , NULL );
@@ -154,7 +154,7 @@ int save_term(int full_duplex)
154
154
return -1 ;
155
155
}
156
156
157
- static int disable_bits (DWORD bits )
157
+ static int disable_bits (enum save_term_flags flags , DWORD bits )
158
158
{
159
159
if (use_stty ) {
160
160
struct child_process cp = CHILD_PROCESS_INIT ;
@@ -191,7 +191,7 @@ static int disable_bits(DWORD bits)
191
191
use_stty = 0 ;
192
192
}
193
193
194
- if (save_term (0 ) < 0 )
194
+ if (save_term (flags ) < 0 )
195
195
return -1 ;
196
196
197
197
if (!SetConsoleMode (hconin , cmode_in & ~bits )) {
@@ -204,14 +204,15 @@ static int disable_bits(DWORD bits)
204
204
return 0 ;
205
205
}
206
206
207
- static int disable_echo (void )
207
+ static int disable_echo (enum save_term_flags flags )
208
208
{
209
- return disable_bits (ENABLE_ECHO_INPUT );
209
+ return disable_bits (flags , ENABLE_ECHO_INPUT );
210
210
}
211
211
212
- static int enable_non_canonical (void )
212
+ static int enable_non_canonical (enum save_term_flags flags )
213
213
{
214
- return disable_bits (ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT );
214
+ return disable_bits (flags ,
215
+ ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT );
215
216
}
216
217
217
218
/*
@@ -267,7 +268,7 @@ char *git_terminal_prompt(const char *prompt, int echo)
267
268
return NULL ;
268
269
}
269
270
270
- if (!echo && disable_echo ()) {
271
+ if (!echo && disable_echo (0 )) {
271
272
fclose (input_fh );
272
273
fclose (output_fh );
273
274
return NULL ;
@@ -361,7 +362,7 @@ int read_key_without_echo(struct strbuf *buf)
361
362
static int warning_displayed ;
362
363
int ch ;
363
364
364
- if (warning_displayed || enable_non_canonical () < 0 ) {
365
+ if (warning_displayed || enable_non_canonical (0 ) < 0 ) {
365
366
if (!warning_displayed ) {
366
367
warning ("reading single keystrokes not supported on "
367
368
"this platform; reading line instead" );
@@ -413,10 +414,10 @@ int read_key_without_echo(struct strbuf *buf)
413
414
414
415
#else
415
416
416
- int save_term (int full_duplex )
417
+ int save_term (enum save_term_flags flags )
417
418
{
418
- /* full_duplex == 1, but no support available */
419
- return - full_duplex ;
419
+ /* no duplex support available */
420
+ return - !!( flags & SAVE_TERM_DUPLEX ) ;
420
421
}
421
422
422
423
void restore_term (void )
0 commit comments