mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
Update.
1997-05-25 03:00 Ulrich Drepper <drepper@cygnus.com> * elf/dynamic-link.h (_dl_verbose): New variable, declare. * elf/rtld.c (_dl_verbose): New variable, define. (dl_main): Define _dl-verbose based on DL_WARN environment variable. * sysdeps/i386/dl-machine.h (elf_machine_rel): Print warning about changed size in copy relocation only if symbol in shared object is larger or _dl_verbose is nonzero. * sysdeps/m68k/dl-machine.h (elf_machine_rel): Likewise. * sysdeps/powerpc/dl-machine.h (elf_machine_rel): Likewise. * sysdeps/sparc/dl-machine.h (elf_machine_rel): Likewise. * nis/nss_nis/nis-ethers.c: Don't use relative include paths, use <...>. * nis/nss_nis/nis-grp.c: Likewise. * nis/nss_nis/nis-hosts.c: Likewise. * nis/nss_nis/nis-network.c: Likewise. * nis/nss_nis/nis-proto.c: Likewise. * nis/nss_nis/nis-pwd.c: Likewise. * nis/nss_nis/nis-rpc.c: Likewise. * nis/nss_nis/nis-spwd.c: Likewise. * sysdeps/unix/sysv/sysd-stdio.c: Likewise. * wcsmbs/wcscoll.c: Likewise. * wcsmbs/wcstod.c: Likewise. * wcsmbs/wcstof.c: Likewise. * wcsmbs/wcstol.c: Likewise. * wcsmbs/wcstold.c: Likewise. * wcsmbs/wcsxfrm.c: Likewise. Reported by Zack Weinberg <zack@rabi.phys.columbia.edu>. * time/strftime.c: Implement # flag which changes case of output for %a, %b, %B, %p, and %Z format. When printing numbers, the given field width is always respected. This means that padding happens only up to the given width. Proposed by Stephen Gildea <gildea@intouchsys.com>. 1997-05-25 00:44 Ulrich Drepper <drepper@cygnus.com> * sysdeps/i386/fpu/__math.h (logb): Fix thinko, reverse output values. Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>. 1997-05-24 21:03 Philip Blundell <pjb27@cam.ac.uk> * db/btree/bt_open.c (__bt_open): Only try to use st_blksize (from struct stat) if it exists for this port. 1997-05-24 20:34 Philip Blundell <pjb27@cam.ac.uk> * sysdeps/standalone/arm/errnos.h: Add EPERM. 1997-05-23 16:28 Philip Blundell <phil@kings-cross.london.uk.eu.org> * linewrap.h: New file, needed to compile argp without libio. 1997-05-24 11:59 Andreas Jaeger <aj@arthur.rhein-neckar.de> * manual/stdio.texi (Formatted Messages): Corrected some typos. 1997-05-24 11:58 Philip Blundell <pjb27@cam.ac.uk> * sysdeps/stub/start.c: Fix typo.
This commit is contained in:
63
ChangeLog
63
ChangeLog
@ -1,3 +1,66 @@
|
|||||||
|
1997-05-25 03:00 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* elf/dynamic-link.h (_dl_verbose): New variable, declare.
|
||||||
|
* elf/rtld.c (_dl_verbose): New variable, define.
|
||||||
|
(dl_main): Define _dl-verbose based on DL_WARN environment variable.
|
||||||
|
* sysdeps/i386/dl-machine.h (elf_machine_rel): Print warning about
|
||||||
|
changed size in copy relocation only if symbol in shared object
|
||||||
|
is larger or _dl_verbose is nonzero.
|
||||||
|
* sysdeps/m68k/dl-machine.h (elf_machine_rel): Likewise.
|
||||||
|
* sysdeps/powerpc/dl-machine.h (elf_machine_rel): Likewise.
|
||||||
|
* sysdeps/sparc/dl-machine.h (elf_machine_rel): Likewise.
|
||||||
|
|
||||||
|
* nis/nss_nis/nis-ethers.c: Don't use relative include paths, use
|
||||||
|
<...>.
|
||||||
|
* nis/nss_nis/nis-grp.c: Likewise.
|
||||||
|
* nis/nss_nis/nis-hosts.c: Likewise.
|
||||||
|
* nis/nss_nis/nis-network.c: Likewise.
|
||||||
|
* nis/nss_nis/nis-proto.c: Likewise.
|
||||||
|
* nis/nss_nis/nis-pwd.c: Likewise.
|
||||||
|
* nis/nss_nis/nis-rpc.c: Likewise.
|
||||||
|
* nis/nss_nis/nis-spwd.c: Likewise.
|
||||||
|
* sysdeps/unix/sysv/sysd-stdio.c: Likewise.
|
||||||
|
* wcsmbs/wcscoll.c: Likewise.
|
||||||
|
* wcsmbs/wcstod.c: Likewise.
|
||||||
|
* wcsmbs/wcstof.c: Likewise.
|
||||||
|
* wcsmbs/wcstol.c: Likewise.
|
||||||
|
* wcsmbs/wcstold.c: Likewise.
|
||||||
|
* wcsmbs/wcsxfrm.c: Likewise.
|
||||||
|
Reported by Zack Weinberg <zack@rabi.phys.columbia.edu>.
|
||||||
|
|
||||||
|
* time/strftime.c: Implement # flag which changes case of output for
|
||||||
|
%a, %b, %B, %p, and %Z format.
|
||||||
|
When printing numbers, the given field width is always respected.
|
||||||
|
This means that padding happens only up to the given width.
|
||||||
|
Proposed by Stephen Gildea <gildea@intouchsys.com>.
|
||||||
|
|
||||||
|
1997-05-25 00:44 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* sysdeps/i386/fpu/__math.h (logb): Fix thinko, reverse output
|
||||||
|
values.
|
||||||
|
Reported by Andreas Jaeger <aj@arthur.rhein-neckar.de>.
|
||||||
|
|
||||||
|
1997-05-24 21:03 Philip Blundell <pjb27@cam.ac.uk>
|
||||||
|
|
||||||
|
* db/btree/bt_open.c (__bt_open): Only try to use st_blksize (from
|
||||||
|
struct stat) if it exists for this port.
|
||||||
|
|
||||||
|
1997-05-24 20:34 Philip Blundell <pjb27@cam.ac.uk>
|
||||||
|
|
||||||
|
* sysdeps/standalone/arm/errnos.h: Add EPERM.
|
||||||
|
|
||||||
|
1997-05-23 16:28 Philip Blundell <phil@kings-cross.london.uk.eu.org>
|
||||||
|
|
||||||
|
* linewrap.h: New file, needed to compile argp without libio.
|
||||||
|
|
||||||
|
1997-05-24 11:59 Andreas Jaeger <aj@arthur.rhein-neckar.de>
|
||||||
|
|
||||||
|
* manual/stdio.texi (Formatted Messages): Corrected some typos.
|
||||||
|
|
||||||
|
1997-05-24 11:58 Philip Blundell <pjb27@cam.ac.uk>
|
||||||
|
|
||||||
|
* sysdeps/stub/start.c: Fix typo.
|
||||||
|
|
||||||
1997-05-21 17:53 Miles Bader <miles@gnu.ai.mit.edu>
|
1997-05-21 17:53 Miles Bader <miles@gnu.ai.mit.edu>
|
||||||
|
|
||||||
* argp-help.c (hol_add_cluster): Initialize CL->depth.
|
* argp-help.c (hol_add_cluster): Initialize CL->depth.
|
||||||
|
@ -259,7 +259,9 @@ __bt_open(fname, flags, mode, openinfo, dflags)
|
|||||||
* Don't overflow the page offset type.
|
* Don't overflow the page offset type.
|
||||||
*/
|
*/
|
||||||
if (b.psize == 0) {
|
if (b.psize == 0) {
|
||||||
|
#ifdef _STATBUF_ST_BLKSIZE
|
||||||
b.psize = sb.st_blksize;
|
b.psize = sb.st_blksize;
|
||||||
|
#endif
|
||||||
if (b.psize < MINPSIZE)
|
if (b.psize < MINPSIZE)
|
||||||
b.psize = MINPSIZE;
|
b.psize = MINPSIZE;
|
||||||
if (b.psize > MAX_PAGE_OFFSET + 1)
|
if (b.psize > MAX_PAGE_OFFSET + 1)
|
||||||
|
@ -22,6 +22,11 @@
|
|||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
|
||||||
|
/* Global read-only variable defined in rtld.c which is nonzero if we
|
||||||
|
shall give more warning messages. */
|
||||||
|
extern int _dl_verbose __attribute__ ((unused));
|
||||||
|
|
||||||
|
|
||||||
/* Read the dynamic section at DYN and fill in INFO with indices DT_*. */
|
/* Read the dynamic section at DYN and fill in INFO with indices DT_*. */
|
||||||
|
|
||||||
static inline void __attribute__ ((unused))
|
static inline void __attribute__ ((unused))
|
||||||
|
10
elf/rtld.c
10
elf/rtld.c
@ -56,6 +56,7 @@ static void print_missing_version (int errcode, const char *objname,
|
|||||||
int _dl_argc;
|
int _dl_argc;
|
||||||
char **_dl_argv;
|
char **_dl_argv;
|
||||||
const char *_dl_rpath;
|
const char *_dl_rpath;
|
||||||
|
int _dl_verbose;
|
||||||
|
|
||||||
/* Set nonzero during loading and initialization of executable and
|
/* Set nonzero during loading and initialization of executable and
|
||||||
libraries, cleared before the executable's entry point runs. This
|
libraries, cleared before the executable's entry point runs. This
|
||||||
@ -206,12 +207,13 @@ dl_main (const ElfW(Phdr) *phdr,
|
|||||||
int has_interp = 0;
|
int has_interp = 0;
|
||||||
|
|
||||||
mode = getenv ("LD_TRACE_LOADED_OBJECTS") != NULL ? trace : normal;
|
mode = getenv ("LD_TRACE_LOADED_OBJECTS") != NULL ? trace : normal;
|
||||||
|
_dl_verbose = *(getenv ("LD_WARN") ?: "") == '\0' ? 0 : 1;
|
||||||
|
|
||||||
/* LAZY is determined by the parameters --datadeps and --function-deps
|
/* LAZY is determined by the environment variable LD_WARN and
|
||||||
if we trace the binary. */
|
LD_BIND_NOW if we trace the binary. */
|
||||||
if (mode == trace)
|
if (mode == trace)
|
||||||
lazy = (*(getenv ("LD_WARN") ?: "") == '\0' ? -1
|
lazy = (_dl_verbose
|
||||||
: (*(getenv ("LD_BIND_NOW") ?: "") == '\0' ? 1 : 0));
|
? (*(getenv ("LD_BIND_NOW") ?: "") == '\0' ? 1 : 0) : -1);
|
||||||
else
|
else
|
||||||
lazy = !__libc_enable_secure && *(getenv ("LD_BIND_NOW") ?: "") == '\0';
|
lazy = !__libc_enable_secure && *(getenv ("LD_BIND_NOW") ?: "") == '\0';
|
||||||
|
|
||||||
|
1
linewrap.h
Normal file
1
linewrap.h
Normal file
@ -0,0 +1 @@
|
|||||||
|
#include "stdio/linewrap.h"
|
@ -3825,7 +3825,7 @@ wait until the rest of the manual is more done and polished.
|
|||||||
On systems which are based on System V messages of programs (especially
|
On systems which are based on System V messages of programs (especially
|
||||||
the system tools) are printed in a strict form using the @code{fmtmsg}
|
the system tools) are printed in a strict form using the @code{fmtmsg}
|
||||||
function. The uniformity sometimes helps the user to interpret messages
|
function. The uniformity sometimes helps the user to interpret messages
|
||||||
and the strictness tests of the @code{fmtmsg} function ensures that the
|
and the strictness tests of the @code{fmtmsg} function ensure that the
|
||||||
programmer follows some minimal requirements.
|
programmer follows some minimal requirements.
|
||||||
|
|
||||||
@menu
|
@menu
|
||||||
@ -3839,7 +3839,7 @@ programmer follows some minimal requirements.
|
|||||||
@subsection Printing Formatted Messages
|
@subsection Printing Formatted Messages
|
||||||
|
|
||||||
Messages can be printed to standard error and/or to the console. To
|
Messages can be printed to standard error and/or to the console. To
|
||||||
select the destination the programmer can use the following to values,
|
select the destination the programmer can use the following two values,
|
||||||
bitwise OR combined if wanted, for the @var{classification} parameter of
|
bitwise OR combined if wanted, for the @var{classification} parameter of
|
||||||
@code{fmtmsg}:
|
@code{fmtmsg}:
|
||||||
|
|
||||||
@ -3850,7 +3850,7 @@ Display the message in standard error.
|
|||||||
Display the message on the system console.
|
Display the message on the system console.
|
||||||
@end vtable
|
@end vtable
|
||||||
|
|
||||||
The errorneous piece of the system can be signal by exactly one of the
|
The errorneous piece of the system can be signalled by exactly one of the
|
||||||
following values which also is bitwise ORed with the
|
following values which also is bitwise ORed with the
|
||||||
@var{classification} parameter to @code{fmtmsg}:
|
@var{classification} parameter to @code{fmtmsg}:
|
||||||
|
|
||||||
@ -3900,7 +3900,7 @@ reference to the online documentation where more information can be
|
|||||||
found. It should contain the @var{label} value and a unique
|
found. It should contain the @var{label} value and a unique
|
||||||
identification number.
|
identification number.
|
||||||
|
|
||||||
Each of the parameters can be of a special value which means this value
|
Each of the parameters can be a special value which means this value
|
||||||
is to be omitted. The symbolic names for these values are:
|
is to be omitted. The symbolic names for these values are:
|
||||||
|
|
||||||
@vtable @code
|
@vtable @code
|
||||||
@ -3919,7 +3919,7 @@ Ignore @var{action} parameter.
|
|||||||
Ignore @var{tag} parameter.
|
Ignore @var{tag} parameter.
|
||||||
@end vtable
|
@end vtable
|
||||||
|
|
||||||
There is another way certain fields can be omitted from the output the
|
There is another way certain fields can be omitted from the output to
|
||||||
standard error. This is described below in the description of
|
standard error. This is described below in the description of
|
||||||
environment variables influencing the behaviour.
|
environment variables influencing the behaviour.
|
||||||
|
|
||||||
@ -3961,10 +3961,10 @@ ignored.
|
|||||||
This function is specified in the X/Open Portability Guide. It is also
|
This function is specified in the X/Open Portability Guide. It is also
|
||||||
available on all system derived from System V.
|
available on all system derived from System V.
|
||||||
|
|
||||||
The function return the value @code{MM_OK} if no error occurred. If
|
The function returns the value @code{MM_OK} if no error occurred. If
|
||||||
only the printing to standard error failed, it returns @code{MM_NOMSG}.
|
only the printing to standard error failed, it returns @code{MM_NOMSG}.
|
||||||
If printing to the console fails, it returns @code{MM_NOCON}. If
|
If printing to the console fails, it returns @code{MM_NOCON}. If
|
||||||
nothing is printed @code{MM_NOTOK} is returned. Among situation where
|
nothing is printed @code{MM_NOTOK} is returned. Among situations where
|
||||||
all outputs fail this last value is also returned if a parameter value
|
all outputs fail this last value is also returned if a parameter value
|
||||||
is incorrect.
|
is incorrect.
|
||||||
@end deftypefun
|
@end deftypefun
|
||||||
@ -3974,7 +3974,7 @@ There are two environment variables which influence the behaviour of
|
|||||||
output actually happening on standard error (@emph{not} the console
|
output actually happening on standard error (@emph{not} the console
|
||||||
output). Each of the five fields can explicitely be enabled. To do
|
output). Each of the five fields can explicitely be enabled. To do
|
||||||
this the user has to put the @code{MSGVERB} variable with a format like
|
this the user has to put the @code{MSGVERB} variable with a format like
|
||||||
following in the environment before calling the @code{fmtmsg} function
|
the following in the environment before calling the @code{fmtmsg} function
|
||||||
the first time:
|
the first time:
|
||||||
|
|
||||||
@smallexample
|
@smallexample
|
||||||
@ -3990,7 +3990,7 @@ The second environment variable which influences the behaviour of
|
|||||||
@code{fmtmsg} is @code{SEV_LEVEL}. This variable and the change in the
|
@code{fmtmsg} is @code{SEV_LEVEL}. This variable and the change in the
|
||||||
behaviour of @code{fmtmsg} is not specified in the X/Open Portability
|
behaviour of @code{fmtmsg} is not specified in the X/Open Portability
|
||||||
Guide. It is available in System V systems, though. It can be used to
|
Guide. It is available in System V systems, though. It can be used to
|
||||||
introduce no severity levels. By default, only the five severity levels
|
introduce new severity levels. By default, only the five severity levels
|
||||||
described above are available. Any other numeric value would make
|
described above are available. Any other numeric value would make
|
||||||
@code{fmtmsg} print nothing.
|
@code{fmtmsg} print nothing.
|
||||||
|
|
||||||
@ -4026,7 +4026,7 @@ There is another possibility to introduce severity classes beside using
|
|||||||
the environment variable @code{SEV_LEVEL}. This simplifies the task of
|
the environment variable @code{SEV_LEVEL}. This simplifies the task of
|
||||||
introducing new classes in a running program. One could use the
|
introducing new classes in a running program. One could use the
|
||||||
@code{setenv} or @code{putenv} function to set the environment variable,
|
@code{setenv} or @code{putenv} function to set the environment variable,
|
||||||
but this toilsome.
|
but this is toilsome.
|
||||||
|
|
||||||
@deftypefun int addseverity (int @var{severity}, const char *@var{string})
|
@deftypefun int addseverity (int @var{severity}, const char *@var{string})
|
||||||
This function allows to introduce new severity classes which can be
|
This function allows to introduce new severity classes which can be
|
||||||
@ -4039,13 +4039,17 @@ value.
|
|||||||
If @var{string} is @code{NULL} the severity class with the numeric value
|
If @var{string} is @code{NULL} the severity class with the numeric value
|
||||||
according to @var{severity} is removed.
|
according to @var{severity} is removed.
|
||||||
|
|
||||||
|
It is not possible to overwrite or remove one of the default severity
|
||||||
|
classes. All calls to @code{addseverity} with @var{severity} set to one
|
||||||
|
of the values for the default classes will fail.
|
||||||
|
|
||||||
The return value is @code{MM_OK} if the task was successfully performed.
|
The return value is @code{MM_OK} if the task was successfully performed.
|
||||||
If the return value is @code{MM_NOTOK} something went wrong. This could
|
If the return value is @code{MM_NOTOK} something went wrong. This could
|
||||||
mean that no more memory is available or a class is not available when
|
mean that no more memory is available or a class is not available when
|
||||||
it has to be removed.
|
it has to be removed.
|
||||||
|
|
||||||
This function is not specified in the X/Open Portability Guide although
|
This function is not specified in the X/Open Portability Guide although
|
||||||
the @code{fmtsmg} is. It is available on System V systems.
|
the @code{fmtsmg} function is. It is available on System V systems.
|
||||||
@end deftypefun
|
@end deftypefun
|
||||||
|
|
||||||
|
|
||||||
@ -4120,7 +4124,7 @@ TO FIX: action
|
|||||||
|
|
||||||
@noindent
|
@noindent
|
||||||
I.e., the output produced by the @var{text} and the @var{tag} parameters
|
I.e., the output produced by the @var{text} and the @var{tag} parameters
|
||||||
to @code{fmtmsg} vanished. Please also note the now there is no colon
|
to @code{fmtmsg} vanished. Please also note that now there is no colon
|
||||||
after the @code{NOTE} and @code{NOTE2} strings in the output. This is
|
after the @code{NOTE} and @code{NOTE2} strings in the output. This is
|
||||||
not necessary since there is no more output on this line since the text
|
not necessary since there is no more output on this line since the text
|
||||||
is missing.
|
is missing.
|
||||||
|
@ -41,7 +41,7 @@ struct ether
|
|||||||
#define ENTNAME etherent
|
#define ENTNAME etherent
|
||||||
#define STRUCTURE ether
|
#define STRUCTURE ether
|
||||||
#define EXTERN_PARSER
|
#define EXTERN_PARSER
|
||||||
#include "../nss/nss_files/files-parse.c"
|
#include <nss/nss_files/files-parse.c>
|
||||||
|
|
||||||
struct response
|
struct response
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
|
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
|
||||||
|
|
||||||
@ -32,7 +32,7 @@
|
|||||||
#define ENTNAME grent
|
#define ENTNAME grent
|
||||||
#define STRUCTURE group
|
#define STRUCTURE group
|
||||||
#define EXTERN_PARSER
|
#define EXTERN_PARSER
|
||||||
#include "../nss/nss_files/files-parse.c"
|
#include <nss/nss_files/files-parse.c>
|
||||||
|
|
||||||
/* Protect global state against multiple changers */
|
/* Protect global state against multiple changers */
|
||||||
__libc_lock_define_initialized (static, lock)
|
__libc_lock_define_initialized (static, lock)
|
||||||
|
@ -31,8 +31,8 @@
|
|||||||
#include "nss-nis.h"
|
#include "nss-nis.h"
|
||||||
|
|
||||||
/* Get implementation for some internal functions. */
|
/* Get implementation for some internal functions. */
|
||||||
#include "../../resolv/mapv4v6addr.h"
|
#include <resolv/mapv4v6addr.h>
|
||||||
#include "../../resolv/mapv4v6hostent.h"
|
#include <resolv/mapv4v6hostent.h>
|
||||||
|
|
||||||
#define ENTNAME hostent
|
#define ENTNAME hostent
|
||||||
#define DATABASE "hosts"
|
#define DATABASE "hosts"
|
||||||
@ -47,7 +47,7 @@ struct hostent_data
|
|||||||
|
|
||||||
#define TRAILING_LIST_MEMBER h_aliases
|
#define TRAILING_LIST_MEMBER h_aliases
|
||||||
#define TRAILING_LIST_SEPARATOR_P isspace
|
#define TRAILING_LIST_SEPARATOR_P isspace
|
||||||
#include "../../nss/nss_files/files-parse.c"
|
#include <nss/nss_files/files-parse.c>
|
||||||
LINE_PARSER
|
LINE_PARSER
|
||||||
("#",
|
("#",
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
|
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
|
||||||
|
|
||||||
@ -33,7 +33,7 @@
|
|||||||
/* Get the declaration of the parser function. */
|
/* Get the declaration of the parser function. */
|
||||||
#define ENTNAME netent
|
#define ENTNAME netent
|
||||||
#define EXTERN_PARSER
|
#define EXTERN_PARSER
|
||||||
#include "../nss/nss_files/files-parse.c"
|
#include <nss/nss_files/files-parse.c>
|
||||||
|
|
||||||
__libc_lock_define_initialized (static, lock)
|
__libc_lock_define_initialized (static, lock)
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
/* Get the declaration of the parser function. */
|
/* Get the declaration of the parser function. */
|
||||||
#define ENTNAME protoent
|
#define ENTNAME protoent
|
||||||
#define EXTERN_PARSER
|
#define EXTERN_PARSER
|
||||||
#include "../nss/nss_files/files-parse.c"
|
#include <nss/nss_files/files-parse.c>
|
||||||
|
|
||||||
__libc_lock_define_initialized (static, lock)
|
__libc_lock_define_initialized (static, lock)
|
||||||
|
|
||||||
@ -45,7 +45,7 @@ static struct response *start = NULL;
|
|||||||
static struct response *next = NULL;
|
static struct response *next = NULL;
|
||||||
|
|
||||||
static int
|
static int
|
||||||
saveit (int instatus, char *inkey, int inkeylen, char *inval,
|
saveit (int instatus, char *inkey, int inkeylen, char *inval,
|
||||||
int invallen, char *indata)
|
int invallen, char *indata)
|
||||||
{
|
{
|
||||||
if (instatus != YP_TRUE)
|
if (instatus != YP_TRUE)
|
||||||
@ -68,7 +68,7 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
|
|||||||
strncpy (next->val, inval, invallen);
|
strncpy (next->val, inval, invallen);
|
||||||
next->val[invallen] = '\0';
|
next->val[invallen] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,9 +78,9 @@ internal_nis_setprotoent (void)
|
|||||||
char *domainname;
|
char *domainname;
|
||||||
struct ypall_callback ypcb;
|
struct ypall_callback ypcb;
|
||||||
enum nss_status status;
|
enum nss_status status;
|
||||||
|
|
||||||
yp_get_default_domain (&domainname);
|
yp_get_default_domain (&domainname);
|
||||||
|
|
||||||
while (start != NULL)
|
while (start != NULL)
|
||||||
{
|
{
|
||||||
if (start->val != NULL)
|
if (start->val != NULL)
|
||||||
@ -90,12 +90,12 @@ internal_nis_setprotoent (void)
|
|||||||
free (next);
|
free (next);
|
||||||
}
|
}
|
||||||
start = NULL;
|
start = NULL;
|
||||||
|
|
||||||
ypcb.foreach = saveit;
|
ypcb.foreach = saveit;
|
||||||
ypcb.data = NULL;
|
ypcb.data = NULL;
|
||||||
status = yperr2nss (yp_all (domainname, "protocols.bynumber", &ypcb));
|
status = yperr2nss (yp_all (domainname, "protocols.bynumber", &ypcb));
|
||||||
next = start;
|
next = start;
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -128,9 +128,9 @@ _nss_nis_endprotoent (void)
|
|||||||
}
|
}
|
||||||
start = NULL;
|
start = NULL;
|
||||||
next = NULL;
|
next = NULL;
|
||||||
|
|
||||||
__libc_lock_unlock (lock);
|
__libc_lock_unlock (lock);
|
||||||
|
|
||||||
return NSS_STATUS_SUCCESS;
|
return NSS_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -148,12 +148,12 @@ internal_nis_getprotoent_r (struct protoent *proto,
|
|||||||
do
|
do
|
||||||
{
|
{
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
if (next == NULL)
|
if (next == NULL)
|
||||||
return NSS_STATUS_NOTFOUND;
|
return NSS_STATUS_NOTFOUND;
|
||||||
p = strcpy (buffer, next->val);
|
p = strcpy (buffer, next->val);
|
||||||
next = next->next;
|
next = next->next;
|
||||||
|
|
||||||
while (isspace (*p))
|
while (isspace (*p))
|
||||||
++p;
|
++p;
|
||||||
|
|
||||||
@ -162,7 +162,7 @@ internal_nis_getprotoent_r (struct protoent *proto,
|
|||||||
return NSS_STATUS_TRYAGAIN;
|
return NSS_STATUS_TRYAGAIN;
|
||||||
}
|
}
|
||||||
while (!parse_res);
|
while (!parse_res);
|
||||||
|
|
||||||
return NSS_STATUS_SUCCESS;
|
return NSS_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
|
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
|
||||||
|
|
||||||
@ -32,7 +32,7 @@
|
|||||||
#define ENTNAME pwent
|
#define ENTNAME pwent
|
||||||
#define STRUCTURE passwd
|
#define STRUCTURE passwd
|
||||||
#define EXTERN_PARSER
|
#define EXTERN_PARSER
|
||||||
#include "../nss/nss_files/files-parse.c"
|
#include <nss/nss_files/files-parse.c>
|
||||||
|
|
||||||
/* Protect global state against multiple changers */
|
/* Protect global state against multiple changers */
|
||||||
__libc_lock_define_initialized (static, lock)
|
__libc_lock_define_initialized (static, lock)
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
/* Get the declaration of the parser function. */
|
/* Get the declaration of the parser function. */
|
||||||
#define ENTNAME rpcent
|
#define ENTNAME rpcent
|
||||||
#define EXTERN_PARSER
|
#define EXTERN_PARSER
|
||||||
#include "../nss/nss_files/files-parse.c"
|
#include <nss/nss_files/files-parse.c>
|
||||||
|
|
||||||
__libc_lock_define_initialized (static, lock)
|
__libc_lock_define_initialized (static, lock)
|
||||||
|
|
||||||
@ -51,7 +51,7 @@ typedef struct intern_t intern_t;
|
|||||||
static intern_t intern = {NULL, NULL};
|
static intern_t intern = {NULL, NULL};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
saveit (int instatus, char *inkey, int inkeylen, char *inval,
|
saveit (int instatus, char *inkey, int inkeylen, char *inval,
|
||||||
int invallen, char *indata)
|
int invallen, char *indata)
|
||||||
{
|
{
|
||||||
intern_t *intern = (intern_t *)indata;
|
intern_t *intern = (intern_t *)indata;
|
||||||
@ -76,7 +76,7 @@ saveit (int instatus, char *inkey, int inkeylen, char *inval,
|
|||||||
strncpy (intern->next->val, inval, invallen);
|
strncpy (intern->next->val, inval, invallen);
|
||||||
intern->next->val[invallen] = '\0';
|
intern->next->val[invallen] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,10 +86,10 @@ internal_nis_setrpcent (intern_t *intern)
|
|||||||
char *domainname;
|
char *domainname;
|
||||||
struct ypall_callback ypcb;
|
struct ypall_callback ypcb;
|
||||||
enum nss_status status;
|
enum nss_status status;
|
||||||
|
|
||||||
if (yp_get_default_domain (&domainname))
|
if (yp_get_default_domain (&domainname))
|
||||||
return NSS_STATUS_UNAVAIL;
|
return NSS_STATUS_UNAVAIL;
|
||||||
|
|
||||||
while (intern->start != NULL)
|
while (intern->start != NULL)
|
||||||
{
|
{
|
||||||
if (intern->start->val != NULL)
|
if (intern->start->val != NULL)
|
||||||
@ -134,7 +134,7 @@ internal_nis_endrpcent (intern_t *intern)
|
|||||||
free (intern->next);
|
free (intern->next);
|
||||||
}
|
}
|
||||||
intern->start = NULL;
|
intern->start = NULL;
|
||||||
|
|
||||||
return NSS_STATUS_SUCCESS;
|
return NSS_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,10 +159,10 @@ internal_nis_getrpcent_r (struct rpcent *rpc, char *buffer, size_t buflen,
|
|||||||
struct parser_data *pdata = (void *) buffer;
|
struct parser_data *pdata = (void *) buffer;
|
||||||
int parse_res;
|
int parse_res;
|
||||||
char *p;
|
char *p;
|
||||||
|
|
||||||
if (data->start == NULL)
|
if (data->start == NULL)
|
||||||
internal_nis_setrpcent (data);
|
internal_nis_setrpcent (data);
|
||||||
|
|
||||||
/* Get the next entry until we found a correct one. */
|
/* Get the next entry until we found a correct one. */
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -172,13 +172,13 @@ internal_nis_getrpcent_r (struct rpcent *rpc, char *buffer, size_t buflen,
|
|||||||
data->next = data->next->next;
|
data->next = data->next->next;
|
||||||
while (isspace (*p))
|
while (isspace (*p))
|
||||||
++p;
|
++p;
|
||||||
|
|
||||||
parse_res = _nss_files_parse_rpcent (p, rpc, pdata, buflen);
|
parse_res = _nss_files_parse_rpcent (p, rpc, pdata, buflen);
|
||||||
if (!parse_res && errno == ERANGE)
|
if (!parse_res && errno == ERANGE)
|
||||||
return NSS_STATUS_TRYAGAIN;
|
return NSS_STATUS_TRYAGAIN;
|
||||||
}
|
}
|
||||||
while (!parse_res);
|
while (!parse_res);
|
||||||
|
|
||||||
return NSS_STATUS_SUCCESS;
|
return NSS_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
|
Contributed by Thorsten Kukuk <kukuk@vt.uni-paderborn.de>, 1996.
|
||||||
|
|
||||||
@ -32,7 +32,7 @@
|
|||||||
#define ENTNAME spent
|
#define ENTNAME spent
|
||||||
#define STRUCTURE spwd
|
#define STRUCTURE spwd
|
||||||
#define EXTERN_PARSER
|
#define EXTERN_PARSER
|
||||||
#include "../nss/nss_files/files-parse.c"
|
#include <nss/nss_files/files-parse.c>
|
||||||
|
|
||||||
/* Protect global state against multiple changers */
|
/* Protect global state against multiple changers */
|
||||||
__libc_lock_define_initialized (static, lock)
|
__libc_lock_define_initialized (static, lock)
|
||||||
|
@ -263,7 +263,8 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc,
|
|||||||
switch (ELF32_R_TYPE (reloc->r_info))
|
switch (ELF32_R_TYPE (reloc->r_info))
|
||||||
{
|
{
|
||||||
case R_386_COPY:
|
case R_386_COPY:
|
||||||
if (sym->st_size != refsym->st_size)
|
if (sym->st_size > refsym->st_size
|
||||||
|
|| (_dl_verbose && sym->st_size < refsym->st_size))
|
||||||
{
|
{
|
||||||
const char *strtab;
|
const char *strtab;
|
||||||
|
|
||||||
|
@ -433,7 +433,7 @@ logb (double __x)
|
|||||||
register double __value, __junk;
|
register double __value, __junk;
|
||||||
__asm __volatile__
|
__asm __volatile__
|
||||||
("fxtract\n\t"
|
("fxtract\n\t"
|
||||||
: "=t" (__value), "=u" (__junk) : "0" (__x));
|
: "=t" (__junk), "=u" (__value) : "0" (__x));
|
||||||
|
|
||||||
return __value;
|
return __value;
|
||||||
}
|
}
|
||||||
|
@ -227,7 +227,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
|
|||||||
switch (ELF32_R_TYPE (reloc->r_info))
|
switch (ELF32_R_TYPE (reloc->r_info))
|
||||||
{
|
{
|
||||||
case R_68K_COPY:
|
case R_68K_COPY:
|
||||||
if (sym->st_size != refsym->st_size)
|
if (sym->st_size > refsym->st_size
|
||||||
|
|| (_dl_verbose && sym->st_size < refsym->st_size))
|
||||||
{
|
{
|
||||||
const char *strtab;
|
const char *strtab;
|
||||||
|
|
||||||
|
@ -591,7 +591,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
|
|||||||
}
|
}
|
||||||
else if (rinfo == R_PPC_COPY)
|
else if (rinfo == R_PPC_COPY)
|
||||||
{
|
{
|
||||||
if (sym->st_size != refsym->st_size)
|
if (sym->st_size > refsym->st_size
|
||||||
|
|| (_dl_verbose && sym->st_size < refsym->st_size))
|
||||||
{
|
{
|
||||||
const char *strtab;
|
const char *strtab;
|
||||||
|
|
||||||
@ -666,5 +667,3 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
|
|||||||
#define ELF_MACHINE_NO_REL 1
|
#define ELF_MACHINE_NO_REL 1
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -130,7 +130,8 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
|
|||||||
switch (ELF32_R_TYPE (reloc->r_info))
|
switch (ELF32_R_TYPE (reloc->r_info))
|
||||||
{
|
{
|
||||||
case R_SPARC_COPY:
|
case R_SPARC_COPY:
|
||||||
if (sym->st_size != refsym->st_size)
|
if (sym->st_size > refsym->st_size
|
||||||
|
|| (_dl_verbose && sym->st_size < refsym->st_size))
|
||||||
{
|
{
|
||||||
const char *strtab;
|
const char *strtab;
|
||||||
|
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
modify it under the terms of the GNU Library General Public License as
|
modify it under the terms of the GNU Library General Public License as
|
||||||
published by the Free Software Foundation; either version 2 of the
|
published by the Free Software Foundation; either version 2 of the
|
||||||
License, or (at your option) any later version.
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
The GNU C Library is distributed in the hope that it will be useful,
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
Library General Public License for more details.
|
Library General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
You should have received a copy of the GNU Library General Public
|
||||||
License along with the GNU C Library; see the file COPYING.LIB. If
|
License along with the GNU C Library; see the file COPYING.LIB. If not,
|
||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Cambridge, MA 02139, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
/* This file defines the `errno' constants for standalone ARM machines.
|
/* This file defines the `errno' constants for standalone ARM machines.
|
||||||
These constants are essentially arbitrary. */
|
These constants are essentially arbitrary. */
|
||||||
@ -46,6 +46,7 @@ Cambridge, MA 02139, USA. */
|
|||||||
#define ENOENT 18
|
#define ENOENT 18
|
||||||
#define EPROTOTYPE 19
|
#define EPROTOTYPE 19
|
||||||
#define ESRCH 20
|
#define ESRCH 20
|
||||||
|
#define EPERM 21
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define __set_errno(val) errno = (val)
|
#define __set_errno(val) errno = (val)
|
||||||
|
@ -13,4 +13,4 @@ weak_alias (__data_start, data_start)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
volatile int __errno;
|
volatile int __errno;
|
||||||
string_alias (__errno, errno)
|
strong_alias (__errno, errno)
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
#define EINTR_REPEAT
|
#define EINTR_REPEAT
|
||||||
#include <../sysdeps/generic/sysd-stdio.c>
|
#include <sysdeps/generic/sysd-stdio.c>
|
||||||
|
@ -282,6 +282,7 @@ memcpy_uppcase (dest, src, len)
|
|||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if ! HAVE_TM_GMTOFF
|
#if ! HAVE_TM_GMTOFF
|
||||||
/* Yield the difference between *A and *B,
|
/* Yield the difference between *A and *B,
|
||||||
measured in seconds, ignoring leap seconds. */
|
measured in seconds, ignoring leap seconds. */
|
||||||
@ -464,6 +465,7 @@ strftime (s, maxsize, format, tp)
|
|||||||
int width = -1;
|
int width = -1;
|
||||||
int to_lowcase = 0;
|
int to_lowcase = 0;
|
||||||
int to_uppcase = 0;
|
int to_uppcase = 0;
|
||||||
|
int change_case = 0;
|
||||||
|
|
||||||
#if DO_MULTIBYTE
|
#if DO_MULTIBYTE
|
||||||
|
|
||||||
@ -555,6 +557,9 @@ strftime (s, maxsize, format, tp)
|
|||||||
case '^':
|
case '^':
|
||||||
to_uppcase = 1;
|
to_uppcase = 1;
|
||||||
continue;
|
continue;
|
||||||
|
case '#':
|
||||||
|
change_case = 1;
|
||||||
|
continue;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@ -592,9 +597,11 @@ strftime (s, maxsize, format, tp)
|
|||||||
switch (*f)
|
switch (*f)
|
||||||
{
|
{
|
||||||
#define DO_NUMBER(d, v) \
|
#define DO_NUMBER(d, v) \
|
||||||
digits = d; number_value = v; goto do_number
|
digits = width == -1 ? d : width; \
|
||||||
|
number_value = v; goto do_number
|
||||||
#define DO_NUMBER_SPACEPAD(d, v) \
|
#define DO_NUMBER_SPACEPAD(d, v) \
|
||||||
digits = d; number_value = v; goto do_number_spacepad
|
digits = width == -1 ? d : width; \
|
||||||
|
number_value = v; goto do_number_spacepad
|
||||||
|
|
||||||
case '%':
|
case '%':
|
||||||
if (modifier != 0)
|
if (modifier != 0)
|
||||||
@ -605,12 +612,22 @@ strftime (s, maxsize, format, tp)
|
|||||||
case 'a':
|
case 'a':
|
||||||
if (modifier != 0)
|
if (modifier != 0)
|
||||||
goto bad_format;
|
goto bad_format;
|
||||||
|
if (change_case)
|
||||||
|
{
|
||||||
|
to_uppcase = 1;
|
||||||
|
to_lowcase = 0;
|
||||||
|
}
|
||||||
cpy (aw_len, a_wkday);
|
cpy (aw_len, a_wkday);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'A':
|
case 'A':
|
||||||
if (modifier != 0)
|
if (modifier != 0)
|
||||||
goto bad_format;
|
goto bad_format;
|
||||||
|
if (change_case)
|
||||||
|
{
|
||||||
|
to_uppcase = 1;
|
||||||
|
to_lowcase = 0;
|
||||||
|
}
|
||||||
cpy (wkday_len, f_wkday);
|
cpy (wkday_len, f_wkday);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -624,6 +641,11 @@ strftime (s, maxsize, format, tp)
|
|||||||
case 'B':
|
case 'B':
|
||||||
if (modifier != 0)
|
if (modifier != 0)
|
||||||
goto bad_format;
|
goto bad_format;
|
||||||
|
if (change_case)
|
||||||
|
{
|
||||||
|
to_uppcase = 1;
|
||||||
|
to_lowcase = 0;
|
||||||
|
}
|
||||||
cpy (month_len, f_month);
|
cpy (month_len, f_month);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -824,6 +846,11 @@ strftime (s, maxsize, format, tp)
|
|||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
|
|
||||||
case 'p':
|
case 'p':
|
||||||
|
if (change_case)
|
||||||
|
{
|
||||||
|
to_uppcase = 0;
|
||||||
|
to_lowcase = 1;
|
||||||
|
}
|
||||||
cpy (ap_len, ampm);
|
cpy (ap_len, ampm);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -996,6 +1023,11 @@ strftime (s, maxsize, format, tp)
|
|||||||
DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100);
|
DO_NUMBER (2, (tp->tm_year % 100 + 100) % 100);
|
||||||
|
|
||||||
case 'Z':
|
case 'Z':
|
||||||
|
if (change_case)
|
||||||
|
{
|
||||||
|
to_uppcase = 0;
|
||||||
|
to_lowcase = 1;
|
||||||
|
}
|
||||||
cpy (zonelen, zone);
|
cpy (zonelen, zone);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -28,4 +28,4 @@
|
|||||||
#endif
|
#endif
|
||||||
#define STRCMP wcscmp
|
#define STRCMP wcscmp
|
||||||
|
|
||||||
#include "../string/strcoll.c"
|
#include <string/strcoll.c>
|
||||||
|
@ -22,4 +22,4 @@
|
|||||||
|
|
||||||
#define USE_WIDE_CHAR 1
|
#define USE_WIDE_CHAR 1
|
||||||
|
|
||||||
#include "../stdlib/strtod.c"
|
#include <stdlib/strtod.c>
|
||||||
|
@ -40,4 +40,4 @@
|
|||||||
(flt) = u.f; \
|
(flt) = u.f; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#include "../stdlib/strtod.c"
|
#include <stdlib/strtod.c>
|
||||||
|
@ -20,4 +20,4 @@
|
|||||||
|
|
||||||
#define USE_WIDE_CHAR 1
|
#define USE_WIDE_CHAR 1
|
||||||
|
|
||||||
#include "../stdlib/strtol.c"
|
#include <stdlib/strtol.c>
|
||||||
|
@ -41,4 +41,4 @@
|
|||||||
(flt) = u.d; \
|
(flt) = u.d; \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
#include "../stdlib/strtod.c"
|
#include <stdlib/strtod.c>
|
||||||
|
@ -31,4 +31,4 @@
|
|||||||
#define STRLEN wcslen
|
#define STRLEN wcslen
|
||||||
#define STPNCPY __wcpncpy
|
#define STPNCPY __wcpncpy
|
||||||
|
|
||||||
#include "../string/strxfrm.c"
|
#include <string/strxfrm.c>
|
||||||
|
Reference in New Issue
Block a user