strnstr
Moderatore: Staff
Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Re: strnstr
Aggiungendo direttamente la funzione tra i sorgenti la compilazione va a buon fine. Allego la patch :)
- Allegati
-
dnsscan.diff.gz- (505 Byte) Scaricato 116 volte
- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: strnstr
L'avevo già fatto questo, con due funzioni distinte, una che ho postato ed una presa direttamente dalle libc di freebsd. Così come chiamare la funzione detta da Mario.Dani ha scritto:Aggiungendo direttamente la funzione tra i sorgenti la compilazione va a buon fine. Allego la patch
Purtroppo il programmatore dopo che gli ho fatto notare che manca quel file che dice non ha più risposto. Speriamo risponda
- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: strnstr
Ho visto che hai usato __DECONST dichiarandola.
Adesso io ho messo questa
Presa da darwin, mentre da dragonfly (in rete ho trovato queste due) c'è quella che hai messo e che avevo messo anche io, che ritorna
in pratica
return (__DECONST(char *, s));
Alla fine sono la stessa cosa? Scusate l'ignoranza
Adesso io ho messo questa
Codice: Seleziona tutto
char *
strnstr(s, find, slen)
const char *s;
const char *find;
size_t slen;
{
char c, sc;
size_t len;
if ((c = *find++) != '\0') {
len = strlen(find);
do {
do {
if (slen-- < 1 || (sc = *s++) == '\0')
return (NULL);
} while (sc != c);
if (len > slen)
return (NULL);
} while (strncmp(s, find, len) != 0);
s--;
}
return ((char *)s);
}in pratica
return (__DECONST(char *, s));
Alla fine sono la stessa cosa? Scusate l'ignoranza
Re: strnstr
Usando la macro __DECONST effettui tre cast, in questo caso la funzione strnstr ritornernà ((char *)(uintptr_t)(const void *)(s)). Presumo che questo sia necessario in quanto s è const char* mentre la funzione è di tipo char*, ma effettivamente anche usando un semplice cast char* la compilazione termina con successoconraid ha scritto: Alla fine sono la stessa cosa?
Comunque la macro la lascerei, usando la funzione strnstr così com'è.
- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: strnstr
Se è un problema di compilazione come ho scritto va a buon termine anche usando strncasecmp o mettendo la prima funzione che ho postato, presa da un vecchio bfi, quindi va capito se al programma va bene lo stesso o no.Dani ha scritto:Usando la macro __DECONST effettui tre cast, in questo caso la funzione strnstr ritornernà ((char *)(uintptr_t)(const void *)(s)). Presumo che questo sia necessario in quanto s è const char* mentre la funzione è di tipo char*, ma effettivamente anche usando un semplice cast char* la compilazione termina con successoconraid ha scritto: Alla fine sono la stessa cosa?
Il programmatore non risponde più dopo che gli ho chiesto dove sia quel file strnstr.c che lui dice essere nei sorgenti
Re: strnstr
Non ti conviene sostituire strnstr con strncasecmp, non sono la stessa cosa e se il programmatore ha usato una piuttosto che l'altra un motivo ci sarà.
Comunque non c'è nessuna strnstr nei sorgenti, l'autore del programma si deve essere sbagliato:
Comunque non c'è nessuna strnstr nei sorgenti, l'autore del programma si deve essere sbagliato:
Codice: Seleziona tutto
dani[dnsscan-1.0]$ egrep "str.str" *.{c,h}
dnsreader.c: if (strnstr((char *)body, search_string, bodylen) == 0) {
dani[dnsscan-1.0]$
- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: strnstr
è quello che gli ho detto io, ma lui ha risposto che c'èDani ha scritto:Non ti conviene sostituire strnstr con strncasecmp, non sono la stessa cosa e se il programmatore ha usato una piuttosto che l'altra un motivo ci sarà.
Comunque non c'è nessuna strnstr nei sorgenti, l'autore del programma si deve essere sbagliato:Codice: Seleziona tutto
dani[dnsscan-1.0]$ egrep "str.str" *.{c,h} dnsreader.c: if (strnstr((char *)body, search_string, bodylen) == 0) { dani[dnsscan-1.0]$
-
Mario Vanoni
- Iper Master

- Messaggi: 3174
- Iscritto il: lun 3 set 2007, 21:20
- Nome Cognome: Mario Vanoni
- Slackware: 12.2
- Kernel: 3.0.4 statico
- Desktop: fluxbox/seamonkey
- Località: Cuasso al Monte (VA)
Re: strnstr
Ho provato dnsscan-1.0
primo configure
error: libevent not found
scaricato libevent-1.4.4.-stable
e compilato default
secondo configure
error: dnet-config not found
sorgenti solo RPM, probabilmente SuSE
smetto qui, perso l'interesse
primo configure
error: libevent not found
scaricato libevent-1.4.4.-stable
e compilato default
secondo configure
error: dnet-config not found
sorgenti solo RPM, probabilmente SuSE
smetto qui, perso l'interesse
- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: strnstr
Ci sono anche qui su slacky questi pacchetti Mario, quel che dici si trova in libdnet che come sorgenti è qui http://libdnet.sourceforge.net/
Per current ci sono su slackers.it
Per current ci sono su slackers.it
-
Mario Vanoni
- Iper Master

- Messaggi: 3174
- Iscritto il: lun 3 set 2007, 21:20
- Nome Cognome: Mario Vanoni
- Slackware: 12.2
- Kernel: 3.0.4 statico
- Desktop: fluxbox/seamonkey
- Località: Cuasso al Monte (VA)
Re: strnstr
Grazie Corrado,conraid ha scritto:Ci sono anche qui su slacky questi pacchetti Mario, quel che dici si trova in libdnet che come sorgenti è qui http://libdnet.sourceforge.net/
Per current ci sono su slackers.it
installato libevent e sscanssh
make stesso errore tuo, strnstr che manca
PS Non amo molto i *.tgz
>> preferisco ./configure --help | less
>> per vedere le alternative, se esistono, poi
>> e.g. --prefix=/usr --disable-nls CFLAGS='-O2 -s -static''
>> gusti diversi ...
- conraid
- Staff

- Messaggi: 13631
- Iscritto il: gio 14 lug 2005, 0:00
- Nome Cognome: Corrado Franco
- Slackware: current64
- Desktop: kde
- Località: Livorno
- Contatta:
Re: strnstr
Lo so, io ho iniziato a fare i tgz da poco, prima per il software che usavo spesso e potevo ricompilare (mettermi a ricompilare kde non mi ci sono mai messo tanto per dire) facevo anche io così. mutt, postfix, etc...Mario Vanoni ha scritto:Grazie Corrado,conraid ha scritto:Ci sono anche qui su slacky questi pacchetti Mario, quel che dici si trova in libdnet che come sorgenti è qui http://libdnet.sourceforge.net/
Per current ci sono su slackers.it
installato libevent e sscanssh
make stesso errore tuo, strnstr che manca
PS Non amo molto i *.tgz
>> preferisco ./configure --help | less
>> per vedere le alternative, se esistono, poi
>> e.g. --prefix=/usr --disable-nls CFLAGS='-O2 -s -static''
>> gusti diversi ...
anche perché i tgz, anche in quelli che faccio io, per forza di cosa devi farli più generici possibili
Ma visto che li faccio, li provo anche e quindi adesso utilizzo quelli
