* commit 'b4e7f4e2263d4763d9507463189ef8f50fd58a67': Increase support of pathconf options.
This commit is contained in:
		@@ -100,12 +100,16 @@ static long __pathconf(const struct statfs& s, int name) {
 | 
			
		||||
    case _PC_2_SYMLINKS:
 | 
			
		||||
      return __2_symlinks(s);
 | 
			
		||||
 | 
			
		||||
    case _PC_ALLOC_SIZE_MIN:  /* fall through */
 | 
			
		||||
    case _PC_REC_XFER_ALIGN:
 | 
			
		||||
      return s.f_frsize;
 | 
			
		||||
 | 
			
		||||
    case _PC_REC_MIN_XFER_SIZE:
 | 
			
		||||
      return s.f_bsize;
 | 
			
		||||
 | 
			
		||||
#if 0
 | 
			
		||||
    case _PC_ALLOC_SIZE_MIN:
 | 
			
		||||
    case _PC_REC_INCR_XFER_SIZE:
 | 
			
		||||
    case _PC_REC_MAX_XFER_SIZE:
 | 
			
		||||
    case _PC_REC_MIN_XFER_SIZE:
 | 
			
		||||
    case _PC_REC_XFER_ALIGN:
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    case _PC_SYMLINK_MAX:
 | 
			
		||||
 
 | 
			
		||||
@@ -23,6 +23,7 @@
 | 
			
		||||
#include <fcntl.h>
 | 
			
		||||
#include <limits.h>
 | 
			
		||||
#include <stdint.h>
 | 
			
		||||
#include <sys/param.h>
 | 
			
		||||
#include <sys/syscall.h>
 | 
			
		||||
#include <sys/types.h>
 | 
			
		||||
#include <sys/utsname.h>
 | 
			
		||||
@@ -499,3 +500,23 @@ TEST(unistd, gethostname) {
 | 
			
		||||
  ASSERT_EQ(-1, gethostname(hostname, strlen(hostname)));
 | 
			
		||||
  ASSERT_EQ(ENAMETOOLONG, errno);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TEST(unistd, pathconf_fpathconf) {
 | 
			
		||||
  TemporaryFile tf;
 | 
			
		||||
  long rc = 0L;
 | 
			
		||||
  // As a file system's block size is always power of 2, the configure values
 | 
			
		||||
  // for ALLOC and XFER should be power of 2 as well.
 | 
			
		||||
  rc = pathconf(tf.filename, _PC_ALLOC_SIZE_MIN);
 | 
			
		||||
  ASSERT_TRUE(rc > 0 && powerof2(rc));
 | 
			
		||||
  rc = pathconf(tf.filename, _PC_REC_MIN_XFER_SIZE);
 | 
			
		||||
  ASSERT_TRUE(rc > 0 && powerof2(rc));
 | 
			
		||||
  rc = pathconf(tf.filename, _PC_REC_XFER_ALIGN);
 | 
			
		||||
  ASSERT_TRUE(rc > 0 && powerof2(rc));
 | 
			
		||||
 | 
			
		||||
  rc = fpathconf(tf.fd, _PC_ALLOC_SIZE_MIN);
 | 
			
		||||
  ASSERT_TRUE(rc > 0 && powerof2(rc));
 | 
			
		||||
  rc = fpathconf(tf.fd, _PC_REC_MIN_XFER_SIZE);
 | 
			
		||||
  ASSERT_TRUE(rc > 0 && powerof2(rc));
 | 
			
		||||
  rc = fpathconf(tf.fd, _PC_REC_XFER_ALIGN);
 | 
			
		||||
  ASSERT_TRUE(rc > 0 && powerof2(rc));
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user