+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
> opensolaris-arc@opensolaris.org


_______________________________________________
opensolaris-arc mailing list
opensolaris-arc@opensolaris.org

Reply via email to