$ git clone http://tcclient.ion.nu/tc_client.git
commit cd984e3dde1e3288eac653a36573b3128b48fccd
Author: Alicia <...>
Date:   Tue May 19 11:14:07 2015 +0200

    tc_client-gtk: ignore anything after the offset in /mbs commands (and don't leave zombie children around)

diff --git a/ChangeLog b/ChangeLog
index 03c1ba6..3cc21f3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 0.32:
 irchack: send passwords by pipe, not argument.
+tc_client-gtk: ignore anything after the offset in /mbs commands.
 0.31:
 Fixed the issue where messages would show up on kanji on some platforms (a proper fix instead of the earlier android & apple workaround)
 When a message is sent with a privacy field, send it once with 'b' (broadcasting) and once with 'n' (not-broadcasting)
diff --git a/utilities/gtk/camviewer.c b/utilities/gtk/camviewer.c
index fe0e854..82aa5cc 100644
--- a/utilities/gtk/camviewer.c
+++ b/utilities/gtk/camviewer.c
@@ -20,7 +20,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <sys/prctl.h>
-#include <sys/wait.h>
 #include <ctype.h>
 #include <libavcodec/avcodec.h>
 #include <libswscale/swscale.h>
@@ -190,7 +189,6 @@ gboolean handledata(GIOChannel* iochannel, GIOCondition condition, gpointer data
   }
   if(!strcmp(buf, "Password required"))
   {
-    wait(0); // Reap the previous process
     gtk_widget_hide(GTK_WIDGET(gtk_builder_get_object(data->gui, "main")));
     gtk_widget_show_all(GTK_WIDGET(gtk_builder_get_object(data->gui, "channelpasswordwindow")));
     return 1;
@@ -234,6 +232,8 @@ gboolean handledata(GIOChannel* iochannel, GIOCondition condition, gpointer data
         if(!offset){_exit(1);}
         offset[0]=0;
         offset=&offset[1];
+        char* end=strchr(offset, ' '); // Ignore any additional arguments after the offset (the modbot utility includes the video title here)
+        if(end){end[0]=0;}
         // Handle format string
         const char* fmt=config_get_str("youtubecmd");
         int len=strlen(fmt)+1;
@@ -770,6 +770,7 @@ int main(int argc, char** argv)
   avcodec_register_all();
   data.vdecoder=avcodec_find_decoder(AV_CODEC_ID_FLV1);
   data.adecoder=avcodec_find_decoder(AV_CODEC_ID_NELLYMOSER);
+  signal(SIGCHLD, SIG_IGN);
 
 #if defined(HAVE_AVRESAMPLE) || defined(HAVE_SWRESAMPLE)
   #ifdef HAVE_AVRESAMPLE