+1
These all look good!
- Garrett
On Wed, 2010-07-28 at 19:41 -0400, Roger A. Faulkner wrote:
> I am sponsoring this fast-track case for myself.
> Timeout is Wednesday, 08/04/2010
>
> 1. Introduction
>
> This case adds 28 new functions to the C library, all in the
> name of compatibility with GNU/Linux and FreeBSD.
>
> The commitment level of these interfaces is Committed.
>
> The release binding is "minor" so they can be implemented
> in Solaris Next/11. If anyone wants to back-port any of
> these functions to Solaris 10, they should file a separate
> ARC case.
>
> 2. Discussion
>
> 2. Discussion
>
> Over the last few years. there have been several bug reports
> (RFEs) filed requesting such functions for Solaris:
>
> 6275498 Provide string compare functions wcscasecmp,wcsncasecmp
> in solaris like linux
> 6421095 Solaris should provide strcasestr
> 6793969 RFE: Add|stpcpy|to libc
> 6960818 add get_nprocs(), getline(), strdupa(), strndup() to libc
>
> This case goes beyond the bare requests in these bug reports
> and provides generally-useful interfaces that are documented
> in GNU/Linux/BSD manual pages.
>
> In addition to existing in GNU/Linux/BSD manual pages, many
> of these functions are also specified in the new POSIX standard:
> IEEE Std 1003.1(TM)-2008
> The Open Group Technical Standard
> Base Specifications, Issue 7
> hereinafter referred to as SUSv4.
>
> 3. Details
>
> Unless stated otherwise, all of the following functions
> are new functions being added to the C library.
>
> Many of these functions are specified in the new POSIX standard:
> IEEE Std 1003.1(TM)-2008
> The Open Group Technical Standard
> Base Specifications, Issue 7
> hereinafter referred to as SUSv4.
>
> Others are specified in GNU/Linux man pages or in
> OpenBSD man pages, indicated on a case-by-case basis.
>
> ===========================================================
>
> #include <string.h>
>
> char *strndup(const char *, size_t);
> char *stpcpy(char *restrict, const char *restrict);
> char *stpncpy(char *restrict, const char *restrict, size_t);
>
> char *strchrnul(const char *, int);
> char *strdupa(const char *);
> char *strndupa(const char *, size_t);
>
> char *strnstr(const char *s1, const char *s2, size_t n);
> char *strcasestr(const char *s1, const char *s2);
>
> The strndup(), stpcpy() and stpncpy() functions are specified in SUSv4.
> The strchrnul(). strdupa() and strndupa() functions are GNU/Linux
> extensions.
> The strnstr() and strcasestr() are FreeBSD extensions.
>
> ===========================================================
>
> These two existing functions, previously ASCII-only,
> become locale-dependent, as specified in SUSv4:
>
> #include <string.h>
>
> int strcasecmp(const char *s1, const char *s2)
> int strncasecmp(const char *s1, const char *s2, size_t n)
>
> ===========================================================
>
> #include <poll.h>
>
> int ppoll(struct pollfd *restrict fds, nfds_t nfds,
> const struct timespec *restrict timeout,
> const sigset_t *restrict sigmask);
>
> The ppoll() function is a GNU/Linux extension.
>
> ===========================================================
>
> #include <stdio.h>
>
> ssize_t getdelim(char **restrict, size_t *restrict,
> int, FILE *restrict);
> ssize_t getline(char **restrict, size_t *restrict,
> FILE *restrict);
>
> The getdelim() and getline() functions are specified in SUSv4.
>
> ===========================================================
>
> #include <string.h>
>
> void *memmem(const void *, size_t, const void *, size_t);
>
> The memmem() function is a GNU/Linux and FreeBSD extension.
>
> ===========================================================
>
> #include <stdio.h>
>
> int fcloseall(void);
>
> The fcloseall() function is a GNU/Linux and FreeBSD extension.
>
> ===========================================================
>
> #include <stdlib.h>
>
> int clearenv(void);
>
> The clearenv() function is a GNU/Linux extension.
>
> ===========================================================
>
> The semantics of the following existing function have
> changed a bit, as specified in SUSv4:
>
> #include <stdlib.h>
>
> char *realpath(const char *file_name, char *resolved_name);
>
> In particular, the semantics for 'resolved_name' being
> passed in as a NULL pointer have changed.
> Previously, this resulted in failure with errno == EINVAL.
> Now, realpath() allocates a buffer using malloc():
> If resolved_name is a null pointer, the generated pathname
> shall be stored as a null-terminated string in a buffer
> allocated as if by a call to malloc().
>
> ===========================================================
>
> #include <stdlib.h>
>
> char *canonicalize_file_name(const char *path);
>
> The canonicalize_file_name() function is a GNU/Linux extension.
> It is equivalent to realpath(path, NULL) (see above).
>
> ===========================================================
>
> #include <string.h>
>
> int ffsl(long);
> int ffsll(long long);
> int fls(int);
> int flsl(long);
> int flsll(long long);
>
> These functions are FreeBSD extensions.
>
> ===========================================================
>
> #include <wchar.h>
>
> wchar_t *wcsdup(const wchar_t *);
> size_t wcsnlen(const wchar_t *, size_t);
> wchar_t *wcpcpy(wchar_t *restrict, const wchar_t *restrict);
> wchar_t *wcpncpy(wchar_t *restrict, const wchar_t *restrict, size_t);
> int wcscasecmp(const wchar_t *, const wchar_t *);
> int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
>
> These functions are specified in SUSv4.
>
> ===========================================================
>
> int get_nprocs(void);
> int get_nprocs_conf(void);
>
> The get_nprocs() and get_nprocs_conf() are GNU/Linux extensions
> equivalent, respectively, to:
> sysconf(_SC_NPROCESSORS_ONLN);
> sysconf(_SC_NPROCESSORS_CONF);
>
> ===========================================================
>
> Since SUSv4 changes are being made to the system,
> the following definitions are being added to <unistd.h>,
> as specified in SUSv4, because these features already exist:
>
> _POSIX_THREAD_ROBUST_PRIO_INHERIT
> Implementation supports the Robust Mutex Priority Inheritance
> option.
>
> _POSIX_THREAD_ROBUST_PRIO_PROTECT
> Implementation supports the Robust Mutex Priority Protection
> option.
>
> _SC_THREAD_ROBUST_PRIO_INHERIT
> _SC_THREAD_ROBUST_PRIO_PROTECT
>
> ===========================================================
>
> 4. Manual pages.
>
> New and modified manual pages will be created from the
> SUSv4 POSIX specifications where the relevant functions
> are defined therein, and from GNU/Linux and FreeBSD
> manual pages otherwise.
>
> _______________________________________________
> opensolaris-arc mailing list
> [email protected]
_______________________________________________
opensolaris-arc mailing list
[email protected]