aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--bits/confname.h10
-rw-r--r--sysdeps/generic/bits/confname.h10
-rw-r--r--sysdeps/posix/pathconf.c37
4 files changed, 61 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 4370b52bd9..80bc4e43ad 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2001-01-25 Ulrich Drepper <drepper@redhat.com>
+ * sysdeps/generic/bits/confname.h: Define _PC_REC_INCR_XFER_SIZE,
+ _PC_REC_MAX_XFER_SIZE, _PC_REC_MIN_XFER_SIZE, and
+ _PC_REC_XFER_ALIGN.
+ * sysdeps/posix/pathconf.c (__pathconf): Implement handling of
+ _PC_REC_INCR_XFER_SIZE, _PC_REC_MAX_XFER_SIZE,
+ _PC_REC_MIN_XFER_SIZE, and _PC_REC_XFER_ALIGN.
+
* conform/conformtest.pl: Run Unix tests for XPG6.
Implement handling of known namespace violations.
Improve printing of results.
diff --git a/bits/confname.h b/bits/confname.h
index a783fc0cd8..6c3bd7fc2a 100644
--- a/bits/confname.h
+++ b/bits/confname.h
@@ -50,8 +50,16 @@ enum
#define _PC_PRIO_IO _PC_PRIO_IO
_PC_SOCK_MAXBUF,
#define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
- _PC_FILESIZEBITS
+ _PC_FILESIZEBITS,
#define _PC_FILESIZEBITS _PC_FILESIZEBITS
+ _PC_REC_INCR_XFER_SIZE,
+#define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
+ _PC_REC_MAX_XFER_SIZE,
+#define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
+ _PC_REC_MIN_XFER_SIZE,
+#define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
+ _PC_REC_XFER_ALIGN
+#define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
};
/* Values for the argument to `sysconf'. */
diff --git a/sysdeps/generic/bits/confname.h b/sysdeps/generic/bits/confname.h
index a783fc0cd8..6c3bd7fc2a 100644
--- a/sysdeps/generic/bits/confname.h
+++ b/sysdeps/generic/bits/confname.h
@@ -50,8 +50,16 @@ enum
#define _PC_PRIO_IO _PC_PRIO_IO
_PC_SOCK_MAXBUF,
#define _PC_SOCK_MAXBUF _PC_SOCK_MAXBUF
- _PC_FILESIZEBITS
+ _PC_FILESIZEBITS,
#define _PC_FILESIZEBITS _PC_FILESIZEBITS
+ _PC_REC_INCR_XFER_SIZE,
+#define _PC_REC_INCR_XFER_SIZE _PC_REC_INCR_XFER_SIZE
+ _PC_REC_MAX_XFER_SIZE,
+#define _PC_REC_MAX_XFER_SIZE _PC_REC_MAX_XFER_SIZE
+ _PC_REC_MIN_XFER_SIZE,
+#define _PC_REC_MIN_XFER_SIZE _PC_REC_MIN_XFER_SIZE
+ _PC_REC_XFER_ALIGN
+#define _PC_REC_XFER_ALIGN _PC_REC_XFER_ALIGN
};
/* Values for the argument to `sysconf'. */
diff --git a/sysdeps/posix/pathconf.c b/sysdeps/posix/pathconf.c
index b6181c3b33..f6d0253f69 100644
--- a/sysdeps/posix/pathconf.c
+++ b/sysdeps/posix/pathconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1995, 1996, 1998, 2000 Free Software Foundation, Inc.
+/* Copyright (C) 1991,1995,1996,1998,2000,2001 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
@@ -162,6 +162,41 @@ __pathconf (const char *path, int name)
/* We let platforms with larger file sizes overwrite this value. */
return 32;
#endif
+
+
+ case _PC_REC_INCR_XFER_SIZE:
+ /* XXX It is not entirely clear what the limit is supposed to do.
+ What is incremented? */
+ return -1;
+
+ case _PC_REC_MAX_XFER_SIZE:
+ /* XXX It is not entirely clear what the limit is supposed to do.
+ In general there is no top limit of the number of bytes which
+ case be transported at once. */
+ return -1;
+
+ case _PC_REC_MIN_XFER_SIZE:
+ {
+ /* XXX It is not entirely clear what the limit is supposed to do.
+ I assume this is the block size of the filesystem. */
+ struct statvfs64 sv;
+
+ if (__statvfs64 (path, &sv) < 0)
+ return -1;
+ return sv.f_bsize;
+ }
+
+ case _PC_REC_XFER_ALIGN:
+ {
+ /* XXX It is not entirely clear what the limit is supposed to do.
+ I assume that the number should reflect the minimal block
+ alignment. */
+ struct statvfs64 sv;
+
+ if (__statvfs64 (path, &sv) < 0)
+ return -1;
+ return sv.f_frsize;
+ }
}
}