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:
Warren Dukes 2004-05-31 23:49:38 +00:00
parent 1a5b04e4e8
commit 6a16e08f9a
2 changed files with 28 additions and 27 deletions

20
TODO
View File

@ -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

View File

@ -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 */