summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO20
-rw-r--r--src/main.c35
2 files changed, 28 insertions, 27 deletions
diff --git a/TODO b/TODO
index 736dc41e8..6a1e160f4 100644
--- a/TODO
+++ b/TODO
@@ -7,25 +7,15 @@
e) ensure URL's are all ASCII, and properly %'d! check rfc's
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
- a) use resampling from oggenc (is it fast enough for realtime?)
+3) cleanup main()
-4) when writing combined interface for all decodes to use, be sure to add a
-common function and abstrct dealing with DecoderControl * and put
-cycleLogFiles in there, so we cycleLogFiles while decoding, not just when
-decoding has stopped.
+4) handle '\n' in filenames
-5) ACK error codes
+5) compute average replaygain to use for non-replaygain songs
-6) cleanup main()
-
-7) handle '\n' in filenames
-
-8) compute average replaygain to use for non-replaygain songs
-
-9) change default port to 6600
+6) change default port to 6600
Post-1.0
diff --git a/src/main.c b/src/main.c
index 1bbf11531..9bc00aff8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -60,6 +60,7 @@ typedef struct _Options {
char * usr;
char * dbFile;
int daemon;
+ int stdOutput;
int createDB;
int onlyCreateDB;
int onlyUpdateDB;
@@ -76,6 +77,7 @@ void usage(char * argv[]) {
ERROR("options:\n");
ERROR(" --help this usage statement\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(" --only-create-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->daemon = 1;
+ options->stdOutput = 0;
options->createDB = 0;
options->onlyCreateDB = 0;
options->onlyUpdateDB = 0;
@@ -133,6 +136,10 @@ void parseOptions(int argc, char ** argv, Options * options) {
options->daemon = 0;
argcLeft--;
}
+ else if(strcmp(argv[i],"--stdout")==0) {
+ options->stdOutput = 1;
+ argcLeft--;
+ }
else if(strcmp(argv[i],"--create-db")==0) {
options->createDB = 1;
argcLeft--;
@@ -382,6 +389,22 @@ int main(int argc, char * argv[]) {
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) {
myfprintf(err,"problems dup2 stdout : %s\n",
strerror(errno));
@@ -395,18 +418,6 @@ int main(int argc, char * argv[]) {
}
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 */