Hi there,

I use nano editor.
I tried to remove trailing whitespace in git patch using "git format-patch
-b -w -1"
Please find the attached patch.

Regards,

Binathi

On Sun, Nov 9, 2014 at 3:40 PM, Nicolas George <geo...@nsup.org> wrote:

> Le septidi 17 brumaire, an CCXXIII, Binathi Bingi a écrit :
> > From f06f2b656feb9b01c42533bcdf51fc5190ca6f91 Mon Sep 17 00:00:00 2001
> > From: Binathi <binti...@gmail.com>
> > Date: Tue, 4 Nov 2014 21:42:07 +0530
> > Subject: [PATCH] Restore Daemon mode in FFserver
> >
> > Signed-off-by: Binathi Bingi <binti...@gmail.com>
> > ---
> >  doc/ffserver.conf |  5 +++++
> >  doc/ffserver.texi |  7 ++++---
> >  ffserver.c        | 41 +++++++++++++++++++++++++++++++++++++++--
> >  ffserver_config.c |  6 ++++--
> >  ffserver_config.h |  1 +
> >  5 files changed, 53 insertions(+), 7 deletions(-)
> >
> > diff --git a/doc/ffserver.conf b/doc/ffserver.conf
> > index b756961..0b63555 100644
> > --- a/doc/ffserver.conf
> > +++ b/doc/ffserver.conf
> > @@ -25,6 +25,11 @@ MaxBandwidth 1000
> >  # '-' is the standard output.
> >  CustomLog -
> >
> > +# Suppress NoDaemon and enable Daemon, if you want to launch ffserver
> in daemon mode.
> > +# If no option is specified, default option is NoDaemon.
> > +#NoDaemon
> > +#Daemon
> > +
> >  ##################################################################
> >  # Definition of the live feeds. Each live feed contains one video
> >  # and/or audio sequence coming from an ffmpeg encoder or another
> > diff --git a/doc/ffserver.texi b/doc/ffserver.texi
> > index 77273d2..5d5fc0f 100644
> > --- a/doc/ffserver.texi
> > +++ b/doc/ffserver.texi
> > @@ -405,9 +405,10 @@ In case the commandline option @option{-d} is
> specified this option is
> >  ignored, and the log is written to standard output.
> >
> >  @item NoDaemon
> > -Set no-daemon mode. This option is currently ignored since now
> > -@command{ffserver} will always work in no-daemon mode, and is
> > -deprecated.
> > +Set no-daemon mode. This is the default.
> > +
> > +@item Daemon
> > +Set daemon mode. The default is NoDaemon
> >  @end table
> >
> >  @section Feed section
> > diff --git a/ffserver.c b/ffserver.c
> > index ea2a2ae..b623c0b 100644
> > --- a/ffserver.c
> > +++ b/ffserver.c
> > @@ -3671,6 +3671,7 @@ static void handle_child_exit(int sig)
> >  static void opt_debug(void)
> >  {
> >      config.debug = 1;
> > +    config.ffserver_daemon = 0;
> >      snprintf(config.logfilename, sizeof(config.logfilename), "-");
> >  }
> >
> > @@ -3694,7 +3695,7 @@ int main(int argc, char **argv)
> >  {
> >      struct sigaction sigact = { { 0 } };
> >      int ret = 0;
>
> > -
> > +
>
> Stray change with a tab in it: this can not be applied.
>
> >      config.filename = av_strdup("/etc/ffserver.conf");
> >
> >      parse_loglevel(argc, argv, options);
> > @@ -3728,7 +3729,7 @@ int main(int argc, char **argv)
> >              logfile = stdout;
> >          else
> >              logfile = fopen(config.logfilename, "a");
>
> > -        av_log_set_callback(http_av_log);
> > +            av_log_set_callback(http_av_log);
>
> Stray change with bizarre indentation. This line should probably stay as
> is.
>
> >      }
> >
> >      build_file_streams();
> > @@ -3736,7 +3737,43 @@ int main(int argc, char **argv)
> >      build_feed_streams();
> >
> >      compute_bandwidth();
> > +
> > +    if(config.ffserver_daemon) {
> > +        pid_t ffserver_id = 0;
> > +        pid_t sid = 0;
> > +        int fd;
> > +        ffserver_id = fork();
> > +
> > +        if (ffserver_id < 0) {
> > +            ret = AVERROR(errno);
> > +            av_log(NULL, AV_LOG_ERROR, "Impossible to start in daemon
> mode: %s\n", av_err2str(ret));
> > +            exit(1);
> > +        }
> >
> > +        if (ffserver_id > 0)
> > +            exit(0);
> > +
> > +        sid = setsid();
> > +        if (sid < 0)
> > +            exit(1);
> > +
>
> > +        if (strcmp(config.logfilename, "-") !=0)
> > +            close(0);
>
> I am not sure what this is intended to do. It looks like a mix with other
> methods of reopening the default streams. I suggest to avoid duplicating
> the
> test and just drop this part, it is unnecessary with the dup2() method.
>
> > +
> > +        fd = open("/dev/null", O_RDWR);
> > +
>
> > +        if (fd >= 0){
>
> No need to test success if failure causes exit().
>
> > +            dup2(fd, 0);
> > +            dup2(fd, 2);
> > +            if (strcmp(config.logfilename,"-") != 0)
> > +                dup2 (fd, 1);
> > +        }
>
> I believe you forgot to close fd.
>
> > +        if (fd < 0) {
> > +            ret = AVERROR(errno);
> > +            av_log(NULL, AV_LOG_ERROR, "Unable to repoen file
> descriptors: %s\n", av_err2str(ret));
> > +            exit(1);
> > +        }
>
> The failure case should probably come immediately after the open(),
> especially since it causes immediate exit.
>
> > +    }
> >      /* signal init */
> >      signal(SIGPIPE, SIG_IGN);
> >
> > diff --git a/ffserver_config.c b/ffserver_config.c
> > index e44cdf7..63cfd43 100644
> > --- a/ffserver_config.c
> > +++ b/ffserver_config.c
> > @@ -358,8 +358,10 @@ static int
> ffserver_parse_config_global(FFServerConfig *config, const char *cmd,
> >          ffserver_get_arg(arg, sizeof(arg), p);
> >          if (resolve_host(&config->http_addr.sin_addr, arg) != 0)
> >              ERROR("%s:%d: Invalid host/IP address: %s\n", arg);
> > -    } else if (!av_strcasecmp(cmd, "NoDaemon")) {
> > -        WARNING("NoDaemon option has no effect, you should remove
> it\n");
> > +    } else if (!av_strcasecmp(cmd, "Daemon")){
> > +        config->ffserver_daemon = 1;
> > +    } else if (!av_strcasecmp(cmd, "NoDaemon")){
> > +        config->ffserver_daemon = 0;
> >      } else if (!av_strcasecmp(cmd, "RTSPPort")) {
> >          ffserver_get_arg(arg, sizeof(arg), p);
> >          val = atoi(arg);
> > diff --git a/ffserver_config.h b/ffserver_config.h
> > index 36d61d0..e3957b1 100644
> > --- a/ffserver_config.h
> > +++ b/ffserver_config.h
> > @@ -100,6 +100,7 @@ typedef struct FFServerConfig {
> >      unsigned int nb_max_http_connections;
> >      unsigned int nb_max_connections;
> >      uint64_t max_bandwidth;
> > +    int ffserver_daemon;
> >      int debug;
> >      char logfilename[1024];
> >      struct sockaddr_in http_addr;
>
> Also, I notice you have trailing spaces all over the place; like tab, they
> are forbidden in the official repository. I do not know what editor you
> use;
> with vim, I can search for " \+$" with the 'hlsearch' option to see them.
>
>
> In short, I suggest:
>
> - remove the first "-" test and the close();
> - move the <0 test just after the open and remove the >=0 test;
> - close fd before the end;
> - clean up tabs, trailing spaces and the indent change.
>
> Regards,
>
> --
>   Nicolas George
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>
From c9d037758693a1522258a64849f7629d7cbd7408 Mon Sep 17 00:00:00 2001
From: Binathi <binti...@gmail.com>
Date: Tue, 4 Nov 2014 21:42:07 +0530
Subject: [PATCH] Restore Daemon mode in FFserver

Signed-off-by: Binathi Bingi <binti...@gmail.com>
---
 doc/ffserver.conf |  5 +++++
 doc/ffserver.texi |  7 ++++---
 ffserver.c        | 33 +++++++++++++++++++++++++++++++++
 ffserver_config.c |  4 +++-
 ffserver_config.h |  1 +
 5 files changed, 46 insertions(+), 4 deletions(-)

diff --git a/doc/ffserver.conf b/doc/ffserver.conf
index b756961..0b63555 100644
--- a/doc/ffserver.conf
+++ b/doc/ffserver.conf
@@ -25,6 +25,11 @@ MaxBandwidth 1000
 # '-' is the standard output.
 CustomLog -
 
+# Suppress NoDaemon and enable Daemon, if you want to launch ffserver in daemon mode.
+# If no option is specified, default option is NoDaemon.
+#NoDaemon
+#Daemon
+
 ##################################################################
 # Definition of the live feeds. Each live feed contains one video
 # and/or audio sequence coming from an ffmpeg encoder or another
diff --git a/doc/ffserver.texi b/doc/ffserver.texi
index 77273d2..5d5fc0f 100644
--- a/doc/ffserver.texi
+++ b/doc/ffserver.texi
@@ -405,9 +405,10 @@ In case the commandline option @option{-d} is specified this option is
 ignored, and the log is written to standard output.
 
 @item NoDaemon
-Set no-daemon mode. This option is currently ignored since now
-@command{ffserver} will always work in no-daemon mode, and is
-deprecated.
+Set no-daemon mode. This is the default.
+
+@item Daemon
+Set daemon mode. The default is NoDaemon
 @end table
 
 @section Feed section
diff --git a/ffserver.c b/ffserver.c
index ea2a2ae..8b005b9 100644
--- a/ffserver.c
+++ b/ffserver.c
@@ -3671,6 +3671,7 @@ static void handle_child_exit(int sig)
 static void opt_debug(void)
 {
     config.debug = 1;
+    config.ffserver_daemon = 0;
     snprintf(config.logfilename, sizeof(config.logfilename), "-");
 }
 
@@ -3737,6 +3738,38 @@ int main(int argc, char **argv)
 
     compute_bandwidth();
       
+    if (config.ffserver_daemon) {
+        pid_t ffserver_id = 0;
+        pid_t sid = 0;
+        int fd;
+        ffserver_id = fork();
+         
+        if (ffserver_id < 0) {
+            ret = AVERROR(errno);
+            av_log(NULL, AV_LOG_ERROR, "Impossible to start in daemon mode: %s\n", av_err2str(ret));
+            exit(1);
+        }
+           
+        if (ffserver_id > 0)
+            exit(0);
+         
+        sid = setsid();
+        if (sid < 0)
+            exit(1);
+
+        fd = open("/dev/null", O_RDWR,0);
+        if (fd < 0) {
+            ret = AVERROR(errno);
+            av_log(NULL, AV_LOG_ERROR, "Unable to repoen file descriptors: %s\n", av_err2str(ret));
+            exit(1);
+        }
+        dup2(fd, 0);  
+        dup2(fd, 2); 
+        if (strcmp(config.logfilename,"-") != 0)
+            dup2(fd, 1);  
+        close(fd);
+    }           
+    
     /* signal init */
     signal(SIGPIPE, SIG_IGN);
 
diff --git a/ffserver_config.c b/ffserver_config.c
index e44cdf7..63cfd43 100644
--- a/ffserver_config.c
+++ b/ffserver_config.c
@@ -358,8 +358,10 @@ static int ffserver_parse_config_global(FFServerConfig *config, const char *cmd,
         ffserver_get_arg(arg, sizeof(arg), p);
         if (resolve_host(&config->http_addr.sin_addr, arg) != 0)
             ERROR("%s:%d: Invalid host/IP address: %s\n", arg);
+    } else if (!av_strcasecmp(cmd, "Daemon")){
+        config->ffserver_daemon = 1;
     } else if (!av_strcasecmp(cmd, "NoDaemon")){
-        WARNING("NoDaemon option has no effect, you should remove it\n");
+        config->ffserver_daemon = 0;
     } else if (!av_strcasecmp(cmd, "RTSPPort")) {
         ffserver_get_arg(arg, sizeof(arg), p);
         val = atoi(arg);
diff --git a/ffserver_config.h b/ffserver_config.h
index 36d61d0..e3957b1 100644
--- a/ffserver_config.h
+++ b/ffserver_config.h
@@ -100,6 +100,7 @@ typedef struct FFServerConfig {
     unsigned int nb_max_http_connections;
     unsigned int nb_max_connections;
     uint64_t max_bandwidth;
+    int ffserver_daemon;
     int debug;
     char logfilename[1024];
     struct sockaddr_in http_addr;
-- 
1.9.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to