|
@@ -33,9 +33,9 @@ http://www.vitanuova.com/inferno/index.html
|
|
None of these functions are currently implemented in the uClibc
|
|
None of these functions are currently implemented in the uClibc
|
|
library, so they must be added.
|
|
library, so they must be added.
|
|
|
|
|
|
- flockfile <required> <---
|
|
+ flockfile <implemented>
|
|
- ftrylockfile <required> <---
|
|
+ ftrylockfile <implemented>
|
|
- funlockfile <required> <---
|
|
+ funlockfile <implemented>
|
|
|
|
|
|
1.2 Functions that must use buffer access mutexes, according to Butenhof
|
|
1.2 Functions that must use buffer access mutexes, according to Butenhof
|
|
|
|
|
|
@@ -43,10 +43,10 @@ http://www.vitanuova.com/inferno/index.html
|
|
buffer access mutexes. This does not represent all functions that
|
|
buffer access mutexes. This does not represent all functions that
|
|
need to use the mutexes.
|
|
need to use the mutexes.
|
|
|
|
|
|
- getc <mutex required> <---
|
|
+ getc <mutex required>
|
|
- getchar <mutex required> <---
|
|
+ getchar <mutex required>
|
|
- putc <mutex required> <---
|
|
+ putc <mutex required>
|
|
- putchar <mutex required> <---
|
|
+ putchar <mutex required>
|
|
|
|
|
|
1.3 Functions from glibc (libio) that use buffer access mutexes
|
|
1.3 Functions from glibc (libio) that use buffer access mutexes
|
|
|
|
|
|
@@ -57,21 +57,21 @@ http://www.vitanuova.com/inferno/index.html
|
|
The rest may require the access mutex. (These must be analyzed on a
|
|
The rest may require the access mutex. (These must be analyzed on a
|
|
case-by-case basis.)
|
|
case-by-case basis.)
|
|
|
|
|
|
- clearerr <mutex required> <---
|
|
+ clearerr <mutex required>
|
|
- feof <mutex required> <---
|
|
+ feof <mutex required>
|
|
- ferror <mutex required> <---
|
|
+ ferror <mutex required>
|
|
- fputc <mutex required> <---
|
|
+ fputc <mutex required>
|
|
fputwc <not supported>
|
|
fputwc <not supported>
|
|
- freopen <mutex required> <---
|
|
+ freopen <mutex required>
|
|
- freopen64 <not supported>
|
|
+ freopen64 <mutex required>
|
|
- fseek <mutex required> <---
|
|
+ fseek <mutex required>
|
|
- fseeko <not supported>
|
|
+ fseeko <mutex required>
|
|
- fseeko64 <not supported>
|
|
+ fseeko64 <mutex required>
|
|
- ftello <not supported>
|
|
+ ftello <mutex required>
|
|
- ftello64 <not supported>
|
|
+ ftello64 <mutex required>
|
|
fwide <not supported>
|
|
fwide <not supported>
|
|
- getc <macro for fgetc>
|
|
+ getc <mutex required>
|
|
- getchar <macro for fgetc>
|
|
+ getchar <mutex required>
|
|
getwc <not supported>
|
|
getwc <not supported>
|
|
getwchar <not supported>
|
|
getwchar <not supported>
|
|
iofclose <not supported>
|
|
iofclose <not supported>
|
|
@@ -102,49 +102,50 @@ http://www.vitanuova.com/inferno/index.html
|
|
oldiofsetpos <not supported>
|
|
oldiofsetpos <not supported>
|
|
oldiofsetpos64 <not supported>
|
|
oldiofsetpos64 <not supported>
|
|
peekc <not supported>
|
|
peekc <not supported>
|
|
- putc <macro for fputc>
|
|
+ putc <mutex required>
|
|
- putchar <macro for fputc>
|
|
+ putchar <mutex required>
|
|
putwc <not supported>
|
|
putwc <not supported>
|
|
putwchar <not supported>
|
|
putwchar <not supported>
|
|
- rewind <mutex required> <---
|
|
+ rewind <mutex required>
|
|
|
|
|
|
1.4 Functions from Proventhreads that use buffer access mutexes
|
|
1.4 Functions from Proventhreads that use buffer access mutexes
|
|
|
|
|
|
See description above. This applies only to the C library included
|
|
See description above. This applies only to the C library included
|
|
in the proventhreads distribution.
|
|
in the proventhreads distribution.
|
|
|
|
|
|
- clearerr <mutex required> <---
|
|
+ clearerr <mutex required>
|
|
- fclose <mutex required> <---
|
|
+ fclose <mutex required>
|
|
- fflush <mutex required> <---
|
|
+ fflush <mutex required>
|
|
- fgetc <mutex required> <---
|
|
+ fgetc <mutex required>
|
|
__getc <not supported>
|
|
__getc <not supported>
|
|
fgetline <not supported>
|
|
fgetline <not supported>
|
|
- fgetpos <mutex required> <---
|
|
+ fgetpos <mutex required>
|
|
- fgets <mutex required> <---
|
|
+ fgetpos64 <mutex required>
|
|
|
|
+ fgets <mutex required>
|
|
fpurge <not supported>
|
|
fpurge <not supported>
|
|
- fputc <mutex required> <---
|
|
+ fputc <mutex required>
|
|
__putc <not supported>
|
|
__putc <not supported>
|
|
- fputs <mutex required> <---
|
|
+ fputs <mutex required>
|
|
- fread <mutex required> <---
|
|
+ fread <mutex required>
|
|
- freopen <mutex required> <---
|
|
+ freopen <mutex required>
|
|
- fscanf <mutex required> <---
|
|
+ fscanf <mutex required>
|
|
- fseek <mutex required> <---
|
|
+ fseek <mutex required>
|
|
- ftell <mutex required> <---
|
|
+ ftell <mutex required>
|
|
fwalk <not supported>
|
|
fwalk <not supported>
|
|
- fwrite <mutex required> <---
|
|
+ fwrite <mutex required>
|
|
- getc <macro for fgetc>
|
|
+ getc <mutex required>
|
|
- getchar <mutex required> <---
|
|
+ getchar <mutex required>
|
|
- putc <macro for fputc>
|
|
+ putc <mutex required>
|
|
- putchar <mutex required> <---
|
|
+ putchar <mutex required>
|
|
- puts <mutex required> <---
|
|
+ puts <mutex required>
|
|
- putw <not supported>
|
|
+ putw <mutex _not_ required>
|
|
refill <not supported>
|
|
refill <not supported>
|
|
- rewind <mutex required> <---
|
|
+ rewind <mutex required>
|
|
- scanf <mutex required> <---
|
|
+ scanf <mutex required>
|
|
- setvbuf <mutex required> <---
|
|
+ setvbuf <mutex required>
|
|
- ungetc <mutex required> <---
|
|
+ ungetc <mutex required>
|
|
- vfprintf <mutex required> <---
|
|
+ vfprintf <mutex required>
|
|
- vscanf <mutex required> <---
|
|
+ vscanf <mutex required>
|
|
|
|
|
|
1.5 Unlocked buffer access
|
|
1.5 Unlocked buffer access
|
|
|
|
|
|
@@ -155,10 +156,10 @@ http://www.vitanuova.com/inferno/index.html
|
|
then use getc_unlocked within the loop for speed. That way, the lock
|
|
then use getc_unlocked within the loop for speed. That way, the lock
|
|
only needs to be grabbed and released once, rather than for each call.
|
|
only needs to be grabbed and released once, rather than for each call.
|
|
|
|
|
|
- getc_unlocked <required> <---
|
|
+ getc_unlocked <implemented
|
|
- getchar_unlocked <required> <---
|
|
+ getchar_unlocked <implemented
|
|
- putc_unlocked <required> <---
|
|
+ putc_unlocked <implemented
|
|
- putchar_unlocked <required> <---
|
|
+ putchar_unlocked <implemented
|
|
|
|
|
|
1.6 Additional unlocked calls made in glibc
|
|
1.6 Additional unlocked calls made in glibc
|
|
|
|
|
|
@@ -166,17 +167,17 @@ http://www.vitanuova.com/inferno/index.html
|
|
glibc library uses for unlocked buffer access. Though not strictly
|
|
glibc library uses for unlocked buffer access. Though not strictly
|
|
necessary, these may be nice to have in uClibc.
|
|
necessary, these may be nice to have in uClibc.
|
|
|
|
|
|
- fileno_unlocked <desired> <---
|
|
+ fileno_unlocked <implemented
|
|
- clearerr_unlocked <desired> <---
|
|
+ clearerr_unlocked <implemented
|
|
- feof_unlocked <desired> <---
|
|
+ feof_unlocked <implemented
|
|
- ferror_unlocked <desired> <---
|
|
+ ferror_unlocked <implemented
|
|
- fputc_unlocked <desired> <---
|
|
+ fputc_unlocked <implemented
|
|
- fgetc_unlocked <desired> <---
|
|
+ fgetc_unlocked <implemented
|
|
- fflush_unlocked <desired> <---
|
|
+ fflush_unlocked <implemented
|
|
- fread_unlocked <desired> <---
|
|
+ fread_unlocked <implemented
|
|
- fwrite_unlocked <desired> <---
|
|
+ fwrite_unlocked <implemented
|
|
- fgets_unlocked <desired> <---
|
|
+ fgets_unlocked <implemented
|
|
- fputs_unlocked <desired> <---
|
|
+ fputs_unlocked <implemented
|
|
|
|
|
|
1.7 Additional unlocked calls made in Proventhreads
|
|
1.7 Additional unlocked calls made in Proventhreads
|
|
|
|
|
|
@@ -203,16 +204,13 @@ http://www.vitanuova.com/inferno/index.html
|
|
2.1 User and terminal identification:
|
|
2.1 User and terminal identification:
|
|
|
|
|
|
getlogin_r <implemented>
|
|
getlogin_r <implemented>
|
|
- ctermid <implemented> (1)
|
|
+ ctermid <implemented>
|
|
- ttyname_r <required> <---
|
|
+ ttyname_r <implemented>
|
|
|
|
|
|
- 1. ctermid is a special case. The signature has not changed, but a
|
|
|
|
- requirement has been added that its parameter point to a structure
|
|
|
|
- of exactly L_ctermid bytes.
|
|
|
|
|
|
|
|
2.2 Directory searching
|
|
2.2 Directory searching
|
|
|
|
|
|
- readdir_r <required> <---
|
|
+ readdir_r <implemented>
|
|
|
|
|
|
2.3 String token
|
|
2.3 String token
|
|
|
|
|
|
@@ -227,7 +225,7 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
2.5 Random number generation
|
|
2.5 Random number generation
|
|
|
|
|
|
- rand_r <required> <---
|
|
+ rand_r <implemented
|
|
|
|
|
|
2.6 Group and user database
|
|
2.6 Group and user database
|
|
|
|
|
|
@@ -244,12 +242,9 @@ http://www.vitanuova.com/inferno/index.html
|
|
thread-safe version. Those that do apply, but have not been
|
|
thread-safe version. Those that do apply, but have not been
|
|
implemented yet are highlighted.
|
|
implemented yet are highlighted.
|
|
|
|
|
|
- __fgetpwent_r <not supported>
|
|
|
|
fgetpwent_r <implemented>
|
|
fgetpwent_r <implemented>
|
|
- __ttyname_r <not supported>
|
|
|
|
getttyname_r <not supported>
|
|
getttyname_r <not supported>
|
|
- __getmntent_r <not supported>
|
|
+ getmntent_r <implemented>
|
|
- getmntent_r <desired> <---
|
|
|
|
ecvt_r <not supported>
|
|
ecvt_r <not supported>
|
|
fcvt_r <not supported>
|
|
fcvt_r <not supported>
|
|
qecvt_r <not supported>
|
|
qecvt_r <not supported>
|
|
@@ -257,83 +252,86 @@ http://www.vitanuova.com/inferno/index.html
|
|
hcreate_r <not supported>
|
|
hcreate_r <not supported>
|
|
hdestroy_r <not supported>
|
|
hdestroy_r <not supported>
|
|
hsearch_r <not supported>
|
|
hsearch_r <not supported>
|
|
|
|
+ getspent_r <implemented>
|
|
|
|
+ getspnam_r <implemented>
|
|
|
|
+ sgetspent_r <implemented>
|
|
|
|
+ fgetspent_r <implemented>
|
|
|
|
+ gethostbyaddr_r <implemented>
|
|
|
|
+ gethostbyname2_r <implemented>
|
|
|
|
+ gethostbyname_r <implemented>
|
|
|
|
+ gethostent_r <desired> <---
|
|
|
|
+ getnetbyaddr_r <desired> <---
|
|
|
|
+ getnetent_r <desired> <---
|
|
|
|
+ getnetbyname_r <desired> <---
|
|
|
|
+ getprotobynumber_r <desired> <---
|
|
|
|
+ getprotoent_r <desired> <---
|
|
|
|
+ getprotobyname_r <desired> <---
|
|
|
|
+ getservbyname_r <implemented>
|
|
|
|
+ getservbyport_r <implemented>
|
|
|
|
+ getservent_r <implemented>
|
|
|
|
+ getrpcent_r <desired> <---
|
|
|
|
+ getrpcbyname_r <desired> <---
|
|
|
|
+ getrpcbynumber_r <implemented>
|
|
|
|
+ ether_aton_r <not supported>
|
|
|
|
+ ether_ntoa_r <not supported>
|
|
|
|
+ getnetgrent_r <not supported>
|
|
|
|
+ getaliasent_r <not supported>
|
|
|
|
+ getaliasbyname_r <not supported>
|
|
|
|
+ nscd_getpw_r <not supported>
|
|
|
|
+ nscd_getgr_r <not supported>
|
|
|
|
+ nscd_gethst_r <not supported>
|
|
|
|
+ getutent_r <desired> <---
|
|
|
|
+ getutent_r_unknown <not supported>
|
|
|
|
+ getutid_r_unknown <not supported>
|
|
|
|
+ getutline_r_unknown <not supported>
|
|
|
|
+ getutid_r <desired> <---
|
|
|
|
+ getutline_r <required> <---
|
|
|
|
+ getutent_r_file <not supported>
|
|
|
|
+ getutid_r_file <not supported>
|
|
|
|
+ getutline_r_file <not supported>
|
|
|
|
+ internal_getut_r <not supported>
|
|
|
|
+ getutent_r_daemon <not supported>
|
|
|
|
+ getutid_r_daemon <not supported>
|
|
|
|
+ getutline_r_daemon <not supported>
|
|
|
|
+ ptsname_r <not supported>
|
|
|
|
+ __fgetpwent_r <not supported>
|
|
|
|
+ __ttyname_r <not supported>
|
|
|
|
+ __getmntent_r <not supported>
|
|
__getspent_r <not supported>
|
|
__getspent_r <not supported>
|
|
- getspent_r <not supported>
|
|
|
|
__getspnam_r <not supported>
|
|
__getspnam_r <not supported>
|
|
- getspnam_r <not supported>
|
|
|
|
__sgetspent_r <not supported>
|
|
__sgetspent_r <not supported>
|
|
- sgetspent_r <not supported>
|
|
|
|
__fgetspent_r <not supported>
|
|
__fgetspent_r <not supported>
|
|
- fgetspent_r <not supported>
|
|
|
|
__gethostbyaddr_r <not supported>
|
|
__gethostbyaddr_r <not supported>
|
|
- gethostbyaddr_r <desired> <---
|
|
|
|
__gethostbyname2_r <not supported>
|
|
__gethostbyname2_r <not supported>
|
|
- gethostbyname2_r <not supported>
|
|
|
|
__gethostbyname_r <not supported>
|
|
__gethostbyname_r <not supported>
|
|
- gethostbyname_r <desired> <---
|
|
|
|
__gethostent_r <not supported
|
|
__gethostent_r <not supported
|
|
- gethostent_r <not supported>
|
|
|
|
__getnetbyaddr_r <not supported>
|
|
__getnetbyaddr_r <not supported>
|
|
- getnetbyaddr_r <desired> <---
|
|
|
|
__getnetent_r <not supported>
|
|
__getnetent_r <not supported>
|
|
- getnetent_r <desired> <---
|
|
|
|
__getnetbyname_r <not supported>
|
|
__getnetbyname_r <not supported>
|
|
- getnetbyname_r <desired> <---
|
|
|
|
__getprotobynumber_r <not supported>
|
|
__getprotobynumber_r <not supported>
|
|
- getprotobynumber_r <desired> <---
|
|
|
|
__getprotoent_r <not supported>
|
|
__getprotoent_r <not supported>
|
|
- getprotoent_r <desired> <---
|
|
|
|
__getprotobyname_r <not supported>
|
|
__getprotobyname_r <not supported>
|
|
- getprotobyname_r <desired> <---
|
|
|
|
__getservbyname_r <not supported>
|
|
__getservbyname_r <not supported>
|
|
- getservbyname_r <desired> <---
|
|
|
|
__getservbyport_r <not supported>
|
|
__getservbyport_r <not supported>
|
|
- getservbyport_r <desired> <---
|
|
|
|
- __getservent_r <not supported>
|
|
|
|
- getservent_r <desired> <---
|
|
|
|
__getrpcent_r <not supported>
|
|
__getrpcent_r <not supported>
|
|
- getrpcent_r <desired> <---
|
|
+ __getservent_r <not supported>
|
|
__getrpcbyname_r <not supported>
|
|
__getrpcbyname_r <not supported>
|
|
- getrpcbyname_r <desired> <---
|
|
|
|
__getrpcbynumber_r <not supported>
|
|
__getrpcbynumber_r <not supported>
|
|
- getrpcbynumber_r <desired> <---
|
|
|
|
- ether_aton_r <not supported>
|
|
|
|
- ether_ntoa_r <not supported>
|
|
|
|
__getnetgrent_r <not supported>
|
|
__getnetgrent_r <not supported>
|
|
__internal_getnetgrent_r <not supported>
|
|
__internal_getnetgrent_r <not supported>
|
|
- getnetgrent_r <not supported>
|
|
|
|
__getaliasent_r <not supported>
|
|
__getaliasent_r <not supported>
|
|
- getaliasent_r <not supported>
|
|
|
|
__getaliasbyname_r <not supported>
|
|
__getaliasbyname_r <not supported>
|
|
- getaliasbyname_r <not supported>
|
|
|
|
__nscd_getpwnam_r <not supported>
|
|
__nscd_getpwnam_r <not supported>
|
|
__nscd_getpwuid_r <not supported>
|
|
__nscd_getpwuid_r <not supported>
|
|
- nscd_getpw_r <not supported>
|
|
|
|
__nscd_getgrgid_r <not supported>
|
|
__nscd_getgrgid_r <not supported>
|
|
__nscd_getgrnam_r <not supported>
|
|
__nscd_getgrnam_r <not supported>
|
|
- nscd_getgr_r <not supported>
|
|
|
|
__nscd_gethostbyaddr_r <not supported>
|
|
__nscd_gethostbyaddr_r <not supported>
|
|
__nscd_gethostbyname2_r <not supported>
|
|
__nscd_gethostbyname2_r <not supported>
|
|
__nscd_gethostbyname_r <not supported>
|
|
__nscd_gethostbyname_r <not supported>
|
|
- nscd_gethst_r <not supported>
|
|
+ __getutent_r <not supported>
|
|
- __getutent_r <desired> <---
|
|
|
|
- getutent_r <desired> <---
|
|
|
|
- getutent_r_unknown <not supported>
|
|
|
|
- getutid_r_unknown <not supported>
|
|
|
|
- getutline_r_unknown <not supported>
|
|
|
|
__getutid_r <not supported>
|
|
__getutid_r <not supported>
|
|
- getutid_r <desired> <---
|
|
|
|
__getutline_r <not supported>
|
|
__getutline_r <not supported>
|
|
- getutline_r <required> <---
|
|
|
|
- getutent_r_file <not supported>
|
|
|
|
- getutid_r_file <not supported>
|
|
|
|
- getutline_r_file <not supported>
|
|
|
|
- internal_getut_r <not supported>
|
|
|
|
- getutent_r_daemon <not supported>
|
|
|
|
- getutid_r_daemon <not supported>
|
|
|
|
- getutline_r_daemon <not supported>
|
|
|
|
__ptsname_r <not supported>
|
|
__ptsname_r <not supported>
|
|
- ptsname_r <not supported>
|
|
|
|
|
|
|
|
|
|
|
|
2.8 Additional thread-safe functions implemented by Proventhreads
|
|
2.8 Additional thread-safe functions implemented by Proventhreads
|
|
@@ -341,9 +339,9 @@ http://www.vitanuova.com/inferno/index.html
|
|
See description above. This applies only to the C library included
|
|
See description above. This applies only to the C library included
|
|
in the proventhreads distribution.
|
|
in the proventhreads distribution.
|
|
|
|
|
|
- inet_ntoa_r <desired> <---
|
|
+ inet_ntoa_r <implemented>
|
|
- gethostbyaddr_r <desired> <---
|
|
+ gethostbyaddr_r <implemented>
|
|
- gethostbyname_r <desired> <---
|
|
+ gethostbyname_r <implemented>
|
|
gethostent_r <not supported>
|
|
gethostent_r <not supported>
|
|
getnetbyaddr_r <desired> <---
|
|
getnetbyaddr_r <desired> <---
|
|
getnetbyname_r <desired> <---
|
|
getnetbyname_r <desired> <---
|
|
@@ -351,9 +349,9 @@ http://www.vitanuova.com/inferno/index.html
|
|
getprotobynumber_r <desired> <---
|
|
getprotobynumber_r <desired> <---
|
|
getprotoent_r <desired> <---
|
|
getprotoent_r <desired> <---
|
|
getprotobyname_r <desired> <---
|
|
getprotobyname_r <desired> <---
|
|
- getservbyname_r <desired> <---
|
|
+ getservbyname_r <implemented>
|
|
- getservbyport_r <desired> <---
|
|
+ getservbyport_r <implemented>
|
|
- getservent_r <desired> <---
|
|
+ getservent_r <implemented>
|
|
|
|
|
|
|
|
|
|
3. List of functions in uClibc that use static data structures
|
|
3. List of functions in uClibc that use static data structures
|
|
@@ -375,11 +373,38 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
|
|
+ crypt/des.c:
|
|
|
|
+
|
|
|
|
+ static u_char inv_key_perm[64];
|
|
|
|
+ static u_char inv_comp_perm[56];
|
|
|
|
+ static u_char u_sbox[8][64];
|
|
|
|
+ static u_char u_key_perm[56];
|
|
|
|
+ static u_char un_pbox[32];
|
|
|
|
+ static u_int32_t en_keysl[16], en_keysr[16];
|
|
|
|
+ static u_int32_t de_keysl[16], de_keysr[16];
|
|
|
|
+ static u_int32_t ip_maskl[8][256], ip_maskr[8][256];
|
|
|
|
+ static u_int32_t fp_maskl[8][256], fp_maskr[8][256];
|
|
|
|
+ static u_int32_t key_perm_maskl[8][128], key_perm_maskr[8][128];
|
|
|
|
+ static u_int32_t comp_maskl[8][128], comp_maskr[8][128];
|
|
|
|
+ static u_int32_t saltbits;
|
|
|
|
+
|
|
|
|
+ __des_crypt_r <implemented badly!> <---
|
|
|
|
+
|
|
|
|
+ This needs to be fixed to actually be reentrant. Right now it
|
|
|
|
+ just fakes it, which is pretty lame.... All the above should be
|
|
|
|
+ moved into a 'struct des_context' or some such...
|
|
|
|
+
|
|
|
|
+ --------------------------------------------------------------------
|
|
|
|
+
|
|
crypt/md5.c:
|
|
crypt/md5.c:
|
|
|
|
|
|
- static unsigned char PADDING[64] <fix desired> <---
|
|
+ static const char __md5__magic[];
|
|
|
|
+ static const unsigned char __md5_itoa64[];
|
|
|
|
|
|
- NOTE: This is okay, but should use the const keyword.
|
|
+ __md5_crypt_r <implemented>
|
|
|
|
+
|
|
|
|
+ No problems here...
|
|
|
|
+
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -387,7 +412,8 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
static char buf[16];
|
|
static char buf[16];
|
|
|
|
|
|
- inet_ntoa <inet_ntoa_r not implemented> <---
|
|
+ inet_ntoa <implemented>
|
|
|
|
+ inet_ntoa_r <implemented>
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -398,12 +424,12 @@ http://www.vitanuova.com/inferno/index.html
|
|
static struct netent net;
|
|
static struct netent net;
|
|
static char *net_aliases[MAXALIASES];
|
|
static char *net_aliases[MAXALIASES];
|
|
|
|
|
|
- setnetent <fix required> <---
|
|
+ setnetent <mutex required>
|
|
- endnetent <fix required> <---
|
|
+ endnetent <mutex required>
|
|
- getnetent <getnetent_r required> <---
|
|
+ getnetent <mutex required>
|
|
|
|
+ getnetent_r <not implemented>
|
|
|
|
|
|
NOTE: setnetent and endnetent are not implemented in glibc.
|
|
NOTE: setnetent and endnetent are not implemented in glibc.
|
|
- Proventhreads uses pthread mutexes to protect this static data.
|
|
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -415,14 +441,16 @@ http://www.vitanuova.com/inferno/index.html
|
|
static char *proto_aliases[MAXALIASES];
|
|
static char *proto_aliases[MAXALIASES];
|
|
static int proto_stayopen;
|
|
static int proto_stayopen;
|
|
|
|
|
|
- setprotoent <fix required> <---
|
|
+ setprotoent <mutex required>
|
|
- endprotoent <fix required> <---
|
|
+ endprotoent <mutex required>
|
|
- getprotoent <getprotoent_r required> <---
|
|
+ getprotoent <mutex required>
|
|
- getprotobyname <getprotobyname_r required> <---
|
|
+ getprotoent_r <implemented>
|
|
- getprotobynumber <getprotobynumber required> <---
|
|
+ getprotobyname <implemented>
|
|
|
|
+ getprotobyname_r <not implemented>
|
|
|
|
+ getprotobynumber <implemented>
|
|
|
|
+ getprotobynumber_r <not implemented>
|
|
|
|
|
|
NOTE: setprotoent and endprotoent are not implemented in glibc.
|
|
NOTE: setprotoent and endprotoent are not implemented in glibc.
|
|
- Proventhreads uses pthread mutexes to protect this static data.
|
|
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -434,48 +462,44 @@ http://www.vitanuova.com/inferno/index.html
|
|
static char *serv_aliases[MAXALIASES];
|
|
static char *serv_aliases[MAXALIASES];
|
|
static int serv_stayopen;
|
|
static int serv_stayopen;
|
|
|
|
|
|
- setservent <fix required> <---
|
|
+ setservent <mutex required>
|
|
- endservent <fix required> <---
|
|
+ endservent <fix mutex required>
|
|
- getservent <getservent_r required> <---
|
|
+ getservent <mutex required>
|
|
- getservbyname <getservbyname_r required> <---
|
|
+ getservent_r <implemented>
|
|
- getservbyport <getservbyport_r required> <---
|
|
+ getservbyname <mutex required>
|
|
|
|
+ getservbyname_r <implemented>
|
|
|
|
+ getservbyport <mutex required>
|
|
|
|
+ getservbyport_r <implemented>
|
|
|
|
|
|
NOTE: setservent and endservent are not implemented in glibc.
|
|
NOTE: setservent and endservent are not implemented in glibc.
|
|
- Proventhreads uses pthread mutexes to protect this static data.
|
|
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
- net/resolv.c:
|
|
+ static struct hostent h;
|
|
|
|
+ static char buf[xxx];
|
|
|
|
|
|
- static int id = 1;
|
|
+ gethostbyname <implemented>
|
|
- static int ns = 0;
|
|
|
|
|
|
|
|
- dns_lookup <fix required> <---
|
|
|
|
|
|
|
|
- NOTE: dns_lookup is not implemented by glibc or Proventhreads.
|
|
+ static struct hostent h;
|
|
|
|
+ static char buf[xxx];
|
|
|
|
|
|
- static struct hostent h;
|
|
+ gethostbyname2 <implemented>
|
|
- static char namebuf[256];
|
|
|
|
- static struct in_addr in;
|
|
|
|
- static struct in_addr *addr_list[2];
|
|
|
|
|
|
|
|
- gethostbyname <gethostbyname_r required> <---
|
|
+ static struct hostent h;
|
|
|
|
+ static char buf[xxx];
|
|
|
|
|
|
- static struct hostent h;
|
|
+ gethostbyaddr <implemented>
|
|
- static char namebuf[256];
|
|
|
|
- static struct in_addr in;
|
|
|
|
- static struct in_addr *addr_list[2];
|
|
|
|
|
|
|
|
- gethostbyaddr <gethostbyaddr_r required> <---
|
|
|
|
|
|
|
|
- static struct hostent h;
|
|
+ static int __stay_open;
|
|
- static struct in_addr in;
|
|
+ static FILE * __gethostent_fp;
|
|
- static struct in_addr *addr_list[2];
|
|
+ static struct hostent h;
|
|
- static char line[80];
|
|
+ static char buf[xxx];
|
|
|
|
|
|
- read_etc_hosts <fix required> <---
|
|
+ gethostent <mutex required>
|
|
-
|
|
+ sethostent <mutex required>
|
|
- NOTE: dns_lookup is not implemented by glibc or Proventhreads.
|
|
+ endhostent <mutex required>
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -912,7 +936,10 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
static uint64_t value;
|
|
static uint64_t value;
|
|
|
|
|
|
- __gen_tempname <fix required> <---
|
|
+ __gen_tempname <no fix required>
|
|
|
|
+
|
|
|
|
+ This is supposed to be random trash, so the more threading
|
|
|
|
+ collisions the better...
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -952,7 +979,8 @@ http://www.vitanuova.com/inferno/index.html
|
|
static char buff[MNTMAXSTR];
|
|
static char buff[MNTMAXSTR];
|
|
static struct mntent mnt;
|
|
static struct mntent mnt;
|
|
|
|
|
|
- getmntent <getmntent_r required> <---
|
|
+ getmntent <mutex required>
|
|
|
|
+ getmntent_r <implemented>
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -1086,19 +1114,20 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
misc/utmp/utent.c:
|
|
misc/utmp/utent.c:
|
|
|
|
|
|
- static int ut_fd = -1;
|
|
+ static int static_fd = -1;
|
|
|
|
+ static struct utmp static_utmp;
|
|
|
|
+ static const char default_file_name[] = _PATH_UTMP;
|
|
|
|
+ static const char *static_ut_name = (const char *) default_file_name;
|
|
|
|
|
|
- setutent <fix required> <---
|
|
|
|
- endutent <fix required> <---
|
|
|
|
- getutent <fix required> <---
|
|
|
|
- getutid <fix required> <---
|
|
|
|
- getutline <fix required> <---
|
|
|
|
- pututline <fix required> <---
|
|
|
|
- utmpname <fix required> <---
|
|
|
|
-
|
|
|
|
- static struct utmp utmp;
|
|
|
|
|
|
|
|
- __getutent <fix required> <---
|
|
+ setutent <ok>
|
|
|
|
+ endutent <ok>
|
|
|
|
+ getutent <ok>
|
|
|
|
+ getutid <ok>
|
|
|
|
+ getutline <ok>
|
|
|
|
+ pututline <ok>
|
|
|
|
+ utmpname <ok>
|
|
|
|
+ __getutent <ok>
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -1191,16 +1220,21 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
static int _bsearch;
|
|
static int _bsearch;
|
|
|
|
|
|
- bsearch <fix required> <---
|
|
+ bsearch <ok>
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
- stdlib/putenv.c:
|
|
+ stdlib/setenv.c:
|
|
|
|
|
|
- static char **mall_env = 0;
|
|
+ static char **last_environ;
|
|
- static int extras = 0;
|
|
|
|
|
|
|
|
- putenv <fix required> <---
|
|
+ __add_to_environ <ok>
|
|
|
|
+ unsetenv <ok>
|
|
|
|
+ setenv <ok>
|
|
|
|
+ clearenv <ok>
|
|
|
|
+ putenv <ok>
|
|
|
|
+
|
|
|
|
+ all ok now.
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -1219,17 +1253,6 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
- stdlib/setenv.c:
|
|
|
|
-
|
|
|
|
- static pthread_once__t _once_block = pthread_once_init; (1)
|
|
|
|
- static pthread_mutex_t _setenv_mutex; (1)
|
|
|
|
- static char **last_environ = NULL; (1)
|
|
|
|
-
|
|
|
|
- 1: Obviously, nothing to do here. (Unless I change the way we
|
|
|
|
- deal with threads).
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
stdlib/malloc/avlmacro.h
|
|
stdlib/malloc/avlmacro.h
|
|
|
|
|
|
static objname *__Avl_##objname##pr##_new_node;
|
|
static objname *__Avl_##objname##pr##_new_node;
|
|
@@ -1252,30 +1275,12 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
stdlib/malloc-930716/malloc.c:
|
|
stdlib/malloc-930716/malloc.c:
|
|
|
|
|
|
- static int heapsize;
|
|
+ A bunch of stuff
|
|
- static int initialized;
|
|
|
|
- static size_t pagesize;
|
|
|
|
|
|
|
|
- inititalize <fix required> <---
|
|
+ malloc <ok>
|
|
- morecore <fix required> <---
|
|
+ realloc <ok>
|
|
- malloc <fix required> <---
|
|
+ free <ok>
|
|
-
|
|
+ etc <ok>
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- stdlib/malloc-930716/valloc.c:
|
|
|
|
-
|
|
|
|
- static size_t pagesize;
|
|
|
|
-
|
|
|
|
- valloc <fix required> <---
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- string/config.c:
|
|
|
|
-
|
|
|
|
- static char *args[16];
|
|
|
|
- static char cfgbuf[128];
|
|
|
|
-
|
|
|
|
- cfgread <fix required> <---
|
|
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -1285,7 +1290,7 @@ http://www.vitanuova.com/inferno/index.html
|
|
static char retbuf[33];
|
|
static char retbuf[33];
|
|
|
|
|
|
strerror <fix required> <---
|
|
strerror <fix required> <---
|
|
- main <fix required> <---
|
|
+ strerror_r <fix required> <---
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -1302,87 +1307,8 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
static char *save = 0;
|
|
static char *save = 0;
|
|
|
|
|
|
- strtok <strtok_r implemented> <---
|
|
+ strtok <ok>
|
|
-
|
|
+ strtok_r <ok>
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/common/kernel_version.c:
|
|
|
|
-
|
|
|
|
- static int __linux_kernel_version = -1;
|
|
|
|
-
|
|
|
|
- __get_linux_kernel_version <fix required> (1)
|
|
|
|
-
|
|
|
|
- 1: This static value never actually gets updated! This a bug.
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/i386/bits/huge_val.h:
|
|
|
|
-
|
|
|
|
- static __huge_val_t __huge_val <fix desired> <---
|
|
|
|
- static __huge_valf_t __huge_valf <fix desired> <---
|
|
|
|
- static __huge_vall_t __huge_vall <fix desired> <---
|
|
|
|
-
|
|
|
|
- NOTE: These are okay, but should use the const keyword.
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/i386/bits/nan.h:
|
|
|
|
-
|
|
|
|
- static union { ... } __nan_union <fix desired> <---
|
|
|
|
-
|
|
|
|
- NOTE: This is okay, but should use the const keyword.
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/m68k/bits/huge_val.h:
|
|
|
|
-
|
|
|
|
- static union { ... } __huge_val <fix desired> <---
|
|
|
|
- static union { ... } __huge_valf <fix desired> <---
|
|
|
|
- static union { ... } __huge_vall <fix desired> <---
|
|
|
|
-
|
|
|
|
- NOTE: These are okay, but should use the const keyword.
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/m68k/bits/nan.h:
|
|
|
|
-
|
|
|
|
- static union { ... } __nan_union <fix desired> <---
|
|
|
|
-
|
|
|
|
- NOTE: This is okay, but should use the const keyword.
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/sh/bits/huge_val.h:
|
|
|
|
-
|
|
|
|
- static __huge_val_t __huge_val <fix desired> <---
|
|
|
|
- static __huge_valf_t __huge_valf <fix desired> <---
|
|
|
|
-
|
|
|
|
- NOTE: These are okay, but should use the const keyword.
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/sh/bits/nan.h:
|
|
|
|
-
|
|
|
|
- static union { ... } __nan_union <fix desired> <---
|
|
|
|
-
|
|
|
|
- NOTE: This is okay, but should use the const keyword.
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/sparc/bits/huge_val.h:
|
|
|
|
-
|
|
|
|
- static __huge_val_t __huge_val <fix desired> <---
|
|
|
|
- static __huge_valf_t __huge_valf <fix desired> <---
|
|
|
|
-
|
|
|
|
- NOTE: These are okay, but should use the const keyword.
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
- sysdeps/linux/sparc/bits/nan.h:
|
|
|
|
-
|
|
|
|
- static union { ... } __nan_union <fix desired> <---
|
|
|
|
-
|
|
|
|
- NOTE: This is okay, but should use the const keyword.
|
|
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
@@ -1418,20 +1344,6 @@ http://www.vitanuova.com/inferno/index.html
|
|
|
|
|
|
--------------------------------------------------------------------
|
|
--------------------------------------------------------------------
|
|
|
|
|
|
- unistd/getcwd.c:
|
|
|
|
-
|
|
|
|
- static char *path_buf;
|
|
|
|
- static int path_size;
|
|
|
|
- static dev_t root_dev;
|
|
|
|
- static ino_t root_ino;
|
|
|
|
- static struct stat st;
|
|
|
|
-
|
|
|
|
- getswd <fix required> <---
|
|
|
|
- recurser <fix required> <---
|
|
|
|
- search_dir <fix required> <---
|
|
|
|
-
|
|
|
|
- --------------------------------------------------------------------
|
|
|
|
-
|
|
|
|
unistd/getopt.c:
|
|
unistd/getopt.c:
|
|
|
|
|
|
static int sp = 1;
|
|
static int sp = 1;
|