am 0006a38a: am b4e7f4e2: am 661423a4: Merge "Increase support of pathconf options."

* commit '0006a38adabce47b99690f605a51e45225f0ddaf':
  Increase support of pathconf options.
This commit is contained in:
Yabin Cui 2014-11-14 23:55:48 +00:00 committed by Android Git Automerger
commit 2b10fe28ae
2 changed files with 28 additions and 3 deletions

View File

@ -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:

View File

@ -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));
}