strnstr

Forum dedicato alla programmazione.

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.
Dani
Linux 3.x
Linux 3.x
Messaggi: 1447
Iscritto il: mer apr 26, 2006 1:52
Desktop: gnome
Distribuzione: arch

Re: strnstr

Messaggioda Dani » mar set 30, 2008 23:12

Aggiungendo direttamente la funzione tra i sorgenti la compilazione va a buon fine. Allego la patch :)
Allegati
dnsscan.diff.gz
(505 Byte) Scaricato 28 volte

Avatar utente
conraid
Staff
Staff
Messaggi: 12651
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 9:47

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

Avatar utente
conraid
Staff
Staff
Messaggi: 12651
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 9:54

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

Dani
Linux 3.x
Linux 3.x
Messaggi: 1447
Iscritto il: mer apr 26, 2006 1:52
Desktop: gnome
Distribuzione: arch

Re: strnstr

Messaggioda Dani » mer ott 01, 2008 16:38

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'è.

Avatar utente
conraid
Staff
Staff
Messaggi: 12651
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 16:41

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

Dani
Linux 3.x
Linux 3.x
Messaggi: 1447
Iscritto il: mer apr 26, 2006 1:52
Desktop: gnome
Distribuzione: arch

Re: strnstr

Messaggioda Dani » mer ott 01, 2008 17:04

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]$

Avatar utente
conraid
Staff
Staff
Messaggi: 12651
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 17:15

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'è

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun set 03, 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

Messaggioda Mario Vanoni » mer ott 01, 2008 18:21

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

Avatar utente
conraid
Staff
Staff
Messaggi: 12651
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 18:24

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

Mario Vanoni
Iper Master
Iper Master
Messaggi: 3174
Iscritto il: lun set 03, 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

Messaggioda Mario Vanoni » mer ott 01, 2008 19:53

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 ...

Avatar utente
conraid
Staff
Staff
Messaggi: 12651
Iscritto il: gio lug 14, 2005 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Località: Livorno
Contatta:

Re: strnstr

Messaggioda conraid » gio ott 02, 2008 11:02

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 :-)


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite