* Rules (tests): Depend on tests-static only if build-static == yes.

	* misc/Makefile (install-lib): Compile libbsd-compat.a and libg.a
	only if build-static == yes.

1998-07-29 12:58  Ulrich Drepper  <drepper@cygnus.com>

	* sysdeps/generic/glob.c: Winblowz compatibility stuff.
	Patch received from Paul D. Smith <psmith@BayNetworks.COM>.

1998-07-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>

	* sunrpc/clnt_unix.c (__msgwrite)[!SCM_CRED]: Add return
	statement, fix typo.
	* sunrpc/svc_unix.c (__msgwrite)[!SCM_CRED]: Likewise.

1998-07-29  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
This commit is contained in:
Ulrich Drepper 1998-07-29 14:52:00 +00:00
parent ec986e237a
commit 786a5421b8
9 changed files with 99 additions and 47 deletions

View File

@ -1,3 +1,21 @@
1998-07-29 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* Rules (tests): Depend on tests-static only if build-static == yes.
* misc/Makefile (install-lib): Compile libbsd-compat.a and libg.a
only if build-static == yes.
1998-07-29 12:58 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/glob.c: Winblowz compatibility stuff.
Patch received from Paul D. Smith <psmith@BayNetworks.COM>.
1998-07-29 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sunrpc/clnt_unix.c (__msgwrite)[!SCM_CRED]: Add return
statement, fix typo.
* sunrpc/svc_unix.c (__msgwrite)[!SCM_CRED]: Likewise.
1998-07-29 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/pattern.texi (More Flags for Globbing): Fix typo.

4
Rules
View File

@ -91,8 +91,12 @@ endif
ifeq ($(cross-compiling),yes)
tests: $(addprefix $(objpfx),$(tests) $(tests-static) $(test-srcs))
else
ifneq (($build-static),yes)
tests: $(tests:%=$(objpfx)%.out)
else
tests: $(tests:%=$(objpfx)%.out) $(tests-static:%=$(objpfx)%.sout)
endif
endif
ifeq ($(build-programs),yes)
binaries-all = $(others) $(sysdep-others) $(tests) $(test-srcs)

View File

@ -58,7 +58,9 @@ routines := brk sbrk sstk ioctl \
err error ustat \
getsysstats dirname regexp
aux := init-misc
ifeq ($(build-static),yes)
install-lib := libbsd-compat.a libg.a
endif
gpl2lgpl := error.c error.h
tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent

View File

@ -466,14 +466,14 @@ __msgread (int sock, void *buf, size_t cnt)
static int
__msgwrite (int sock, void *buf, size_t cnt)
{
#ifndef SCM_CRED
#ifndef SCM_CREDS
/* We cannot implement this reliably. */
__set_errno (ENOSYS);
return -1;
#else
struct iovec iov[1];
struct msghdr msg;
struct cmessage cm;
int len;
iov[0].iov_base = buf;
iov[0].iov_len = cnt;

View File

@ -294,7 +294,7 @@ __msgread (int sock, void *buf, size_t cnt)
{
struct iovec iov[1];
struct msghdr msg;
int len, on = 1;
int on = 1;
iov[0].iov_base = buf;
iov[0].iov_len = cnt;
@ -315,13 +315,13 @@ __msgread (int sock, void *buf, size_t cnt)
static int
__msgwrite (int sock, void *buf, size_t cnt)
{
#ifndef SCM_CRED
#ifndef SCM_CREDS
/* We cannot implement this reliably. */
__set_errno (ENOSYS);
return -1;
#else
struct iovec iov[1];
struct msghdr msg;
int len;
iov[0].iov_base = buf;
iov[0].iov_len = cnt;

View File

@ -496,6 +496,14 @@ glob (pattern, flags, errfunc, pglob)
/* Find the filename. */
filename = strrchr (pattern, '/');
#if defined __MSDOS__ || defined WINDOWS32
/* The case of "d:pattern". Since `:' is not allowed in
file names, we can safely assume that wherever it
happens in pattern, it signals the filename part. This
is so we could some day support patterns like "[a-z]:foo". */
if (filename == NULL)
filename = strchr (pattern, ':');
#endif /* __MSDOS__ || WINDOWS32 */
if (filename == NULL)
{
/* This can mean two things: a simple name or "~name". The later
@ -506,7 +514,7 @@ glob (pattern, flags, errfunc, pglob)
dirlen = strlen (pattern);
/* Set FILENAME to NULL as a special flag. This is ugly but
other solutions would requiremuch more code. We test for
other solutions would require much more code. We test for
this special case below. */
filename = NULL;
}
@ -532,6 +540,29 @@ glob (pattern, flags, errfunc, pglob)
{
char *newp;
dirlen = filename - pattern;
#if defined __MSDOS__ || defined WINDOWS32
if (*filename == ':'
|| (filename > pattern + 1 && filename[-1] == ':'))
{
char *drive_spec;
++dirlen;
drive_spec = (char *) __alloca (dirlen + 1);
#ifdef HAVE_MEMPCPY
*((char *) mempcpy (drive_spec, pattern, dirlen)) = '\0';
#else
memcpy (drive_spec, pattern, dirlen);
drive_spec[dirlen] = '\0';
#endif
/* For now, disallow wildcards in the drive spec, to
prevent infinite recursion in glob. */
if (__glob_pattern_p (drive_spec, !(flags & GLOB_NOESCAPE)))
return GLOB_NOMATCH;
/* If this is "d:pattern", we need to copy `:' to DIRNAME
as well. If it's "d:/pattern", don't remove the slash
from "d:/", since "d:" and "d:/" are not the same.*/
}
#endif
newp = (char *) __alloca (dirlen + 1);
#ifdef HAVE_MEMPCPY
*((char *) mempcpy (newp, pattern, dirlen)) = '\0';
@ -542,7 +573,13 @@ glob (pattern, flags, errfunc, pglob)
dirname = newp;
++filename;
if (filename[0] == '\0' && dirlen > 1)
if (filename[0] == '\0'
#if defined __MSDOS__ || defined WINDOWS32
&& dirname[dirlen - 1] != ':'
&& (dirlen < 3 || dirname[dirlen - 2] != ':'
|| dirname[dirlen - 1] != '/')
#endif
&& dirlen > 1)
/* "pattern/". Expand "pattern", appending slashes. */
{
int val = glob (dirname, flags | GLOB_MARK, errfunc, pglob);
@ -905,8 +942,9 @@ glob (pattern, flags, errfunc, pglob)
pglob->gl_flags = flags;
/* Now we know how large the gl_pathv vector must be. */
new_pathv = realloc (pglob->gl_pathv,
(pglob->gl_pathc + 1) * sizeof (char *));
new_pathv = (char **) realloc (pglob->gl_pathv,
((pglob->gl_pathc + 1)
* sizeof (char *)));
if (new_pathv != NULL)
pglob->gl_pathv = new_pathv;
}
@ -1026,11 +1064,31 @@ prefix_array (dirname, array, n)
{
register size_t i;
size_t dirlen = strlen (dirname);
#if defined __MSDOS__ || defined WINDOWS32
int sep_char = '/';
# define DIRSEP_CHAR sep_char
#else
# define DIRSEP_CHAR '/'
#endif
if (dirlen == 1 && dirname[0] == '/')
/* DIRNAME is just "/", so normal prepending would get us "//foo".
We want "/foo" instead, so don't prepend any chars from DIRNAME. */
dirlen = 0;
#if defined __MSDOS__ || defined WINDOWS32
else if (dirlen > 1)
{
if (dirname[dirlen - 1] == '/')
/* DIRNAME is "d:/". Don't prepend the slash from DIRNAME. */
--dirlen;
else if (dirname[dirlen - 1] == ':')
{
/* DIRNAME is "d:". Use `:' instead of `/'. */
--dirlen;
sep_char = ':';
}
}
#endif
for (i = 0; i < n; ++i)
{
@ -1046,12 +1104,12 @@ prefix_array (dirname, array, n)
#ifdef HAVE_MEMPCPY
{
char *endp = (char *) mempcpy (new, dirname, dirlen);
*endp++ = '/';
*endp++ = DIRSEP_CHAR;
mempcpy (endp, array[i], eltlen);
}
#else
memcpy (new, dirname, dirlen);
new[dirlen] = '/';
new[dirlen] = DIRSEP_CHAR;
memcpy (&new[dirlen + 1], array[i], eltlen);
#endif
free ((__ptr_t) array[i]);
@ -1131,7 +1189,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
if (flags & (GLOB_NOCHECK|GLOB_NOMAGIC))
/* We need not do any tests. The PATTERN contains no meta
characters and we must not return an error therefore the
result will always contain exactly the one name. */
result will always contain exactly one name. */
flags |= GLOB_NOCHECK;
else
{
@ -1140,7 +1198,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
struct stat st;
size_t patlen = strlen (pattern);
size_t dirlen = strlen (directory);
char *fullname = __alloca (dirlen + 1 + patlen + 1);
char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1);
# ifdef HAVE_MEMPCPY
mempcpy (mempcpy (mempcpy (fullname, directory, dirlen),
@ -1154,7 +1212,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
if (((flags & GLOB_ALTDIRFUNC)
? (*pglob->gl_stat) (fullname, &st)
: __stat (fullname, &st)) == 0)
/* We found this file to be existing. No tell the rest
/* We found this file to be existing. Now tell the rest
of the function to copy this name into the result. */
flags |= GLOB_NOCHECK;
}

View File

@ -84,7 +84,6 @@ __csqrt (__complex__ double x)
}
else
{
#if 0
double d, r, s;
d = __ieee754_hypot (__real__ x, __imag__ x);
@ -98,20 +97,11 @@ __csqrt (__complex__ double x)
else
{
s = __ieee754_sqrt (0.5 * d - 0.5 * __real__ x);
r = (0.5 * __imag__ x) / s;
r = fabs ((0.5 * __imag__ x) / s);
}
__real__ res = r;
__imag__ res = __copysign (s, __imag__ x);
#else
double d, imag;
d = __ieee754_hypot (__real__ x, __imag__ x);
imag = __ieee754_sqrt (0.5 * (d - __real__ x));
__real__ res = __ieee754_sqrt (0.5 * (d + __real__ x));
__imag__ res = __copysign (imag, __imag__ x);
#endif
}
}

View File

@ -84,7 +84,6 @@ __csqrtf (__complex__ float x)
}
else
{
#if 0
float d, r, s;
d = __ieee754_hypotf (__real__ x, __imag__ x);
@ -98,20 +97,11 @@ __csqrtf (__complex__ float x)
else
{
s = __ieee754_sqrtf (0.5f * d - 0.5f * __real__ x);
r = (0.5f * __imag__ x) / s;
r = fabsf ((0.5f * __imag__ x) / s);
}
__real__ res = r;
__imag__ res = __copysignf (s, __imag__ x);
#else
float d, imag;
d = __ieee754_hypotf (__real__ x, __imag__ x);
imag = __ieee754_sqrtf (0.5 * (d - __real__ x));
__real__ res = __ieee754_sqrtf (0.5 * (d + __real__ x));
__imag__ res = __copysignf (imag, __imag__ x);
#endif
}
}

View File

@ -84,7 +84,6 @@ __csqrtl (__complex__ long double x)
}
else
{
#if 0
long double d, r, s;
d = __ieee754_hypotl (__real__ x, __imag__ x);
@ -98,20 +97,11 @@ __csqrtl (__complex__ long double x)
else
{
s = __ieee754_sqrtl (0.5L * d - 0.5L * __real__ x);
r = (0.5L * __imag__ x) / s;
r = fabsl ((0.5L * __imag__ x) / s);
}
__real__ res = r;
__imag__ res = __copysignl (s, __imag__ x);
#else
long double d, imag;
d = __ieee754_hypotl (__real__ x, __imag__ x);
imag = __ieee754_sqrtl (0.5 * (d - __real__ x));
__real__ res = __ieee754_sqrtl (0.5 * (d + __real__ x));
__imag__ res = __copysignl (imag, __imag__ x);
#endif
}
}