*
* 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
Tab *tab = ptab->tab;
g_debug("filter::gui_control()");
- unsigned i;
- GtkCellRenderer *renderer;
- GtkTreeViewColumn *column;
-
ControlData* tcd = g_new(ControlData,1);
tcd->tab = tab;
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");
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;
/* 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;
}
}
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);
}
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);
}
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);
}
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 */
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;
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:
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);
}
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);
}
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;
}
/**