Note su Solaris Express Developer Edition

Modifiche ai tipi uid_t e gid_t nella versione Developer 9/07

Per promuovere la compatibilità con altri sistemi operativi, i tipi uid_t e gid_t sono stati trasformati da long (file binari a 32 bit) e int (file binari a 64 bit) in uint32_t. Per maggiori informazioni, vedere Modifiche ai tipi uid_t e gid_t nel manuale Nuove funzioni di Solaris Express Developer Edition.

Qui di seguito sono riportate le conseguenze di questa modifica:

Impatto sui nuovi file binari compilati in C:

Quando il codice viene ricompilato, le normali procedure di sviluppo dovrebbero essere in grado di identificare eventuali problemi legati alle modifiche al tipo di uid_t e gid_t.

Le aree problematiche da tenere in considerazione sono le seguenti:


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 –

I nuovi file binari in C compilati possono utilizzati insieme ai vecchi oggetti e oggetti di sistema. La dimensione del tipo non è cambiata.


Impatto sul codice C++.

La modifica dei tipi uid_t e gid_t comporta una decorazione diversa dei nomi delle funzioni e degli oggetti C++.

Come i file binari in C, anche i file binari e le librerie in C++ funzionano correttamente come in precedenza. L'unica eccezione si verifica quando le librerie contengono interfacce che utilizzano uid_t e gid_t. In questo caso, le librerie che contengono tali interfacce e le applicazioni che utilizzano le interfacce devono essere ricompilate insieme.

Poiché il sistema operativo Solaris non espone interfacce C++ di questo tipo, non dovrebbero verificarsi incompatibilità con le librerie di Solaris.