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
ea919d9d
Commit
ea919d9d
authored
May 07, 2013
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
server: Use strerror instead of perror.
parent
7f5a3a4d
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
57 deletions
+34
-57
registry.c
server/registry.c
+4
-4
request.c
server/request.c
+29
-47
request.h
server/request.h
+0
-5
thread.c
server/thread.c
+1
-1
No files found.
server/registry.c
View file @
ea919d9d
...
@@ -1737,7 +1737,7 @@ void init_registry(void)
...
@@ -1737,7 +1737,7 @@ void init_registry(void)
/* switch to the config dir */
/* switch to the config dir */
if
(
fchdir
(
config_dir_fd
)
==
-
1
)
fatal_
perror
(
"chdir to config dir"
);
if
(
fchdir
(
config_dir_fd
)
==
-
1
)
fatal_
error
(
"chdir to config dir: %s
\n
"
,
strerror
(
errno
)
);
/* create the root key */
/* create the root key */
root_key
=
alloc_key
(
&
root_name
,
current_time
);
root_key
=
alloc_key
(
&
root_name
,
current_time
);
...
@@ -1790,7 +1790,7 @@ void init_registry(void)
...
@@ -1790,7 +1790,7 @@ void init_registry(void)
set_periodic_save_timer
();
set_periodic_save_timer
();
/* go back to the server dir */
/* go back to the server dir */
if
(
fchdir
(
server_dir_fd
)
==
-
1
)
fatal_
perror
(
"chdir to server dir"
);
if
(
fchdir
(
server_dir_fd
)
==
-
1
)
fatal_
error
(
"chdir to server dir: %s
\n
"
,
strerror
(
errno
)
);
}
}
/* save a registry branch to a file */
/* save a registry branch to a file */
...
@@ -1922,7 +1922,7 @@ static void periodic_save( void *arg )
...
@@ -1922,7 +1922,7 @@ static void periodic_save( void *arg )
save_timeout_user
=
NULL
;
save_timeout_user
=
NULL
;
for
(
i
=
0
;
i
<
save_branch_count
;
i
++
)
for
(
i
=
0
;
i
<
save_branch_count
;
i
++
)
save_branch
(
save_branch_info
[
i
].
key
,
save_branch_info
[
i
].
path
);
save_branch
(
save_branch_info
[
i
].
key
,
save_branch_info
[
i
].
path
);
if
(
fchdir
(
server_dir_fd
)
==
-
1
)
fatal_
perror
(
"chdir to server dir"
);
if
(
fchdir
(
server_dir_fd
)
==
-
1
)
fatal_
error
(
"chdir to server dir: %s
\n
"
,
strerror
(
errno
)
);
set_periodic_save_timer
();
set_periodic_save_timer
();
}
}
...
@@ -1948,7 +1948,7 @@ void flush_registry(void)
...
@@ -1948,7 +1948,7 @@ void flush_registry(void)
perror
(
" "
);
perror
(
" "
);
}
}
}
}
if
(
fchdir
(
server_dir_fd
)
==
-
1
)
fatal_
perror
(
"chdir to server dir"
);
if
(
fchdir
(
server_dir_fd
)
==
-
1
)
fatal_
error
(
"chdir to server dir: %s
\n
"
,
strerror
(
errno
)
);
}
}
/* determine if the thread is wow64 (32-bit client running on 64-bit prefix) */
/* determine if the thread is wow64 (32-bit client running on 64-bit prefix) */
...
...
server/request.c
View file @
ea919d9d
...
@@ -142,20 +142,6 @@ void fatal_protocol_error( struct thread *thread, const char *err, ... )
...
@@ -142,20 +142,6 @@ void fatal_protocol_error( struct thread *thread, const char *err, ... )
kill_thread
(
thread
,
1
);
kill_thread
(
thread
,
1
);
}
}
/* complain about a protocol error and terminate the client connection */
void
fatal_protocol_perror
(
struct
thread
*
thread
,
const
char
*
err
,
...
)
{
va_list
args
;
va_start
(
args
,
err
);
fprintf
(
stderr
,
"Protocol error:%04x: "
,
thread
->
id
);
vfprintf
(
stderr
,
err
,
args
);
perror
(
" "
);
va_end
(
args
);
thread
->
exit_code
=
1
;
kill_thread
(
thread
,
1
);
}
/* die on a fatal error */
/* die on a fatal error */
void
fatal_error
(
const
char
*
err
,
...
)
void
fatal_error
(
const
char
*
err
,
...
)
{
{
...
@@ -168,19 +154,6 @@ void fatal_error( const char *err, ... )
...
@@ -168,19 +154,6 @@ void fatal_error( const char *err, ... )
exit
(
1
);
exit
(
1
);
}
}
/* die on a fatal error */
void
fatal_perror
(
const
char
*
err
,
...
)
{
va_list
args
;
va_start
(
args
,
err
);
fprintf
(
stderr
,
"wineserver: "
);
vfprintf
(
stderr
,
err
,
args
);
perror
(
" "
);
va_end
(
args
);
exit
(
1
);
}
/* allocate the reply data */
/* allocate the reply data */
void
*
set_reply_data_size
(
data_size_t
size
)
void
*
set_reply_data_size
(
data_size_t
size
)
{
{
...
@@ -212,7 +185,7 @@ void write_reply( struct thread *thread )
...
@@ -212,7 +185,7 @@ void write_reply( struct thread *thread )
if
(
errno
==
EPIPE
)
if
(
errno
==
EPIPE
)
kill_thread
(
thread
,
0
);
/* normal death */
kill_thread
(
thread
,
0
);
/* normal death */
else
if
(
errno
!=
EWOULDBLOCK
&&
errno
!=
EAGAIN
)
else
if
(
errno
!=
EWOULDBLOCK
&&
errno
!=
EAGAIN
)
fatal_protocol_
perror
(
thread
,
"reply write"
);
fatal_protocol_
error
(
thread
,
"reply write: %s
\n
"
,
strerror
(
errno
)
);
}
}
/* send a reply to the current thread */
/* send a reply to the current thread */
...
@@ -254,7 +227,7 @@ static void send_reply( union generic_reply *reply )
...
@@ -254,7 +227,7 @@ static void send_reply( union generic_reply *reply )
else
if
(
errno
==
EPIPE
)
else
if
(
errno
==
EPIPE
)
kill_thread
(
current
,
0
);
/* normal death */
kill_thread
(
current
,
0
);
/* normal death */
else
else
fatal_protocol_
perror
(
current
,
"reply write"
);
fatal_protocol_
error
(
current
,
"reply write: %s
\n
"
,
strerror
(
errno
)
);
}
}
/* call a request handler */
/* call a request handler */
...
@@ -339,7 +312,7 @@ error:
...
@@ -339,7 +312,7 @@ error:
else
if
(
ret
>
0
)
else
if
(
ret
>
0
)
fatal_protocol_error
(
thread
,
"partial read %d
\n
"
,
ret
);
fatal_protocol_error
(
thread
,
"partial read %d
\n
"
,
ret
);
else
if
(
errno
!=
EWOULDBLOCK
&&
errno
!=
EAGAIN
)
else
if
(
errno
!=
EWOULDBLOCK
&&
errno
!=
EAGAIN
)
fatal_protocol_
perror
(
thread
,
"read"
);
fatal_protocol_
error
(
thread
,
"read: %s
\n
"
,
strerror
(
errno
)
);
}
}
/* receive a file descriptor on the process socket */
/* receive a file descriptor on the process socket */
...
@@ -557,9 +530,12 @@ static void create_dir( const char *name, struct stat *st )
...
@@ -557,9 +530,12 @@ static void create_dir( const char *name, struct stat *st )
{
{
if
(
lstat
(
name
,
st
)
==
-
1
)
if
(
lstat
(
name
,
st
)
==
-
1
)
{
{
if
(
errno
!=
ENOENT
)
fatal_perror
(
"lstat %s"
,
name
);
if
(
errno
!=
ENOENT
)
if
(
mkdir
(
name
,
0700
)
==
-
1
&&
errno
!=
EEXIST
)
fatal_perror
(
"mkdir %s"
,
name
);
fatal_error
(
"lstat %s: %s"
,
name
,
strerror
(
errno
));
if
(
lstat
(
name
,
st
)
==
-
1
)
fatal_perror
(
"lstat %s"
,
name
);
if
(
mkdir
(
name
,
0700
)
==
-
1
&&
errno
!=
EEXIST
)
fatal_error
(
"mkdir %s: %s
\n
"
,
name
,
strerror
(
errno
));
if
(
lstat
(
name
,
st
)
==
-
1
)
fatal_error
(
"lstat %s: %s
\n
"
,
name
,
strerror
(
errno
));
}
}
if
(
!
S_ISDIR
(
st
->
st_mode
))
fatal_error
(
"%s is not a directory
\n
"
,
name
);
if
(
!
S_ISDIR
(
st
->
st_mode
))
fatal_error
(
"%s is not a directory
\n
"
,
name
);
if
(
st
->
st_uid
!=
getuid
())
fatal_error
(
"%s is not owned by you
\n
"
,
name
);
if
(
st
->
st_uid
!=
getuid
())
fatal_error
(
"%s is not owned by you
\n
"
,
name
);
...
@@ -585,9 +561,12 @@ static void create_server_dir( const char *dir )
...
@@ -585,9 +561,12 @@ static void create_server_dir( const char *dir )
*
p
=
'/'
;
*
p
=
'/'
;
create_dir
(
server_dir
,
&
st
);
create_dir
(
server_dir
,
&
st
);
if
(
chdir
(
server_dir
)
==
-
1
)
fatal_perror
(
"chdir %s"
,
server_dir
);
if
(
chdir
(
server_dir
)
==
-
1
)
if
((
server_dir_fd
=
open
(
"."
,
O_RDONLY
))
==
-
1
)
fatal_perror
(
"open %s"
,
server_dir
);
fatal_error
(
"chdir %s: %s
\n
"
,
server_dir
,
strerror
(
errno
));
if
(
fstat
(
server_dir_fd
,
&
st2
)
==
-
1
)
fatal_perror
(
"stat %s"
,
server_dir
);
if
((
server_dir_fd
=
open
(
"."
,
O_RDONLY
))
==
-
1
)
fatal_error
(
"open %s: %s
\n
"
,
server_dir
,
strerror
(
errno
));
if
(
fstat
(
server_dir_fd
,
&
st2
)
==
-
1
)
fatal_error
(
"stat %s: %s
\n
"
,
server_dir
,
strerror
(
errno
));
if
(
st
.
st_dev
!=
st2
.
st_dev
||
st
.
st_ino
!=
st2
.
st_ino
)
if
(
st
.
st_dev
!=
st2
.
st_dev
||
st
.
st_ino
!=
st2
.
st_ino
)
fatal_error
(
"chdir did not end up in %s
\n
"
,
server_dir
);
fatal_error
(
"chdir did not end up in %s
\n
"
,
server_dir
);
...
@@ -603,7 +582,7 @@ static int create_server_lock(void)
...
@@ -603,7 +582,7 @@ static int create_server_lock(void)
if
(
lstat
(
server_lock_name
,
&
st
)
==
-
1
)
if
(
lstat
(
server_lock_name
,
&
st
)
==
-
1
)
{
{
if
(
errno
!=
ENOENT
)
if
(
errno
!=
ENOENT
)
fatal_
perror
(
"lstat %s/%s"
,
wine_get_server_dir
(),
server_lock_name
);
fatal_
error
(
"lstat %s/%s: %s"
,
wine_get_server_dir
(),
server_lock_name
,
strerror
(
errno
)
);
}
}
else
else
{
{
...
@@ -612,7 +591,7 @@ static int create_server_lock(void)
...
@@ -612,7 +591,7 @@ static int create_server_lock(void)
}
}
if
((
fd
=
open
(
server_lock_name
,
O_CREAT
|
O_TRUNC
|
O_WRONLY
,
0600
))
==
-
1
)
if
((
fd
=
open
(
server_lock_name
,
O_CREAT
|
O_TRUNC
|
O_WRONLY
,
0600
))
==
-
1
)
fatal_
perror
(
"error creating %s/%s"
,
wine_get_server_dir
(),
server_lock_name
);
fatal_
error
(
"error creating %s/%s: %s"
,
wine_get_server_dir
(),
server_lock_name
,
strerror
(
errno
)
);
return
fd
;
return
fd
;
}
}
...
@@ -729,13 +708,13 @@ static void acquire_lock(void)
...
@@ -729,13 +708,13 @@ static void acquire_lock(void)
case
EAGAIN
:
case
EAGAIN
:
exit
(
2
);
/* we didn't get the lock, exit with special status */
exit
(
2
);
/* we didn't get the lock, exit with special status */
default:
default:
fatal_
perror
(
"fcntl %s/%s"
,
wine_get_server_dir
(),
server_lock_name
);
fatal_
error
(
"fcntl %s/%s: %s"
,
wine_get_server_dir
(),
server_lock_name
,
strerror
(
errno
)
);
}
}
/* it seems we can't use locks on this fs, so we will use the socket existence as lock */
/* it seems we can't use locks on this fs, so we will use the socket existence as lock */
close
(
fd
);
close
(
fd
);
}
}
if
((
fd
=
socket
(
AF_UNIX
,
SOCK_STREAM
,
0
))
==
-
1
)
fatal_
perror
(
"socket"
);
if
((
fd
=
socket
(
AF_UNIX
,
SOCK_STREAM
,
0
))
==
-
1
)
fatal_
error
(
"socket: %s
\n
"
,
strerror
(
errno
)
);
addr
.
sun_family
=
AF_UNIX
;
addr
.
sun_family
=
AF_UNIX
;
strcpy
(
addr
.
sun_path
,
server_socket_name
);
strcpy
(
addr
.
sun_path
,
server_socket_name
);
slen
=
sizeof
(
addr
)
-
sizeof
(
addr
.
sun_path
)
+
strlen
(
addr
.
sun_path
)
+
1
;
slen
=
sizeof
(
addr
)
-
sizeof
(
addr
.
sun_path
)
+
strlen
(
addr
.
sun_path
)
+
1
;
...
@@ -750,11 +729,11 @@ static void acquire_lock(void)
...
@@ -750,11 +729,11 @@ static void acquire_lock(void)
fatal_error
(
"couldn't bind to the socket even though we hold the lock
\n
"
);
fatal_error
(
"couldn't bind to the socket even though we hold the lock
\n
"
);
exit
(
2
);
/* we didn't get the lock, exit with special status */
exit
(
2
);
/* we didn't get the lock, exit with special status */
}
}
fatal_
perror
(
"bind"
);
fatal_
error
(
"bind: %s
\n
"
,
strerror
(
errno
)
);
}
}
atexit
(
socket_cleanup
);
atexit
(
socket_cleanup
);
chmod
(
server_socket_name
,
0600
);
/* make sure no other user can connect */
chmod
(
server_socket_name
,
0600
);
/* make sure no other user can connect */
if
(
listen
(
fd
,
5
)
==
-
1
)
fatal_
perror
(
"listen"
);
if
(
listen
(
fd
,
5
)
==
-
1
)
fatal_
error
(
"listen: %s
\n
"
,
strerror
(
errno
)
);
if
(
!
(
master_socket
=
alloc_object
(
&
master_socket_ops
))
||
if
(
!
(
master_socket
=
alloc_object
(
&
master_socket_ops
))
||
!
(
master_socket
->
fd
=
create_anonymous_fd
(
&
master_socket_fd_ops
,
fd
,
&
master_socket
->
obj
,
0
)))
!
(
master_socket
->
fd
=
create_anonymous_fd
(
&
master_socket_fd_ops
,
fd
,
&
master_socket
->
obj
,
0
)))
...
@@ -779,15 +758,18 @@ void open_master_socket(void)
...
@@ -779,15 +758,18 @@ void open_master_socket(void)
fd
=
open
(
"/dev/null"
,
O_RDWR
);
fd
=
open
(
"/dev/null"
,
O_RDWR
);
while
(
fd
>=
0
&&
fd
<=
2
)
fd
=
dup
(
fd
);
while
(
fd
>=
0
&&
fd
<=
2
)
fd
=
dup
(
fd
);
if
(
!
server_dir
)
fatal_error
(
"directory %s cannot be accessed
\n
"
,
config_dir
);
if
(
!
server_dir
)
if
(
chdir
(
config_dir
)
==
-
1
)
fatal_perror
(
"chdir to %s"
,
config_dir
);
fatal_error
(
"directory %s cannot be accessed
\n
"
,
config_dir
);
if
((
config_dir_fd
=
open
(
"."
,
O_RDONLY
))
==
-
1
)
fatal_perror
(
"open %s"
,
config_dir
);
if
(
chdir
(
config_dir
)
==
-
1
)
fatal_error
(
"chdir to %s: %s
\n
"
,
config_dir
,
strerror
(
errno
));
if
((
config_dir_fd
=
open
(
"."
,
O_RDONLY
))
==
-
1
)
fatal_error
(
"open %s: %s
\n
"
,
config_dir
,
strerror
(
errno
));
create_server_dir
(
server_dir
);
create_server_dir
(
server_dir
);
if
(
!
foreground
)
if
(
!
foreground
)
{
{
if
(
pipe
(
sync_pipe
)
==
-
1
)
fatal_
perror
(
"pipe"
);
if
(
pipe
(
sync_pipe
)
==
-
1
)
fatal_
error
(
"pipe: %s
\n
"
,
strerror
(
errno
)
);
pid
=
fork
();
pid
=
fork
();
switch
(
pid
)
switch
(
pid
)
{
{
...
@@ -808,7 +790,7 @@ void open_master_socket(void)
...
@@ -808,7 +790,7 @@ void open_master_socket(void)
break
;
break
;
case
-
1
:
case
-
1
:
fatal_
perror
(
"fork"
);
fatal_
error
(
"fork: %s
\n
"
,
strerror
(
errno
)
);
break
;
break
;
default:
/* parent */
default:
/* parent */
...
...
server/request.h
View file @
ea919d9d
...
@@ -38,15 +38,10 @@
...
@@ -38,15 +38,10 @@
#ifdef __GNUC__
#ifdef __GNUC__
extern
void
fatal_protocol_error
(
struct
thread
*
thread
,
extern
void
fatal_protocol_error
(
struct
thread
*
thread
,
const
char
*
err
,
...
)
__attribute__
((
format
(
printf
,
2
,
3
)));
const
char
*
err
,
...
)
__attribute__
((
format
(
printf
,
2
,
3
)));
extern
void
fatal_protocol_perror
(
struct
thread
*
thread
,
const
char
*
err
,
...
)
__attribute__
((
format
(
printf
,
2
,
3
)));
extern
void
fatal_error
(
const
char
*
err
,
...
)
__attribute__
((
noreturn
,
format
(
printf
,
1
,
2
)));
extern
void
fatal_error
(
const
char
*
err
,
...
)
__attribute__
((
noreturn
,
format
(
printf
,
1
,
2
)));
extern
void
fatal_perror
(
const
char
*
err
,
...
)
__attribute__
((
noreturn
,
format
(
printf
,
1
,
2
)));
#else
#else
extern
void
fatal_protocol_error
(
struct
thread
*
thread
,
const
char
*
err
,
...
);
extern
void
fatal_protocol_error
(
struct
thread
*
thread
,
const
char
*
err
,
...
);
extern
void
fatal_protocol_perror
(
struct
thread
*
thread
,
const
char
*
err
,
...
);
extern
void
fatal_error
(
const
char
*
err
,
...
);
extern
void
fatal_error
(
const
char
*
err
,
...
);
extern
void
fatal_perror
(
const
char
*
err
,
...
);
#endif
#endif
extern
const
char
*
get_config_dir
(
void
);
extern
const
char
*
get_config_dir
(
void
);
...
...
server/thread.c
View file @
ea919d9d
...
@@ -652,7 +652,7 @@ static int send_thread_wakeup( struct thread *thread, client_ptr_t cookie, int s
...
@@ -652,7 +652,7 @@ static int send_thread_wakeup( struct thread *thread, client_ptr_t cookie, int s
else
if
(
errno
==
EPIPE
)
else
if
(
errno
==
EPIPE
)
kill_thread
(
thread
,
0
);
/* normal death */
kill_thread
(
thread
,
0
);
/* normal death */
else
else
fatal_protocol_
perror
(
thread
,
"write"
);
fatal_protocol_
error
(
thread
,
"write: %s
\n
"
,
strerror
(
errno
)
);
return
-
1
;
return
-
1
;
}
}
...
...
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