* 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:
 | 
					    case _PC_2_SYMLINKS:
 | 
				
			||||||
      return __2_symlinks(s);
 | 
					      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
 | 
					#if 0
 | 
				
			||||||
    case _PC_ALLOC_SIZE_MIN:
 | 
					 | 
				
			||||||
    case _PC_REC_INCR_XFER_SIZE:
 | 
					    case _PC_REC_INCR_XFER_SIZE:
 | 
				
			||||||
    case _PC_REC_MAX_XFER_SIZE:
 | 
					    case _PC_REC_MAX_XFER_SIZE:
 | 
				
			||||||
    case _PC_REC_MIN_XFER_SIZE:
 | 
					 | 
				
			||||||
    case _PC_REC_XFER_ALIGN:
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    case _PC_SYMLINK_MAX:
 | 
					    case _PC_SYMLINK_MAX:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -23,6 +23,7 @@
 | 
				
			|||||||
#include <fcntl.h>
 | 
					#include <fcntl.h>
 | 
				
			||||||
#include <limits.h>
 | 
					#include <limits.h>
 | 
				
			||||||
#include <stdint.h>
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					#include <sys/param.h>
 | 
				
			||||||
#include <sys/syscall.h>
 | 
					#include <sys/syscall.h>
 | 
				
			||||||
#include <sys/types.h>
 | 
					#include <sys/types.h>
 | 
				
			||||||
#include <sys/utsname.h>
 | 
					#include <sys/utsname.h>
 | 
				
			||||||
@@ -499,3 +500,23 @@ TEST(unistd, gethostname) {
 | 
				
			|||||||
  ASSERT_EQ(-1, gethostname(hostname, strlen(hostname)));
 | 
					  ASSERT_EQ(-1, gethostname(hostname, strlen(hostname)));
 | 
				
			||||||
  ASSERT_EQ(ENAMETOOLONG, errno);
 | 
					  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