Pagina 2 di 2

Re: strnstr

Inviato: mar 30 set 2008, 23:12
da Dani
Aggiungendo direttamente la funzione tra i sorgenti la compilazione va a buon fine. Allego la patch :)

Re: strnstr

Inviato: mer 1 ott 2008, 9:47
da conraid
Dani ha scritto:Aggiungendo direttamente la funzione tra i sorgenti la compilazione va a buon fine. Allego la patch :)
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.

Purtroppo il programmatore dopo che gli ho fatto notare che manca quel file che dice non ha più risposto. Speriamo risponda

Re: strnstr

Inviato: mer 1 ott 2008, 9:54
da conraid
Ho visto che hai usato __DECONST dichiarandola.
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);
}
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

Re: strnstr

Inviato: mer 1 ott 2008, 16:38
da Dani
conraid ha scritto: Alla fine sono la stessa cosa?
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 successo :-k
Comunque la macro la lascerei, usando la funzione strnstr così com'è.

Re: strnstr

Inviato: mer 1 ott 2008, 16:41
da conraid
Dani ha scritto:
conraid ha scritto: Alla fine sono la stessa cosa?
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 successo :-k
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.
Il programmatore non risponde più dopo che gli ho chiesto dove sia quel file strnstr.c che lui dice essere nei sorgenti

Re: strnstr

Inviato: mer 1 ott 2008, 17:04
da Dani
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]$ 

Re: strnstr

Inviato: mer 1 ott 2008, 17:15
da conraid
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]$ 
è quello che gli ho detto io, ma lui ha risposto che c'è

Re: strnstr

Inviato: mer 1 ott 2008, 18:21
da Mario Vanoni
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

Re: strnstr

Inviato: mer 1 ott 2008, 18:24
da conraid
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

Re: strnstr

Inviato: mer 1 ott 2008, 19:53
da Mario Vanoni
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
Grazie Corrado,
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 ...

Re: strnstr

Inviato: gio 2 ott 2008, 11:02
da conraid
Mario Vanoni ha scritto:
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
Grazie Corrado,
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 ...
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...
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 :-)