Update FSF address
[lttv.git] / lttv / modules / gui / tracecontrol / tracecontrol.c
index 28e665567baf7374310868c7c8d9212091ba3e91..c95c026e9e9688dbb612fe0697f4825a7e64766b 100644 (file)
@@ -12,8 +12,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, 
- * MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA 02110-1301, USA.
  */
 
 #ifdef HAVE_CONFIG_H
@@ -164,10 +164,6 @@ gui_control(LttvPluginTab *ptab)
   Tab *tab = ptab->tab;
   g_debug("filter::gui_control()");
 
-  unsigned i;
-  GtkCellRenderer *renderer;
-  GtkTreeViewColumn *column;
-
   ControlData* tcd = g_new(ControlData,1);
 
   tcd->tab  = tab;
@@ -450,8 +446,6 @@ gui_control(LttvPluginTab *ptab)
 void
 gui_control_destructor(ControlData *tcd)
 {
-  Tab *tab = tcd->tab;
-
   /* May already been done by GTK window closing */
   if(GTK_IS_WIDGET(guicontrol_get_widget(tcd))){
     g_info("widget still exists");
@@ -482,9 +476,6 @@ static int execute_command(const gchar *command, const gchar *username,
     int status;
     ssize_t count;
     /* discuss with su */
-    struct timeval timeout;
-    timeout.tv_sec = 1;
-    timeout.tv_usec = 0;
 
     struct pollfd pollfd;
     int num_rdy;
@@ -513,56 +504,61 @@ static int execute_command(const gchar *command, const gchar *username,
       /* Timeout : Stop waiting for chars */
       if(num_rdy == 0) goto wait_child;
 
-      switch(pollfd.revents) {
-        case POLLERR:
+      /* Check for fatal errors */
+      if(pollfd.revents & POLLERR) {
           g_warning("Error returned in polling fd\n");
           num_hup++;
-          break;
-        case POLLHUP:
-          g_info("Polling FD : hung up.");
-          num_hup++;
-          break;
-        case POLLNVAL:
-          g_warning("Polling fd tells it is not open");
-          num_hup++;
-          break;
-        case POLLPRI:
-        case POLLIN:
-          count = read (fdpty, buf, 256);
-          if(count > 0) {
-                                               unsigned int i;
-            buf[count] = '\0';
-            g_printf("%s", buf);
-                                               for(i=0; i<count; i++) {
-                                                       switch(read_state) {
-                                                               case GET_LINE:
-                                                                       if(buf[i] == '\n') {
-                                                                               read_state = GET_SEMI;
-                                                                               g_debug("Tracecontrol input line skip\n");
-                                                                       }
-                                                                       break;
-                                                               case GET_SEMI:
-                                                                       if(buf[i] == ':') {
-                                                                               g_debug("Tracecontrol input  : marker found\n");
-                                                                               read_state = GET_SPACE;
-                                                                       }
-                                                                       break;
-                                                               case GET_SPACE:
-                                                                       if(buf[i] == ' ') {
-                                                                               g_debug("Tracecontrol input space marker found\n");
-                                                                               goto write_password;
-                                                                       }
-                                                                       break;
-                                                       }
-                                               }
-          } else if(count == -1) {
-            perror("Error in read");
-            goto wait_child;
-          }
-          break;
       }
+      if(pollfd.revents & POLLNVAL) {
+       g_warning("Polling fd tells it is not open");
+       num_hup++;
+      }
+
+      if(pollfd.revents & POLLHUP) {
+
+       g_info("Polling FD : hung up.");
+       num_hup++;
+
+      }
+
+      if(pollfd.revents & (POLLIN | POLLPRI)) {
+       int count;
+       count = read (fdpty, buf, 256);
+       if(count > 0) {
+         unsigned int i;
+         buf[count] = '\0';
+         g_printf("%s", buf);
+         for(i=0; i<count; i++) {
+           switch(read_state) {
+           case GET_LINE:
+             if(buf[i] == '\n') {
+               read_state = GET_SEMI;
+               g_debug("Tracecontrol input line skip\n");
+             }
+             break;
+           case GET_SEMI:
+             if(buf[i] == ':') {
+               g_debug("Tracecontrol input  : marker found\n");
+               read_state = GET_SPACE;
+             }
+             break;
+           case GET_SPACE:
+             if(buf[i] == ' ') {
+               g_debug("Tracecontrol input space marker found\n");
+               goto write_password;
+             }
+             break;
+           }
+         }
+       } else if(count == -1) {
+         perror("Error in read");
+         goto wait_child;
+       }
+
+      }
+
       if(num_hup > 0) {
-        g_warning("Child hung up too fast");
+        g_warning("Child hung up without returning a full reply");
         goto wait_child;
       }
     }
@@ -845,7 +841,7 @@ void start_clicked (GtkButton *button, gpointer user_data)
         GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
         GTK_MESSAGE_ERROR,
         GTK_BUTTONS_OK,
-        msg);
+        "%s", msg);
     gtk_dialog_run(GTK_DIALOG(dialogue));
     gtk_widget_destroy(dialogue);
   }
@@ -917,7 +913,7 @@ void pause_clicked (GtkButton *button, gpointer user_data)
         GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
         GTK_MESSAGE_ERROR,
         GTK_BUTTONS_OK,
-        msg);
+        "%s", msg);
     gtk_dialog_run(GTK_DIALOG(dialogue));
     gtk_widget_destroy(dialogue);
   }
@@ -988,7 +984,7 @@ void unpause_clicked (GtkButton *button, gpointer user_data)
         GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
         GTK_MESSAGE_ERROR,
         GTK_BUTTONS_OK,
-        msg);
+        "%s", msg);
     gtk_dialog_run(GTK_DIALOG(dialogue));
     gtk_widget_destroy(dialogue);
   }
@@ -1019,10 +1015,10 @@ void stop_clicked (GtkButton *button, gpointer user_data)
  
   const gchar *lttctl_path =
     gtk_entry_get_text(GTK_ENTRY(tcd->lttctl_path_entry));
-  gchar *trace_dir = gtk_entry_get_text(GTK_ENTRY(tcd->trace_dir_entry));
+  const gchar *trace_dir = gtk_entry_get_text(GTK_ENTRY(tcd->trace_dir_entry));
   GSList * trace_list = NULL;
 
-  trace_list = g_slist_append(trace_list, trace_dir);
+  trace_list = g_slist_append(trace_list, (gpointer) trace_dir);
 
   /* Setup arguments to su */
   /* child */
@@ -1087,7 +1083,7 @@ void stop_clicked (GtkButton *button, gpointer user_data)
         GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
         GTK_MESSAGE_ERROR,
         GTK_BUTTONS_OK,
-        msg);
+        "%s", msg);
     gtk_dialog_run(GTK_DIALOG(dialogue));
     gtk_widget_destroy(dialogue);
     return;
@@ -1116,7 +1112,8 @@ void stop_clicked (GtkButton *button, gpointer user_data)
   switch(id){
     case GTK_RESPONSE_ACCEPT:
       {
-        create_main_window_with_trace_list(trace_list);
+              /* TODO ybrosseau: 2011-04-20: Add support for live trace */
+             create_main_window_with_trace_list(trace_list, FALSE);
       }
       break;
     case GTK_RESPONSE_REJECT:
@@ -1171,7 +1168,7 @@ void arm_clicked (GtkButton *button, gpointer user_data)
         GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
         GTK_MESSAGE_ERROR,
         GTK_BUTTONS_OK,
-        msg);
+        "%s", msg);
     gtk_dialog_run(GTK_DIALOG(dialogue));
     gtk_widget_destroy(dialogue);
   }
@@ -1222,7 +1219,7 @@ void disarm_clicked (GtkButton *button, gpointer user_data)
         GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
         GTK_MESSAGE_ERROR,
         GTK_BUTTONS_OK,
-        msg);
+        "%s", msg);
     gtk_dialog_run(GTK_DIALOG(dialogue));
     gtk_widget_destroy(dialogue);
   }
@@ -1243,10 +1240,11 @@ void disarm_clicked (GtkButton *button, gpointer user_data)
 GtkWidget *
 h_guicontrol(LttvPlugin *plugin)
 {
-  LttvPluginTab *ptab = LTTV_PLUGIN_TAB(plugin);
-  ControlData* f = gui_control(ptab);
+       LttvPluginTab *ptab = LTTV_PLUGIN_TAB(plugin);
+       gui_control(ptab) ;
 
-  return NULL;
+       /* TODO ybrosseau 2011-02-04: We should probably return a widget here */
+       return NULL;
 }
 
 /**
This page took 0.026232 seconds and 4 git commands to generate.