-Slash
03-12-2006, 23:08
ciao a tutti. sto provando nonostante le mie scarsissime conoscenze a modificare un programma in c. in pratica in questo programma c'è una espressione del genere quasi all'inizio del file c
static Icon g_aIcons[] =
{
{"home.svg", "Home", "nautilus /home/pixel"},
{"preferences.svg", "Impostazioni", "/usr/bin/gnome-control-center"},
{"terminal.svg", "Terminale", "gnome-terminal"},
{"synaptic.svg", "Synaptic", "gksu synaptic"},
{"mail.svg", "Thunderbird", "mozilla-thunderbird"},
{"firefox.svg", "Firefox", "firefox"},
{"xchat.svg", "Xchat", "xchat"},
{"media.svg", "Totem", "totem"},
{"gbaker.svg", "GnomeBaker", "gnomebaker"},
{"fspot.svg", "F-Spot", "f-spot"},
{"logout.svg", "Spegnimento", "gnome-session-save --kill"}
};
quello che vorrei fare io è modificare questa espressione in modo che ognuna di quelle informazioni sia variabile e la possa decidere io dopo la compilazione(mentre invece ora ogni volta che voglio cambiare una cosa devo ricompilare). quindi avevo pensato di fare una cosa del genere
static Icon g_aIcons[] =
{
{system("cat ~/gnome-dock/icons | sed -e '1q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '2q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '3q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '4q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '5q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '6q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '7q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '8q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '9q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '10q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '11q;$!d'")}
};
aggiungendo <stdlib.h> agli headers in modo che cosi nel file /gnome-dock/icons siano contenute le informazioni che il programma deve fare. solo che nel fare questo ovviamente quando compilo gcc mi risponde
cairo-dock.c:38: error: initializer element is not constant
cairo-dock.c:38: error: (near initialization for ‘g_aIcons[0].acFileName[0]’)
e cosi per tutte le righe dove sta scritto quello che ho modificato. ed in effetti lo static mi aveva pensare che non avrebbe funzionato :asd:
come devo fare per farlo andare? sostituire static con cosa? oppure è meglio che lascio perdere? :asd:
static Icon g_aIcons[] =
{
{"home.svg", "Home", "nautilus /home/pixel"},
{"preferences.svg", "Impostazioni", "/usr/bin/gnome-control-center"},
{"terminal.svg", "Terminale", "gnome-terminal"},
{"synaptic.svg", "Synaptic", "gksu synaptic"},
{"mail.svg", "Thunderbird", "mozilla-thunderbird"},
{"firefox.svg", "Firefox", "firefox"},
{"xchat.svg", "Xchat", "xchat"},
{"media.svg", "Totem", "totem"},
{"gbaker.svg", "GnomeBaker", "gnomebaker"},
{"fspot.svg", "F-Spot", "f-spot"},
{"logout.svg", "Spegnimento", "gnome-session-save --kill"}
};
quello che vorrei fare io è modificare questa espressione in modo che ognuna di quelle informazioni sia variabile e la possa decidere io dopo la compilazione(mentre invece ora ogni volta che voglio cambiare una cosa devo ricompilare). quindi avevo pensato di fare una cosa del genere
static Icon g_aIcons[] =
{
{system("cat ~/gnome-dock/icons | sed -e '1q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '2q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '3q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '4q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '5q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '6q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '7q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '8q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '9q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '10q;$!d'")},
{system("cat ~/gnome-dock/icons | sed -e '11q;$!d'")}
};
aggiungendo <stdlib.h> agli headers in modo che cosi nel file /gnome-dock/icons siano contenute le informazioni che il programma deve fare. solo che nel fare questo ovviamente quando compilo gcc mi risponde
cairo-dock.c:38: error: initializer element is not constant
cairo-dock.c:38: error: (near initialization for ‘g_aIcons[0].acFileName[0]’)
e cosi per tutte le righe dove sta scritto quello che ho modificato. ed in effetti lo static mi aveva pensare che non avrebbe funzionato :asd:
come devo fare per farlo andare? sostituire static con cosa? oppure è meglio che lascio perdere? :asd: