PDA

View Full Version : Errore: invalid conversion from const char


gurutech
14-04-2005, 14:09
Ciao,
sto cercando di compilare npadmin-0.8.4 su Suse 9.1 con il gcc3.3 *
Quando lancio make** dopo la fase configure mi dice

c++ -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -c npadmin.C
In file included from compat.h:1,
from npadmin.C:20:
config.h:8:1: warning: "inline" redefined
In file included from /usr/include/asm/sigcontext.h:4,
from /usr/include/bits/sigcontext.h:28,
from /usr/include/signal.h:326,
from npadmin.C:10:
/usr/include/linux/compiler.h:11:1: warning: this is the location of the previous definition
c++ -DHAVE_CONFIG_H -I. -I. -I. -g -O2 -c npahelpers.C
npahelpers.C: In function `void do_hppriv_get(SNMP_session&, long unsigned
int*, long unsigned int&)':
npahelpers.C:123: error: invalid conversion from `const char*' to `char*'
npahelpers.C:123: error: initializing argument 1 of `void
SNMP_structFiller::append(char*, Tags, unsigned int)'
npahelpers.C:126: error: invalid conversion from `const char*' to `char*'
npahelpers.C:126: error: initializing argument 1 of `void
SNMP_structFiller::append(char*, Tags, unsigned int)'
npahelpers.C: In function `void do_hppriv_set(SNMP_session&, long unsigned
int*, long unsigned int&, char**)':
... lunghissima sfilza di errori tutti uguali ...

Cosa posso fare? sul sito npadmin.sourceforge.net dice che il programma è stato sviluppato con red hat 5.2 (ancestrale!) per cui penso che l'egcs dell'epoca lo digerisse bene, mentre ora fa dei controlli più stretti.
credo ci sia qualche opzione del gcc che dica "lascia perdere, vai avanti", ma non so come si chiama, oppure bisogna correggere il codice ma non sono a livello così avanzato.

* so che esiste e funziona l'RPM, ma devo ricompilare il pacchetto dopo aver fatto una modifica

** sul pacchetto NON modificato

ilsensine
14-04-2005, 14:31
Br0ken configure script.

Dopo il configure, modifica config.h e commenta le righe
#define const
#define inline
(ovvero mettici un "//" all'inizio).
In più, applica questa patch:

diff -ur npadmin-0.8.4.org/npahelpers.C npadmin-0.8.4/npahelpers.C
--- npadmin-0.8.4.org/npahelpers.C 2000-02-08 21:44:24.000000000 +0100
+++ npadmin-0.8.4/npahelpers.C 2005-04-14 15:38:54.000000000 +0200
@@ -159,7 +159,7 @@
if(CK_UPDATEFIRM_FLAG){
// fprintf(stderr,"debug: %s \n",optparam[UPDATEFIRM_PARAM]);
hpprivsets.append(HPICFDOWNLOADSTATUS,INT_TAG,4); // create and go
- hpprivsets.append(HPICFDOWNLOADTDOMAIN,OID_TAG,"1.3.6.1.6.1.1",13);
+ hpprivsets.append(HPICFDOWNLOADTDOMAIN,OID_TAG,(void *)"1.3.6.1.6.1.1",13);

char *server,*filename;
// fprintf(stderr, "debug: %s \n",optparam[UPDATEFIRM_PARAM]);
diff -ur npadmin-0.8.4.org/snmpsock.C npadmin-0.8.4/snmpsock.C
--- npadmin-0.8.4.org/snmpsock.C 1999-01-19 03:26:05.000000000 +0100
+++ npadmin-0.8.4/snmpsock.C 2005-04-14 15:39:58.000000000 +0200
@@ -4,6 +4,7 @@
#include <sys/socket.h>
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>
#include <netinet/in.h>

Fatto questo dovresti riuscire a compilare.

gurutech
14-04-2005, 14:55
grazie mio salvatore!!
ora compila correttamente.
già che ci sono ne approfitto:
adesso non funzia più l'opzione --alerts hai idea del perchè?

ilsensine
14-04-2005, 14:56
...veramente non ho la minima idea di cosa faccia quel programma...

gurutech
14-04-2005, 15:13
ma la patch l'hai scritta al volo o l'hai trovata? se l'hai trovata dove l'hai presa?

il programma interroga delle stampanti via SNMP e restituisce cose come "Carta Esaurita" o "Toner Basso" etc etc. ho mescolato tutto con un po di PHP,Bash, MySQL e ho tirato fuori una comoda interfaccia di gestione.
Npadmin è un po' vecchio e non mi riconosce alcune nuove stampanti, volevo solo aggiungere la stringa in npahelpers.C.
Effettivamente dopo averla aggiunta non si lamenta più, ma non funziona più l'opzione --alerts (che legge gli allarmi della stampante) sia con l'aggiunta che senza

ilsensine
14-04-2005, 15:25
Ho semplicemente controllato perché il programma "tecnicamente" non poteva essere compilato.

Da una rapida lettura in effetti sembra che usi il flag "alert" solo se è certo che la stampante può gestire la funzionalità. Se vuoi forzarne l'utilizzo, elimina la riga che inizia con
ifCK_ALERTS_FLAG)...
dentro npadmin.C. Non ho assolutamente idea di quello che succede dopo.

ilsensine
14-04-2005, 15:28
Ho semplicemente controllato perché il programma "tecnicamente" Se vuoi forzarne l'utilizzo, elimina la riga che inizia con
ifCK_ALERTS_FLAG)...
dentro npadmin.C
Anzi no, non basta questo.
Prova a contattare uno degli sviluppatori originari.

ilsensine
14-04-2005, 15:34
Comunque sulla pagina del progetto
http://sourceforge.net/projects/npadmin
c'è una versione successiva di qualche mese (la 0.8.7). Sempre un pezzo da museo, ma provarla non fa male.
Non so se in cvs ci sono altri fix.

gurutech
14-04-2005, 16:45
oops... sono proprio cieco!
la 0.8.7 si compila senza patch aggiuntive e sono riuscito ad aggiungere l'identificativo della HP LJ 4200n che adesso viene gestita correttamente.
l'unico accorgimento è che ho compilato con il gcc-2.95.4 di debian altrimenti non funziona il --alerts.
Posso considerare la mia applicazione funzionante all 99%. ecco uno screenshot
http://mail.computersharing.it/images/pmanage.jpg

un operatore viene avvisato via mail ogni volta che finisce del materiale (toner,carta) o quando qualcosa non va.

PS il nome dell'applicazione è orrendo, ma lo ha scelto un agente commerciale

ilsensine
14-04-2005, 16:47
Carino (e utile), strano che non sia più supportato