summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog30
-rw-r--r--MakeTAGS5
-rw-r--r--config.h.in4
-rw-r--r--io/Makefile3
-rw-r--r--io/sys/statfs.h41
-rw-r--r--po/SYS_libc.pot850
-rw-r--r--sysdeps/generic/statfsbuf.h49
-rw-r--r--sysdeps/mach/hurd/fstatfs.c38
-rw-r--r--sysdeps/mach/hurd/statfs.c42
-rw-r--r--sysdeps/stub/fstatfs.c34
-rw-r--r--sysdeps/stub/statfs.c34
-rw-r--r--sysdeps/unix/syscalls.list2
-rw-r--r--sysdeps/unix/sysv/linux/statfsbuf.h1
13 files changed, 858 insertions, 275 deletions
diff --git a/ChangeLog b/ChangeLog
index 821fcd5650..03f07c604d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,33 @@
+Tue Apr 23 15:56:56 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
+
+	* config.h.in (HAVE_REGEX): New macro.
+
+	* sysdeps/unix/syscalls.list: Add statfs, fstatfs.
+	* io/Makefile (headers): Add sys/statfs.h, statfsbuf.h.
+	(routines): Add statfs, fstatfs.
+	* sysdeps/mach/hurd/statfs.c: New file.
+	* sysdeps/mach/hurd/fstatfs.c: New file.
+	* sysdeps/stub/fstatfs.c: New file.
+	* sysdeps/stub/statfs.c: New file.
+	* io/sys/statfs.h: New file.
+	* sysdeps/generic/statfsbuf.h: New file.
+	* sysdeps/unix/sysv/linux/statfsbuf.h: New file.
+
+Tue Apr 23 00:06:47 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
+
+	* malloc/Makefile (gmalloc-routines): Add valloc back here.
+	(dist-routines): Remove it here.
+	* malloc/valloc.c [_MALLOC_INTERNAL && GMALLOC_INHIBIT_VALLOC]
+	(ELIDE_VALLOC): Define it.
+	[! ELIDE_VALLOC]: Make whole file conditional on this.
+	* malloc/malloc.h (valloc): Make decl conditional on
+	[!GMALLOC_INHIBIT_VALLOC] instead of [!emacs].
+
+Mon Apr 22 00:02:19 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
+
+	* MakeTAGS: Include version.mk.
+	(po/SYS_libc.pot): Add missing / in sed s cmd.
+
 Sat Apr 20 18:13:00 1996  Roland McGrath  <roland@delasyd.gnu.ai.mit.edu>
 
 	* Makerules (no-whole-archive): Test $(have-no-whole-archive), not
diff --git a/MakeTAGS b/MakeTAGS
index 7aaf0ac7da..3915fd36c2 100644
--- a/MakeTAGS
+++ b/MakeTAGS
@@ -162,10 +162,13 @@ $P/subdirs.pot: $(subdirs:%=$P/%.pot)
 	 do sed "s%^#: %&$$d/%" $P/$$d.pot; done) > $@.new
 	mv -f $@.new $@
 
+# Get $(version) defined.
+include $(common-objpfx)version.mk
+
 # Combine all the messages into the final sorted template translation file.
 $P/SYS_libc.pot: $(all-pot)
 	@rm -f $@.new
-	sed -e 's/VERSION/$(version)/' -e "s/DATE/`date +'%Y-%m-%d %k:%M'`" \
+	sed -e 's/VERSION/$(version)/' -e "s/DATE/`date +'%Y-%m-%d %k:%M'`/" \
 	    po/header.pot > $@.new
 	$(XGETTEXT) -d - -n -s --omit-header $^ >> $@.new
 	mv -f $@.new $@
diff --git a/config.h.in b/config.h.in
index 35d865b24c..a02094a599 100644
--- a/config.h.in
+++ b/config.h.in
@@ -71,4 +71,8 @@
 
 #define	HAVE_STRERROR	1
 
+/* The locale code needs these definitions.  */
+
+#define HAVE_REGEX 1
+
 #endif
diff --git a/io/Makefile b/io/Makefile
index 564b96a6f4..691ac03041 100644
--- a/io/Makefile
+++ b/io/Makefile
@@ -21,7 +21,7 @@
 #
 subdir	:= io
 
-headers := sys/stat.h statbuf.h \
+headers := sys/stat.h statbuf.h sys/statfs.h statfsbuf.h \
 	   fcntl.h sys/fcntl.h fcntlbits.h \
 	   poll.h sys/poll.h \
 	   utime.h ftw.h fts.h
@@ -31,6 +31,7 @@ routines :=							      \
 	mkfifo							      \
 	stat fstat lstat mknod					      \
 	xstat fxstat lxstat xmknod				      \
+	statfs fstatfs						      \
 	umask chmod fchmod mkdir				      \
 	open close read write lseek access euidaccess		      \
 	fcntl flock lockf					      \
diff --git a/io/sys/statfs.h b/io/sys/statfs.h
new file mode 100644
index 0000000000..84ff1f9188
--- /dev/null
+++ b/io/sys/statfs.h
@@ -0,0 +1,41 @@
+/* Definitions for getting information about a filesystem.
+Copyright (C) 1996 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.  */
+
+#ifndef	_SYS_STATFS_H
+
+#define	_SYS_STATFS_H	1
+#include <features.h>
+
+/* Get the system-specific definition of `struct statfs'.  */
+#include <statfsbuf.h>
+
+__BEGIN_DECLS
+
+/* Return information about the filesystem on which FILE resides.  */
+extern int __statfs __P ((__const char *__file, struct statfs *__buf));
+extern int statfs __P ((__const char *__file, struct statfs *__buf));
+
+/* Return information about the filesystem containing the file FILDES
+   refers to.  */
+extern int __fstatfs __P ((int __fildes, struct statfs *__buf));
+extern int fstatfs __P ((int __fildes, struct statfs *__buf));
+
+__END_DECLS
+
+#endif	/* sys/statfs.h */
diff --git a/po/SYS_libc.pot b/po/SYS_libc.pot
index b99589d214..02cf7f1bf2 100644
--- a/po/SYS_libc.pot
+++ b/po/SYS_libc.pot
@@ -1,826 +1,1130 @@
-msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
-msgstr ""
-
-msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
-msgstr ""
-
+# GNU libc message catalog of translations
+# Copyright (C) 1996 Free Software Foundation, Inc.
+# Automatically generated; contact <bug-glibc@prep.ai.mit.edu>
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: libc \n"
+"PO-Revision-Date: 1996-04-22  0:05\n"
+"Last-Translator: GNU libc maintainers <bug-glibc@prep.ai.mit.edu>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+#: sunrpc/rpc_main.c:80
 #, c-format
-msgid "%s%sUnknown signal %d\n"
-msgstr ""
-
-msgid "block freed twice"
-msgstr ""
-
-msgid "bogus mcheck_status, library is buggy"
-msgstr ""
-
-msgid "memory clobbered before allocated block"
+msgid "       %s [-c | -h | -l | -m] [-o outfile] [infile]\n"
 msgstr ""
 
-msgid "memory clobbered past end of allocated block"
+#: sunrpc/rpc_main.c:83
+#, c-format
+msgid "       %s [-s udp|tcp]* [-o outfile] [infile]\n"
 msgstr ""
 
-msgid "memory is consistent, library is buggy"
+#: assert/assert.c:48
+#, c-format
+msgid "%s%s%s:%u: %s%sAssertion `%s' failed.\n"
 msgstr ""
 
-msgid "Error in unknown error system: "
+#: assert/assert-perr.c:46
+#, c-format
+msgid "%s%s%s:%u: %s%sUnexpected error: %s.\n"
 msgstr ""
 
-msgid "Unknown error "
+#: stdio-common/psignal.c:48
+#, c-format
+msgid "%s%sUnknown signal %d\n"
 msgstr ""
 
+#: sunrpc/rpc_util.c:258
 #, c-format
-msgid "Unknown signal %d"
+msgid "%s, line %d: "
 msgstr ""
 
+#: posix/getopt.c:673
 #, c-format
 msgid "%s: illegal option -- %c\n"
 msgstr ""
 
+#: posix/getopt.c:676
 #, c-format
 msgid "%s: invalid option -- %c\n"
 msgstr ""
 
+#: posix/getopt.c:597
 #, c-format
 msgid "%s: option `%c%s' doesn't allow an argument\n"
 msgstr ""
 
+#: posix/getopt.c:568
 #, c-format
 msgid "%s: option `%s' is ambiguous\n"
 msgstr ""
 
+#: posix/getopt.c:614
 #, c-format
 msgid "%s: option `%s' requires an argument\n"
 msgstr ""
 
+#: posix/getopt.c:592
 #, c-format
 msgid "%s: option `--%s' doesn't allow an argument\n"
 msgstr ""
 
+#: posix/getopt.c:712
 #, c-format
 msgid "%s: option requires an argument -- %c\n"
 msgstr ""
 
+#: sunrpc/rpc_main.c:146
+#, c-format
+msgid "%s: output would overwrite %s\n"
+msgstr ""
+
+#: sunrpc/rpc_main.c:152
+#, c-format
+msgid "%s: unable to open "
+msgstr ""
+
+#: posix/getopt.c:647
 #, c-format
 msgid "%s: unrecognized option `%c%s'\n"
 msgstr ""
 
+#: posix/getopt.c:643
 #, c-format
 msgid "%s: unrecognized option `--%s'\n"
 msgstr ""
 
-msgid "Invalid back reference"
+#: sunrpc/clnt_perr.c:125
+#, c-format
+msgid "(unknown authentication error - %d)"
 msgstr ""
 
-msgid "Invalid character class name"
+#: inet/rcmd.c:325
+msgid ".rhosts fstat failed"
 msgstr ""
 
-msgid "Invalid collation character"
+#: inet/rcmd.c:321
+msgid ".rhosts lstat failed"
 msgstr ""
 
-msgid "Invalid content of \\{\\}"
+#: inet/rcmd.c:323
+msgid ".rhosts not regular file"
 msgstr ""
 
-msgid "Invalid preceding regular expression"
+#: inet/rcmd.c:329
+msgid ".rhosts writeable by other than owner"
 msgstr ""
 
-msgid "Invalid range end"
+#: clnt_perr.c:133 sunrpc/clnt_perr.c:112
+#, c-format
+msgid "; low version = %lu, high version = %lu"
 msgstr ""
 
-msgid "Invalid regular expression"
+#: sunrpc/clnt_perr.c:119
+msgid "; why = "
 msgstr ""
 
-msgid "Memory exhausted"
+#: sysdeps/mach/hurd/errlist.c:112
+msgid "?"
 msgstr ""
 
-msgid "No match"
+#: sysdeps/mach/hurd/errlist.c:58
+msgid "Address already in use"
 msgstr ""
 
-msgid "No previous regular expression"
+#: sysdeps/mach/hurd/errlist.c:57
+msgid "Address family not supported by protocol family"
 msgstr ""
 
-msgid "Premature end of regular expression"
+#: i486-linux/siglist.c:22
+msgid "Alarm clock"
 msgstr ""
 
-msgid "Regular expression too big"
+#: sysdeps/mach/hurd/errlist.c:17
+msgid "Argument list too long"
 msgstr ""
 
-msgid "Success"
+#: sunrpc/clnt_perr.c:276
+msgid "Authentication OK"
 msgstr ""
 
-msgid "Trailing backslash"
+#: sysdeps/mach/hurd/errlist.c:90
+msgid "Authentication error"
 msgstr ""
 
-msgid "Unmatched ( or \\("
+#: sysdeps/mach/hurd/errlist.c:24
+msgid "Bad address"
 msgstr ""
 
-msgid "Unmatched ) or \\)"
+#: sysdeps/mach/hurd/errlist.c:19
+msgid "Bad file descriptor"
 msgstr ""
 
-msgid "Unmatched [ or [^"
+#: sysdeps/mach/hurd/errlist.c:25
+msgid "Block device required"
 msgstr ""
 
-msgid "Unmatched \\{"
+#: sunrpc/pmap_rmt.c:336
+msgid "Broadcast select problem"
 msgstr ""
 
-msgid "Unknown system error"
+#: i486-linux/siglist.c:21 sysdeps/mach/hurd/errlist.c:42
+msgid "Broken pipe"
 msgstr ""
 
-msgid ".rhosts fstat failed"
+#: i486-linux/siglist.c:15
+msgid "Bus error"
 msgstr ""
 
-msgid ".rhosts lstat failed"
+#: i486-linux/siglist.c:32
+msgid "CPU time limit exceeded"
 msgstr ""
 
-msgid ".rhosts not regular file"
+#: sysdeps/mach/hurd/errlist.c:59
+msgid "Can't assign requested address"
 msgstr ""
 
-msgid ".rhosts writeable by other than owner"
+#: sysdeps/mach/hurd/errlist.c:68
+msgid "Can't send after socket shutdown"
 msgstr ""
 
-msgid "Trying %s...\n"
+#: sysdeps/mach/hurd/errlist.c:22
+msgid "Cannot allocate memory"
 msgstr ""
 
-msgid "bad .rhosts owner"
+#: sunrpc/pmap_rmt.c:254
+msgid "Cannot create socket for broadcast rpc"
 msgstr ""
 
-msgid "connect to address %s: "
+#: sunrpc/pmap_rmt.c:348
+msgid "Cannot receive reply to broadcast"
 msgstr ""
 
-msgid "rcmd: select (setting up stderr): %s\n"
+#: sunrpc/pmap_clnt.c:79
+msgid "Cannot register service"
 msgstr ""
 
-msgid "rcmd: socket: All ports in use\n"
+#: sunrpc/pmap_rmt.c:312
+msgid "Cannot send broadcast packet"
 msgstr ""
 
-msgid "rcmd: write (setting up stderr): %s\n"
+#: sunrpc/pmap_rmt.c:260
+msgid "Cannot set socket option SO_BROADCAST"
 msgstr ""
 
-msgid "select: protocol failure in circuit setup\n"
+#: i486-linux/siglist.c:25
+msgid "Child exited"
 msgstr ""
 
-msgid "socket: protocol failure in circuit setup.\n"
+#: sunrpc/clnt_perr.c:286
+msgid "Client credential too weak"
 msgstr ""
 
-msgid "Host name lookup failure"
+#: sysdeps/mach/hurd/errlist.c:114
+msgid "Computer bought the farm"
 msgstr ""
 
-msgid "No address associated with name"
+#: sysdeps/mach/hurd/errlist.c:71
+msgid "Connection refused"
 msgstr ""
 
-msgid "Resolver Error 0 (no error)"
+#: sysdeps/mach/hurd/errlist.c:64
+msgid "Connection reset by peer"
 msgstr ""
 
-msgid "Resolver internal error"
+#: sysdeps/mach/hurd/errlist.c:70
+msgid "Connection timed out"
 msgstr ""
 
-msgid "Unknown host"
+#: i486-linux/siglist.c:26
+msgid "Continued"
 msgstr ""
 
-msgid "Unknown resolver error"
+#: sysdeps/mach/hurd/errlist.c:49
+msgid "Destination address required"
 msgstr ""
 
-msgid "Unknown server error"
+#: sysdeps/mach/hurd/errlist.c:26
+msgid "Device busy"
 msgstr ""
 
-msgid "       %s [-c | -h | -l | -m] [-o outfile] [infile]\n"
+#: sysdeps/mach/hurd/errlist.c:16
+msgid "Device not configured"
 msgstr ""
 
-msgid "       %s [-s udp|tcp]* [-o outfile] [infile]\n"
+#: sysdeps/mach/hurd/errlist.c:76
+msgid "Directory not empty"
 msgstr ""
 
-msgid "%s, line %d: "
+#: sysdeps/mach/hurd/errlist.c:79
+msgid "Disc quota exceeded"
 msgstr ""
 
-msgid "%s: output would overwrite %s\n"
+#: sunrpc/clnt_perr.c:254
+#, c-format
+msgid "Error %d"
 msgstr ""
 
-msgid "%s: unable to open "
+#: string/../sysdeps/mach/_strerror.c:43
+msgid "Error in unknown error system: "
 msgstr ""
 
-msgid "(unknown authentication error - %d)"
+#: sysdeps/mach/hurd/errlist.c:18
+msgid "Exec format error"
 msgstr ""
 
-msgid "; low version = %lu, high version = %lu"
+#: sunrpc/clnt_perr.c:290
+msgid "Failed (unspecified error)"
 msgstr ""
 
-msgid "; why = "
+#: sysdeps/mach/hurd/errlist.c:27
+msgid "File exists"
 msgstr ""
 
-msgid "Authentication OK"
+#: sysdeps/mach/hurd/errlist.c:73
+msgid "File name too long"
 msgstr ""
 
-msgid "Broadcast select problem"
+#: i486-linux/siglist.c:33
+msgid "File size limit exceeded"
 msgstr ""
 
-msgid "Cannot create socket for broadcast rpc"
+#: sysdeps/mach/hurd/errlist.c:37
+msgid "File too large"
 msgstr ""
 
-msgid "Cannot receive reply to broadcast"
+#: i486-linux/siglist.c:16
+msgid "Floating point exception"
 msgstr ""
 
-msgid "Cannot register service"
+#: sysdeps/mach/hurd/errlist.c:88
+msgid "Function not implemented"
 msgstr ""
 
-msgid "Cannot send broadcast packet"
+#: sysdeps/mach/hurd/errlist.c:115
+msgid "Gratuitous error"
 msgstr ""
 
-msgid "Cannot set socket option SO_BROADCAST"
+#: i486-linux/siglist.c:9
+msgid "Hangup"
 msgstr ""
 
-msgid "Client credential too weak"
+#: sysdeps/mach/hurd/errlist.c:74
+msgid "Host is down"
 msgstr ""
 
-msgid "Error %d"
+#: resolv/herror.c:74
+msgid "Host name lookup failure"
 msgstr ""
 
-msgid "Failed (unspecified error)"
+#: i486-linux/siglist.c:37
+msgid "I/O possible"
 msgstr ""
 
-msgid "Invalid client credential"
+#: i486-linux/siglist.c:14
+msgid "IOT trap"
 msgstr ""
 
-msgid "Invalid client verifier"
+#: i486-linux/siglist.c:12
+msgid "Illegal Instruction"
 msgstr ""
 
-msgid "Invalid server verifier"
+#: sysdeps/mach/hurd/errlist.c:39
+msgid "Illegal seek"
 msgstr ""
 
-msgid "RPC: (unknown error code)"
+#: sysdeps/mach/hurd/errlist.c:89
+msgid "Inappropriate file type or format"
 msgstr ""
 
-msgid "RPC: Authentication error"
+#: sysdeps/mach/hurd/errlist.c:35
+msgid "Inappropriate ioctl for device"
 msgstr ""
 
-msgid "RPC: Can't decode result"
+#: sysdeps/mach/hurd/errlist.c:110
+msgid "Inappropriate operation for background process"
 msgstr ""
 
-msgid "RPC: Can't encode arguments"
+#: sysdeps/mach/hurd/errlist.c:15
+msgid "Input/output error"
 msgstr ""
 
-msgid "RPC: Failed (unspecified error)"
+#: i486-linux/siglist.c:10
+msgid "Interrupt"
 msgstr ""
 
-msgid "RPC: Incompatible versions of RPC"
+#: sysdeps/mach/hurd/errlist.c:14
+msgid "Interrupted system call"
 msgstr ""
 
-msgid "RPC: Port mapper failure"
+#: sysdeps/mach/hurd/errlist.c:32
+msgid "Invalid argument"
 msgstr ""
 
-msgid "RPC: Procedure unavailable"
+#: posix/regex.c:946
+msgid "Invalid back reference"
 msgstr ""
 
-msgid "RPC: Program not registered"
+#: posix/regex.c:944
+msgid "Invalid character class name"
 msgstr ""
 
-msgid "RPC: Program unavailable"
+#: sunrpc/clnt_perr.c:278
+msgid "Invalid client credential"
 msgstr ""
 
-msgid "RPC: Program/version mismatch"
+#: sunrpc/clnt_perr.c:282
+msgid "Invalid client verifier"
 msgstr ""
 
-msgid "RPC: Remote system error"
+#: posix/regex.c:943
+msgid "Invalid collation character"
 msgstr ""
 
-msgid "RPC: Server can't decode arguments"
+#: posix/regex.c:950
+msgid "Invalid content of \\{\\}"
 msgstr ""
 
-msgid "RPC: Success"
+#: sysdeps/mach/hurd/errlist.c:28
+msgid "Invalid cross-device link"
 msgstr ""
 
-msgid "RPC: Timed out"
+#: posix/regex.c:953
+msgid "Invalid preceding regular expression"
 msgstr ""
 
-msgid "RPC: Unable to receive"
+#: posix/regex.c:951
+msgid "Invalid range end"
 msgstr ""
 
-msgid "RPC: Unable to send"
+#: posix/regex.c:942
+msgid "Invalid regular expression"
 msgstr ""
 
-msgid "RPC: Unknown host"
+#: sunrpc/clnt_perr.c:288
+msgid "Invalid server verifier"
 msgstr ""
 
-msgid "RPC: Unknown protocol"
+#: sysdeps/mach/hurd/errlist.c:31
+msgid "Is a directory"
 msgstr ""
 
-msgid "Server rejected credential"
+#: i486-linux/siglist.c:17
+msgid "Killed"
 msgstr ""
 
-msgid "Server rejected verifier"
+#: posix/regex.c:952
+msgid "Memory exhausted"
 msgstr ""
 
-msgid "array declaration expected"
+#: sysdeps/mach/hurd/errlist.c:50
+msgid "Message too long"
 msgstr ""
 
-msgid "auth_none.c - Fatal marshalling problem"
+#: sysdeps/mach/hurd/errlist.c:91
+msgid "Need authenticator"
 msgstr ""
 
-msgid "broadcast: ioctl (get interface configuration)"
+#: sysdeps/mach/hurd/errlist.c:62
+msgid "Network dropped connection on reset"
 msgstr ""
 
-msgid "broadcast: ioctl (get interface flags)"
+#: sysdeps/mach/hurd/errlist.c:60
+msgid "Network is down"
 msgstr ""
 
-msgid "cache_set: victim not found"
+#: sysdeps/mach/hurd/errlist.c:61
+msgid "Network is unreachable"
 msgstr ""
 
-msgid "can't reassign procedure number %d\n"
+#: resolv/herror.c:76
+msgid "No address associated with name"
 msgstr ""
 
-msgid "clnt_raw.c - Fatal header serialization error."
+#: sysdeps/mach/hurd/errlist.c:65
+msgid "No buffer space available"
 msgstr ""
 
-msgid "constant or identifier expected"
+#: sysdeps/mach/hurd/errlist.c:20
+msgid "No child processes"
 msgstr ""
 
-msgid "couldn't create an rpc server\n"
+#: sysdeps/mach/hurd/errlist.c:87
+msgid "No locks available"
 msgstr ""
 
-msgid "couldn't register prog %d vers %d\n"
+#: posix/regex.c:941
+msgid "No match"
 msgstr ""
 
-msgid "definition keyword expected"
+#: posix/regex.c:5200
+msgid "No previous regular expression"
 msgstr ""
 
-msgid "enablecache: cache already enabled"
+#: sysdeps/mach/hurd/errlist.c:75
+msgid "No route to host"
 msgstr ""
 
-msgid "enablecache: could not allocate cache"
+#: sysdeps/mach/hurd/errlist.c:38
+msgid "No space left on device"
 msgstr ""
 
-msgid "enablecache: could not allocate cache data"
+#: sysdeps/mach/hurd/errlist.c:12
+msgid "No such file or directory"
 msgstr ""
 
-msgid "enablecache: could not allocate cache fifo"
+#: sysdeps/mach/hurd/errlist.c:13
+msgid "No such process"
 msgstr ""
 
-msgid "expected '%s'"
+#: sysdeps/mach/hurd/errlist.c:30
+msgid "Not a directory"
 msgstr ""
 
-msgid "expected '%s' or '%s'"
+#: sysdeps/mach/hurd/errlist.c:43
+msgid "Numerical argument out of domain"
 msgstr ""
 
-msgid "expected '%s', '%s' or '%s'"
+#: sysdeps/mach/hurd/errlist.c:44
+msgid "Numerical result out of range"
 msgstr ""
 
-msgid "expected type specifier"
+#: sysdeps/mach/hurd/errlist.c:47
+msgid "Operation already in progress"
 msgstr ""
 
-msgid "get_myaddress: ioctl (get interface configuration)"
+#: sysdeps/mach/hurd/errlist.c:11
+msgid "Operation not permitted"
 msgstr ""
 
-msgid "illegal character in file: "
+#: sysdeps/mach/hurd/errlist.c:55
+msgid "Operation not supported"
 msgstr ""
 
-msgid "illegal result type"
+#: sysdeps/mach/hurd/errlist.c:29
+msgid "Operation not supported by device"
 msgstr ""
 
-msgid "never registered prog %d\n"
+#: sysdeps/mach/hurd/errlist.c:46
+msgid "Operation now in progress"
 msgstr ""
 
-msgid "no array-of-pointer declarations -- use typedef"
+#: sysdeps/mach/hurd/errlist.c:23
+msgid "Permission denied"
 msgstr ""
 
-msgid "preprocessor error"
+#: i486-linux/siglist.c:38
+msgid "Power failure"
 msgstr ""
 
-msgid "registerrpc: out of memory\n"
+#: posix/regex.c:954
+msgid "Premature end of regular expression"
 msgstr ""
 
-msgid "svc_tcp: makefd_xprt: out of memory\n"
+#: i486-linux/siglist.c:35
+msgid "Profiling timer expired"
 msgstr ""
 
-msgid "svctcp_.c - cannot getsockname or listen"
+#: sysdeps/mach/hurd/errlist.c:56
+msgid "Protocol family not supported"
 msgstr ""
 
-msgid "svctcp_.c - udp socket creation problem"
+#: sysdeps/mach/hurd/errlist.c:52
+msgid "Protocol not available"
 msgstr ""
 
-msgid "svctcp_create: out of memory\n"
+#: sysdeps/mach/hurd/errlist.c:53
+msgid "Protocol not supported"
 msgstr ""
 
-msgid "svcudp_create - cannot getsockname"
+#: sysdeps/mach/hurd/errlist.c:51
+msgid "Protocol wrong type for socket"
 msgstr ""
 
-msgid "svcudp_create: socket creation problem"
+#: i486-linux/siglist.c:11
+msgid "Quit"
 msgstr ""
 
-msgid "too many files!\n"
+#: sysdeps/mach/hurd/errlist.c:86
+msgid "RPC bad procedure for program"
 msgstr ""
 
-msgid "trouble replying to prog %d\n"
+#: sysdeps/mach/hurd/errlist.c:84
+msgid "RPC program not available"
 msgstr ""
 
-msgid "unterminated string constant"
+#: sysdeps/mach/hurd/errlist.c:85
+msgid "RPC program version wrong"
 msgstr ""
 
-msgid "usage: %s infile\n"
+#: sysdeps/mach/hurd/errlist.c:82
+msgid "RPC struct is bad"
 msgstr ""
 
-msgid "variable-length array declaration expected"
+#: sysdeps/mach/hurd/errlist.c:83
+msgid "RPC version wrong"
 msgstr ""
 
-msgid "voids allowed only inside union and program definitions"
+#: sunrpc/clnt_perr.c:217
+msgid "RPC: (unknown error code)"
 msgstr ""
 
-msgid "Alarm clock"
+#: sunrpc/clnt_perr.c:179
+msgid "RPC: Authentication error"
 msgstr ""
 
-msgid "Broken pipe"
+#: sunrpc/clnt_perr.c:169
+msgid "RPC: Can't decode result"
 msgstr ""
 
-msgid "Bus error"
+#: sunrpc/clnt_perr.c:167
+msgid "RPC: Can't encode arguments"
 msgstr ""
 
-msgid "CPU time limit exceeded"
+#: sunrpc/clnt_perr.c:199
+msgid "RPC: Failed (unspecified error)"
 msgstr ""
 
-msgid "Child exited"
+#: sunrpc/clnt_perr.c:177
+msgid "RPC: Incompatible versions of RPC"
 msgstr ""
 
-msgid "Continued"
+#: sunrpc/clnt_perr.c:195
+msgid "RPC: Port mapper failure"
 msgstr ""
 
-msgid "File size limit exceeded"
+#: sunrpc/clnt_perr.c:185
+msgid "RPC: Procedure unavailable"
 msgstr ""
 
-msgid "Floating point exception"
+#: sunrpc/clnt_perr.c:197
+msgid "RPC: Program not registered"
 msgstr ""
 
-msgid "Hangup"
+#: sunrpc/clnt_perr.c:181
+msgid "RPC: Program unavailable"
 msgstr ""
 
-msgid "I/O possible"
+#: sunrpc/clnt_perr.c:183
+msgid "RPC: Program/version mismatch"
 msgstr ""
 
-msgid "IOT trap"
+#: sunrpc/clnt_perr.c:189
+msgid "RPC: Remote system error"
 msgstr ""
 
-msgid "Illegal Instruction"
+#: sunrpc/clnt_perr.c:187
+msgid "RPC: Server can't decode arguments"
 msgstr ""
 
-msgid "Interrupt"
+#: sunrpc/clnt_perr.c:165
+msgid "RPC: Success"
 msgstr ""
 
-msgid "Killed"
+#: sunrpc/clnt_perr.c:175
+msgid "RPC: Timed out"
 msgstr ""
 
-msgid "Power failure"
+#: sunrpc/clnt_perr.c:173
+msgid "RPC: Unable to receive"
 msgstr ""
 
-msgid "Profiling timer expired"
+#: sunrpc/clnt_perr.c:171
+msgid "RPC: Unable to send"
 msgstr ""
 
-msgid "Quit"
+#: sunrpc/clnt_perr.c:191
+msgid "RPC: Unknown host"
 msgstr ""
 
-msgid "Segmentation fault"
+#: sunrpc/clnt_perr.c:193
+msgid "RPC: Unknown protocol"
 msgstr ""
 
-msgid "Stopped"
+#: sysdeps/mach/hurd/errlist.c:40
+msgid "Read-only file system"
 msgstr ""
 
-msgid "Stopped (signal)"
+#: posix/regex.c:955
+msgid "Regular expression too big"
 msgstr ""
 
-msgid "Stopped (tty input)"
+#: sysdeps/mach/hurd/errlist.c:92
+msgid "Reserved error 82"
 msgstr ""
 
-msgid "Stopped (tty output)"
+#: sysdeps/mach/hurd/errlist.c:93
+msgid "Reserved error 83"
 msgstr ""
 
-msgid "Terminated"
+#: sysdeps/mach/hurd/errlist.c:94
+msgid "Reserved error 84"
 msgstr ""
 
-msgid "Trace/breakpoint trap"
+#: sysdeps/mach/hurd/errlist.c:95
+msgid "Reserved error 85"
 msgstr ""
 
-msgid "Urgent I/O condition"
+#: sysdeps/mach/hurd/errlist.c:96
+msgid "Reserved error 86"
 msgstr ""
 
-msgid "User defined signal 1"
+#: sysdeps/mach/hurd/errlist.c:97
+msgid "Reserved error 87"
 msgstr ""
 
-msgid "User defined signal 2"
+#: sysdeps/mach/hurd/errlist.c:98
+msgid "Reserved error 88"
 msgstr ""
 
-msgid "Virtual timer expired"
+#: sysdeps/mach/hurd/errlist.c:99
+msgid "Reserved error 89"
 msgstr ""
 
-msgid "Window changed"
+#: sysdeps/mach/hurd/errlist.c:100
+msgid "Reserved error 90"
 msgstr ""
 
-msgid "unknown signal"
+#: sysdeps/mach/hurd/errlist.c:101
+msgid "Reserved error 91"
 msgstr ""
 
-msgid "?"
+#: sysdeps/mach/hurd/errlist.c:102
+msgid "Reserved error 92"
 msgstr ""
 
-msgid "Address already in use"
+#: sysdeps/mach/hurd/errlist.c:103
+msgid "Reserved error 93"
 msgstr ""
 
-msgid "Address family not supported by protocol family"
+#: sysdeps/mach/hurd/errlist.c:104
+msgid "Reserved error 94"
 msgstr ""
 
-msgid "Argument list too long"
+#: sysdeps/mach/hurd/errlist.c:105
+msgid "Reserved error 95"
 msgstr ""
 
-msgid "Authentication error"
+#: sysdeps/mach/hurd/errlist.c:106
+msgid "Reserved error 96"
 msgstr ""
 
-msgid "Bad address"
+#: sysdeps/mach/hurd/errlist.c:107
+msgid "Reserved error 97"
 msgstr ""
 
-msgid "Bad file descriptor"
+#: sysdeps/mach/hurd/errlist.c:108
+msgid "Reserved error 98"
 msgstr ""
 
-msgid "Block device required"
+#: sysdeps/mach/hurd/errlist.c:109
+msgid "Reserved error 99"
 msgstr ""
 
-msgid "Can't assign requested address"
+#: resolv/herror.c:72
+msgid "Resolver Error 0 (no error)"
 msgstr ""
 
-msgid "Can't send after socket shutdown"
+#: resolv/herror.c:114
+msgid "Resolver internal error"
 msgstr ""
 
-msgid "Cannot allocate memory"
+#: sysdeps/mach/hurd/errlist.c:21
+msgid "Resource deadlock avoided"
 msgstr ""
 
-msgid "Computer bought the farm"
+#: sysdeps/mach/hurd/errlist.c:45
+msgid "Resource temporarily unavailable"
 msgstr ""
 
-msgid "Connection refused"
+#: i486-linux/siglist.c:19
+msgid "Segmentation fault"
 msgstr ""
 
-msgid "Connection reset by peer"
+#: sunrpc/clnt_perr.c:280
+msgid "Server rejected credential"
 msgstr ""
 
-msgid "Connection timed out"
+#: sunrpc/clnt_perr.c:284
+msgid "Server rejected verifier"
 msgstr ""
 
-msgid "Destination address required"
+#: sysdeps/mach/hurd/errlist.c:66
+msgid "Socket is already connected"
 msgstr ""
 
-msgid "Device busy"
+#: sysdeps/mach/hurd/errlist.c:67
+msgid "Socket is not connected"
 msgstr ""
 
-msgid "Device not configured"
+#: sysdeps/mach/hurd/errlist.c:48
+msgid "Socket operation on non-socket"
 msgstr ""
 
-msgid "Directory not empty"
+#: sysdeps/mach/hurd/errlist.c:54
+msgid "Socket type not supported"
 msgstr ""
 
-msgid "Disc quota exceeded"
+#: sysdeps/mach/hurd/errlist.c:63
+msgid "Software caused connection abort"
 msgstr ""
 
-msgid "Exec format error"
+#: sysdeps/mach/hurd/errlist.c:80
+msgid "Stale NFS file handle"
 msgstr ""
 
-msgid "File exists"
+#: i486-linux/siglist.c:28
+msgid "Stopped"
 msgstr ""
 
-msgid "File name too long"
+#: i486-linux/siglist.c:27
+msgid "Stopped (signal)"
 msgstr ""
 
-msgid "File too large"
+#: i486-linux/siglist.c:29
+msgid "Stopped (tty input)"
 msgstr ""
 
-msgid "Function not implemented"
+#: i486-linux/siglist.c:30
+msgid "Stopped (tty output)"
 msgstr ""
 
-msgid "Gratuitous error"
+#: posix/regex.c:940 sysdeps/mach/hurd/errlist.c:10
+msgid "Success"
 msgstr ""
 
-msgid "Host is down"
+#: i486-linux/siglist.c:23
+msgid "Terminated"
 msgstr ""
 
-msgid "Illegal seek"
+#: sysdeps/mach/hurd/errlist.c:36
+msgid "Text file busy"
 msgstr ""
 
-msgid "Inappropriate file type or format"
+#: sysdeps/mach/hurd/errlist.c:81
+msgid "Too many levels of remote in path"
 msgstr ""
 
-msgid "Inappropriate ioctl for device"
+#: sysdeps/mach/hurd/errlist.c:72
+msgid "Too many levels of symbolic links"
 msgstr ""
 
-msgid "Inappropriate operation for background process"
+#: sysdeps/mach/hurd/errlist.c:41
+msgid "Too many links"
 msgstr ""
 
-msgid "Input/output error"
+#: sysdeps/mach/hurd/errlist.c:34
+msgid "Too many open files"
 msgstr ""
 
-msgid "Interrupted system call"
+#: sysdeps/mach/hurd/errlist.c:33
+msgid "Too many open files in system"
 msgstr ""
 
-msgid "Invalid argument"
+#: sysdeps/mach/hurd/errlist.c:77
+msgid "Too many processes"
 msgstr ""
 
-msgid "Invalid cross-device link"
+#: sysdeps/mach/hurd/errlist.c:69
+msgid "Too many references: can't splice"
 msgstr ""
 
-msgid "Is a directory"
+#: sysdeps/mach/hurd/errlist.c:78
+msgid "Too many users"
 msgstr ""
 
-msgid "Message too long"
+#: i486-linux/siglist.c:13
+msgid "Trace/breakpoint trap"
 msgstr ""
 
-msgid "Need authenticator"
+#: posix/regex.c:945
+msgid "Trailing backslash"
 msgstr ""
 
-msgid "Network dropped connection on reset"
+#: sysdeps/mach/hurd/errlist.c:111
+msgid "Translator died"
 msgstr ""
 
-msgid "Network is down"
+#: inet/rcmd.c:118
+msgid "Trying %s...\n"
 msgstr ""
 
-msgid "Network is unreachable"
+#: ../sysdeps/mach/_strerror.c:58 string/../sysdeps/generic/_strerror.c:36
+msgid "Unknown error "
 msgstr ""
 
-msgid "No buffer space available"
+#: resolv/herror.c:73
+msgid "Unknown host"
 msgstr ""
 
-msgid "No child processes"
+#: resolv/herror.c:117
+msgid "Unknown resolver error"
 msgstr ""
 
-msgid "No locks available"
+#: resolv/herror.c:75
+msgid "Unknown server error"
 msgstr ""
 
-msgid "No route to host"
+#: string/strsignal.c:40
+#, c-format
+msgid "Unknown signal %d"
 msgstr ""
 
-msgid "No space left on device"
+#: misc/error.c:92
+msgid "Unknown system error"
 msgstr ""
 
-msgid "No such file or directory"
+#: posix/regex.c:948
+msgid "Unmatched ( or \\("
 msgstr ""
 
-msgid "No such process"
+#: posix/regex.c:956
+msgid "Unmatched ) or \\)"
 msgstr ""
 
-msgid "Not a directory"
+#: posix/regex.c:947
+msgid "Unmatched [ or [^"
 msgstr ""
 
-msgid "Numerical argument out of domain"
+#: posix/regex.c:949
+msgid "Unmatched \\{"
 msgstr ""
 
-msgid "Numerical result out of range"
+#: i486-linux/siglist.c:31
+msgid "Urgent I/O condition"
 msgstr ""
 
-msgid "Operation already in progress"
+#: i486-linux/siglist.c:18
+msgid "User defined signal 1"
 msgstr ""
 
-msgid "Operation not permitted"
+#: i486-linux/siglist.c:20
+msgid "User defined signal 2"
 msgstr ""
 
-msgid "Operation not supported"
+#: i486-linux/siglist.c:34
+msgid "Virtual timer expired"
 msgstr ""
 
-msgid "Operation not supported by device"
+#: i486-linux/siglist.c:36
+msgid "Window changed"
 msgstr ""
 
-msgid "Operation now in progress"
+#: sysdeps/mach/hurd/errlist.c:113
+msgid "You really blew it this time"
 msgstr ""
 
-msgid "Permission denied"
+#: sunrpc/rpc_parse.c:326
+msgid "array declaration expected"
 msgstr ""
 
-msgid "Protocol family not supported"
+#: sunrpc/auth_unix.c:314
+msgid "auth_none.c - Fatal marshalling problem"
 msgstr ""
 
-msgid "Protocol not available"
+#: inet/rcmd.c:327
+msgid "bad .rhosts owner"
 msgstr ""
 
-msgid "Protocol not supported"
+#: malloc/mcheck.c:174
+msgid "block freed twice"
 msgstr ""
 
-msgid "Protocol wrong type for socket"
+#: malloc/mcheck.c:177
+msgid "bogus mcheck_status, library is buggy"
 msgstr ""
 
-msgid "RPC bad procedure for program"
+#: sunrpc/pmap_rmt.c:177
+msgid "broadcast: ioctl (get interface configuration)"
 msgstr ""
 
-msgid "RPC program not available"
+#: sunrpc/pmap_rmt.c:184
+msgid "broadcast: ioctl (get interface flags)"
 msgstr ""
 
-msgid "RPC program version wrong"
+#: sunrpc/svc_udp.c:398
+msgid "cache_set: victim not found"
 msgstr ""
 
-msgid "RPC struct is bad"
+#: sunrpc/svc_simple.c:64
+#, c-format
+msgid "can't reassign procedure number %d\n"
 msgstr ""
 
-msgid "RPC version wrong"
+#: sunrpc/clnt_raw.c:106
+msgid "clnt_raw.c - Fatal header serialization error."
 msgstr ""
 
-msgid "Read-only file system"
+#: inet/rcmd.c:112
+msgid "connect to address %s: "
 msgstr ""
 
-msgid "Reserved error 82"
+#: sunrpc/rpc_scan.c:109
+msgid "constant or identifier expected"
 msgstr ""
 
-msgid "Reserved error 83"
+#: sunrpc/svc_simple.c:70
+msgid "couldn't create an rpc server\n"
 msgstr ""
 
-msgid "Reserved error 84"
+#: sunrpc/svc_simple.c:77
+#, c-format
+msgid "couldn't register prog %d vers %d\n"
 msgstr ""
 
-msgid "Reserved error 85"
+#: sunrpc/rpc_parse.c:77
+msgid "definition keyword expected"
 msgstr ""
 
-msgid "Reserved error 86"
+#: sunrpc/svc_udp.c:344
+msgid "enablecache: cache already enabled"
 msgstr ""
 
-msgid "Reserved error 87"
+#: sunrpc/svc_udp.c:349
+msgid "enablecache: could not allocate cache"
 msgstr ""
 
-msgid "Reserved error 88"
+#: sunrpc/svc_udp.c:356
+msgid "enablecache: could not allocate cache data"
 msgstr ""
 
-msgid "Reserved error 89"
+#: sunrpc/svc_udp.c:362
+msgid "enablecache: could not allocate cache fifo"
 msgstr ""
 
-msgid "Reserved error 90"
+#: sunrpc/rpc_util.c:300
+#, c-format
+msgid "expected '%s'"
 msgstr ""
 
-msgid "Reserved error 91"
+#: sunrpc/rpc_util.c:312
+#, c-format
+msgid "expected '%s' or '%s'"
 msgstr ""
 
-msgid "Reserved error 92"
+#: sunrpc/rpc_util.c:325
+#, c-format
+msgid "expected '%s', '%s' or '%s'"
 msgstr ""
 
-msgid "Reserved error 93"
+#: sunrpc/rpc_parse.c:384
+msgid "expected type specifier"
 msgstr ""
 
-msgid "Reserved error 94"
+#: sunrpc/get_myaddr.c:73
+msgid "get_myaddress: ioctl (get interface configuration)"
 msgstr ""
 
-msgid "Reserved error 95"
+#: sunrpc/rpc_scan.c:281
+msgid "illegal character in file: "
 msgstr ""
 
-msgid "Reserved error 96"
+#: sunrpc/rpc_parse.c:146
+msgid "illegal result type"
 msgstr ""
 
-msgid "Reserved error 97"
+#: malloc/mcheck.c:168
+msgid "memory clobbered before allocated block"
 msgstr ""
 
-msgid "Reserved error 98"
+#: malloc/mcheck.c:171
+msgid "memory clobbered past end of allocated block"
 msgstr ""
 
-msgid "Reserved error 99"
+#: malloc/mcheck.c:165
+msgid "memory is consistent, library is buggy"
 msgstr ""
 
-msgid "Resource deadlock avoided"
+#: sunrpc/svc_simple.c:140
+#, c-format
+msgid "never registered prog %d\n"
 msgstr ""
 
-msgid "Resource temporarily unavailable"
+#: rpc_parse.c:313 sunrpc/rpc_parse.c:305
+msgid "no array-of-pointer declarations -- use typedef"
 msgstr ""
 
-msgid "Socket is already connected"
+#: rpc_scan.c:464 sunrpc/rpc_scan.c:456
+msgid "preprocessor error"
 msgstr ""
 
-msgid "Socket is not connected"
+#: inet/rcmd.c:154
+msgid "rcmd: select (setting up stderr): %s\n"
 msgstr ""
 
-msgid "Socket operation on non-socket"
+#: inet/rcmd.c:86
+msgid "rcmd: socket: All ports in use\n"
 msgstr ""
 
-msgid "Socket type not supported"
+#: inet/rcmd.c:141
+msgid "rcmd: write (setting up stderr): %s\n"
 msgstr ""
 
-msgid "Software caused connection abort"
+#: sunrpc/svc_simple.c:83
+msgid "registerrpc: out of memory\n"
 msgstr ""
 
-msgid "Stale NFS file handle"
+#: inet/rcmd.c:158
+msgid "select: protocol failure in circuit setup\n"
 msgstr ""
 
-msgid "Text file busy"
+#: inet/rcmd.c:176
+msgid "socket: protocol failure in circuit setup.\n"
 msgstr ""
 
-msgid "Too many levels of remote in path"
+#: sunrpc/svc_tcp.c:199 svc_tcp.c:204
+msgid "svc_tcp: makefd_xprt: out of memory\n"
 msgstr ""
 
-msgid "Too many levels of symbolic links"
+#: sunrpc/svc_tcp.c:147
+msgid "svctcp_.c - cannot getsockname or listen"
 msgstr ""
 
-msgid "Too many links"
+#: sunrpc/svc_tcp.c:134
+msgid "svctcp_.c - udp socket creation problem"
 msgstr ""
 
-msgid "Too many open files"
+#: sunrpc/svc_tcp.c:154 svc_tcp.c:161
+msgid "svctcp_create: out of memory\n"
 msgstr ""
 
-msgid "Too many open files in system"
+#: sunrpc/svc_udp.c:119
+msgid "svcudp_create - cannot getsockname"
 msgstr ""
 
-msgid "Too many processes"
+#: sunrpc/svc_udp.c:107
+msgid "svcudp_create: socket creation problem"
 msgstr ""
 
-msgid "Too many references: can't splice"
+#: sunrpc/rpc_util.c:285
+msgid "too many files!\n"
 msgstr ""
 
-msgid "Too many users"
+#: sunrpc/svc_simple.c:132
+#, c-format
+msgid "trouble replying to prog %d\n"
 msgstr ""
 
-msgid "Translator died"
+#: i486-linux/siglist.c:8 i486-linux/siglist.c:24 i486-linux/siglist.c:39
+msgid "unknown signal"
 msgstr ""
 
-msgid "You really blew it this time"
+#: sunrpc/rpc_scan.c:319
+msgid "unterminated string constant"
+msgstr ""
+
+#: sunrpc/rpc_main.c:78
+#, c-format
+msgid "usage: %s infile\n"
+msgstr ""
+
+#: sunrpc/rpc_parse.c:330
+msgid "variable-length array declaration expected"
+msgstr ""
+
+#: sunrpc/rpc_parse.c:370
+msgid "voids allowed only inside union and program definitions"
 msgstr ""
diff --git a/sysdeps/generic/statfsbuf.h b/sysdeps/generic/statfsbuf.h
new file mode 100644
index 0000000000..e5c2dd7f77
--- /dev/null
+++ b/sysdeps/generic/statfsbuf.h
@@ -0,0 +1,49 @@
+/* Definition of `struct statfs', information about a filesystem.
+Copyright (C) 1996 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.  */
+
+#ifndef	_STATFSBUF_H
+
+#define	_STATFSBUF_H	1
+
+#include <gnu/types.h>
+
+/* GNU Hurd NOTE: The size of this structure (16 ints) is known in
+   <hurd/hurd_types.defs>, since it is used in the `file_statfs' RPC.  MiG
+   does not cope at all well with the passed C structure not being of the
+   expected size.  There are some filler words at the end to allow for
+   future expansion.  To increase the size of the structure used in the RPC
+   and retain binary compatibility, we would need to assign a new message
+   number.  */
+
+struct statfs
+  {
+    unsigned int f_type;
+    unsigned int f_bsize;
+    unsigned int f_blocks;
+    unsigned int f_bfree;
+    unsigned int f_bavail;
+    unsigned int f_files;
+    unsigned int f_ffree;
+    __fsid_t f_fsid;
+    unsigned int f_namelen;
+    unsigned int f_spare[6];
+  };
+
+
+#endif /* statfsbuf.h */
diff --git a/sysdeps/mach/hurd/fstatfs.c b/sysdeps/mach/hurd/fstatfs.c
new file mode 100644
index 0000000000..80bcdcd905
--- /dev/null
+++ b/sysdeps/mach/hurd/fstatfs.c
@@ -0,0 +1,38 @@
+/* fstatfs -- Return information about the filesystem on which FD resides.
+Copyright (C) 1996 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 <hurd.h>
+#include <hurd/fd.h>
+#include <sys/statfs.h>
+#include <stddef.h>
+
+/* Return information about the filesystem on which FD resides.  */
+int
+__fstatfs (int fd, struct statfs *buf)
+{
+  error_t err;
+
+  if (err = HURD_DPORT_USE (fd, __file_statfs (port, buf)))
+    return __hurd_dfail (fd, err);
+
+  return 0;
+}
+
+weak_alias (__fstatfs, fstatfs)
+
diff --git a/sysdeps/mach/hurd/statfs.c b/sysdeps/mach/hurd/statfs.c
new file mode 100644
index 0000000000..9400531a5c
--- /dev/null
+++ b/sysdeps/mach/hurd/statfs.c
@@ -0,0 +1,42 @@
+/* statfs -- Return information about the filesystem on which FILE resides.
+Copyright (C) 1996 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 <hurd.h>
+#include <sys/statfs.h>
+#include <stddef.h>
+
+/* Return information about the filesystem on which FILE resides.  */
+int
+__statfs (const char *file, struct statfs *buf)
+{
+  error_t err;
+  file_t port;
+
+  port = __file_name_lookup (file, 0, 0);
+  if (port == MACH_PORT_NULL)
+    return -1;
+  err = __file_statfs (port, buf);
+  __mach_port_deallocate (__mach_task_self (), port);
+  if (err)
+    return __hurd_fail (err);
+  return 0;
+}
+
+weak_alias (__statfs, statfs)
+
diff --git a/sysdeps/stub/fstatfs.c b/sysdeps/stub/fstatfs.c
new file mode 100644
index 0000000000..5ef5ccd1b9
--- /dev/null
+++ b/sysdeps/stub/fstatfs.c
@@ -0,0 +1,34 @@
+/* fstatfs -- Return information about the filesystem on which FD resides.
+Copyright (C) 1996 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 <sys/statfs.h>
+#include <stddef.h>
+
+/* Return information about the filesystem on which FD resides.  */
+int
+__fstatfs (int fd, struct statfs *buf)
+{
+  errno = ENOSYS;
+  return -1;
+}
+stub_warning (statfs)
+
+weak_alias (__fstatfs, fstatfs)
+
diff --git a/sysdeps/stub/statfs.c b/sysdeps/stub/statfs.c
new file mode 100644
index 0000000000..1aa2feeae6
--- /dev/null
+++ b/sysdeps/stub/statfs.c
@@ -0,0 +1,34 @@
+/* statfs -- Return information about the filesystem on which FILE resides.
+Copyright (C) 1996 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 <sys/statfs.h>
+#include <stddef.h>
+
+/* Return information about the filesystem on which FILE resides.  */
+int
+__statfs (const char *file, struct statfs *buf)
+{
+  errno = ENOSYS;
+  return -1;
+}
+stub_warning (statfs)
+
+weak_alias (__statfs, statfs)
+
diff --git a/sysdeps/unix/syscalls.list b/sysdeps/unix/syscalls.list
index 4e596bf01b..19c11f4d9d 100644
--- a/sysdeps/unix/syscalls.list
+++ b/sysdeps/unix/syscalls.list
@@ -54,6 +54,8 @@ sync		-	sync		0	sync
 sys_fstat	fxstat	fstat		2	__syscall_fstat
 sys_mknod	xmknod	mknod		3	__syscall_mknod
 sys_stat	xstat	stat		2	__syscall_stat
+statfs		-	statfs		2	__statfs	statfs
+fstatfs		-	fstatfs		2	__fstatfs	fstatfs
 umask		-	umask		1	__umask		umask
 uname		-	uname		1	uname
 unlink		-	unlink		1	__unlink	unlink
diff --git a/sysdeps/unix/sysv/linux/statfsbuf.h b/sysdeps/unix/sysv/linux/statfsbuf.h
new file mode 100644
index 0000000000..08a10cb495
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/statfsbuf.h
@@ -0,0 +1 @@
+#include <asm/statfs.h>