-
popen Variable in ein GTK Textfeld ?
Hallo Leute !
Ich möchte die Variable localmsn in ein gtk_entry eintragen aber nach dem die Variable im Textfeld ist seht an letzter Stelle immer so ein kasten im Textfeld ich glaub ich habe was falsch gemacht nur was ?
char locamsn[20];
FILE* number=popen("egrep LOCALMSN /etc/isdn/device.ippp0 | awk '{ print $1 } ' | cut -b 10-20","r");
fgets(localmsn,sizeof(localmsn),number);
gtk_entry_set_text (GTK_ENTRY (entry), localmsn);
-
Also vieleicht könnt ihr euch nicht viel Vorstellen unter meinem Problem. Hinter der Nummer steht immr so ein Kasten wo 000a drin steht aber wegen einem Datenbankfehler kann ich leider keinen Screenshot machen.
Hier ist der Quellcode:
#include <gtk/gtk.h>
#include <iostream>
#include <string>
#include <sstream>
#include <unistd.h>
#include <stdio.h>
using namespace std;
void connect (GtkWidget *widget,
GtkWidget *text)
{
string device1;
const gchar *entry_text;
entry_text = gtk_entry_get_text (GTK_ENTRY (text));
device1 = entry_text;
system("/etc/init.d/isdnutils start ");
system(("/usr/sbin/isdnctrl dial " + device1).c_str());
}
void disconnect( GtkWidget *widget,
GtkWidget *text)
{
string device2;
const gchar *entry_text;
entry_text = gtk_entry_get_text (GTK_ENTRY (text));
device2 = entry_text;
system(("/usr/sbin/isdnctrl hangup " + device2).c_str());
system("/etc/init.d/isdnutils stop");
}
static void quit( GtkWidget *widget,
GdkEvent *event,
gpointer data )
{
gtk_main_quit ();
}
int main( int argc, char *argv[] )
{
GtkWidget *window;
GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *text;
GtkWidget *table;
int id;
id = getuid();
if (id!=0)
{
printf("You must be root!\n");
exit(EXIT_FAILURE);
}
char localmsn[20];
FILE* number=popen("egrep LOCALMSN /etc/isdn/device.ippp0 | awk '{ print$1 }' | cut -b 10-20","r");
fgets(localmsn,sizeof(localmsn),number);
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window) , "Dial-0.1-alpha");
gtk_container_set_border_width (GTK_CONTAINER (window), 25);
table = gtk_table_new (4, 0, TRUE);
gtk_container_add (GTK_CONTAINER (window), table);
text = gtk_entry_new();
gtk_entry_set_max_length (GTK_ENTRY (text), 15);
gtk_entry_set_text (GTK_ENTRY (text), localmsn);
button1 = gtk_button_new_with_label ("connect");
button2 = gtk_button_new_with_label ("disconnect");
button3 = gtk_button_new_with_label ("exit");
gtk_table_attach_defaults (GTK_TABLE (table), button1, 0, 1, 0, 1);
gtk_widget_show(button1);
gtk_table_attach_defaults (GTK_TABLE (table), button2, 0, 1, 1, 2);
gtk_widget_show(button2);
gtk_table_attach_defaults (GTK_TABLE (table), button3, 0, 1, 2, 3);
gtk_widget_show(button3);
gtk_table_attach_defaults (GTK_TABLE (table), text, 0, 1, 3, 4);
gtk_widget_show(text);
g_signal_connect (G_OBJECT (button1), "clicked",
G_CALLBACK (connect),
(gpointer) text);
g_signal_connect (G_OBJECT (button2), "clicked",
G_CALLBACK (disconnect),
(gpointer) text);
g_signal_connect (G_OBJECT (button3), "clicked",
G_CALLBACK (quit), NULL);
g_signal_connect (G_OBJECT (window), "delete_event",
G_CALLBACK (quit), NULL);
gtk_widget_show (table);
gtk_widget_show (window);
gtk_main ();
return 0;
}
-
Hi!
000a ist ein Newline-Zeichen (\n). Entweder du änderst dein egrep Aufruf so das keine neue Zeile danach ausgegeben wird oder du schneidest beim String das letzte Zeichen weg.
HTH
Tobias
-
Und wie kann das aussehen ?
-
Also ich habe jetzt schon alles mögliche versucht '\n' wohin zu setzten aber es geht einfach nicht. Und in popen kann ich das doch nicht einfach reinmachen, weils nen Systembefehl ist. Es wird doch jemand wissen wo ich das hinsetzten muss !!!!!!!
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen