mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-22 04:50:07 +00:00
Update.
2001-08-27 Ulrich Drepper <drepper@redhat.com> * misc/syslog.c (vsyslog): Try a bit harder to use syslogd. If the connection went down after we first used it try to connect again and resend the message before printing to the console. Reported by Coserea Gh. Tudor <tudore@tudore.gecadsoftware.com>. 2001-08-27 Jakub Jelinek <jakub@redhat.com> * string/tst-strlen.c (main): Test strnlen (, -1) too. * sysdeps/generic/strnlen.c (__strnlen): Fix for maxlens with top bit set. 2001-08-27 Ulrich Drepper <drepper@redhat.com> * iconv/strtab.c (searchstring): Use correct length for comparison. (strtabadd): Account total size correct if new string has old string as substring.
This commit is contained in:
parent
497b760b34
commit
c06a49c551
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
|||||||
|
2001-08-27 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* misc/syslog.c (vsyslog): Try a bit harder to use syslogd. If
|
||||||
|
the connection went down after we first used it try to connect
|
||||||
|
again and resend the message before printing to the console.
|
||||||
|
Reported by Coserea Gh. Tudor <tudore@tudore.gecadsoftware.com>.
|
||||||
|
|
||||||
|
2001-08-27 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* string/tst-strlen.c (main): Test strnlen (, -1) too.
|
||||||
|
* sysdeps/generic/strnlen.c (__strnlen): Fix for maxlens with top
|
||||||
|
bit set.
|
||||||
|
|
||||||
|
2001-08-27 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* iconv/strtab.c (searchstring): Use correct length for
|
||||||
|
comparison.
|
||||||
|
(strtabadd): Account total size correct if new string has old string as
|
||||||
|
substring.
|
||||||
|
|
||||||
2001-08-27 Jakub Jelinek <jakub@redhat.com>
|
2001-08-27 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* elf/rtld.c (dl_main): Update call to _dl_lookup_symbol.
|
* elf/rtld.c (dl_main): Update call to _dl_lookup_symbol.
|
||||||
|
@ -193,7 +193,7 @@ searchstring (struct Strent **sep, struct Strent *newstr)
|
|||||||
|
|
||||||
/* Compare the strings. */
|
/* Compare the strings. */
|
||||||
cmpres = memcmp ((*sep)->reverse, newstr->reverse,
|
cmpres = memcmp ((*sep)->reverse, newstr->reverse,
|
||||||
MIN ((*sep)->len, newstr->len));
|
MIN ((*sep)->len, newstr->len) - 1);
|
||||||
if (cmpres == 0)
|
if (cmpres == 0)
|
||||||
/* We found a matching string. */
|
/* We found a matching string. */
|
||||||
return sep;
|
return sep;
|
||||||
@ -236,10 +236,9 @@ strtabadd (struct Strtab *st, const char *str, size_t len)
|
|||||||
/* When we get here it means that the string we are about to
|
/* When we get here it means that the string we are about to
|
||||||
add has a common prefix with a string we already have but
|
add has a common prefix with a string we already have but
|
||||||
it is longer. In this case we have to put it first. */
|
it is longer. In this case we have to put it first. */
|
||||||
|
st->total += newstr->len - (*sep)->len;
|
||||||
newstr->next = *sep;
|
newstr->next = *sep;
|
||||||
*sep = newstr;
|
*sep = newstr;
|
||||||
|
|
||||||
st->total += newstr->len - (*sep)->len;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2001-08-27 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* sysdeps/pthread/bits/libc-lock.h (__libc_rwlock_t): Only define to
|
||||||
|
non-opaque type if __USE_UNIX98.
|
||||||
|
|
||||||
2001-08-26 Jakub Jelinek <jakub@redhat.com>
|
2001-08-26 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* sysdeps/pthread/bits/libc-lock.h (__libc_lock_t): Define
|
* sysdeps/pthread/bits/libc-lock.h (__libc_lock_t): Define
|
||||||
|
@ -25,8 +25,12 @@
|
|||||||
/* Mutex type. */
|
/* Mutex type. */
|
||||||
#if defined(_LIBC) || defined(_IO_MTSAFE_IO)
|
#if defined(_LIBC) || defined(_IO_MTSAFE_IO)
|
||||||
typedef pthread_mutex_t __libc_lock_t;
|
typedef pthread_mutex_t __libc_lock_t;
|
||||||
typedef pthread_rwlock_t __libc_rwlock_t;
|
|
||||||
typedef struct { pthread_mutex_t mutex; } __libc_lock_recursive_t;
|
typedef struct { pthread_mutex_t mutex; } __libc_lock_recursive_t;
|
||||||
|
# ifdef __USE_UNIX98
|
||||||
|
typedef pthread_rwlock_t __libc_rwlock_t;
|
||||||
|
# else
|
||||||
|
typedef struct __libc_rwlock_opaque__ __libc_rwlock_t;
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
typedef struct __libc_lock_opaque__ __libc_lock_t;
|
typedef struct __libc_lock_opaque__ __libc_lock_t;
|
||||||
typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t;
|
typedef struct __libc_lock_recursive_opaque__ __libc_lock_recursive_t;
|
||||||
|
@ -239,17 +239,29 @@ vsyslog(pri, fmt, ap)
|
|||||||
|
|
||||||
if (!connected || __send(LogFile, buf, bufsize, 0) < 0)
|
if (!connected || __send(LogFile, buf, bufsize, 0) < 0)
|
||||||
{
|
{
|
||||||
closelog_internal (); /* attempt re-open next time */
|
if (connected)
|
||||||
/*
|
|
||||||
* Output the message to the console; don't worry about blocking,
|
|
||||||
* if console blocks everything will. Make sure the error reported
|
|
||||||
* is the one from the syslogd failure.
|
|
||||||
*/
|
|
||||||
if (LogStat & LOG_CONS &&
|
|
||||||
(fd = __open(_PATH_CONSOLE, O_WRONLY|O_NOCTTY, 0)) >= 0)
|
|
||||||
{
|
{
|
||||||
dprintf (fd, "%s\r\n", buf + msgoff);
|
/* Try to reopen the syslog connection. Maybe it went
|
||||||
(void)__close(fd);
|
down. */
|
||||||
|
closelog_internal ();
|
||||||
|
openlog_internal(LogTag, LogStat | LOG_NDELAY, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!connect || __send(LogFile, buf, bufsize, 0) < 0)
|
||||||
|
{
|
||||||
|
closelog_internal (); /* attempt re-open next time */
|
||||||
|
/*
|
||||||
|
* Output the message to the console; don't worry
|
||||||
|
* about blocking, if console blocks everything will.
|
||||||
|
* Make sure the error reported is the one from the
|
||||||
|
* syslogd failure.
|
||||||
|
*/
|
||||||
|
if (LogStat & LOG_CONS &&
|
||||||
|
(fd = __open(_PATH_CONSOLE, O_WRONLY|O_NOCTTY, 0)) >= 0)
|
||||||
|
{
|
||||||
|
dprintf (fd, "%s\r\n", buf + msgoff);
|
||||||
|
(void)__close(fd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,8 @@ main(int argc, char *argv[])
|
|||||||
buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0';
|
buf[words * 4 + 3] = (last & 8) != 0 ? 'e' : '\0';
|
||||||
buf[words * 4 + 4] = '\0';
|
buf[words * 4 + 4] = '\0';
|
||||||
|
|
||||||
if (strlen (buf) != words * 4 + lens[last])
|
if (strlen (buf) != words * 4 + lens[last]
|
||||||
|
|| strnlen (buf, -1) != words * 4 + lens[last])
|
||||||
{
|
{
|
||||||
printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n",
|
printf ("failed for base=%Zu, words=%Zu, and last=%Zu\n",
|
||||||
base, words, last);
|
base, words, last);
|
||||||
|
@ -36,6 +36,9 @@ __strnlen (const char *str, size_t maxlen)
|
|||||||
if (maxlen == 0)
|
if (maxlen == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if (__builtin_expect (end_ptr < str, 0))
|
||||||
|
end_ptr = (const char *) ~0UL;
|
||||||
|
|
||||||
/* Handle the first few characters by reading one character at a time.
|
/* Handle the first few characters by reading one character at a time.
|
||||||
Do this until CHAR_PTR is aligned on a longword boundary. */
|
Do this until CHAR_PTR is aligned on a longword boundary. */
|
||||||
for (char_ptr = str; ((unsigned long int) char_ptr
|
for (char_ptr = str; ((unsigned long int) char_ptr
|
||||||
|
Loading…
Reference in New Issue
Block a user