diff options
Diffstat (limited to 'sysdeps/mach')
-rw-r--r-- | sysdeps/mach/hurd/posix_opt.h | 9 | ||||
-rw-r--r-- | sysdeps/mach/hurd/vdprintf.c | 57 | ||||
-rw-r--r-- | sysdeps/mach/libc-lock.h | 36 |
3 files changed, 88 insertions, 14 deletions
diff --git a/sysdeps/mach/hurd/posix_opt.h b/sysdeps/mach/hurd/posix_opt.h index 75a07e1539..045b4b6666 100644 --- a/sysdeps/mach/hurd/posix_opt.h +++ b/sysdeps/mach/hurd/posix_opt.h @@ -1,3 +1,12 @@ +/* Posix options supported by the GNU Hurd port of GNU libc. */ + +#define _POSIX_JOB_CONTROL 1 +#define _POSIX_SAVED_IDS 1 +#define _POSIX_VDISABLE ((unsigned char) -1) + +/* Different Hurd filesystems might do these differently. */ +#undef _POSIX_CHOWN_RESTRICTED +#undef _POSIX_NO_TRUNC /* Posix options supported by the GNU Hurd port of GNU libc. */ #define _POSIX_JOB_CONTROL 1 diff --git a/sysdeps/mach/hurd/vdprintf.c b/sysdeps/mach/hurd/vdprintf.c index 002f8c630a..a69607e663 100644 --- a/sysdeps/mach/hurd/vdprintf.c +++ b/sysdeps/mach/hurd/vdprintf.c @@ -55,3 +55,60 @@ vdprintf (int d, const char *format, va_list arg) return done; } +/* Copyright (C) 1991, 1992, 1993, 1997 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +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 +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +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 +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include <errno.h> +#include <limits.h> +#include <stdarg.h> +#include <stdio.h> +#include <string.h> +#include <hurd/fd.h> + +/* Write formatted output to file descriptor D according to the format string + FORMAT, using the argument list in ARG. */ +int +vdprintf (int d, const char *format, va_list arg) +{ + int done; + FILE f; + struct hurd_fd *fd; + + HURD_CRITICAL_BEGIN; + fd = _hurd_fd_get (fd); + HURD_CRITICAL_END; + + if (!fd) + return 0; + + /* Create an unbuffered stream talking to D on the stack. */ + memset ((PTR) &f, 0, sizeof(f)); + f.__magic = _IOMAGIC; + f.__mode.__write = 1; + f.__cookie = fd; + f.__room_funcs = __default_room_functions; + f.__io_funcs = __default_io_functions; + f.__seen = 1; + f.__userbuf = 1; + + /* vfprintf will use a buffer on the stack for the life of the call, + and flush it when finished. */ + done = vfprintf (&f, format, arg); + + return done; +} diff --git a/sysdeps/mach/libc-lock.h b/sysdeps/mach/libc-lock.h index 53dc8ee9e0..05eb70c56f 100644 --- a/sysdeps/mach/libc-lock.h +++ b/sysdeps/mach/libc-lock.h @@ -1,21 +1,21 @@ /* libc-internal interface for mutex locks. Mach cthreads version. -Copyright (C) 1996, 1997 Free Software Foundation, Inc. -This file is part of the GNU C Library. + Copyright (C) 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. -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 -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. + 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 + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. -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 -not, write to the Free Software Foundation, Inc., 675 Mass Ave, -Cambridge, MA 02139, USA. */ + 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 not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ #ifndef _LIBC_LOCK_H #define _LIBC_LOCK_H 1 @@ -87,4 +87,12 @@ typedef struct __libc_lock_opaque__ __libc_lock_t; #define __libc_lock_unlock_recursive __libc_lock_unlock #define __libc_lock_lock_recursive __libc_lock_lock +/* XXX until cthreads supports recursive locks */ +#define __libc_lock_define_initialized_recursive __libc_lock_define_initialized +#define __libc_lock_init_recursive __libc_lock_init +#define __libc_lock_fini_recursive __libc_lock_fini +#define __libc_lock_trylock_recursive __libc_lock_trylock +#define __libc_lock_unlock_recursive __libc_lock_unlock +#define __libc_lock_lock_recursive __libc_lock_lock + #endif /* libc-lock.h */ |