summaryrefslogtreecommitdiff
path: root/libdiskfs/io-pathconf.c
diff options
context:
space:
mode:
authorThomas Bushnell <thomas@gnu.org>1999-09-09 06:17:07 +0000
committerThomas Bushnell <thomas@gnu.org>1999-09-09 06:17:07 +0000
commit15e6b7447ea4b44090f746b5ea5a487f76a91b43 (patch)
treed39b9f53cbad990fa1208312e4b864582a546e9a /libdiskfs/io-pathconf.c
parenta954869b1da55349ce3de83df3f8a8ec0334b767 (diff)
1999-09-09 Thomas Bushnell, BSG <tb@mit.edu>
* io-pathconf.c: Include <unistd.h>. (diskfs_S_io_pathconf): Provide real definition.
Diffstat (limited to 'libdiskfs/io-pathconf.c')
-rw-r--r--libdiskfs/io-pathconf.c45
1 files changed, 42 insertions, 3 deletions
diff --git a/libdiskfs/io-pathconf.c b/libdiskfs/io-pathconf.c
index 0b80b14e..666e039a 100644
--- a/libdiskfs/io-pathconf.c
+++ b/libdiskfs/io-pathconf.c
@@ -1,5 +1,5 @@
/* libdiskfs implementation of io.defs: io_pathconf
- Copyright (C) 1992, 1993, 1994, 1995 Free Software Foundation
+ Copyright (C) 1992, 1993, 1994, 1995, 1999 Free Software Foundation
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
@@ -15,16 +15,55 @@
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+#include <unistd.h>
#include "priv.h"
#include "io_S.h"
/* Implement io_pathconf as described in <hurd/io.defs>. */
kern_return_t
diskfs_S_io_pathconf (struct protid *cred,
- int name __attribute__ ((unused)), int *value)
+ int name,
+ int *value)
{
if (!cred)
return EOPNOTSUPP;
- *value = 0; /* XXX */
+
+ switch (name)
+ {
+ case _PC_LINK_MAX:
+ *value = diskfs_link_max;
+ break;
+
+ case _PC_MAX_CANON:
+ case _PC_MAX_INPUT:
+ case _PC_PIPE_BUF:
+ case _PC_VDISABLE:
+ case _PC_SOCK_MAXBUF:
+ *value = -1;
+ break;
+
+ case _PC_NAME_MAX:
+ *value = 1024; /* see <hurd/hurd_types.defs> string_t */
+ break;
+
+ case _PC_CHOWN_RESTRICTED:
+ case _PC_NO_TRUNC: /* look at string_t trunc behavior in MiG */
+ case _PC_SYNC_IO:
+ case _PC_ASYNC_IO:
+ *value = 1;
+ break;
+
+ case _PC_PRIO_IO:
+ *value = 0;
+ break;
+
+ case _PC_FILESIZEBITS:
+ *value = 32;
+ break;
+
+ default:
+ return EINVAL;
+ }
+
return 0;
}