From 2da161d47ec70b963b50bcce16e63c67bc9b0706 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 25 Jan 2001 10:04:35 +0000 Subject: Update. * 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. --- ChangeLog | 7 +++++++ bits/confname.h | 10 +++++++++- sysdeps/generic/bits/confname.h | 10 +++++++++- sysdeps/posix/pathconf.c | 37 ++++++++++++++++++++++++++++++++++++- 4 files changed, 61 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4370b52..80bc4e4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 2001-01-25 Ulrich Drepper + * 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 a783fc0..6c3bd7f 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 a783fc0..6c3bd7f 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 b6181c3..f6d0253 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; + } } } -- cgit v1.1