* cygwin.din (basename): Export.
(dirname): Export. * path.cc (basename): New function. (dirname): New function. * include/libgen.h: New file. * include/cygwin/version.h: Bump API minor version.
This commit is contained in:
parent
156d93af29
commit
24e8fc6872
|
@ -1,3 +1,12 @@
|
||||||
|
2005-02-22 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* cygwin.din (basename): Export.
|
||||||
|
(dirname): Export.
|
||||||
|
* path.cc (basename): New function.
|
||||||
|
(dirname): New function.
|
||||||
|
* include/libgen.h: New file.
|
||||||
|
* include/cygwin/version.h: Bump API minor version.
|
||||||
|
|
||||||
2005-02-22 Corinna Vinschen <corinna@vinschen.de>
|
2005-02-22 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* select.cc (peek_pipe): Disable new pipe code until there's
|
* select.cc (peek_pipe): Disable new pipe code until there's
|
||||||
|
|
|
@ -210,6 +210,7 @@ _atoi = atoi NOSIGFE
|
||||||
atol NOSIGFE
|
atol NOSIGFE
|
||||||
_atol = atol NOSIGFE
|
_atol = atol NOSIGFE
|
||||||
atoll NOSIGFE
|
atoll NOSIGFE
|
||||||
|
basename SIGFE
|
||||||
bcmp NOSIGFE
|
bcmp NOSIGFE
|
||||||
_bcmp = bcmp NOSIGFE
|
_bcmp = bcmp NOSIGFE
|
||||||
bcopy NOSIGFE
|
bcopy NOSIGFE
|
||||||
|
@ -369,6 +370,7 @@ difftime NOSIGFE
|
||||||
_difftime = difftime NOSIGFE
|
_difftime = difftime NOSIGFE
|
||||||
dirfd SIGFE
|
dirfd SIGFE
|
||||||
_dirfd = dirfd SIGFE
|
_dirfd = dirfd SIGFE
|
||||||
|
dirname SIGFE
|
||||||
div NOSIGFE
|
div NOSIGFE
|
||||||
_div = div NOSIGFE
|
_div = div NOSIGFE
|
||||||
dlclose SIGFE
|
dlclose SIGFE
|
||||||
|
|
|
@ -247,12 +247,13 @@ details. */
|
||||||
117: Export utmpx functions, Return utmp * from pututent.
|
117: Export utmpx functions, Return utmp * from pututent.
|
||||||
118: Export getpriority, setpriority.
|
118: Export getpriority, setpriority.
|
||||||
119: Export fdatasync.
|
119: Export fdatasync.
|
||||||
|
120: Export basename, dirname.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
|
/* Note that we forgot to bump the api for ualarm, strtoll, strtoull */
|
||||||
|
|
||||||
#define CYGWIN_VERSION_API_MAJOR 0
|
#define CYGWIN_VERSION_API_MAJOR 0
|
||||||
#define CYGWIN_VERSION_API_MINOR 119
|
#define CYGWIN_VERSION_API_MINOR 120
|
||||||
|
|
||||||
/* There is also a compatibity version number associated with the
|
/* There is also a compatibity version number associated with the
|
||||||
shared memory regions. It is incremented when incompatible
|
shared memory regions. It is incremented when incompatible
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
/* libgen.h
|
||||||
|
|
||||||
|
Copyright 2005 Red Hat, Inc.
|
||||||
|
|
||||||
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
This software is a copyrighted work licensed under the terms of the
|
||||||
|
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
|
||||||
|
details. */
|
||||||
|
|
||||||
|
#ifndef _LIBGEN_H
|
||||||
|
#define _LIBGEN_H
|
||||||
|
|
||||||
|
#include <sys/cdefs.h>
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
extern char *basename (char *path);
|
||||||
|
extern char *dirname (char *path);
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* _LIBGEN_H */
|
|
@ -53,6 +53,7 @@ details. */
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
#include <mntent.h>
|
#include <mntent.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include <libgen.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <winioctl.h>
|
#include <winioctl.h>
|
||||||
#include <wingdi.h>
|
#include <wingdi.h>
|
||||||
|
@ -3930,3 +3931,87 @@ etc::file_changed (int n)
|
||||||
paranoid_printf ("fn[%d] %s res %d", n, fn[n], res);
|
paranoid_printf ("fn[%d] %s res %d", n, fn[n], res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* No need to be reentrant or thread-safe according to SUSv3.
|
||||||
|
/ and \\ are treated equally. Leading drive specifiers are
|
||||||
|
kept intact as far as it makes sense. Everything else is
|
||||||
|
POSIX compatible. */
|
||||||
|
extern "C" char *
|
||||||
|
basename (char *path)
|
||||||
|
{
|
||||||
|
static char buf[CYG_MAX_PATH + 1];
|
||||||
|
char *c, *d, *bs = buf;
|
||||||
|
|
||||||
|
if (!path || !*path)
|
||||||
|
return strcpy (buf, ".");
|
||||||
|
strncpy (buf, path, CYG_MAX_PATH);
|
||||||
|
if (isalpha (buf[0]) && buf[1] == ':')
|
||||||
|
bs += 2;
|
||||||
|
else if (strspn (buf, "/\\") > 1)
|
||||||
|
++bs;
|
||||||
|
c = strrchr (bs, '/');
|
||||||
|
if ((d = strrchr (c ?: bs, '\\')) > c)
|
||||||
|
c = d;
|
||||||
|
if (c)
|
||||||
|
{
|
||||||
|
/* Trailing (back)slashes are eliminated. */
|
||||||
|
while (c && c > bs && c[1] == '\0')
|
||||||
|
{
|
||||||
|
*c = '\0';
|
||||||
|
c = strrchr (bs, '/');
|
||||||
|
if ((d = strrchr (c ?: bs, '\\')) > c)
|
||||||
|
c = d;
|
||||||
|
}
|
||||||
|
if (c && (c > bs || c[1]))
|
||||||
|
return c + 1;
|
||||||
|
}
|
||||||
|
else if (!bs[0])
|
||||||
|
strcpy (bs, ".");
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* No need to be reentrant or thread-safe according to SUSv3.
|
||||||
|
/ and \\ are treated equally. Leading drive specifiers and
|
||||||
|
leading double (back)slashes are kept intact as far as it
|
||||||
|
makes sense. Everything else is POSIX compatible. */
|
||||||
|
extern "C" char *
|
||||||
|
dirname (char *path)
|
||||||
|
{
|
||||||
|
static char buf[CYG_MAX_PATH + 1];
|
||||||
|
char *c, *d, *bs = buf;
|
||||||
|
|
||||||
|
if (!path || !*path)
|
||||||
|
return strcpy (buf, ".");
|
||||||
|
strncpy (buf, path, CYG_MAX_PATH);
|
||||||
|
if (isalpha (buf[0]) && buf[1] == ':')
|
||||||
|
bs += 2;
|
||||||
|
else if (strspn (buf, "/\\") > 1)
|
||||||
|
++bs;
|
||||||
|
c = strrchr (bs, '/');
|
||||||
|
if ((d = strrchr (c ?: bs, '\\')) > c)
|
||||||
|
c = d;
|
||||||
|
if (c)
|
||||||
|
{
|
||||||
|
/* Trailing (back)slashes are eliminated. */
|
||||||
|
while (c && c > bs && c[1] == '\0')
|
||||||
|
{
|
||||||
|
*c = '\0';
|
||||||
|
c = strrchr (bs, '/');
|
||||||
|
if ((d = strrchr (c ?: bs, '\\')) > c)
|
||||||
|
c = d;
|
||||||
|
}
|
||||||
|
if (!c)
|
||||||
|
strcpy (bs, ".");
|
||||||
|
else if (c > bs)
|
||||||
|
{
|
||||||
|
/* More trailing (back)slashes are eliminated. */
|
||||||
|
while (c > bs && (*c == '/' || *c == '\\'))
|
||||||
|
*c-- = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
c[1] = '\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
strcpy (bs, ".");
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue