Ordered list of unreviewed TC1 errata 1. functional changes ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1410 Rationale: definitions of SIOCGIFNAME, SIOCGIFDSTADDR, SIOCGIFBRDADDR and SIOCGIFMTU macros omitted or partially present. All four macros missing in Data Definitions; SIOCGIFDSTADDR and SIOCGIFNAME missing in Interface Definitions. Section: 13.4. Data Definitions for libc 13.4.58. sys/socket.h Add to the other SIOCG* macros: #define SIOCGIFNAME 0x8910 #define SIOCGIFDSTADDR 0x8917 #define SIOCGIFBRDADDR 0x8919 #define SIOCGIFMTU 0x8921 Section: 13.5. Interface Definitions for libc under: sockio -- socket ioctl commands add: SIOCGIFDSTADDR Get the point-to-point address for the given interface. argp shall point to a ifreq structure. Before calling, the caller should fill in the ifr_name field with the interface name, and upon return, the ifr_dstaddr field is set with the point-to-point address. SIOCGIFNAME Get the name of an interface. argp shall point to a ifreq structure. Before calling, the caller should fill in the ifr_ifindex field with the number (index) of the interface, and upon return, the ifr_name field is set with the interface name. ========================================================================== Specification: LSB Core Generic Specification: LSB Core IA32, IA64, AMD64, PPC32, PPC64, S390, S390X Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1525 Rationale: the statfs and fstatfs functions were marked as obsolete in LSB 1.3 and removed at 2.0. However, since these interfaces provide the only method for discovering the file system type, their removal was regarded as premature, and they have been reinstated (together with their obsolete status) until such time as there is a better alternative in widespread use. In LSB Core Generic: Section : 13.3.2.1. Interfaces for System Calls, insert fstatfs [LSB] statfs [LSB] Section : 13.3.16.1. Interfaces for Large File Support, insert fstatfs64 [LSB] statfs64 [LSB] Section : 13.4 Data Defintions for libc, add 13.4.60. sys/statfs.h #define NFS_SUPER_MAGIC 0x6969 struct statfs { int f_type; int f_bsize; fsblkcnt_t f_blocks; fsblkcnt_t f_bfree; fsblkcnt_t f_bavail; fsblkcnt_t f_files; fsblkcnt_t f_ffree; fsid_t f_fsid; int f_namelen; int f_spare[6]; }; struct statfs64 { int f_type; int f_bsize; fsblkcnt64_t f_blocks; fsblkcnt64_t f_bfree; fsblkcnt64_t f_bavail; fsblkcnt64_t f_files; fsblkcnt64_t f_ffree; fsid_t f_fsid; int f_namelen; int f_spare[6]; }; extern int fstatfs64(int, struct statfs64 *); extern int statfs64(const char *, struct stat64 *); extern int fstatfs(int, struct statfs *); extern int statfs(const char *, struct statfs *); Section : 13.5. Interface Definitions for libc, add fstatfs -- (deprecated) fstatfs64 -- (deprecated) statfs -- (deprecated) statfs64 -- (deprecated) and add: fstatfs Name fstatfs -- (deprecated) Synopsis #include int fstatfs(int fd, struct statfs * buf); Description The fstatfs() function returns information about a mounted file system. The file system is identified by fd, a file descriptor of an open file within the mounted filesystem. The results are placed in the structure pointed to by buf. Fields that are undefined for a particular file system shall be set to 0. Note: Application developers should use the fstatvfs() function to obtain general file system information. Applications should only use the fstatfs() function if they must determine the file system type, which need not be provided by fstatvfs(). Return Value On success, the fstatfs() function shall return 0 and sed the fields of the structure idenfitied by buf accordingly. On error, the fstatfs() function shall return -1 and set errno accordingly. Errors EBADF fd is not a valid open file descriptor. EFAULT buf points to an invalid address. EIO An I/O error occurred while reading from or writing to the file system. ENOSYS The filesystem fd is open on does not support statfs(). fstatfs64 Name fstatfs64 -- (deprecated) Synopsis #include int fstatfs64(int fd, struct statfs64 * buf); Description The fstatfs64() function returns information about a mounted file system. The file system is identified by fd, a file descriptor of an open file within the mounted filesystem. The results are placed in the structure pointed to by buf. Fields that are undefined for a particular file system shall be set to 0. fstatfs64() is the 64-bit version of fstatfs(). Note: Application developers should use the fstatvfs64() function to obtain general file system information. Applications should only use the fstatfs64() function if they must determine the file system type, which need not be provided by fstatvfs64(). Return Value On success, the fstatfs64() function shall return 0 and sed the fields of the structure idenfitied by buf accordingly. On error, the fstatfs64() function shall return -1 and set errno accordingly. Errors See fstatfs(). statfs Name statfs -- (deprecated) Synopsis #include int statfs(const char *path, (struct statfs * buf)); Description The statfs() function returns information about a mounted file system. The file system is identified by path, a path name of a file within the mounted filesystem. The results are placed in the structure pointed to by Fields that are undefined for a particular file system shall be set to 0. Note: Application developers should use the statvfs() function to obtain general file system information. Applications should only use the statfs() function if they must determine the file system type, which need not be provided by statvfs(). Return Value On success, the statfs() function shall return 0 and sed the fields of the structure idenfitied by buf accordingly. On error, the statfs() function shall return -1 and set errno accordingly. Errors ENOTDIR A component of the path prefix of path is not a directory. ENAMETOOLONG path is too long. ENOENT The file referred to by path does not exist. EACCES Search permission is denied for a component of the path prefix of path. ELOOP Too many symbolic links were encountered in translating path. EFAULT buf or path points to an invalid address. EIO An I/O error occurred while reading from or writing to the file system. ENOMEM Insufficient kernel memory was available. ENOSYS The filesystem path is on does not support statfs(). statfs64 Name statfs64 -- (deprecated) Synopsis #include int statfs64(const char * path, (struct statfs64 * buf)); Description The statfs64() function returns information about a mounted file system. The file system is identified by path, a path name of a file within the mounted filesystem. The results are placed in the structure pointed to by buf. statfs64() is the 64-bit version of statfs(). Fields that are undefined for a particular file system shall be set to 0. Note: Application developers should use the statvfs64() function to obtain general file system information. Applications should only use the statfs64() function if they must determine the file system type, which need not be provided by statvfs64(). Return Value On success, the statfs64() function shall return 0 and sed the fields of the structure idenfitied by buf accordingly. On error, the statfs64() function shall return -1 and set errno accordingly. Errors See fstatfs(). == In LSB Core IA32 Section : 11.2.2.1. Interfaces for System Calls, insert fstatfs(GLIBC_2.0) [LSB] statfs(GLIBC_2.0) [LSB] Section : 11.2.16.1. Interfaces for Large File Support, insert fstatfs64(GLIBC_2.1) [LSB] statfs64(GLIBC_2.1) [LSB] == In LSB Core IA64 Section : 11.2.2.1. Interfaces for System Calls, insert fstatfs(GLIBC_2.2) [LSB] statfs(GLIBC_2.2) [LSB] Section : 11.2.16.1. Interfaces for Large File Support, insert fstatfs64(GLIBC_2.2) [LSB] statfs64(GLIBC_2.2) [LSB] == In LSB Core AMD64 Section : 11.2.2.1. Interfaces for System Calls, insert fstatfs(GLIBC_2.2.5) [LSB] statfs(GLIBC_2.2.5) [LSB] Section : 11.2.16.1. Interfaces for Large File Support, insert fstatfs64(GLIBC_2.2.5) [LSB] statfs64(GLIBC_2.2.5) [LSB] == In LSB Core PPC32 Section : 11.2.2.1. Interfaces for System Calls, insert fstatfs(GLIBC_2.0) [LSB] statfs(GLIBC_2.0) [LSB] Section : 11.2.16.1. Interfaces for Large File Support, insert fstatfs64(GLIBC_2.1) [LSB] statfs64(GLIBC_2.1) [LSB] == In LSB Core PPC64 Section : 11.2.2.1. Interfaces for System Calls, insert fstatfs(GLIBC_2.3) [LSB] statfs(GLIBC_2.3) [LSB] Section : 11.2.16.1. Interfaces for Large File Support, insert fstatfs64(GLIBC_2.3) [LSB] statfs64(GLIBC_2.3) [LSB] == In LSB Core S390 Section : 11.2.2.1. Interfaces for System Calls, insert fstatfs(GLIBC_2.0) [LSB] statfs(GLIBC_2.0) [LSB] Section : 11.2.16.1. Interfaces for Large File Support, insert fstatfs64(GLIBC_2.1) [LSB] statfs64(GLIBC_2.1) [LSB] == In LSB Core S390X Section : 11.2.2.1. Interfaces for System Calls, insert fstatfs(GLIBC_2.2) [LSB] statfs(GLIBC_2.2) [LSB] Section : 11.2.16.1. Interfaces for Large File Support, insert fstatfs64(GLIBC_2.2) [LSB] statfs64(GLIBC_2.2) [LSB] ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Error Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1425 Rationale: several sets of constants are presented in the Data Definitions as enums, but are not given their correct values in those enums. Section : 13.4. Data Definitions for libc In 13.4.3. ctype.h, change enum { _ISupper, _ISlower, _ISalpha, _ISdigit, _ISxdigit, _ISspace, _ISprint, _ISgraph, _ISblank, _IScntrl, _ISpunct, _ISalnum }; to: enum { _ISupper = 256, _ISlower = 512, _ISalpha = 1024, _ISdigit = 2048, _ISxdigit = 4096, _ISspace = 8192, _ISprint = 16384, _ISgraph = 32768, _ISblank = 1, _IScntrl = 2, _ISpunct = 4, _ISalnum = 8 }; == In 13.4.10. ftw.h, Change enum { FTW_PHYS, FTW_MOUNT, FTW_CHDIR, FTW_DEPTH }; To: enum { FTW_PHYS = 1, FTW_MOUNT = 2, FTW_CHDIR = 4, FTW_DEPTH = 8 }; == In 13.4.32. regex.h, Change typedef enum { REG_ENOSYS, REG_NOERROR, REG_NOMATCH, REG_BADPAT, REG_ECOLLATE, REG_ECTYPE, REG_EESCAPE, REG_ESUBREG, REG_EBRACK, REG_EPAREN, REG_EBRACE, REG_BADBR, REG_ERANGE, REG_ESPACE, REG_BADRPT, REG_EEND, REG_ESIZE, REG_ERPAREN } reg_errcode_t; To: typedef enum { REG_ENOSYS = -1, REG_NOERROR = 0, REG_NOMATCH = 1, REG_BADPAT = 2, REG_ECOLLATE = 3, REG_ECTYPE = 4, REG_EESCAPE = 5, REG_ESUBREG = 6, REG_EBRACK = 7, REG_EPAREN = 8, REG_EBRACE = 9, REG_BADBR = 10, REG_ERANGE = 11, REG_ESPACE = 12, REG_BADRPT = 13, REG_EEND = 14, REG_ESIZE = 15, REG_ERPAREN = 16 } reg_errcode_t; == In 13.4.81. wordexp.h, Change: enum { WRDE_DOOFFS, WRDE_APPEND, WRDE_NOCMD, WRDE_REUSE, WRDE_SHOWERR, WRDE_UNDEF, __WRDE_FLAGS }; To: enum { WRDE_DOOFFS = 1, WRDE_APPEND = 2, WRDE_NOCMD = 4, WRDE_REUSE = 8, WRDE_SHOWERR = 16, WRDE_UNDEF = 32, __WRDE_FLAGS = 63 }; NOTE: bug 1346 removes the __WRDE_FLAGS value entirely ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1438 Rationale: the definition of the CIE pointer is incorrect In LSB Core Generic: Section : 11.6.1.2. The Frame Description Entry Format, change A 4 byte unsigned value that when subtracted from the offset of the current FDE yields the offset of the start of the associated CIE. This value shall never be 0. to: A 4 byte unsigned value that when subtracted from the offset of the CIE pointer in the current FDE yields the offset of the start of the associated CIE. This value shall never be 0. ========================================================================== Specification: LSB Core IA32 Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1455 Rationale: wrong type for st_uid member in struct stat Section : 13.5. Interface Definitions for libc Section 11.3. Data Definitions for libc, part 11.3.59. sys/stat.h, struct stat, Change pid_t st_uid; to: uid_t st_uid; ========================================================================== Specification: LSB Core generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1474 Rationale: blksize_t and blkcnt_t typedefs must be signed according to ISO POSIX. By extension, blkcnt64_t should also be signed. Section : 13.4. Interface Definitions for libc part 13.4.64. sys/types.h, change: typedef unsigned long int blksize_t; to typedef long int blksize_t; change typedef unsigned long int blkcnt_t; to typedef long int blkcnt_t; change: typedef unsigned long long int blkcnt64_t; to typedef long long int blkcnt64_t; ========================================================================== Specification: LSB Desktop generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1508 Rationale: the function prototype for glXGetProcAddressARB is incorrect Section : 7.2. Data Definitions for libGL part 7.2.2. GL/glx.h, change extern void (*GLXWindow) (GLubyte * procName) glXGetProcAddressARB(void); to extern void (*glXGetProcAddressARB(const GLubyte * procName)) (void); ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1518 Rationale: definition of Z_BLOCK macro omitted Section: 14.3. Data Definitions for libz 14.3.1. zlib.h, following #define Z_FINISH 4 add: #define Z_BLOCK 5 ========================================================================== Specification: LSB Core generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1541 Rationale: The svcudp_create function was incompletely defined. Section : 13.5. Interface Definitions for libc Interface svcudp_create, section Description, change This call is equivalent to svcudp_bufcreate( sock, SZ, SZ) for some default size SZ. To: The svcudp_create() function shall create a UDP/IP-based RPC service transport, and return a pointer to its descriptor. The transport is associated with the socket sock, which may be RPC_ANYSOCK, in which case a new socket shall be created. If the socket is not bound to a local UDP port, then svcudp_create() shall bind it to an arbitrary port. If svcudp_create() returns successfully, then the xp_sock field in the result shall be the transport's socket descriptor, and the xp_port field shall be the transport's port number. Add section Return Value: Upon successful completion, svcudp_create() shall return a pointer to a RPC service transport; otherwise, a null pointer shall be returned. ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1545 Rationale: description of "option" structure for getopt_long differs in the Data Definitions and in Interface Definitions. The latter is correct. Section: 13.4. Data Definitions for libc 13.4.11. getopt.h, change struct option { char *name; to: struct option { const char *name; 2. minor but not completely trivial ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Error Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1432 Rationale: wrong values for PTHREAD_MUTEX constants, did not match implementations 13.10. Data Definitions for libpthread 13.10.1. pthread.h change these constants: #define PTHREAD_MUTEX_DEFAULT 1 #define PTHREAD_MUTEX_NORMAL 1 #define PTHREAD_MUTEX_RECURSIVE 2 #define PTHREAD_MUTEX_ERRORCHECK 3 to #define PTHREAD_MUTEX_DEFAULT 0 #define PTHREAD_MUTEX_NORMAL 0 #define PTHREAD_MUTEX_RECURSIVE 1 #define PTHREAD_MUTEX_ERRORCHECK 2 ========================================================================== Specification: LSB Core Generic Specification: LSB Core IA32 Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1443 Rationale: incorrect reference to base function in ISO POSIX for __fpclassifyf, __fpclassifyl and incorrect summary for the latter. In Specification LSB Core Generic: 13.8. Interface Definitions for libm Interface __fpclassifyl, Description, change __fpclassifyf() has the same specification as fpclassifyf() in ISO POSIX (2003), except that the argument type for __fpclassifyf() is known to be float. to __fpclassifyf() has the same specification as fpclassify() in ISO POSIX (2003), except that the argument type for __fpclassifyf() is known to be float. === In Specification LSB Core IA32: 11.6. Interface Definitions for libm Table of Contents, change: __fpclassifyl -- test for infinity to __fpclassifyl -- Classify real floating type Interface __fpclassifyl, Name, change __fpclassifyl -- test for infinity to __fpclassifyl -- Classify real floating type Interface __fpclassifyl, Synopsis, change __fpclassifyl() has the same specification as fpclassifyl() in ISO POSIX (2003), except that the argument type for __fpclassifyl() is known to be long double. to __fpclassifyl() has the same specification as fpclassify() in ISO POSIX (2003), except that the argument type for __fpclassifyl() is known to be long double. ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Error Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1446 Rationale: wrong reference specification for cpio command Section: 15.2. Command Behavior Command cpio, Description, change: cpio is as specified in ISO POSIX (2003), but with differences as listed below. to cpio is as specified in SUSv2, but with differences as listed below. ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1447 Rationale: several references to two nonexistent sections. References are changed to the correct section names. 13.5. Interface Definitions for libc Interface regexec, section Differences Change: Certain aspects of regular expression matching are optional; see Internationalization and Regular Expressions. To: Certain aspects of regular expression matching are optional; see Regular Expressions. == Section 15.2. Command Behavior Command awk, section Differences Change: Certain aspects of internationalized regular expressions are optional; see Internationalization and Regular Expressions. To: Certain aspects of internationalized regular expressions are optional; see Regular Expressions. Command cpio, section Differences Change: Some elements of the Pattern Matching Notation are optional; see Internationalization and Pattern Matching Notation. To: Some elements of the Pattern Matching Notation are optional; see Pattern Matching Notation. Command find, section Differences Change: Some elements of the Pattern Matching Notation are optional; see Internationalization and Pattern Matching Notation. Change: Some elements of the Pattern Matching Notation are optional; see Pattern Matching Notation. Command grep, section LSB Differences Change: Certain aspects of regular expression matching are optional; see Internationalization and Regular Expressions. To: Certain aspects of regular expression matching are optional; see Regular Expressions. Command sed, section LSB Differences Change: Certain aspects of regular expression matching are optional; see Internationalization and Regular Expressions. To: Certain aspects of regular expression matching are optional; see Regular Expressions. Command tar, section Differences Change: Some elements of the Pattern Matching Notation are optional; see Internationalization and Pattern Matching Notation. To: Some elements of the Pattern Matching Notation are optional; see Pattern Matching Notation. ========================================================================== Specification: LSB Desktop generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1493 Rationale: two internal macros that reflect the result of configuring the jpeg library, but do not form part of the API/ABI, were included in error. Since these may interfere with application usage, they are removed. Section : 9.2. Data Definitions for libjpeg Section 9.2.1. jpeglib.h Remove: #define HAVE_STDDEF_H #define HAVE_STDLIB_H ========================================================================== Specification: LSB Core generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1497 Rationale: __INT_MAX__ is an internal compiler-provided constant that should not have been included in the LSB specification. Section : 13.5. Interface Definitions for libc part 13.4.19. limits.h, remove: #define __INT_MAX__ 2147483647 ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1533 Rationale: editorial, duplicated paragraph Section: 13.5. Interface Definitions for libc Interface bind_textdomain_codeset, Description, remove The bind_textdomain_codeset() function returns a pointer to string containing the name of the selected codeset. The string is allocated internally in the function and shall not be changed by the user. ========================================================================== Specification: LSB Desktop generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1544 Rationale: Xt Intrinsics functions have incorrect prototypes Section : 6.9. Data Definitions for libXt part 6.9.6. X11/Intrinsic.h Change: extern Boolean XtIsApplicationShell(void); extern Boolean XtIsComposite(void); extern Boolean XtIsConstraint(void); To: extern Boolean XtIsApplicationShell(Widget); extern Boolean XtIsComposite(Widget); extern Boolean XtIsConstraint(Widget); Change: extern Boolean XtIsOverrideShell(void); To: extern Boolean XtIsOverrideShell(Widget); Change: extern Boolean XtIsRectObj(void); To: extern Boolean XtIsRectObj(Widget); Change: extern Boolean XtIsSessionShell(void); extern Boolean XtIsShell(void); To: extern Boolean XtIsSessionShell(Widget); extern Boolean XtIsShell(Widget); Change: extern Boolean XtIsTopLevelShell(void); extern Boolean XtIsTransientShell(void); extern Boolean XtIsVendorShell(void); extern Boolean XtIsWMShell(void); extern Boolean XtIsWidget(void); To: extern Boolean XtIsTopLevelShell(Widget); extern Boolean XtIsTransientShell(Widget); extern Boolean XtIsVendorShell(Widget); extern Boolean XtIsWMShell(Widget); extern Boolean XtIsWidget(Widget); 3. trivial: typographical ========================================================================== Specification: LSB Core Generic Edition of Specification: 3.1 Type: Editorial Status: Unapproved Bug reference: http://bugs.linuxbase.org/show_bug.cgi?id=1436 Rationale: typographical error, reference to wrong function in Errors description Section: 14.4. Interface Definitions for libz Interface gzflush, Errors, change On error, gzwrite() shall return an error value, and may set the error number associated with the stream identified by file to indicate the error. to On error, gzflush() shall return an error value, and may set the error number associated with the stream identified by file to indicate the error.