Notes de version de Solaris Express Developer Edition

Modification des types uid[lowbar]t et gid[lowbar]t dans Developer 9/07 Release

Pour assurer la compatibilité avec d'autres systèmes d'exploitation, les types uid[lowbar]t et gid[lowbar]t ont changé. Les types long (binaires 32 bits) et int (binaires 64 bits) ont été remplacés par le type uint32[lowbar]t. Pour plus d'informations sur cette fonction, reportez-vous à la section uid[lowbar]t and gid[lowbar]t Type Changes du document Solaris Express Developer Edition What’s New.

Voici les effets de ces modifications :

Impact sur les binaires C récemment compilés :

Lorsque le code est recompilé, les pratiques de développement standard doivent tenir compte des problèmes liés aux modifications des types uid[lowbar]t et gid[lowbar]t.

Les sections qui risquent de poser des problèmes sont les suivantes :


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 }

Remarque –

Les binaires C récemment compilés peuvent être mélangés à des anciens objets et à des objets système. La taille du type n'a pas changé.


Impact sur le code C++.

La modification des types uid[lowbar]t et gid[lowbar]t a pour effet de mutiler les différents noms des fonctions et des objets C++.

A l'instar des binaires C, les binaires C++ et les bibliothèques continuent de fonctionner comme auparavant, à l'exception des bibliothèques contenant des interfaces qui utilisent uid[lowbar]t et gid[lowbar]t. Dans ce cas, les bibliothèques en question ainsi que les applications ayant recours à ces interfaces doivent être recompilées simultanément.

Comme le système d'exploitation Solaris ne présente pas les interfaces C++ de cette nature, aucune incompatibilité avec les bibliothèques Solaris n'est attendue.