* 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> 1998-07-29 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* manual/pattern.texi (More Flags for Globbing): Fix typo. * manual/pattern.texi (More Flags for Globbing): Fix typo.

4
Rules
View file

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

View file

@ -58,7 +58,9 @@ routines := brk sbrk sstk ioctl \
err error ustat \ err error ustat \
getsysstats dirname regexp getsysstats dirname regexp
aux := init-misc aux := init-misc
ifeq ($(build-static),yes)
install-lib := libbsd-compat.a libg.a install-lib := libbsd-compat.a libg.a
endif
gpl2lgpl := error.c error.h gpl2lgpl := error.c error.h
tests := tst-dirname tst-tsearch tst-fdset tst-efgcvt tst-mntent 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 static int
__msgwrite (int sock, void *buf, size_t cnt) __msgwrite (int sock, void *buf, size_t cnt)
{ {
#ifndef SCM_CRED #ifndef SCM_CREDS
/* We cannot implement this reliably. */ /* We cannot implement this reliably. */
__set_errno (ENOSYS); __set_errno (ENOSYS);
return -1;
#else #else
struct iovec iov[1]; struct iovec iov[1];
struct msghdr msg; struct msghdr msg;
struct cmessage cm; struct cmessage cm;
int len;
iov[0].iov_base = buf; iov[0].iov_base = buf;
iov[0].iov_len = cnt; iov[0].iov_len = cnt;

View file

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

View file

@ -496,6 +496,14 @@ glob (pattern, flags, errfunc, pglob)
/* Find the filename. */ /* Find the filename. */
filename = strrchr (pattern, '/'); 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) if (filename == NULL)
{ {
/* This can mean two things: a simple name or "~name". The later /* This can mean two things: a simple name or "~name". The later
@ -506,7 +514,7 @@ glob (pattern, flags, errfunc, pglob)
dirlen = strlen (pattern); dirlen = strlen (pattern);
/* Set FILENAME to NULL as a special flag. This is ugly but /* 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. */ this special case below. */
filename = NULL; filename = NULL;
} }
@ -532,6 +540,29 @@ glob (pattern, flags, errfunc, pglob)
{ {
char *newp; char *newp;
dirlen = filename - pattern; 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); newp = (char *) __alloca (dirlen + 1);
#ifdef HAVE_MEMPCPY #ifdef HAVE_MEMPCPY
*((char *) mempcpy (newp, pattern, dirlen)) = '\0'; *((char *) mempcpy (newp, pattern, dirlen)) = '\0';
@ -542,7 +573,13 @@ glob (pattern, flags, errfunc, pglob)
dirname = newp; dirname = newp;
++filename; ++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. */ /* "pattern/". Expand "pattern", appending slashes. */
{ {
int val = glob (dirname, flags | GLOB_MARK, errfunc, pglob); int val = glob (dirname, flags | GLOB_MARK, errfunc, pglob);
@ -905,8 +942,9 @@ glob (pattern, flags, errfunc, pglob)
pglob->gl_flags = flags; pglob->gl_flags = flags;
/* Now we know how large the gl_pathv vector must be. */ /* Now we know how large the gl_pathv vector must be. */
new_pathv = realloc (pglob->gl_pathv, new_pathv = (char **) realloc (pglob->gl_pathv,
(pglob->gl_pathc + 1) * sizeof (char *)); ((pglob->gl_pathc + 1)
* sizeof (char *)));
if (new_pathv != NULL) if (new_pathv != NULL)
pglob->gl_pathv = new_pathv; pglob->gl_pathv = new_pathv;
} }
@ -1026,11 +1064,31 @@ prefix_array (dirname, array, n)
{ {
register size_t i; register size_t i;
size_t dirlen = strlen (dirname); 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] == '/') if (dirlen == 1 && dirname[0] == '/')
/* DIRNAME is just "/", so normal prepending would get us "//foo". /* DIRNAME is just "/", so normal prepending would get us "//foo".
We want "/foo" instead, so don't prepend any chars from DIRNAME. */ We want "/foo" instead, so don't prepend any chars from DIRNAME. */
dirlen = 0; 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) for (i = 0; i < n; ++i)
{ {
@ -1046,12 +1104,12 @@ prefix_array (dirname, array, n)
#ifdef HAVE_MEMPCPY #ifdef HAVE_MEMPCPY
{ {
char *endp = (char *) mempcpy (new, dirname, dirlen); char *endp = (char *) mempcpy (new, dirname, dirlen);
*endp++ = '/'; *endp++ = DIRSEP_CHAR;
mempcpy (endp, array[i], eltlen); mempcpy (endp, array[i], eltlen);
} }
#else #else
memcpy (new, dirname, dirlen); memcpy (new, dirname, dirlen);
new[dirlen] = '/'; new[dirlen] = DIRSEP_CHAR;
memcpy (&new[dirlen + 1], array[i], eltlen); memcpy (&new[dirlen + 1], array[i], eltlen);
#endif #endif
free ((__ptr_t) array[i]); free ((__ptr_t) array[i]);
@ -1131,7 +1189,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
if (flags & (GLOB_NOCHECK|GLOB_NOMAGIC)) if (flags & (GLOB_NOCHECK|GLOB_NOMAGIC))
/* We need not do any tests. The PATTERN contains no meta /* We need not do any tests. The PATTERN contains no meta
characters and we must not return an error therefore the 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; flags |= GLOB_NOCHECK;
else else
{ {
@ -1140,7 +1198,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
struct stat st; struct stat st;
size_t patlen = strlen (pattern); size_t patlen = strlen (pattern);
size_t dirlen = strlen (directory); size_t dirlen = strlen (directory);
char *fullname = __alloca (dirlen + 1 + patlen + 1); char *fullname = (char *) __alloca (dirlen + 1 + patlen + 1);
# ifdef HAVE_MEMPCPY # ifdef HAVE_MEMPCPY
mempcpy (mempcpy (mempcpy (fullname, directory, dirlen), mempcpy (mempcpy (mempcpy (fullname, directory, dirlen),
@ -1154,7 +1212,7 @@ glob_in_dir (pattern, directory, flags, errfunc, pglob)
if (((flags & GLOB_ALTDIRFUNC) if (((flags & GLOB_ALTDIRFUNC)
? (*pglob->gl_stat) (fullname, &st) ? (*pglob->gl_stat) (fullname, &st)
: __stat (fullname, &st)) == 0) : __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. */ of the function to copy this name into the result. */
flags |= GLOB_NOCHECK; flags |= GLOB_NOCHECK;
} }

View file

@ -84,7 +84,6 @@ __csqrt (__complex__ double x)
} }
else else
{ {
#if 0
double d, r, s; double d, r, s;
d = __ieee754_hypot (__real__ x, __imag__ x); d = __ieee754_hypot (__real__ x, __imag__ x);
@ -98,20 +97,11 @@ __csqrt (__complex__ double x)
else else
{ {
s = __ieee754_sqrt (0.5 * d - 0.5 * __real__ x); 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; __real__ res = r;
__imag__ res = __copysign (s, __imag__ x); __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 else
{ {
#if 0
float d, r, s; float d, r, s;
d = __ieee754_hypotf (__real__ x, __imag__ x); d = __ieee754_hypotf (__real__ x, __imag__ x);
@ -98,20 +97,11 @@ __csqrtf (__complex__ float x)
else else
{ {
s = __ieee754_sqrtf (0.5f * d - 0.5f * __real__ x); 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; __real__ res = r;
__imag__ res = __copysignf (s, __imag__ x); __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 else
{ {
#if 0
long double d, r, s; long double d, r, s;
d = __ieee754_hypotl (__real__ x, __imag__ x); d = __ieee754_hypotl (__real__ x, __imag__ x);
@ -98,20 +97,11 @@ __csqrtl (__complex__ long double x)
else else
{ {
s = __ieee754_sqrtl (0.5L * d - 0.5L * __real__ x); 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; __real__ res = r;
__imag__ res = __copysignl (s, __imag__ x); __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
} }
} }