Bernd Walter <ticso(at)cicely12.cicely.de> writes:
> Vorsicht übrigens bei der Verwendung vom SUN_LEN Macro - das ist bei
> einigen Linux Distributionen kaput.
> Am besten berechnest du es mit der FreeBSD Implementation:
> /* actual length of an initialized sockaddr_un */
> #define SUN_LEN(su) \
> (sizeof(*(su)) - sizeof((su)->sun_path) + strlen((su)->sun_path))
Habe ich eingebaut, funktioniert und die Werte sehen auch aus als
würden sie stimmen.
> Ich vermute, daß du den Fehler auch unter Linux machst, aber Linux
> ignoriert in dem Umfeld etliche Fehler.
> Wie sieht denn deine Berechnung aus?
Ziemlich abgefahren:
for (i=0;i<sizeof (xsun.sun_path)-1&&str[i]!=':';i++)
if ((xsun.sun_path[i] = str[i]) <= ' ') break;
xsun.sun_path[i] = 0;
sa = (struct sockaddr *) &xsun;
socksize = i+sizeof (xsun.sun_family);
....
i ist im konkreten Fall 7 und sizeof (xsun.sun_family) ist
(eigentlich immer) 1, zusammen also 8. Linux lebt damit. Die
obige Berechnung von socksize verstehe ich nicht wirklich.
Wie gesagt, mit dem SUN_LEN Macro klappt es.
Bis dann
Matthias
-- Matthias Teege -- http://www.mteege.de make world not war To Unsubscribe: send mail to majordomo.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Sat 08 Nov 2003 - 15:00:19 CET