Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
mpd
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
Иван Мажукин
mpd
Commits
a27d105d
Commit
a27d105d
authored
Aug 07, 2013
by
Max Kellermann
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
FatalError: new library to replace mpd_error.h
parent
67e44b0f
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
222 additions
and
76 deletions
+222
-76
Makefile.am
Makefile.am
+2
-0
Daemon.cxx
src/Daemon.cxx
+23
-23
Daemon.hxx
src/Daemon.hxx
+4
-4
DecoderThread.cxx
src/DecoderThread.cxx
+2
-2
FatalError.cxx
src/FatalError.cxx
+91
-0
FatalError.hxx
src/FatalError.hxx
+58
-0
InotifySource.cxx
src/InotifySource.cxx
+4
-5
Log.cxx
src/Log.cxx
+3
-2
Main.cxx
src/Main.cxx
+19
-21
MusicBuffer.cxx
src/MusicBuffer.cxx
+2
-2
OutputAll.cxx
src/OutputAll.cxx
+6
-6
OutputThread.cxx
src/OutputThread.cxx
+2
-3
PlayerThread.cxx
src/PlayerThread.cxx
+2
-2
SignalHandlers.cxx
src/SignalHandlers.cxx
+2
-4
UpdateGlue.cxx
src/UpdateGlue.cxx
+2
-2
No files found.
Makefile.am
View file @
a27d105d
...
@@ -91,6 +91,7 @@ src_mpd_SOURCES = \
...
@@ -91,6 +91,7 @@ src_mpd_SOURCES = \
src/thread/PosixCond.hxx
\
src/thread/PosixCond.hxx
\
src/thread/WindowsCond.hxx
\
src/thread/WindowsCond.hxx
\
src/thread/GLibCond.hxx
\
src/thread/GLibCond.hxx
\
src/FatalError.cxx src/FatalError.hxx
\
src/clock.c src/clock.h
\
src/clock.c src/clock.h
\
src/notify.cxx src/notify.hxx
\
src/notify.cxx src/notify.hxx
\
src/AudioConfig.cxx src/AudioConfig.hxx
\
src/AudioConfig.cxx src/AudioConfig.hxx
\
...
@@ -1360,6 +1361,7 @@ endif
...
@@ -1360,6 +1361,7 @@ endif
if
ENABLE_INOTIFY
if
ENABLE_INOTIFY
noinst_PROGRAMS
+=
test
/run_inotify
noinst_PROGRAMS
+=
test
/run_inotify
test_run_inotify_SOURCES
=
test
/run_inotify.cxx
\
test_run_inotify_SOURCES
=
test
/run_inotify.cxx
\
src/FatalError.cxx
\
src/fd_util.c
\
src/fd_util.c
\
src/InotifySource.cxx
src/InotifySource.cxx
test_run_inotify_LDADD
=
\
test_run_inotify_LDADD
=
\
...
...
src/Daemon.cxx
View file @
a27d105d
...
@@ -19,13 +19,13 @@
...
@@ -19,13 +19,13 @@
#include "config.h"
#include "config.h"
#include "Daemon.hxx"
#include "Daemon.hxx"
#include "FatalError.hxx"
#include <glib.h>
#include <glib.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#include <unistd.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <string.h>
#include <sys/types.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/stat.h>
...
@@ -65,23 +65,23 @@ daemonize_kill(void)
...
@@ -65,23 +65,23 @@ daemonize_kill(void)
int
pid
,
ret
;
int
pid
,
ret
;
if
(
pidfile
==
nullptr
)
if
(
pidfile
==
nullptr
)
MPD_ERROR
(
"no pid_file specified in the config file"
);
FatalError
(
"no pid_file specified in the config file"
);
fp
=
fopen
(
pidfile
,
"r"
);
fp
=
fopen
(
pidfile
,
"r"
);
if
(
fp
==
nullptr
)
if
(
fp
==
nullptr
)
MPD_ERROR
(
"unable to open pid file
\"
%s
\"
: %s
"
,
FormatFatalSystemError
(
"Unable to open pid file
\"
%s
\"
"
,
pidfile
,
g_strerror
(
errno
)
);
pidfile
);
if
(
fscanf
(
fp
,
"%i"
,
&
pid
)
!=
1
)
{
if
(
fscanf
(
fp
,
"%i"
,
&
pid
)
!=
1
)
{
MPD_ERROR
(
"unable to read the pid from file
\"
%s
\"
"
,
FormatFatalError
(
"unable to read the pid from file
\"
%s
\"
"
,
pidfile
);
pidfile
);
}
}
fclose
(
fp
);
fclose
(
fp
);
ret
=
kill
(
pid
,
SIGTERM
);
ret
=
kill
(
pid
,
SIGTERM
);
if
(
ret
<
0
)
if
(
ret
<
0
)
MPD_ERROR
(
"unable to kill process %i: %s
"
,
FormatFatalSystemError
(
"unable to kill process %i
"
,
pid
,
g_strerror
(
errno
));
int
(
pid
));
exit
(
EXIT_SUCCESS
);
exit
(
EXIT_SUCCESS
);
}
}
...
@@ -102,8 +102,8 @@ daemonize_set_user(void)
...
@@ -102,8 +102,8 @@ daemonize_set_user(void)
/* set gid */
/* set gid */
if
(
user_gid
!=
(
gid_t
)
-
1
&&
user_gid
!=
getgid
())
{
if
(
user_gid
!=
(
gid_t
)
-
1
&&
user_gid
!=
getgid
())
{
if
(
setgid
(
user_gid
)
==
-
1
)
{
if
(
setgid
(
user_gid
)
==
-
1
)
{
MPD_ERROR
(
"cannot setgid to %d: %s
"
,
FormatFatalSystemError
(
"Failed to set group %d
"
,
(
int
)
user_gid
,
g_strerror
(
errno
)
);
(
int
)
user_gid
);
}
}
}
}
...
@@ -112,17 +112,17 @@ daemonize_set_user(void)
...
@@ -112,17 +112,17 @@ daemonize_set_user(void)
* (must be done before we change our uid)
* (must be done before we change our uid)
*/
*/
if
(
!
had_group
&&
initgroups
(
user_name
,
user_gid
)
==
-
1
)
{
if
(
!
had_group
&&
initgroups
(
user_name
,
user_gid
)
==
-
1
)
{
g_warning
(
"cannot ini
t supplementary groups "
FormatFatalSystemError
(
"Failed to se
t supplementary groups "
"of user
\"
%s
\"
: %s
"
,
"of user
\"
%s
\"
"
,
user_name
,
g_strerror
(
errno
)
);
user_name
);
}
}
#endif
#endif
/* set uid */
/* set uid */
if
(
user_uid
!=
(
uid_t
)
-
1
&&
user_uid
!=
getuid
()
&&
if
(
user_uid
!=
(
uid_t
)
-
1
&&
user_uid
!=
getuid
()
&&
setuid
(
user_uid
)
==
-
1
)
{
setuid
(
user_uid
)
==
-
1
)
{
MPD_ERROR
(
"cannot change to uid of user
\"
%s
\"
: %s
"
,
FormatFatalSystemError
(
"Failed to set user
\"
%s
\"
"
,
user_name
,
g_strerror
(
errno
)
);
user_name
);
}
}
}
}
...
@@ -136,7 +136,7 @@ daemonize_detach(void)
...
@@ -136,7 +136,7 @@ daemonize_detach(void)
#ifdef HAVE_DAEMON
#ifdef HAVE_DAEMON
if
(
daemon
(
0
,
1
))
if
(
daemon
(
0
,
1
))
MPD_ERROR
(
"daemon() failed: %s"
,
g_strerror
(
errno
)
);
FatalSystemError
(
"daemon() failed"
);
#elif defined(HAVE_FORK)
#elif defined(HAVE_FORK)
...
@@ -144,7 +144,7 @@ daemonize_detach(void)
...
@@ -144,7 +144,7 @@ daemonize_detach(void)
switch
(
fork
())
{
switch
(
fork
())
{
case
-
1
:
case
-
1
:
MPD_ERROR
(
"fork() failed: %s"
,
g_strerror
(
errno
)
);
FatalSystemError
(
"fork() failed"
);
case
0
:
case
0
:
break
;
break
;
default:
default:
...
@@ -155,14 +155,14 @@ daemonize_detach(void)
...
@@ -155,14 +155,14 @@ daemonize_detach(void)
/* release the current working directory */
/* release the current working directory */
if
(
chdir
(
"/"
)
<
0
)
if
(
chdir
(
"/"
)
<
0
)
MPD_ERROR
(
"problems changing to root directory"
);
FatalError
(
"problems changing to root directory"
);
/* detach from the current session */
/* detach from the current session */
setsid
();
setsid
();
#else
#else
MPD_ERROR
(
"no support for daemonizing"
);
FatalError
(
"no support for daemonizing"
);
#endif
#endif
g_debug
(
"daemonized!"
);
g_debug
(
"daemonized!"
);
...
@@ -179,8 +179,8 @@ daemonize(bool detach)
...
@@ -179,8 +179,8 @@ daemonize(bool detach)
g_debug
(
"opening pid file"
);
g_debug
(
"opening pid file"
);
fp
=
fopen
(
pidfile
,
"w+"
);
fp
=
fopen
(
pidfile
,
"w+"
);
if
(
!
fp
)
{
if
(
!
fp
)
{
MPD_ERROR
(
"could not create pid file
\"
%s
\"
: %s
"
,
FormatFatalSystemError
(
"Failed to create pid file
\"
%s
\"
"
,
pidfile
,
g_strerror
(
errno
)
);
pidfile
);
}
}
}
}
...
@@ -200,7 +200,7 @@ daemonize_init(const char *user, const char *group, const char *_pidfile)
...
@@ -200,7 +200,7 @@ daemonize_init(const char *user, const char *group, const char *_pidfile)
if
(
user
)
{
if
(
user
)
{
struct
passwd
*
pwd
=
getpwnam
(
user
);
struct
passwd
*
pwd
=
getpwnam
(
user
);
if
(
pwd
==
nullptr
)
if
(
pwd
==
nullptr
)
MPD_ERROR
(
"no such user
\"
%s
\"
"
,
user
);
FormatFatalError
(
"no such user
\"
%s
\"
"
,
user
);
user_uid
=
pwd
->
pw_uid
;
user_uid
=
pwd
->
pw_uid
;
user_gid
=
pwd
->
pw_gid
;
user_gid
=
pwd
->
pw_gid
;
...
@@ -214,7 +214,7 @@ daemonize_init(const char *user, const char *group, const char *_pidfile)
...
@@ -214,7 +214,7 @@ daemonize_init(const char *user, const char *group, const char *_pidfile)
if
(
group
)
{
if
(
group
)
{
struct
group
*
grp
=
getgrnam
(
group
);
struct
group
*
grp
=
getgrnam
(
group
);
if
(
grp
==
nullptr
)
if
(
grp
==
nullptr
)
MPD_ERROR
(
"no such group
\"
%s
\"
"
,
group
);
FormatFatalError
(
"no such group
\"
%s
\"
"
,
group
);
user_gid
=
grp
->
gr_gid
;
user_gid
=
grp
->
gr_gid
;
had_group
=
true
;
had_group
=
true
;
}
}
...
...
src/Daemon.hxx
View file @
a27d105d
...
@@ -20,8 +20,6 @@
...
@@ -20,8 +20,6 @@
#ifndef MPD_DAEMON_HXX
#ifndef MPD_DAEMON_HXX
#define MPD_DAEMON_HXX
#define MPD_DAEMON_HXX
#include "mpd_error.h"
#ifndef WIN32
#ifndef WIN32
void
void
daemonize_init
(
const
char
*
user
,
const
char
*
group
,
const
char
*
pidfile
);
daemonize_init
(
const
char
*
user
,
const
char
*
group
,
const
char
*
pidfile
);
...
@@ -48,10 +46,12 @@ daemonize_finish(void)
...
@@ -48,10 +46,12 @@ daemonize_finish(void)
void
void
daemonize_kill
(
void
);
daemonize_kill
(
void
);
#else
#else
#include
<glib.h>
#include
"FatalError.hxx"
static
inline
void
static
inline
void
daemonize_kill
(
void
)
daemonize_kill
(
void
)
{
MPD_ERROR
(
"--kill is not available on WIN32"
);
}
{
FatalError
(
"--kill is not available on WIN32"
);
}
#endif
#endif
/**
/**
...
...
src/DecoderThread.cxx
View file @
a27d105d
...
@@ -24,7 +24,7 @@
...
@@ -24,7 +24,7 @@
#include "DecoderError.hxx"
#include "DecoderError.hxx"
#include "DecoderPlugin.hxx"
#include "DecoderPlugin.hxx"
#include "Song.hxx"
#include "Song.hxx"
#include "
mpd_error.h
"
#include "
FatalError.hxx
"
#include "Mapper.hxx"
#include "Mapper.hxx"
#include "fs/Path.hxx"
#include "fs/Path.hxx"
#include "DecoderAPI.hxx"
#include "DecoderAPI.hxx"
...
@@ -501,6 +501,6 @@ decoder_thread_start(struct decoder_control *dc)
...
@@ -501,6 +501,6 @@ decoder_thread_start(struct decoder_control *dc)
GError
*
e
=
NULL
;
GError
*
e
=
NULL
;
dc
->
thread
=
g_thread_create
(
decoder_task
,
dc
,
true
,
&
e
);
dc
->
thread
=
g_thread_create
(
decoder_task
,
dc
,
true
,
&
e
);
if
(
dc
->
thread
==
NULL
)
if
(
dc
->
thread
==
NULL
)
MPD_ERROR
(
"Failed to spawn decoder task: %s"
,
e
->
messag
e
);
FatalError
(
"Failed to spawn decoder task"
,
e
);
#endif
#endif
}
}
src/FatalError.cxx
0 → 100644
View file @
a27d105d
/*
* Copyright (C) 2003-2013 The Music Player Daemon Project
* http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#include "FatalError.hxx"
#include <glib.h>
#include <stdlib.h>
#include <stdarg.h>
#include <stdio.h>
#ifdef WIN32
#include <windows.h>
#else
#include <errno.h>
#endif
#undef G_LOG_DOMAIN
#define G_LOG_DOMAIN "FatalError"
void
FatalError
(
const
char
*
msg
)
{
g_critical
(
"%s"
,
msg
);
exit
(
EXIT_FAILURE
);
}
void
FormatFatalError
(
const
char
*
fmt
,
...)
{
va_list
ap
;
va_start
(
ap
,
fmt
);
g_logv
(
G_LOG_DOMAIN
,
G_LOG_LEVEL_CRITICAL
,
fmt
,
ap
);
va_end
(
ap
);
exit
(
EXIT_FAILURE
);
}
void
FatalError
(
GError
*
error
)
{
FatalError
(
error
->
message
);
}
void
FatalError
(
const
char
*
msg
,
GError
*
error
)
{
FormatFatalError
(
"%s: %s"
,
msg
,
error
->
message
);
}
void
FatalSystemError
(
const
char
*
msg
)
{
const
char
*
system_error
;
#ifdef WIN32
system_error
=
g_win32_error_message
(
GetLastError
());
#else
system_error
=
g_strerror
(
errno
);
#endif
g_critical
(
"%s: %s"
,
msg
,
system_error
);
exit
(
EXIT_FAILURE
);
}
void
FormatFatalSystemError
(
const
char
*
fmt
,
...)
{
char
buffer
[
1024
];
va_list
ap
;
va_start
(
ap
,
fmt
);
vsnprintf
(
buffer
,
sizeof
(
buffer
),
fmt
,
ap
);
va_end
(
ap
);
FatalSystemError
(
buffer
);
}
src/FatalError.hxx
0 → 100644
View file @
a27d105d
/*
* Copyright (C) 2003-2013 The Music Player Daemon Project
* http://www.musicpd.org
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef MPD_FATAL_ERROR_HXX
#define MPD_FATAL_ERROR_HXX
#include "gerror.h"
#include "gcc.h"
/**
* Log the specified message and abort the process.
*/
gcc_noreturn
void
FatalError
(
const
char
*
msg
);
gcc_noreturn
void
FormatFatalError
(
const
char
*
fmt
,
...);
gcc_noreturn
void
FatalError
(
GError
*
error
);
gcc_noreturn
void
FatalError
(
const
char
*
msg
,
GError
*
error
);
/**
* Call this after a system call has failed that is not supposed to
* fail. Prints the given message, the system error message (from
* errno or GetLastError()) and abort the process.
*/
gcc_noreturn
void
FatalSystemError
(
const
char
*
msg
);
gcc_noreturn
void
FormatFatalSystemError
(
const
char
*
fmt
,
...);
#endif
src/InotifySource.cxx
View file @
a27d105d
...
@@ -21,7 +21,7 @@
...
@@ -21,7 +21,7 @@
#include "InotifySource.hxx"
#include "InotifySource.hxx"
#include "util/fifo_buffer.h"
#include "util/fifo_buffer.h"
#include "fd_util.h"
#include "fd_util.h"
#include "
mpd_error.h
"
#include "
FatalError.hxx
"
#include <glib.h>
#include <glib.h>
...
@@ -50,14 +50,13 @@ InotifySource::OnSocketReady(gcc_unused unsigned flags)
...
@@ -50,14 +50,13 @@ InotifySource::OnSocketReady(gcc_unused unsigned flags)
dest
=
fifo_buffer_write
(
buffer
,
&
length
);
dest
=
fifo_buffer_write
(
buffer
,
&
length
);
if
(
dest
==
NULL
)
if
(
dest
==
NULL
)
MPD_ERROR
(
"buffer full"
);
FatalError
(
"buffer full"
);
nbytes
=
read
(
Get
(),
dest
,
length
);
nbytes
=
read
(
Get
(),
dest
,
length
);
if
(
nbytes
<
0
)
if
(
nbytes
<
0
)
MPD_ERROR
(
"failed to read from inotify: %s"
,
FatalSystemError
(
"Failed to read from inotify"
);
g_strerror
(
errno
));
if
(
nbytes
==
0
)
if
(
nbytes
==
0
)
MPD_ERROR
(
"end of file from inotify"
);
FatalError
(
"end of file from inotify"
);
fifo_buffer_append
(
buffer
,
nbytes
);
fifo_buffer_append
(
buffer
,
nbytes
);
...
...
src/Log.cxx
View file @
a27d105d
...
@@ -21,6 +21,7 @@
...
@@ -21,6 +21,7 @@
#include "Log.hxx"
#include "Log.hxx"
#include "conf.h"
#include "conf.h"
#include "fd_util.h"
#include "fd_util.h"
#include "FatalError.hxx"
#include "mpd_error.h"
#include "mpd_error.h"
#include <assert.h>
#include <assert.h>
...
@@ -60,9 +61,9 @@ static void redirect_logs(int fd)
...
@@ -60,9 +61,9 @@ static void redirect_logs(int fd)
{
{
assert
(
fd
>=
0
);
assert
(
fd
>=
0
);
if
(
dup2
(
fd
,
STDOUT_FILENO
)
<
0
)
if
(
dup2
(
fd
,
STDOUT_FILENO
)
<
0
)
MPD_ERROR
(
"problems dup2 stdout : %s
\n
"
,
strerror
(
errno
)
);
FatalSystemError
(
"Failed to dup2 stdout"
);
if
(
dup2
(
fd
,
STDERR_FILENO
)
<
0
)
if
(
dup2
(
fd
,
STDERR_FILENO
)
<
0
)
MPD_ERROR
(
"problems dup2 stderr : %s
\n
"
,
strerror
(
errno
)
);
FatalSystemError
(
"Failed to dup2 stderr"
);
}
}
static
const
char
*
log_date
(
void
)
static
const
char
*
log_date
(
void
)
...
...
src/Main.cxx
View file @
a27d105d
...
@@ -55,13 +55,12 @@
...
@@ -55,13 +55,12 @@
#include "AudioConfig.hxx"
#include "AudioConfig.hxx"
#include "pcm/PcmResample.hxx"
#include "pcm/PcmResample.hxx"
#include "Daemon.hxx"
#include "Daemon.hxx"
#include "FatalError.hxx"
extern
"C"
{
extern
"C"
{
#include "stats.h"
#include "stats.h"
}
}
#include "mpd_error.h"
#ifdef ENABLE_INOTIFY
#ifdef ENABLE_INOTIFY
#include "InotifyUpdate.hxx"
#include "InotifyUpdate.hxx"
#endif
#endif
...
@@ -194,13 +193,13 @@ glue_db_init_and_load(void)
...
@@ -194,13 +193,13 @@ glue_db_init_and_load(void)
}
}
if
(
!
DatabaseGlobalInit
(
*
param
,
&
error
))
if
(
!
DatabaseGlobalInit
(
*
param
,
&
error
))
MPD_ERROR
(
"%s"
,
error
->
message
);
FatalError
(
error
);
delete
allocated
;
delete
allocated
;
ret
=
DatabaseGlobalOpen
(
&
error
);
ret
=
DatabaseGlobalOpen
(
&
error
);
if
(
!
ret
)
if
(
!
ret
)
MPD_ERROR
(
"%s"
,
error
->
message
);
FatalError
(
error
);
/* run database update after daemonization? */
/* run database update after daemonization? */
return
!
db_is_simple
()
||
db_exists
();
return
!
db_is_simple
()
||
db_exists
();
...
@@ -216,10 +215,10 @@ glue_sticker_init(void)
...
@@ -216,10 +215,10 @@ glue_sticker_init(void)
GError
*
error
=
NULL
;
GError
*
error
=
NULL
;
char
*
sticker_file
=
config_dup_path
(
CONF_STICKER_FILE
,
&
error
);
char
*
sticker_file
=
config_dup_path
(
CONF_STICKER_FILE
,
&
error
);
if
(
sticker_file
==
NULL
&&
error
!=
NULL
)
if
(
sticker_file
==
NULL
&&
error
!=
NULL
)
MPD_ERROR
(
"%s"
,
error
->
message
);
FatalError
(
error
);
if
(
!
sticker_global_init
(
sticker_file
,
&
error
))
if
(
!
sticker_global_init
(
sticker_file
,
&
error
))
MPD_ERROR
(
"%s"
,
error
->
message
);
FatalError
(
error
);
g_free
(
sticker_file
);
g_free
(
sticker_file
);
#endif
#endif
...
@@ -268,16 +267,12 @@ static void winsock_init(void)
...
@@ -268,16 +267,12 @@ static void winsock_init(void)
retval
=
WSAStartup
(
MAKEWORD
(
2
,
2
),
&
sockinfo
);
retval
=
WSAStartup
(
MAKEWORD
(
2
,
2
),
&
sockinfo
);
if
(
retval
!=
0
)
if
(
retval
!=
0
)
{
FormatFatalError
(
"Attempt to open Winsock2 failed; error code %d"
,
MPD_ERROR
(
"Attempt to open Winsock2 failed; error code %d
\n
"
,
retval
);
retval
);
}
if
(
LOBYTE
(
sockinfo
.
wVersion
)
!=
2
)
if
(
LOBYTE
(
sockinfo
.
wVersion
)
!=
2
)
{
FatalError
(
"We use Winsock2 but your version is either too new "
MPD_ERROR
(
"We use Winsock2 but your version is either too new "
"or old; please install Winsock 2.x"
);
"or old; please install Winsock 2.x
\n
"
);
}
#endif
#endif
}
}
...
@@ -298,8 +293,9 @@ initialize_decoder_and_player(void)
...
@@ -298,8 +293,9 @@ initialize_decoder_and_player(void)
if
(
param
!=
NULL
)
{
if
(
param
!=
NULL
)
{
long
tmp
=
strtol
(
param
->
value
,
&
test
,
10
);
long
tmp
=
strtol
(
param
->
value
,
&
test
,
10
);
if
(
*
test
!=
'\0'
||
tmp
<=
0
||
tmp
==
LONG_MAX
)
if
(
*
test
!=
'\0'
||
tmp
<=
0
||
tmp
==
LONG_MAX
)
MPD_ERROR
(
"buffer size
\"
%s
\"
is not a positive integer, "
FormatFatalError
(
"buffer size
\"
%s
\"
is not a "
"line %i
\n
"
,
param
->
value
,
param
->
line
);
"positive integer, line %i"
,
param
->
value
,
param
->
line
);
buffer_size
=
tmp
;
buffer_size
=
tmp
;
}
else
}
else
buffer_size
=
DEFAULT_BUFFER_SIZE
;
buffer_size
=
DEFAULT_BUFFER_SIZE
;
...
@@ -309,15 +305,17 @@ initialize_decoder_and_player(void)
...
@@ -309,15 +305,17 @@ initialize_decoder_and_player(void)
buffered_chunks
=
buffer_size
/
CHUNK_SIZE
;
buffered_chunks
=
buffer_size
/
CHUNK_SIZE
;
if
(
buffered_chunks
>=
1
<<
15
)
if
(
buffered_chunks
>=
1
<<
15
)
MPD_ERROR
(
"buffer size
\"
%li
\"
is too big
\n
"
,
(
long
)
buffer_size
);
FormatFatalError
(
"buffer size
\"
%lu
\"
is too big"
,
(
unsigned
long
)
buffer_size
);
param
=
config_get_param
(
CONF_BUFFER_BEFORE_PLAY
);
param
=
config_get_param
(
CONF_BUFFER_BEFORE_PLAY
);
if
(
param
!=
NULL
)
{
if
(
param
!=
NULL
)
{
perc
=
strtod
(
param
->
value
,
&
test
);
perc
=
strtod
(
param
->
value
,
&
test
);
if
(
*
test
!=
'%'
||
perc
<
0
||
perc
>
100
)
{
if
(
*
test
!=
'%'
||
perc
<
0
||
perc
>
100
)
{
MPD_ERROR
(
"buffered before play
\"
%s
\"
is not a positive "
FormatFatalError
(
"buffered before play
\"
%s
\"
is not "
"percentage and less than 100 percent, line %i"
,
"a positive percentage and less "
param
->
value
,
param
->
line
);
"than 100 percent, line %i"
,
param
->
value
,
param
->
line
);
}
}
}
else
}
else
perc
=
DEFAULT_BUFFER_BEFORE_PLAY
;
perc
=
DEFAULT_BUFFER_BEFORE_PLAY
;
...
@@ -505,7 +503,7 @@ int mpd_main(int argc, char *argv[])
...
@@ -505,7 +503,7 @@ int mpd_main(int argc, char *argv[])
database */
database */
unsigned
job
=
update_enqueue
(
NULL
,
true
);
unsigned
job
=
update_enqueue
(
NULL
,
true
);
if
(
job
==
0
)
if
(
job
==
0
)
MPD_ERROR
(
"directory update failed"
);
FatalError
(
"directory update failed"
);
}
}
if
(
!
glue_state_file_init
(
&
error
))
{
if
(
!
glue_state_file_init
(
&
error
))
{
...
...
src/MusicBuffer.cxx
View file @
a27d105d
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
#include "MusicChunk.hxx"
#include "MusicChunk.hxx"
#include "thread/Mutex.hxx"
#include "thread/Mutex.hxx"
#include "util/SliceBuffer.hxx"
#include "util/SliceBuffer.hxx"
#include "
mpd_error.h
"
#include "
FatalError.hxx
"
#include <assert.h>
#include <assert.h>
...
@@ -33,7 +33,7 @@ struct music_buffer : public SliceBuffer<music_chunk> {
...
@@ -33,7 +33,7 @@ struct music_buffer : public SliceBuffer<music_chunk> {
music_buffer
(
unsigned
num_chunks
)
music_buffer
(
unsigned
num_chunks
)
:
SliceBuffer
(
num_chunks
)
{
:
SliceBuffer
(
num_chunks
)
{
if
(
IsOOM
())
if
(
IsOOM
())
MPD_ERROR
(
"Failed to allocate buffer"
);
FatalError
(
"Failed to allocate buffer"
);
}
}
};
};
...
...
src/OutputAll.cxx
View file @
a27d105d
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
#include "MusicBuffer.hxx"
#include "MusicBuffer.hxx"
#include "MusicPipe.hxx"
#include "MusicPipe.hxx"
#include "MusicChunk.hxx"
#include "MusicChunk.hxx"
#include "
mpd_error.h
"
#include "
FatalError.hxx
"
#include "conf.h"
#include "conf.h"
#include "notify.hxx"
#include "notify.hxx"
...
@@ -128,10 +128,10 @@ audio_output_all_init(struct player_control *pc)
...
@@ -128,10 +128,10 @@ audio_output_all_init(struct player_control *pc)
struct
audio_output
*
output
=
audio_output_new
(
*
param
,
pc
,
&
error
);
struct
audio_output
*
output
=
audio_output_new
(
*
param
,
pc
,
&
error
);
if
(
output
==
NULL
)
{
if
(
output
==
NULL
)
{
if
(
param
!=
NULL
)
if
(
param
!=
NULL
)
MPD_ERROR
(
"line %i: %s"
,
FormatFatalError
(
"line %i: %s"
,
param
->
line
,
error
->
message
);
param
->
line
,
error
->
message
);
else
else
MPD_ERROR
(
"%s"
,
error
->
message
);
FatalError
(
error
);
}
}
audio_outputs
[
i
]
=
output
;
audio_outputs
[
i
]
=
output
;
...
@@ -139,8 +139,8 @@ audio_output_all_init(struct player_control *pc)
...
@@ -139,8 +139,8 @@ audio_output_all_init(struct player_control *pc)
/* require output names to be unique: */
/* require output names to be unique: */
for
(
j
=
0
;
j
<
i
;
j
++
)
{
for
(
j
=
0
;
j
<
i
;
j
++
)
{
if
(
!
strcmp
(
output
->
name
,
audio_outputs
[
j
]
->
name
))
{
if
(
!
strcmp
(
output
->
name
,
audio_outputs
[
j
]
->
name
))
{
MPD_ERROR
(
"output devices with identical "
FormatFatalError
(
"output devices with identical "
"names: %s
\n
"
,
output
->
name
);
"names: %s
"
,
output
->
name
);
}
}
}
}
}
}
...
...
src/OutputThread.cxx
View file @
a27d105d
...
@@ -29,8 +29,7 @@
...
@@ -29,8 +29,7 @@
#include "PlayerControl.hxx"
#include "PlayerControl.hxx"
#include "MusicPipe.hxx"
#include "MusicPipe.hxx"
#include "MusicChunk.hxx"
#include "MusicChunk.hxx"
#include "FatalError.hxx"
#include "mpd_error.h"
#include "gcc.h"
#include "gcc.h"
#include <glib.h>
#include <glib.h>
...
@@ -676,6 +675,6 @@ void audio_output_thread_start(struct audio_output *ao)
...
@@ -676,6 +675,6 @@ void audio_output_thread_start(struct audio_output *ao)
#else
#else
GError
*
e
=
nullptr
;
GError
*
e
=
nullptr
;
if
(
!
(
ao
->
thread
=
g_thread_create
(
audio_output_task
,
ao
,
true
,
&
e
)))
if
(
!
(
ao
->
thread
=
g_thread_create
(
audio_output_task
,
ao
,
true
,
&
e
)))
MPD_ERROR
(
"Failed to spawn output task: %s
\n
"
,
e
->
messag
e
);
FatalError
(
"Failed to spawn output task"
,
e
);
#endif
#endif
}
}
src/PlayerThread.cxx
View file @
a27d105d
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
#include "MusicChunk.hxx"
#include "MusicChunk.hxx"
#include "Song.hxx"
#include "Song.hxx"
#include "Main.hxx"
#include "Main.hxx"
#include "
mpd_error.h
"
#include "
FatalError.hxx
"
#include "CrossFade.hxx"
#include "CrossFade.hxx"
#include "PlayerControl.hxx"
#include "PlayerControl.hxx"
#include "OutputAll.hxx"
#include "OutputAll.hxx"
...
@@ -1207,6 +1207,6 @@ player_create(struct player_control *pc)
...
@@ -1207,6 +1207,6 @@ player_create(struct player_control *pc)
GError
*
e
=
NULL
;
GError
*
e
=
NULL
;
pc
->
thread
=
g_thread_create
(
player_task
,
pc
,
true
,
&
e
);
pc
->
thread
=
g_thread_create
(
player_task
,
pc
,
true
,
&
e
);
if
(
pc
->
thread
==
NULL
)
if
(
pc
->
thread
==
NULL
)
MPD_ERROR
(
"Failed to spawn player task: %s"
,
e
->
messag
e
);
FatalError
(
"Failed to spawn player task"
,
e
);
#endif
#endif
}
}
src/SignalHandlers.cxx
View file @
a27d105d
...
@@ -26,13 +26,11 @@
...
@@ -26,13 +26,11 @@
#include "Main.hxx"
#include "Main.hxx"
#include "event/Loop.hxx"
#include "event/Loop.hxx"
#include "GlobalEvents.hxx"
#include "GlobalEvents.hxx"
#include "
mpd_error.h
"
#include "
FatalError.hxx
"
#include <glib.h>
#include <glib.h>
#include <signal.h>
#include <signal.h>
#include <errno.h>
#include <string.h>
static
void
exit_signal_handler
(
gcc_unused
int
signum
)
static
void
exit_signal_handler
(
gcc_unused
int
signum
)
{
{
...
@@ -48,7 +46,7 @@ static void
...
@@ -48,7 +46,7 @@ static void
x_sigaction
(
int
signum
,
const
struct
sigaction
*
act
)
x_sigaction
(
int
signum
,
const
struct
sigaction
*
act
)
{
{
if
(
sigaction
(
signum
,
act
,
NULL
)
<
0
)
if
(
sigaction
(
signum
,
act
,
NULL
)
<
0
)
MPD_ERROR
(
"sigaction() failed: %s"
,
strerror
(
errno
)
);
FatalSystemError
(
"sigaction() failed"
);
}
}
static
void
static
void
...
...
src/UpdateGlue.cxx
View file @
a27d105d
...
@@ -33,7 +33,7 @@ extern "C" {
...
@@ -33,7 +33,7 @@ extern "C" {
#include "Main.hxx"
#include "Main.hxx"
#include "Instance.hxx"
#include "Instance.hxx"
#include "
mpd_error.h
"
#include "
FatalError.hxx
"
#include <glib.h>
#include <glib.h>
...
@@ -110,7 +110,7 @@ spawn_update_task(const char *path)
...
@@ -110,7 +110,7 @@ spawn_update_task(const char *path)
GError
*
e
=
NULL
;
GError
*
e
=
NULL
;
update_thr
=
g_thread_create
(
update_task
,
g_strdup
(
path
),
TRUE
,
&
e
);
update_thr
=
g_thread_create
(
update_task
,
g_strdup
(
path
),
TRUE
,
&
e
);
if
(
update_thr
==
NULL
)
if
(
update_thr
==
NULL
)
MPD_ERROR
(
"Failed to spawn update task: %s"
,
e
->
messag
e
);
FatalError
(
"Failed to spawn update task"
,
e
);
#endif
#endif
if
(
++
update_task_id
>
update_task_id_max
)
if
(
++
update_task_id
>
update_task_id_max
)
...
...
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