cygwin: add GNU basename(3)
winsup/cygwin/ * common.din (__gnu_basename): Export. * path.cc (__gnu_basename): New function. winsup/doc/ * posix.xml (std-gnu): Add basename. (std-notes): Add note about two forms of basename.
This commit is contained in:
parent
d67052321e
commit
75d5f68aab
@ -1,3 +1,8 @@
|
|||||||
|
2015-03-30 Yaakov Selkowitz <yselkowi@redhat.com>
|
||||||
|
|
||||||
|
* common.din (__gnu_basename): Export.
|
||||||
|
* path.cc (__gnu_basename): New function.
|
||||||
|
|
||||||
2015-03-30 Corinna Vinschen <corinna@vinschen.de>
|
2015-03-30 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* cygheap.h (cygheap_domain_info::add_domain): Add prototype.
|
* cygheap.h (cygheap_domain_info::add_domain): Add prototype.
|
||||||
|
@ -61,6 +61,7 @@ __fsetlocking SIGFE
|
|||||||
__fwritable NOSIGFE
|
__fwritable NOSIGFE
|
||||||
__fwriting NOSIGFE
|
__fwriting NOSIGFE
|
||||||
__getreent NOSIGFE
|
__getreent NOSIGFE
|
||||||
|
__gnu_basename NOSIGFE
|
||||||
__infinity NOSIGFE
|
__infinity NOSIGFE
|
||||||
__isinfd NOSIGFE
|
__isinfd NOSIGFE
|
||||||
__isinff NOSIGFE
|
__isinff NOSIGFE
|
||||||
|
@ -48,6 +48,7 @@
|
|||||||
c: means c:\.
|
c: means c:\.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define _BASENAME_DEFINED
|
||||||
#include "winsup.h"
|
#include "winsup.h"
|
||||||
#include "miscfuncs.h"
|
#include "miscfuncs.h"
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
@ -4767,6 +4768,33 @@ basename (char *path)
|
|||||||
return path;
|
return path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* The differences with the POSIX version above:
|
||||||
|
- declared in <string.h> (instead of <libgen.h>);
|
||||||
|
- the argument is never modified, and therefore is marked const;
|
||||||
|
- the empty string is returned if path is an empty string, "/", or ends
|
||||||
|
with a trailing slash. */
|
||||||
|
extern "C" char *
|
||||||
|
__gnu_basename (const char *path)
|
||||||
|
{
|
||||||
|
static char buf[1];
|
||||||
|
char *c, *d, *bs = (char *)path;
|
||||||
|
|
||||||
|
if (!path || !*path)
|
||||||
|
return strcpy (buf, "");
|
||||||
|
if (isalpha (path[0]) && path[1] == ':')
|
||||||
|
bs += 2;
|
||||||
|
else if (strspn (path, "/\\") > 1)
|
||||||
|
++bs;
|
||||||
|
c = strrchr (bs, '/');
|
||||||
|
if ((d = strrchr (c ?: bs, '\\')) > c)
|
||||||
|
c = d;
|
||||||
|
if (c)
|
||||||
|
return c + 1;
|
||||||
|
else if (!bs[0])
|
||||||
|
return strcpy (buf, "");
|
||||||
|
return (char *)path;
|
||||||
|
}
|
||||||
|
|
||||||
/* No need to be reentrant or thread-safe according to SUSv3.
|
/* No need to be reentrant or thread-safe according to SUSv3.
|
||||||
/ and \\ are treated equally. Leading drive specifiers and
|
/ and \\ are treated equally. Leading drive specifiers and
|
||||||
leading double (back)slashes are kept intact as far as it
|
leading double (back)slashes are kept intact as far as it
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2015-03-30 Yaakov Selkowitz <yselkowi@redhat.com>
|
||||||
|
|
||||||
|
* posix.xml (std-gnu): Add basename.
|
||||||
|
(std-notes): Add note about two forms of basename.
|
||||||
|
|
||||||
2015-03-13 Jon TURNEY <jon.turney@dronecode.org.uk>
|
2015-03-13 Jon TURNEY <jon.turney@dronecode.org.uk>
|
||||||
|
|
||||||
* Makefile.in (prefix): Define.
|
* Makefile.in (prefix): Define.
|
||||||
|
@ -50,7 +50,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|||||||
atoi
|
atoi
|
||||||
atol
|
atol
|
||||||
atoll
|
atoll
|
||||||
basename
|
basename (see chapter "Implementation Notes")
|
||||||
bind
|
bind
|
||||||
bsearch
|
bsearch
|
||||||
btowc
|
btowc
|
||||||
@ -1139,6 +1139,7 @@ also IEEE Std 1003.1-2008 (POSIX.1-2008).</para>
|
|||||||
asnprintf
|
asnprintf
|
||||||
asprintf
|
asprintf
|
||||||
asprintf_r
|
asprintf_r
|
||||||
|
basename (see chapter "Implementation Notes")
|
||||||
canonicalize_file_name
|
canonicalize_file_name
|
||||||
dremf
|
dremf
|
||||||
dup3
|
dup3
|
||||||
@ -1603,6 +1604,9 @@ group quotas, no inode quotas, no time constraints.</para>
|
|||||||
<para><function>qsort_r</function> is available in both BSD and GNU flavors,
|
<para><function>qsort_r</function> is available in both BSD and GNU flavors,
|
||||||
depending on whether _BSD_SOURCE or _GNU_SOURCE is defined when compiling.</para>
|
depending on whether _BSD_SOURCE or _GNU_SOURCE is defined when compiling.</para>
|
||||||
|
|
||||||
|
<para><function>basename</function> is available in both POSIX and GNU flavors,
|
||||||
|
depending on whether libgen.h is included or not.</para>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
|
||||||
</chapter>
|
</chapter>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user