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
24001e8d
Commit
24001e8d
authored
Oct 02, 2007
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Add a default access mapping function for files, and use it for devices too.
parent
4a5ba4c7
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
21 additions
and
68 deletions
+21
-68
change.c
server/change.c
+1
-11
device.c
server/device.c
+1
-1
directory.c
server/directory.c
+2
-12
fd.c
server/fd.c
+10
-0
file.c
server/file.c
+2
-8
file.h
server/file.h
+1
-0
named_pipe.c
server/named_pipe.c
+2
-14
serial.c
server/serial.c
+1
-11
sock.c
server/sock.c
+1
-11
No files found.
server/change.c
View file @
24001e8d
...
...
@@ -157,7 +157,6 @@ struct dir
};
static
struct
fd
*
dir_get_fd
(
struct
object
*
obj
);
static
unsigned
int
dir_map_access
(
struct
object
*
obj
,
unsigned
int
access
);
static
void
dir_dump
(
struct
object
*
obj
,
int
verbose
);
static
void
dir_destroy
(
struct
object
*
obj
);
...
...
@@ -171,7 +170,7 @@ static const struct object_ops dir_ops =
no_satisfied
,
/* satisfied */
no_signal
,
/* signal */
dir_get_fd
,
/* get_fd */
d
ir_map_access
,
/* map_access */
d
efault_fd_map_access
,
/* map_access */
no_lookup_name
,
/* lookup_name */
no_open_file
,
/* open_file */
fd_close_handle
,
/* close_handle */
...
...
@@ -289,15 +288,6 @@ static struct fd *dir_get_fd( struct object *obj )
return
(
struct
fd
*
)
grab_object
(
dir
->
fd
);
}
static
unsigned
int
dir_map_access
(
struct
object
*
obj
,
unsigned
int
access
)
{
if
(
access
&
GENERIC_READ
)
access
|=
FILE_GENERIC_READ
;
if
(
access
&
GENERIC_WRITE
)
access
|=
FILE_GENERIC_WRITE
;
if
(
access
&
GENERIC_EXECUTE
)
access
|=
FILE_GENERIC_EXECUTE
;
if
(
access
&
GENERIC_ALL
)
access
|=
FILE_ALL_ACCESS
;
return
access
&
~
(
GENERIC_READ
|
GENERIC_WRITE
|
GENERIC_EXECUTE
|
GENERIC_ALL
);
}
static
struct
change_record
*
get_first_change_record
(
struct
dir
*
dir
)
{
struct
list
*
ptr
=
list_head
(
&
dir
->
change_records
);
...
...
server/device.c
View file @
24001e8d
...
...
@@ -130,7 +130,7 @@ static const struct object_ops device_ops =
no_satisfied
,
/* satisfied */
no_signal
,
/* signal */
device_get_fd
,
/* get_fd */
no_map_access
,
/* map_access */
default_fd_map_access
,
/* map_access */
no_lookup_name
,
/* lookup_name */
device_open_file
,
/* open_file */
no_close_handle
,
/* close_handle */
...
...
server/directory.c
View file @
24001e8d
...
...
@@ -36,7 +36,7 @@
#include "handle.h"
#include "request.h"
#include "process.h"
#include "
object
.h"
#include "
file
.h"
#include "unicode.h"
#define HASH_SIZE 7
/* default hash size */
...
...
@@ -48,7 +48,6 @@ struct directory
};
static
void
directory_dump
(
struct
object
*
obj
,
int
verbose
);
static
unsigned
int
directory_map_access
(
struct
object
*
obj
,
unsigned
int
access
);
static
struct
object
*
directory_lookup_name
(
struct
object
*
obj
,
struct
unicode_str
*
name
,
unsigned
int
attr
);
static
void
directory_destroy
(
struct
object
*
obj
);
...
...
@@ -63,7 +62,7 @@ static const struct object_ops directory_ops =
NULL
,
/* satisfied */
no_signal
,
/* signal */
no_get_fd
,
/* get_fd */
d
irectory_map_access
,
/* map_access */
d
efault_fd_map_access
,
/* map_access */
directory_lookup_name
,
/* lookup_name */
no_open_file
,
/* open_file */
no_close_handle
,
/* close_handle */
...
...
@@ -123,15 +122,6 @@ static struct object *directory_lookup_name( struct object *obj, struct unicode_
return
NULL
;
}
static
unsigned
int
directory_map_access
(
struct
object
*
obj
,
unsigned
int
access
)
{
if
(
access
&
GENERIC_READ
)
access
|=
FILE_GENERIC_READ
;
if
(
access
&
GENERIC_WRITE
)
access
|=
FILE_GENERIC_WRITE
;
if
(
access
&
GENERIC_EXECUTE
)
access
|=
FILE_GENERIC_EXECUTE
;
if
(
access
&
GENERIC_ALL
)
access
|=
FILE_ALL_ACCESS
;
return
access
&
~
(
GENERIC_READ
|
GENERIC_WRITE
|
GENERIC_EXECUTE
|
GENERIC_ALL
);
}
static
void
directory_destroy
(
struct
object
*
obj
)
{
struct
directory
*
dir
=
(
struct
directory
*
)
obj
;
...
...
server/fd.c
View file @
24001e8d
...
...
@@ -1710,6 +1710,16 @@ int default_fd_signaled( struct object *obj, struct thread *thread )
return
ret
;
}
/* default map_access() routine for objects that behave like an fd */
unsigned
int
default_fd_map_access
(
struct
object
*
obj
,
unsigned
int
access
)
{
if
(
access
&
GENERIC_READ
)
access
|=
FILE_GENERIC_READ
;
if
(
access
&
GENERIC_WRITE
)
access
|=
FILE_GENERIC_WRITE
;
if
(
access
&
GENERIC_EXECUTE
)
access
|=
FILE_GENERIC_EXECUTE
;
if
(
access
&
GENERIC_ALL
)
access
|=
FILE_ALL_ACCESS
;
return
access
&
~
(
GENERIC_READ
|
GENERIC_WRITE
|
GENERIC_EXECUTE
|
GENERIC_ALL
);
}
int
default_fd_get_poll_events
(
struct
fd
*
fd
)
{
int
events
=
0
;
...
...
server/file.c
View file @
24001e8d
...
...
@@ -65,7 +65,6 @@ static unsigned int generic_file_map_access( unsigned int access );
static
void
file_dump
(
struct
object
*
obj
,
int
verbose
);
static
struct
fd
*
file_get_fd
(
struct
object
*
obj
);
static
unsigned
int
file_map_access
(
struct
object
*
obj
,
unsigned
int
access
);
static
void
file_destroy
(
struct
object
*
obj
);
static
int
file_get_poll_events
(
struct
fd
*
fd
);
...
...
@@ -82,7 +81,7 @@ static const struct object_ops file_ops =
no_satisfied
,
/* satisfied */
no_signal
,
/* signal */
file_get_fd
,
/* get_fd */
file_map_access
,
/* map_access */
default_fd_map_access
,
/* map_access */
no_lookup_name
,
/* lookup_name */
no_open_file
,
/* open_file */
fd_close_handle
,
/* close_handle */
...
...
@@ -122,7 +121,7 @@ static struct file *create_file_for_fd( int fd, unsigned int access, unsigned in
if
((
file
=
alloc_object
(
&
file_ops
)))
{
file
->
mode
=
st
.
st_mode
;
file
->
access
=
file
_map_access
(
&
file
->
obj
,
access
);
file
->
access
=
default_fd
_map_access
(
&
file
->
obj
,
access
);
if
(
!
(
file
->
fd
=
create_anonymous_fd
(
&
file_fd_ops
,
fd
,
&
file
->
obj
,
FILE_SYNCHRONOUS_IO_NONALERT
)))
{
...
...
@@ -268,11 +267,6 @@ static unsigned int generic_file_map_access( unsigned int access )
return
access
&
~
(
GENERIC_READ
|
GENERIC_WRITE
|
GENERIC_EXECUTE
|
GENERIC_ALL
);
}
static
unsigned
int
file_map_access
(
struct
object
*
obj
,
unsigned
int
access
)
{
return
generic_file_map_access
(
access
);
}
static
void
file_destroy
(
struct
object
*
obj
)
{
struct
file
*
file
=
(
struct
file
*
)
obj
;
...
...
server/file.h
View file @
24001e8d
...
...
@@ -75,6 +75,7 @@ extern void unlock_fd( struct fd *fd, file_pos_t offset, file_pos_t count );
extern
void
set_fd_signaled
(
struct
fd
*
fd
,
int
signaled
);
extern
int
default_fd_signaled
(
struct
object
*
obj
,
struct
thread
*
thread
);
extern
unsigned
int
default_fd_map_access
(
struct
object
*
obj
,
unsigned
int
access
);
extern
int
default_fd_get_poll_events
(
struct
fd
*
fd
);
extern
void
default_poll_event
(
struct
fd
*
fd
,
int
event
);
extern
struct
async
*
fd_queue_async
(
struct
fd
*
fd
,
const
async_data_t
*
data
,
int
type
,
int
count
);
...
...
server/named_pipe.c
View file @
24001e8d
...
...
@@ -130,9 +130,6 @@ static const struct object_ops named_pipe_ops =
named_pipe_destroy
/* destroy */
};
/* functions common to server and client */
static
unsigned
int
pipe_map_access
(
struct
object
*
obj
,
unsigned
int
access
);
/* server end functions */
static
void
pipe_server_dump
(
struct
object
*
obj
,
int
verbose
);
static
struct
fd
*
pipe_server_get_fd
(
struct
object
*
obj
);
...
...
@@ -152,7 +149,7 @@ static const struct object_ops pipe_server_ops =
no_satisfied
,
/* satisfied */
no_signal
,
/* signal */
pipe_server_get_fd
,
/* get_fd */
pipe_map_access
,
/* map_access */
default_fd_map_access
,
/* map_access */
no_lookup_name
,
/* lookup_name */
no_open_file
,
/* open_file */
fd_close_handle
,
/* close_handle */
...
...
@@ -188,7 +185,7 @@ static const struct object_ops pipe_client_ops =
no_satisfied
,
/* satisfied */
no_signal
,
/* signal */
pipe_client_get_fd
,
/* get_fd */
pipe_map_access
,
/* map_access */
default_fd_map_access
,
/* map_access */
no_lookup_name
,
/* lookup_name */
no_open_file
,
/* open_file */
fd_close_handle
,
/* close_handle */
...
...
@@ -357,15 +354,6 @@ static void do_disconnect( struct pipe_server *server )
server
->
fd
=
NULL
;
}
static
unsigned
int
pipe_map_access
(
struct
object
*
obj
,
unsigned
int
access
)
{
if
(
access
&
GENERIC_READ
)
access
|=
FILE_GENERIC_READ
;
if
(
access
&
GENERIC_WRITE
)
access
|=
FILE_GENERIC_WRITE
;
if
(
access
&
GENERIC_EXECUTE
)
access
|=
FILE_GENERIC_EXECUTE
;
if
(
access
&
GENERIC_ALL
)
access
|=
FILE_ALL_ACCESS
;
return
access
&
~
(
GENERIC_READ
|
GENERIC_WRITE
|
GENERIC_EXECUTE
|
GENERIC_ALL
);
}
static
void
pipe_server_destroy
(
struct
object
*
obj
)
{
struct
pipe_server
*
server
=
(
struct
pipe_server
*
)
obj
;
...
...
server/serial.c
View file @
24001e8d
...
...
@@ -58,7 +58,6 @@
static
void
serial_dump
(
struct
object
*
obj
,
int
verbose
);
static
struct
fd
*
serial_get_fd
(
struct
object
*
obj
);
static
unsigned
int
serial_map_access
(
struct
object
*
obj
,
unsigned
int
access
);
static
void
serial_destroy
(
struct
object
*
obj
);
static
enum
server_fd_type
serial_get_fd_type
(
struct
fd
*
fd
);
...
...
@@ -94,7 +93,7 @@ static const struct object_ops serial_ops =
no_satisfied
,
/* satisfied */
no_signal
,
/* signal */
serial_get_fd
,
/* get_fd */
serial_map_access
,
/* map_access */
default_fd_map_access
,
/* map_access */
no_lookup_name
,
/* lookup_name */
no_open_file
,
/* open_file */
fd_close_handle
,
/* close_handle */
...
...
@@ -145,15 +144,6 @@ static struct fd *serial_get_fd( struct object *obj )
return
(
struct
fd
*
)
grab_object
(
serial
->
fd
);
}
static
unsigned
int
serial_map_access
(
struct
object
*
obj
,
unsigned
int
access
)
{
if
(
access
&
GENERIC_READ
)
access
|=
FILE_GENERIC_READ
;
if
(
access
&
GENERIC_WRITE
)
access
|=
FILE_GENERIC_WRITE
;
if
(
access
&
GENERIC_EXECUTE
)
access
|=
FILE_GENERIC_EXECUTE
;
if
(
access
&
GENERIC_ALL
)
access
|=
FILE_ALL_ACCESS
;
return
access
&
~
(
GENERIC_READ
|
GENERIC_WRITE
|
GENERIC_EXECUTE
|
GENERIC_ALL
);
}
static
void
serial_destroy
(
struct
object
*
obj
)
{
struct
serial
*
serial
=
(
struct
serial
*
)
obj
;
...
...
server/sock.c
View file @
24001e8d
...
...
@@ -90,7 +90,6 @@ struct sock
static
void
sock_dump
(
struct
object
*
obj
,
int
verbose
);
static
int
sock_signaled
(
struct
object
*
obj
,
struct
thread
*
thread
);
static
struct
fd
*
sock_get_fd
(
struct
object
*
obj
);
static
unsigned
int
sock_map_access
(
struct
object
*
obj
,
unsigned
int
access
);
static
void
sock_destroy
(
struct
object
*
obj
);
static
int
sock_get_poll_events
(
struct
fd
*
fd
);
...
...
@@ -113,7 +112,7 @@ static const struct object_ops sock_ops =
no_satisfied
,
/* satisfied */
no_signal
,
/* signal */
sock_get_fd
,
/* get_fd */
sock_map_access
,
/* map_access */
default_fd_map_access
,
/* map_access */
no_lookup_name
,
/* lookup_name */
no_open_file
,
/* open_file */
fd_close_handle
,
/* close_handle */
...
...
@@ -459,15 +458,6 @@ static int sock_signaled( struct object *obj, struct thread *thread )
return
check_fd_events
(
sock
->
fd
,
sock_get_poll_events
(
sock
->
fd
)
)
!=
0
;
}
static
unsigned
int
sock_map_access
(
struct
object
*
obj
,
unsigned
int
access
)
{
if
(
access
&
GENERIC_READ
)
access
|=
FILE_GENERIC_READ
;
if
(
access
&
GENERIC_WRITE
)
access
|=
FILE_GENERIC_WRITE
;
if
(
access
&
GENERIC_EXECUTE
)
access
|=
FILE_GENERIC_EXECUTE
;
if
(
access
&
GENERIC_ALL
)
access
|=
FILE_ALL_ACCESS
;
return
access
&
~
(
GENERIC_READ
|
GENERIC_WRITE
|
GENERIC_EXECUTE
|
GENERIC_ALL
);
}
static
int
sock_get_poll_events
(
struct
fd
*
fd
)
{
struct
sock
*
sock
=
get_fd_user
(
fd
);
...
...
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