Repository 32bit  Forum
Repository 64bit  Wiki

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.

Re: strnstr

Messaggioda Dani » mar set 30, 2008 22:12

Aggiungendo direttamente la funzione tra i sorgenti la compilazione va a buon fine. Allego la patch :)
Allegati
dnsscan.diff.gz
(505 Byte) Scaricato 17 volte
Dani
Linux 3.x
Linux 3.x
 
Messaggi: 1447
Iscritto il: mer apr 26, 2006 0:52
Desktop: gnome
Distribuzione: arch

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 8: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: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 8: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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: strnstr

Messaggioda Dani » mer ott 01, 2008 15: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'è.
Dani
Linux 3.x
Linux 3.x
 
Messaggi: 1447
Iscritto il: mer apr 26, 2006 0:52
Desktop: gnome
Distribuzione: arch

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 15: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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: strnstr

Messaggioda Dani » mer ott 01, 2008 16: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]$
Dani
Linux 3.x
Linux 3.x
 
Messaggi: 1447
Iscritto il: mer apr 26, 2006 0:52
Desktop: gnome
Distribuzione: arch

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 16: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'è
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: strnstr

Messaggioda Mario Vanoni » mer ott 01, 2008 17: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
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: strnstr

Messaggioda conraid » mer ott 01, 2008 17: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
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Re: strnstr

Messaggioda Mario Vanoni » mer ott 01, 2008 18: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 ...
Mario Vanoni
Iper Master
Iper Master
 
Messaggi: 3174
Iscritto il: lun set 03, 2007 20:20
Località: Cuasso al Monte (VA)
Nome Cognome: Mario Vanoni
Slackware: 12.2
Kernel: 3.0.4 statico
Desktop: fluxbox/seamonkey

Re: strnstr

Messaggioda conraid » gio ott 02, 2008 10: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 :-)
Avatar utente
conraid
Staff
Staff
 
Messaggi: 12016
Iscritto il: mer lug 13, 2005 23:00
Località: Livorno
Nome Cognome: Corrado Franco
Slackware: current

Precedente

Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite