about summary refs log tree commit diff
path: root/sysdeps/mach
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/mach')
-rw-r--r--sysdeps/mach/hurd/posix_opt.h9
-rw-r--r--sysdeps/mach/hurd/vdprintf.c57
-rw-r--r--sysdeps/mach/libc-lock.h36
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 */