Ayer Rubén y Mati me hicieron, sin saberlo, un buen regalo de cumpleaños:
jjm@laika:~$ uname -a SunOS laika 5.10 Generic sun4u sparc SUNW,Ultra-5_10
Tengo una flamante cuenta sin restricciones en una Solaris 10 (una Sun Ultra 5, mirando el dmesg) :).
Anoche me entusiasmé y ya tengo parche para bogom, para que funcione correctamente en Solaris.
Se planteaban principalmente dos problemas.
En primer lugar Solaris no tiene daemon(3), algo que ya sabía. Se trata de una función de la familia de los sistemas BSD descendientes del 4.4BSD (Solaris parte del 4.1BSD). He implementado una equivalente que solo se emplea cuando se compila en el sistema de SUN.
El segundo problema me ha llevado de cabeza un buen rato. Daba un error muy extraño al declarar una variable, y es que el sistema tiene en /usr/include/netinet/in.h:
...
struct in_addr {
union {
struct { uint8_t s_b1, s_b2, s_b3, s_b4; } _S_un_b;
struct { uint16_t s_w1, s_w2; } _S_un_w;
#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
uint32_t _S_addr;
#else
in_addr_t _S_addr;
#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
} _S_un;
#define s_addr _S_un._S_addr /* should be used for all code */
...
Ese define en rojo tiene la culpa de todo, porque yo definía una variable como:
const void *s_addr=NULL;
Que chocaba con el define y me daba uno de los errores más esotéricos que he tenido la oportunidad de ver trabajando con gcc :o.
En fin, ya está arreglado y bogom está soportado en Solaris :).
Gracias Rubén y Mati (y laika!).

![[xml]](/images/xml.gif)
