Solaris Express Developer Edition: Notas sobre la versi??n

Cambios en los tipos uid[lowbar]t y gid[lowbar]t en la versión Developer 9/07

Para favorecer la compatibilidad con otros sistemas operativos, se han cambiado los tipos uid[lowbar]t y gid[lowbar]t de long (binarios de 32 bits) e int (binarios de 64 bits) al tipo uint32[lowbar]t. Si desea más información sobre esta función, consulte Cambios en los tipos uid[lowbar]t y gid[lowbar]t de Novedades de Solaris Express Developer Edition.

A continuación puede ver las consecuencias de estos cambios:

Impacto en los binarios C recién compilados:

Cuando se vuelve a compilar el código, las prácticas de desarrollo estándar deben detectar cualquier problema provocado por los cambios en los tipos uid[lowbar]t y gid[lowbar]t.

Las áreas de problemas que se deben controlar son:


1 #include <unistd.h>
2 #include <stdlib.h>
3 #include <stdio.h>
4
5 int
6 main(void)
7 {
8 uid_t negone = -1;
9
10 if (getuid() < 0)
11 exit(1);
12
13 (void) setreuid(negone, getuid());
14
15 (void) printf("%ld\n", getuid());
16
17 return (0);
18 }

Nota –

Los binarios C recién compilados se pueden mezclar con objetos del sistema y objetos antiguos. El tamaño del tipo no ha cambiado.


Repercusión en el código C++.

El cambio en los tipos uid[lowbar]t y gid[lowbar]t provoca diversos problemas en los nombres de los objetos y las funciones de C++.

Al igual que ocurre con los binarios C, las bibliotecas y los binarios C++ continúan funcionando al igual que antes. La excepción se produce cuando las bibliotecas contienen interfaces que utilizan uid[lowbar]t y gid[lowbar]t. En esta instancia, las bibliotecas que contienen estas interfaces y las aplicaciones que utilizan estas interfaces se deben compilar de nuevo al mismo tiempo.

Debido a que el sistema operativo Solaris no expone interfaces de C++ de esta naturaleza, no se esperan incompatibilidades con las bibliotecas de Solaris.