add --stdout and make --no-daemon by default output to log files
git-svn-id: https://svn.musicpd.org/mpd/trunk@1267 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
1a5b04e4e8
commit
6a16e08f9a
20
TODO
20
TODO
@ -7,25 +7,15 @@
|
|||||||
e) ensure URL's are all ASCII, and properly %'d! check rfc's
|
e) ensure URL's are all ASCII, and properly %'d! check rfc's
|
||||||
for legal characters
|
for legal characters
|
||||||
|
|
||||||
2) have --no-daemon still output to log files, and add option --no-log-files
|
2) ACK error codes
|
||||||
|
|
||||||
3) resampling audio for compatibility, and better gapless/crossfading
|
3) cleanup main()
|
||||||
a) use resampling from oggenc (is it fast enough for realtime?)
|
|
||||||
|
|
||||||
4) when writing combined interface for all decodes to use, be sure to add a
|
4) handle '\n' in filenames
|
||||||
common function and abstrct dealing with DecoderControl * and put
|
|
||||||
cycleLogFiles in there, so we cycleLogFiles while decoding, not just when
|
|
||||||
decoding has stopped.
|
|
||||||
|
|
||||||
5) ACK error codes
|
5) compute average replaygain to use for non-replaygain songs
|
||||||
|
|
||||||
6) cleanup main()
|
6) change default port to 6600
|
||||||
|
|
||||||
7) handle '\n' in filenames
|
|
||||||
|
|
||||||
8) compute average replaygain to use for non-replaygain songs
|
|
||||||
|
|
||||||
9) change default port to 6600
|
|
||||||
|
|
||||||
|
|
||||||
Post-1.0
|
Post-1.0
|
||||||
|
35
src/main.c
35
src/main.c
@ -60,6 +60,7 @@ typedef struct _Options {
|
|||||||
char * usr;
|
char * usr;
|
||||||
char * dbFile;
|
char * dbFile;
|
||||||
int daemon;
|
int daemon;
|
||||||
|
int stdOutput;
|
||||||
int createDB;
|
int createDB;
|
||||||
int onlyCreateDB;
|
int onlyCreateDB;
|
||||||
int onlyUpdateDB;
|
int onlyUpdateDB;
|
||||||
@ -76,6 +77,7 @@ void usage(char * argv[]) {
|
|||||||
ERROR("options:\n");
|
ERROR("options:\n");
|
||||||
ERROR(" --help this usage statement\n");
|
ERROR(" --help this usage statement\n");
|
||||||
ERROR(" --no-daemon don't detach from console\n");
|
ERROR(" --no-daemon don't detach from console\n");
|
||||||
|
ERROR(" --stdout print msgs to stdout and stderr\n");
|
||||||
ERROR(" --create-db force (re)creation database\n");
|
ERROR(" --create-db force (re)creation database\n");
|
||||||
ERROR(" --only-create-db create database and exit\n");
|
ERROR(" --only-create-db create database and exit\n");
|
||||||
ERROR(" --only-update-db create database and exit\n");
|
ERROR(" --only-update-db create database and exit\n");
|
||||||
@ -116,6 +118,7 @@ void parseOptions(int argc, char ** argv, Options * options) {
|
|||||||
|
|
||||||
options->usr = NULL;
|
options->usr = NULL;
|
||||||
options->daemon = 1;
|
options->daemon = 1;
|
||||||
|
options->stdOutput = 0;
|
||||||
options->createDB = 0;
|
options->createDB = 0;
|
||||||
options->onlyCreateDB = 0;
|
options->onlyCreateDB = 0;
|
||||||
options->onlyUpdateDB = 0;
|
options->onlyUpdateDB = 0;
|
||||||
@ -133,6 +136,10 @@ void parseOptions(int argc, char ** argv, Options * options) {
|
|||||||
options->daemon = 0;
|
options->daemon = 0;
|
||||||
argcLeft--;
|
argcLeft--;
|
||||||
}
|
}
|
||||||
|
else if(strcmp(argv[i],"--stdout")==0) {
|
||||||
|
options->stdOutput = 1;
|
||||||
|
argcLeft--;
|
||||||
|
}
|
||||||
else if(strcmp(argv[i],"--create-db")==0) {
|
else if(strcmp(argv[i],"--create-db")==0) {
|
||||||
options->createDB = 1;
|
options->createDB = 1;
|
||||||
argcLeft--;
|
argcLeft--;
|
||||||
@ -382,6 +389,22 @@ int main(int argc, char * argv[]) {
|
|||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fflush(NULL);
|
||||||
|
pid = fork();
|
||||||
|
if(pid>0) _exit(EXIT_SUCCESS);
|
||||||
|
else if(pid<0) {
|
||||||
|
ERROR("problems fork'ing for daemon!\n");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(options.stdOutput) {
|
||||||
|
fclose(out);
|
||||||
|
fclose(err);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fflush(NULL);
|
||||||
|
|
||||||
if(dup2(fileno(out),STDOUT_FILENO)<0) {
|
if(dup2(fileno(out),STDOUT_FILENO)<0) {
|
||||||
myfprintf(err,"problems dup2 stdout : %s\n",
|
myfprintf(err,"problems dup2 stdout : %s\n",
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
@ -395,18 +418,6 @@ int main(int argc, char * argv[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
myfprintfStdLogMode(out,err,options.logFile,options.errorFile);
|
myfprintfStdLogMode(out,err,options.logFile,options.errorFile);
|
||||||
|
|
||||||
fflush(NULL);
|
|
||||||
pid = fork();
|
|
||||||
if(pid>0) _exit(EXIT_SUCCESS);
|
|
||||||
else if(pid<0) {
|
|
||||||
ERROR("problems fork'ing for daemon!\n");
|
|
||||||
exit(EXIT_FAILURE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
fclose(out);
|
|
||||||
fclose(err);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* lets redirect stdin to dev null as a work around for libao bug */
|
/* lets redirect stdin to dev null as a work around for libao bug */
|
||||||
|
Loading…
Reference in New Issue
Block a user