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
133b8bc3
Commit
133b8bc3
authored
Apr 23, 2007
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Return a more correct fd type for anonymous files.
parent
96432dfe
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
22 additions
and
4 deletions
+22
-4
file.c
dlls/ntdll/file.c
+2
-0
server_protocol.h
include/wine/server_protocol.h
+2
-1
file.c
server/file.c
+17
-3
protocol.def
server/protocol.def
+1
-0
No files found.
dlls/ntdll/file.c
View file @
133b8bc3
...
...
@@ -439,6 +439,7 @@ static NTSTATUS get_io_timeouts( HANDLE handle, enum server_fd_type type, ULONG
break
;
case
FD_TYPE_SOCKET
:
case
FD_TYPE_PIPE
:
case
FD_TYPE_CHAR
:
if
(
is_read
)
timeouts
->
interval
=
0
;
/* return as soon as we got something */
break
;
default:
...
...
@@ -491,6 +492,7 @@ static NTSTATUS get_io_avail_mode( HANDLE handle, enum server_fd_type type, BOOL
case
FD_TYPE_MAILSLOT
:
case
FD_TYPE_SOCKET
:
case
FD_TYPE_PIPE
:
case
FD_TYPE_CHAR
:
*
avail_mode
=
TRUE
;
break
;
default:
...
...
include/wine/server_protocol.h
View file @
133b8bc3
...
...
@@ -1083,6 +1083,7 @@ enum server_fd_type
FD_TYPE_SERIAL
,
FD_TYPE_PIPE
,
FD_TYPE_MAILSLOT
,
FD_TYPE_CHAR
,
FD_TYPE_DEVICE
,
FD_TYPE_NB_TYPES
};
...
...
@@ -4625,6 +4626,6 @@ union generic_reply
struct
allocate_locally_unique_id_reply
allocate_locally_unique_id_reply
;
};
#define SERVER_PROTOCOL_VERSION 29
8
#define SERVER_PROTOCOL_VERSION 29
9
#endif
/* __WINE_WINE_SERVER_PROTOCOL_H */
server/file.c
View file @
133b8bc3
...
...
@@ -58,6 +58,7 @@ struct file
struct
object
obj
;
/* object header */
struct
fd
*
fd
;
/* file descriptor for this file */
unsigned
int
access
;
/* file access (FILE_READ_DATA etc.) */
mode_t
mode
;
/* file stat.st_mode */
};
static
unsigned
int
generic_file_map_access
(
unsigned
int
access
);
...
...
@@ -110,9 +111,17 @@ static inline int is_overlapped( const struct file *file )
static
struct
file
*
create_file_for_fd
(
int
fd
,
unsigned
int
access
,
unsigned
int
sharing
)
{
struct
file
*
file
;
struct
stat
st
;
if
(
fstat
(
fd
,
&
st
)
==
-
1
)
{
file_set_error
();
return
NULL
;
}
if
((
file
=
alloc_object
(
&
file_ops
)))
{
file
->
mode
=
st
.
st_mode
;
file
->
access
=
file_map_access
(
&
file
->
obj
,
access
);
if
(
!
(
file
->
fd
=
create_anonymous_fd
(
&
file_fd_ops
,
fd
,
&
file
->
obj
,
FILE_SYNCHRONOUS_IO_NONALERT
)))
...
...
@@ -124,12 +133,13 @@ static struct file *create_file_for_fd( int fd, unsigned int access, unsigned in
return
file
;
}
static
struct
object
*
create_file_obj
(
struct
fd
*
fd
,
unsigned
int
access
)
static
struct
object
*
create_file_obj
(
struct
fd
*
fd
,
unsigned
int
access
,
mode_t
mode
)
{
struct
file
*
file
=
alloc_object
(
&
file_ops
);
if
(
!
file
)
return
NULL
;
file
->
access
=
access
;
file
->
mode
=
mode
;
file
->
fd
=
fd
;
grab_object
(
fd
);
set_fd_user
(
fd
,
&
file_fd_ops
,
&
file
->
obj
);
...
...
@@ -178,7 +188,7 @@ static struct object *create_file( const char *nameptr, data_size_t len, unsigne
else
if
(
S_ISCHR
(
mode
)
&&
is_serial_fd
(
fd
))
obj
=
create_serial
(
fd
);
else
obj
=
create_file_obj
(
fd
,
access
);
obj
=
create_file_obj
(
fd
,
access
,
mode
);
release_object
(
fd
);
...
...
@@ -235,7 +245,11 @@ static void file_flush( struct fd *fd, struct event **event )
static
enum
server_fd_type
file_get_fd_type
(
struct
fd
*
fd
)
{
return
FD_TYPE_FILE
;
struct
file
*
file
=
get_fd_user
(
fd
);
if
(
S_ISREG
(
file
->
mode
)
||
S_ISBLK
(
file
->
mode
))
return
FD_TYPE_FILE
;
if
(
S_ISDIR
(
file
->
mode
))
return
FD_TYPE_DIR
;
return
FD_TYPE_CHAR
;
}
static
struct
fd
*
file_get_fd
(
struct
object
*
obj
)
...
...
server/protocol.def
View file @
133b8bc3
...
...
@@ -897,6 +897,7 @@ enum server_fd_type
FD_TYPE_SERIAL, /* serial port */
FD_TYPE_PIPE, /* named pipe */
FD_TYPE_MAILSLOT, /* mailslot */
FD_TYPE_CHAR, /* unspecified char device */
FD_TYPE_DEVICE, /* Windows device file */
FD_TYPE_NB_TYPES
};
...
...
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