CUESTIÓN


Al compilar la práctica desde Linux o Solaris, me dice que no reconoce la macro UID_NO_CHANGE. ¿Le han hecho un "trabajo" al compilador y he de acudir a la Pitonisa Lola?


SOLUCIÓN

No, mejor no. No sea que te encienda dos velas negras. La solución al enigma es más de este mundo. Lo que ocurre simplemente es que UID_NO_CHANGE es una macro que, en HPUX (tejo), está definida en los ficheros de cabecera como:
#define UID_NO_CHANGE -1
Tanto en Linux como en Solaris esta macro no está definida, como podéis comprobar en la página de manual (man lchown). En estos sistemas hay que poner el valor numérico directamente.

Pero, si en un arrebato de perfección queremos hacer código exquisitamente compatible con todos los sistemas, lo correcto sería poner:
#ifndef UID_NO_CHANGE
    #define UID_NO_CHANGE -1
#endif
[...]
    lchown("pepe.txt", UID_NO_CHANGE, ...

© 2002 Guillermo González Talaván.