Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
79cb33e1
Commit
79cb33e1
authored
Sep 22, 2020
by
Jacek Caban
Committed by
Alexandre Julliard
Sep 22, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Remove support for creating bare consoles.
Signed-off-by:
Jacek Caban
<
jacek@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
26c715f8
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
18 additions
and
87 deletions
+18
-87
server_protocol.h
include/wine/server_protocol.h
+2
-4
wineconsole.c
programs/wineconsole/wineconsole.c
+0
-2
console.c
server/console.c
+15
-74
protocol.def
server/protocol.def
+0
-2
request.h
server/request.h
+1
-3
trace.c
server/trace.c
+0
-2
No files found.
include/wine/server_protocol.h
View file @
79cb33e1
...
...
@@ -1807,8 +1807,6 @@ struct alloc_console_request
unsigned
int
access
;
unsigned
int
attributes
;
process_id_t
pid
;
int
input_fd
;
char
__pad_28
[
4
];
};
struct
alloc_console_reply
{
...
...
@@ -1882,7 +1880,7 @@ struct create_console_output_request
unsigned
int
access
;
unsigned
int
attributes
;
unsigned
int
share
;
int
fd
;
char
__pad_28
[
4
]
;
};
struct
create_console_output_reply
{
...
...
@@ -6283,7 +6281,7 @@ union generic_reply
/* ### protocol_version begin ### */
#define SERVER_PROTOCOL_VERSION 64
4
#define SERVER_PROTOCOL_VERSION 64
5
/* ### protocol_version end ### */
...
...
programs/wineconsole/wineconsole.c
View file @
79cb33e1
...
...
@@ -685,7 +685,6 @@ static struct inner_data* WINECON_Init(HINSTANCE hInst, DWORD pid, LPCWSTR appna
req
->
access
=
GENERIC_READ
|
GENERIC_WRITE
;
req
->
attributes
=
0
;
req
->
pid
=
pid
;
req
->
input_fd
=
-
1
;
ret
=
!
wine_server_call_err
(
req
);
con_in
=
wine_server_ptr_handle
(
reply
->
handle_in
);
...
...
@@ -711,7 +710,6 @@ static struct inner_data* WINECON_Init(HINSTANCE hInst, DWORD pid, LPCWSTR appna
req
->
access
=
GENERIC_WRITE
|
GENERIC_READ
;
req
->
attributes
=
0
;
req
->
share
=
FILE_SHARE_READ
|
FILE_SHARE_WRITE
;
req
->
fd
=
-
1
;
ret
=
!
wine_server_call_err
(
req
);
con_out
=
wine_server_ptr_handle
(
reply
->
handle_out
);
}
...
...
server/console.c
View file @
79cb33e1
...
...
@@ -569,15 +569,13 @@ static struct object *create_console_input_events(void)
return
&
evt
->
obj
;
}
static
struct
object
*
create_console_input
(
int
fd
)
static
struct
object
*
create_console_input
(
void
)
{
struct
console_input
*
console_input
;
if
(
!
(
console_input
=
alloc_object
(
&
console_input_ops
)))
{
if
(
fd
!=
-
1
)
close
(
fd
);
return
NULL
;
}
console_input
->
renderer
=
NULL
;
console_input
->
mode
=
ENABLE_PROCESSED_INPUT
|
ENABLE_LINE_INPUT
|
ENABLE_ECHO_INPUT
|
ENABLE_MOUSE_INPUT
|
ENABLE_INSERT_MODE
|
...
...
@@ -606,21 +604,13 @@ static struct object *create_console_input( int fd )
if
(
!
console_input
->
history
||
!
console_input
->
event
)
{
if
(
fd
!=
-
1
)
close
(
fd
);
console_input
->
history_size
=
0
;
release_object
(
console_input
);
return
NULL
;
}
if
(
fd
!=
-
1
)
/* bare console */
{
console_input
->
fd
=
create_anonymous_fd
(
&
console_input_fd_ops
,
fd
,
&
console_input
->
obj
,
FILE_SYNCHRONOUS_IO_NONALERT
);
}
else
{
console_input
->
fd
=
alloc_pseudo_fd
(
&
console_input_fd_ops
,
&
console_input
->
obj
,
FILE_SYNCHRONOUS_IO_NONALERT
);
}
console_input
->
fd
=
alloc_pseudo_fd
(
&
console_input_fd_ops
,
&
console_input
->
obj
,
FILE_SYNCHRONOUS_IO_NONALERT
);
if
(
!
console_input
->
fd
)
{
release_object
(
console_input
);
...
...
@@ -730,7 +720,7 @@ static void set_active_screen_buffer( struct console_input *console_input, struc
console_input_events_append
(
console_input
,
&
evt
);
}
static
struct
object
*
create_console_output
(
struct
console_input
*
console_input
,
int
fd
)
static
struct
object
*
create_console_output
(
struct
console_input
*
console_input
)
{
struct
screen_buffer
*
screen_buffer
;
int
i
;
...
...
@@ -742,10 +732,8 @@ static struct object *create_console_output( struct console_input *console_input
}
if
(
!
(
screen_buffer
=
alloc_object
(
&
screen_buffer_ops
)))
{
if
(
fd
!=
-
1
)
close
(
fd
);
return
NULL
;
}
screen_buffer
->
id
=
++
console_input
->
last_id
;
screen_buffer
->
mode
=
ENABLE_PROCESSED_OUTPUT
|
ENABLE_WRAP_AT_EOL_OUTPUT
;
screen_buffer
->
input
=
console_input
;
...
...
@@ -774,12 +762,8 @@ static struct object *create_console_output( struct console_input *console_input
init_async_queue
(
&
screen_buffer
->
ioctl_q
);
list_add_head
(
&
screen_buffer_list
,
&
screen_buffer
->
entry
);
if
(
fd
!=
-
1
)
screen_buffer
->
fd
=
create_anonymous_fd
(
&
screen_buffer_fd_ops
,
fd
,
&
screen_buffer
->
obj
,
FILE_SYNCHRONOUS_IO_NONALERT
);
else
screen_buffer
->
fd
=
alloc_pseudo_fd
(
&
screen_buffer_fd_ops
,
&
screen_buffer
->
obj
,
FILE_SYNCHRONOUS_IO_NONALERT
);
screen_buffer
->
fd
=
alloc_pseudo_fd
(
&
screen_buffer_fd_ops
,
&
screen_buffer
->
obj
,
FILE_SYNCHRONOUS_IO_NONALERT
);
if
(
!
screen_buffer
->
fd
)
{
release_object
(
screen_buffer
);
...
...
@@ -1746,8 +1730,8 @@ static struct object *console_server_lookup_name( struct object *obj, struct uni
set_error
(
STATUS_INVALID_HANDLE
);
return
0
;
}
if
(
!
(
server
->
console
=
(
struct
console_input
*
)
create_console_input
(
-
1
)))
return
NULL
;
if
(
!
(
screen_buffer
=
(
struct
screen_buffer
*
)
create_console_output
(
server
->
console
,
-
1
)))
if
(
!
(
server
->
console
=
(
struct
console_input
*
)
create_console_input
()))
return
NULL
;
if
(
!
(
screen_buffer
=
(
struct
screen_buffer
*
)
create_console_output
(
server
->
console
)))
{
release_object
(
server
->
console
);
server
->
console
=
NULL
;
...
...
@@ -2519,7 +2503,7 @@ static struct object *console_device_lookup_name( struct object *obj, struct uni
return
NULL
;
}
name
->
len
=
0
;
return
create_console_output
(
current
->
process
->
console
,
-
1
);
return
create_console_output
(
current
->
process
->
console
);
}
if
(
name
->
len
==
sizeof
(
serverW
)
&&
!
memcmp
(
name
->
str
,
serverW
,
name
->
len
))
...
...
@@ -2566,52 +2550,29 @@ DECL_HANDLER(alloc_console)
{
struct
process
*
process
;
struct
console_input
*
console
;
int
fd
;
int
attach
=
0
;
if
(
req
->
input_fd
!=
-
1
)
{
if
((
fd
=
thread_get_inflight_fd
(
current
,
req
->
input_fd
))
==
-
1
)
{
set_error
(
STATUS_INVALID_PARAMETER
);
return
;
}
}
else
fd
=
-
1
;
switch
(
req
->
pid
)
{
case
0
:
/* console to be attached to parent process */
if
(
!
(
process
=
get_process_from_id
(
current
->
process
->
parent_id
)))
{
if
(
fd
!=
-
1
)
close
(
fd
);
set_error
(
STATUS_ACCESS_DENIED
);
return
;
}
attach
=
1
;
break
;
case
0xffffffff
:
/* console to be attached to current process */
process
=
current
->
process
;
grab_object
(
process
);
attach
=
1
;
break
;
default
:
/* console to be attached to req->pid */
if
(
!
(
process
=
get_process_from_id
(
req
->
pid
)))
{
if
(
fd
!=
-
1
)
close
(
fd
);
return
;
}
if
(
!
(
process
=
get_process_from_id
(
req
->
pid
)))
return
;
}
if
(
attach
&&
process
->
console
)
{
if
(
fd
!=
-
1
)
close
(
fd
);
set_error
(
STATUS_ACCESS_DENIED
);
}
else
if
((
console
=
(
struct
console_input
*
)
create_console_input
(
fd
)))
else
if
((
console
=
(
struct
console_input
*
)
create_console_input
()))
{
if
((
reply
->
handle_in
=
alloc_handle
(
current
->
process
,
console
,
req
->
access
,
req
->
attributes
))
&&
attach
)
...
...
@@ -2655,31 +2616,11 @@ DECL_HANDLER(create_console_output)
{
struct
console_input
*
console
;
struct
object
*
screen_buffer
;
int
fd
;
if
(
req
->
fd
!=
-
1
)
{
if
((
fd
=
thread_get_inflight_fd
(
current
,
req
->
fd
))
==
-
1
)
{
set_error
(
STATUS_INVALID_HANDLE
);
return
;
}
}
else
fd
=
-
1
;
if
(
!
(
console
=
console_input_get
(
req
->
handle_in
,
FILE_WRITE_PROPERTIES
)))
{
if
(
fd
!=
-
1
)
close
(
fd
);
return
;
}
if
(
console_input_is_bare
(
console
)
^
(
fd
!=
-
1
))
{
if
(
fd
!=
-
1
)
close
(
fd
);
release_object
(
console
);
set_error
(
STATUS_INVALID_HANDLE
);
return
;
}
screen_buffer
=
create_console_output
(
console
,
fd
);
screen_buffer
=
create_console_output
(
console
);
if
(
screen_buffer
)
{
/* FIXME: should store sharing and test it when opening the CONOUT$ device
...
...
server/protocol.def
View file @
79cb33e1
...
...
@@ -1450,7 +1450,6 @@ enum server_fd_type
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
process_id_t pid; /* pid of process which shall be attached to the console */
int input_fd; /* if pid=-1 (bare console to current process), fd for input */
@REPLY
obj_handle_t handle_in; /* handle to console input */
@END
...
...
@@ -1492,7 +1491,6 @@ enum server_fd_type
unsigned int access; /* wanted access rights */
unsigned int attributes; /* object attributes */
unsigned int share; /* sharing credentials */
int fd; /* for bare consoles, fd the screen-buffer is attached to */
@REPLY
obj_handle_t handle_out; /* handle to the screen buffer */
@END
...
...
server/request.h
View file @
79cb33e1
...
...
@@ -1091,8 +1091,7 @@ C_ASSERT( sizeof(struct set_socket_deferred_request) == 24 );
C_ASSERT
(
FIELD_OFFSET
(
struct
alloc_console_request
,
access
)
==
12
);
C_ASSERT
(
FIELD_OFFSET
(
struct
alloc_console_request
,
attributes
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
alloc_console_request
,
pid
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
alloc_console_request
,
input_fd
)
==
24
);
C_ASSERT
(
sizeof
(
struct
alloc_console_request
)
==
32
);
C_ASSERT
(
sizeof
(
struct
alloc_console_request
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
alloc_console_reply
,
handle_in
)
==
8
);
C_ASSERT
(
sizeof
(
struct
alloc_console_reply
)
==
16
);
C_ASSERT
(
sizeof
(
struct
free_console_request
)
==
16
);
...
...
@@ -1111,7 +1110,6 @@ C_ASSERT( FIELD_OFFSET(struct create_console_output_request, handle_in) == 12 );
C_ASSERT
(
FIELD_OFFSET
(
struct
create_console_output_request
,
access
)
==
16
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_console_output_request
,
attributes
)
==
20
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_console_output_request
,
share
)
==
24
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_console_output_request
,
fd
)
==
28
);
C_ASSERT
(
sizeof
(
struct
create_console_output_request
)
==
32
);
C_ASSERT
(
FIELD_OFFSET
(
struct
create_console_output_reply
,
handle_out
)
==
8
);
C_ASSERT
(
sizeof
(
struct
create_console_output_reply
)
==
16
);
...
...
server/trace.c
View file @
79cb33e1
...
...
@@ -2020,7 +2020,6 @@ static void dump_alloc_console_request( const struct alloc_console_request *req
fprintf
(
stderr
,
" access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
fprintf
(
stderr
,
", pid=%04x"
,
req
->
pid
);
fprintf
(
stderr
,
", input_fd=%d"
,
req
->
input_fd
);
}
static
void
dump_alloc_console_reply
(
const
struct
alloc_console_reply
*
req
)
...
...
@@ -2066,7 +2065,6 @@ static void dump_create_console_output_request( const struct create_console_outp
fprintf
(
stderr
,
", access=%08x"
,
req
->
access
);
fprintf
(
stderr
,
", attributes=%08x"
,
req
->
attributes
);
fprintf
(
stderr
,
", share=%08x"
,
req
->
share
);
fprintf
(
stderr
,
", fd=%d"
,
req
->
fd
);
}
static
void
dump_create_console_output_reply
(
const
struct
create_console_output_reply
*
req
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment