Hallo nochmal.
Hab ein weiteres Problem
Und zwar möchte ich in die o.g. Datei eine md5-Funktion einfügen. Ziel ist es, für die geloggten URLs einen Hashwert zu bilden.
Dazu benutze ich die Funktion md5sum aus der crypt_md5.cc, d.h. ich schreibe die Funktion neu in die access_log.cc rein und benenne sie dabei um.
Bekomme allerdings beim Kompilieren immer folgenden Fehler:
access_log.cc: In function ‘char* md5xsum(const char*)’:
access_log.cc:1939: error: left-hand operand of comma has no effect
access_log.cc:1939: error: right-hand operand of comma has no effect
access_log.cc:1939: error: statement has no effect
Hier wäre die Funktion, wie ich sie geschrieben habe. Der Fehler tritt in der sprintf-Funktion auf. Habt ihr eine Erklärung dafür?
Die Funktion ist 1:1 aus der crypt_md5.cc übernommen und dann nur umbenannt, damit es intern zu keinen Namenskonflikten kommt.
Hab ein weiteres Problem
Und zwar möchte ich in die o.g. Datei eine md5-Funktion einfügen. Ziel ist es, für die geloggten URLs einen Hashwert zu bilden.
Dazu benutze ich die Funktion md5sum aus der crypt_md5.cc, d.h. ich schreibe die Funktion neu in die access_log.cc rein und benenne sie dabei um.
Bekomme allerdings beim Kompilieren immer folgenden Fehler:
access_log.cc: In function ‘char* md5xsum(const char*)’:
access_log.cc:1939: error: left-hand operand of comma has no effect
access_log.cc:1939: error: right-hand operand of comma has no effect
access_log.cc:1939: error: statement has no effect
Hier wäre die Funktion, wie ich sie geschrieben habe. Der Fehler tritt in der sprintf-Funktion auf. Habt ihr eine Erklärung dafür?
Code:
char *md5xsum(const char *s) {
static unsigned char digest[16];
SquidMD5_CTX ctx;
int idx;
static char sum[33];
memset(digest,0,16);
SquidMD5Init(&ctx);
SquidMD5Update(&ctx,(const unsigned char *)s,strlen(s));
SquidMD5Final(digest,&ctx);
for(idx=0;idx<16;idx++) {
sprintf(&sum[idx*2],"%02x",digest[idx]); // <- der Fehler tritt an dieser Stelle auf!!!
}
sum[32]='\0';
/* Don't leave anything around in vm they could use. */
memset(digest, 0, sizeof digest);
return sum;
}
Die Funktion ist 1:1 aus der crypt_md5.cc übernommen und dann nur umbenannt, damit es intern zu keinen Namenskonflikten kommt.