Index: vendor/pjdfstest/dist/.gitignore =================================================================== --- vendor/pjdfstest/dist/.gitignore (nonexistent) +++ vendor/pjdfstest/dist/.gitignore (revision 320447) @@ -0,0 +1,19 @@ +autom4te.cache +aclocal.m4 +compile +configure +config.h* +config.guess +config.log +config.status +config.sub +depcomp +install-sh +missing +pjdfstest +stamp-h1 +INSTALL +Makefile +Makefile.in +.deps +*.o Index: vendor/pjdfstest/dist/.travis.yml =================================================================== --- vendor/pjdfstest/dist/.travis.yml (nonexistent) +++ vendor/pjdfstest/dist/.travis.yml (revision 320447) @@ -0,0 +1,19 @@ +language: c +sudo: required + +matrix: + include: + - os: linux + compiler: clang + dist: xenial + - os: linux + compiler: gcc + dist: xenial + - os: osx + compiler: clang + - os: osx + compiler: gcc + +script: + - ./travis/build.sh + - ./travis/test.sh Index: vendor/pjdfstest/dist/AUTHORS =================================================================== --- vendor/pjdfstest/dist/AUTHORS (nonexistent) +++ vendor/pjdfstest/dist/AUTHORS (revision 320447) @@ -0,0 +1,3 @@ +* Alan Somers - contributor/co-maintainer +* Ngie Cooper - contributor/co-maintainer +* Pawel Jakub Dawidek - pjdfstest author/maintainer Index: vendor/pjdfstest/dist/COPYING =================================================================== --- vendor/pjdfstest/dist/COPYING (nonexistent) +++ vendor/pjdfstest/dist/COPYING (revision 320447) @@ -0,0 +1,27 @@ +$FreeBSD: head/tools/regression/pjdfstest/LICENSE 211354 2010-08-15 21:29:03Z pjd $ + +License for all regression tests available with pjdfstest: + +Copyright (c) 2006-2012 Pawel Jakub Dawidek +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +SUCH DAMAGE. Index: vendor/pjdfstest/dist/ChangeLog =================================================================== Index: vendor/pjdfstest/dist/Makefile.am =================================================================== --- vendor/pjdfstest/dist/Makefile.am (nonexistent) +++ vendor/pjdfstest/dist/Makefile.am (revision 320447) @@ -0,0 +1,5 @@ +AM_CFLAGS= -Wall -Werror + +bin_PROGRAMS= pjdfstest + +pjdfstest_SOURCES= pjdfstest.c Property changes on: vendor/pjdfstest/dist/Makefile.am ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/pjdfstest/dist/NEWS =================================================================== Index: vendor/pjdfstest/dist/README =================================================================== --- vendor/pjdfstest/dist/README (revision 320446) +++ vendor/pjdfstest/dist/README (revision 320447) @@ -1,22 +1,57 @@ $FreeBSD: head/tools/regression/pjdfstest/README 211354 2010-08-15 21:29:03Z pjd $ -Few notes on how to use pjdfstest in short steps: +============ +Introduction +============ - # cd pjdfstest - # vi tests/conf - Change 'fs' to file system type you want to test (UFS or ZFS). - # vi Makefile - You need to manually tweak few things by editing CFLAGS lines - at the top of the file. - # make - It will compile pjdfstest utility which is used by regression tests. - # cd /path/to/file/system/you/want/to/test/ - # prove -r /path/to/pjdfstest/tests +pjdfstest is a test suite that helps exercise POSIX system calls. -That's all. Enjoy. +pjdfstest supports the following operating systems/filesystems: -Currently supported operating systems: FreeBSD, Solaris. -Currently supported file system types: UFS, ZFS. +- Supported Operating Systems: FreeBSD, Linux, Solaris +- Supported Filesystems: ext4, UFS, ZFS --- -Pawel Jakub Dawidek +================== +Building pjdfstest +================== + +------------- +Prerequisites +------------- + +- autoconf 2.69 or newer +- automake 1.15 or newer +- cc (clang or gcc) +- make +- appropriate system headers (please install your distribution appropriate + header package) + +--------- +Procedure +--------- + + $ autoreconf -ifs + $ ./configure + $ make pjdfstest + +================= +Running pjdfstest +================= + +------------- +Prerequisites +------------- +- You must be root when running these testcases. + +---------------------- +Software Prerequisites +---------------------- +- perl +- TAP-Harness (perl package) + +--------- +Procedure +--------- + + # cd /path/to/filesystem/under/test + # prove -rv /path/to/pjdfstest/tests Index: vendor/pjdfstest/dist/configure.ac =================================================================== --- vendor/pjdfstest/dist/configure.ac (nonexistent) +++ vendor/pjdfstest/dist/configure.ac (revision 320447) @@ -0,0 +1,107 @@ +AC_PREREQ(2.61) +AC_INIT([pjdfstest],[0.1],) +AC_CONFIG_AUX_DIR([.]) +AM_INIT_AUTOMAKE +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_FILES([ \ + Makefile \ +]) + +AC_CANONICAL_HOST + +AC_PROG_CC([cc]) + +# For _GNU_SOURCE on Linux, etc. +AC_USE_SYSTEM_EXTENSIONS + +AC_CHECK_HEADERS([ \ + sys/mkdev.h \ +]) + +#HAS_FREEBSD_ACL + +AC_CHECK_FUNC([bindat], + [AC_DEFINE([HAVE_BINDAT], [1], [Define if bindat exists])]) +AC_CHECK_FUNC([chflags], + [AC_DEFINE([HAVE_CHFLAGS], [1], [Define if chflags exists])]) +AC_CHECK_FUNC([chflagsat], + [AC_DEFINE([HAVE_CHFLAGSAT], [1], [Define if chflagsat exists])]) +AC_CHECK_FUNC([connectat], + [AC_DEFINE([HAVE_CONNECTAT], [1], [Define if connectat exists])]) +AC_CHECK_FUNC([faccessat], + [AC_DEFINE([HAVE_FACCESSAT], [1], [Define if faccessat exists])]) +AC_CHECK_FUNC([fchflags], + [AC_DEFINE([HAVE_FCHFLAGS], [1], [Define if fchflags exists])]) +AC_CHECK_FUNC([fchmodat], + [AC_DEFINE([HAVE_FCHMODAT], [1], [Define if fchmodat exists])]) +AC_CHECK_FUNC([fchownat], + [AC_DEFINE([HAVE_FCHOWNAT], [1], [Define if fchownat exists])]) +AC_CHECK_FUNC([fstatat], + [AC_DEFINE([HAVE_FSTATAT], [1], [Define if fstatat exists])]) +AC_CHECK_FUNC([lchflags], + [AC_DEFINE([HAVE_LCHFLAGS], [1], [Define if lchflags exists])]) +AC_CHECK_FUNC([lchmod], + [AC_DEFINE([HAVE_LCHMOD], [1], [Define if lchmod exists])]) +AC_CHECK_FUNC([linkat], + [AC_DEFINE([HAVE_LINKAT], [1], [Define if linkat exists])]) +AC_CHECK_FUNC([lpathconf], + [AC_DEFINE([HAVE_LPATHCONF], [1], [Define if lpathconf exists])]) +AC_CHECK_FUNC([mkdirat], + [AC_DEFINE([HAVE_MKDIRAT], [1], [Define if mkdirat exists])]) +AC_CHECK_FUNC([mkfifoat], + [AC_DEFINE([HAVE_MKFIFOAT], [1], [Define if mkfifoat exists])]) +AC_CHECK_FUNC([mknodat], + [AC_DEFINE([HAVE_MKNODAT], [1], [Define if mknodat exists])]) +AC_CHECK_FUNC([openat], + [AC_DEFINE([HAVE_OPENAT], [1], [Define if openat exists])]) +AC_CHECK_FUNC([posix_fallocate], + [AC_DEFINE([HAVE_POSIX_FALLOCATE], [1], [Define if posix_fallocate exists])]) +AC_CHECK_FUNC([readlinkat], + [AC_DEFINE([HAVE_READLINKAT], [1], [Define if readlinkat exists])]) +AC_CHECK_FUNC([renameat], + [AC_DEFINE([HAVE_RENAMEAT], [1], [Define if renameat exists])]) +AC_CHECK_FUNC([symlinkat], + [AC_DEFINE([HAVE_SYMLINKAT], [1], [Define if symlinkat exists])]) +AC_CHECK_FUNC([utimensat], + [AC_DEFINE([HAVE_UTIMENSAT], [1], [Define if utimensat exists])]) + +# ACL test battery. +AC_CHECK_HEADER([sys/acl.h], [has_sys_acl_h=yes], [has_sys_acl_h=no]) +has_acl_funcs=no +if test x$has_sys_acl_h = xyes; then + AC_DEFINE([HAVE_SYS_ACL_H], [1], + [Define to 1 if sys/acl.h is available]) + AC_CHECK_FUNCS([acl_create_entry_np acl_from_text acl_get_entry acl_get_file acl_set_file], + [has_acl_funcs=yes],[]) +fi +if test x$has_acl_funcs = xyes; then + # Check for NFSv4 ACL support. + AC_CHECK_DECL([ACL_TYPE_NFS4], + [has_nfsv4_acl_support=yes], [has_nfsv4_acl_support=no],[[#include ]]) + if test x$has_nfsv4_acl_support = xyes; then + AC_DEFINE([HAS_NFSV4_ACL_SUPPORT], [1], + [Define to 1 if NFSv4 ACL support is available]) + fi +fi + +AC_CHECK_MEMBERS([struct stat.st_atim, struct stat.st_atimespec], [], [], [[ +#include +#include +]]) + +AC_CHECK_MEMBERS([struct stat.st_birthtim, struct stat.st_birthtime, struct stat.st_birthtimespec], [], [], [[ +#include +#include +]]) + +AC_CHECK_MEMBERS([struct stat.st_ctim, struct stat.st_ctimespec], [], [], [[ +#include +#include +]]) + +AC_CHECK_MEMBERS([struct stat.st_mtim, struct stat.st_mtimespec], [], [], [[ +#include +#include +]]) + +AC_OUTPUT Index: vendor/pjdfstest/dist/pjdfstest.c =================================================================== --- vendor/pjdfstest/dist/pjdfstest.c (revision 320446) +++ vendor/pjdfstest/dist/pjdfstest.c (revision 320447) @@ -1,1493 +1,1688 @@ /*- * Copyright (c) 2006-2010 Pawel Jakub Dawidek * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * $FreeBSD$ */ +/* Needs to be first to twiddle appropriate system configuration/HAVE_* flags */ +#include "config.h" + #include -#include +#ifdef HAVE_SYS_ACL_H +#include +#endif +#ifdef HAVE_SYS_MKDEV_H +#include +#endif #include #include #include -#ifndef makedev -#include -#endif #include #include #include #include #include #include #include #include #include -#ifndef HAS_TRUNCATE64 -#define truncate64 truncate -#define ftruncate64 ftruncate +#ifdef __sun__ +#define _USE_STAT64 #endif -#ifndef HAS_STAT64 -#define stat64 stat -#define fstat64 fstat -#define lstat64 lstat + +#ifdef _USE_STAT64 +typedef struct stat64 stat_t; +#else +typedef struct stat stat_t; #endif -#ifdef HAS_FREEBSD_ACL -#include -#endif #ifndef ALLPERMS #define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) #endif enum action { ACTION_OPEN, +#ifdef HAVE_OPENAT ACTION_OPENAT, +#endif ACTION_CREATE, ACTION_UNLINK, +#ifdef HAVE_UNLINKAT ACTION_UNLINKAT, +#endif ACTION_MKDIR, +#ifdef HAVE_MKDIRAT ACTION_MKDIRAT, +#endif ACTION_RMDIR, ACTION_LINK, +#ifdef HAVE_LINKAT ACTION_LINKAT, +#endif ACTION_SYMLINK, +#ifdef HAVE_SYMLINKAT ACTION_SYMLINKAT, +#endif ACTION_RENAME, +#ifdef HAVE_RENAMEAT ACTION_RENAMEAT, +#endif ACTION_MKFIFO, +#ifdef HAVE_MKFIFOAT ACTION_MKFIFOAT, +#endif ACTION_MKNOD, ACTION_MKNODAT, ACTION_BIND, -#ifdef HAS_BINDAT +#ifdef HAVE_BINDAT ACTION_BINDAT, #endif ACTION_CONNECT, -#ifdef HAS_CONNECTAT +#ifdef HAVE_CONNECTAT ACTION_CONNECTAT, #endif ACTION_CHMOD, ACTION_FCHMOD, -#ifdef HAS_LCHMOD +#ifdef HAVE_LCHMOD ACTION_LCHMOD, #endif ACTION_FCHMODAT, ACTION_CHOWN, ACTION_FCHOWN, ACTION_LCHOWN, +#ifdef HAVE_FCHOWNAT ACTION_FCHOWNAT, -#ifdef HAS_CHFLAGS +#endif +#ifdef HAVE_CHFLAGS ACTION_CHFLAGS, #endif -#ifdef HAS_FCHFLAGS +#ifdef HAVE_FCHFLAGS ACTION_FCHFLAGS, #endif -#ifdef HAS_CHFLAGSAT +#ifdef HAVE_CHFLAGSAT ACTION_CHFLAGSAT, #endif -#ifdef HAS_LCHFLAGS +#ifdef HAVE_LCHFLAGS ACTION_LCHFLAGS, #endif ACTION_TRUNCATE, ACTION_FTRUNCATE, +#ifdef HAVE_POSIX_FALLOCATE + ACTION_POSIX_FALLOCATE, +#endif ACTION_STAT, ACTION_FSTAT, ACTION_LSTAT, ACTION_FSTATAT, ACTION_PATHCONF, ACTION_FPATHCONF, -#ifdef HAS_LPATHCONF +#ifdef HAVE_LPATHCONF ACTION_LPATHCONF, #endif -#ifdef HAS_FREEBSD_ACL +#ifdef HAS_NFSV4_ACL_SUPPORT ACTION_PREPENDACL, ACTION_READACL, #endif ACTION_WRITE, +#ifdef HAVE_UTIMENSAT + ACTION_UTIMENSAT, +#endif }; #define TYPE_NONE 0x0000 #define TYPE_STRING 0x0001 #define TYPE_NUMBER 0x0002 #define TYPE_DESCRIPTOR 0x0003 #define TYPE_MASK 0x000f #define TYPE_OPTIONAL 0x0100 #define MAX_ARGS 8 struct syscall_desc { const char *sd_name; enum action sd_action; int sd_args[MAX_ARGS]; }; static struct syscall_desc syscalls[] = { { "open", ACTION_OPEN, { TYPE_STRING, TYPE_STRING, TYPE_NUMBER | TYPE_OPTIONAL, TYPE_NONE } }, +#ifdef HAVE_OPENAT { "openat", ACTION_OPENAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NUMBER | TYPE_OPTIONAL, TYPE_NONE } }, +#endif { "create", ACTION_CREATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, { "unlink", ACTION_UNLINK, { TYPE_STRING, TYPE_NONE } }, +#ifdef HAVE_UNLINKAT { "unlinkat", ACTION_UNLINKAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NONE } }, +#endif { "mkdir", ACTION_MKDIR, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, +#ifdef HAVE_MKDIRAT { "mkdirat", ACTION_MKDIRAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, +#endif { "rmdir", ACTION_RMDIR, { TYPE_STRING, TYPE_NONE } }, { "link", ACTION_LINK, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, +#ifdef HAVE_LINKAT { "linkat", ACTION_LINKAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NONE } }, +#endif { "symlink", ACTION_SYMLINK, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, +#ifdef HAVE_SYMLINKAT { "symlinkat", ACTION_SYMLINKAT, { TYPE_STRING, TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } }, +#endif { "rename", ACTION_RENAME, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, +#ifdef HAVE_RENAMEAT { "renameat", ACTION_RENAMEAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } }, +#endif { "mkfifo", ACTION_MKFIFO, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, +#ifdef HAVE_MKFIFOAT { "mkfifoat", ACTION_MKFIFOAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, +#endif { "mknod", ACTION_MKNOD, { TYPE_STRING, TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE} }, +#ifdef HAVE_MKNODAT { "mknodat", ACTION_MKNODAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE} }, +#endif { "bind", ACTION_BIND, { TYPE_STRING, TYPE_NONE } }, -#ifdef HAS_BINDAT +#ifdef HAVE_BINDAT { "bindat", ACTION_BINDAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } }, #endif { "connect", ACTION_CONNECT, { TYPE_STRING, TYPE_NONE } }, -#ifdef HAS_CONNECTAT +#ifdef HAVE_CONNECTAT { "connectat", ACTION_CONNECTAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } }, #endif { "chmod", ACTION_CHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, { "fchmod", ACTION_FCHMOD, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NONE } }, -#ifdef HAS_LCHMOD +#ifdef HAVE_LCHMOD { "lchmod", ACTION_LCHMOD, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, #endif +#ifdef HAVE_FCHMODAT { "fchmodat", ACTION_FCHMODAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NUMBER, TYPE_STRING, TYPE_NONE } }, +#endif { "chown", ACTION_CHOWN, { TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } }, { "fchown", ACTION_FCHOWN, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } }, { "lchown", ACTION_LCHOWN, { TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } }, +#ifdef HAVE_FCHOWNAT { "fchownat", ACTION_FCHOWNAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NUMBER, TYPE_NUMBER, TYPE_STRING, TYPE_NONE } }, -#ifdef HAS_CHFLAGS +#endif +#ifdef HAVE_CHFLAGS { "chflags", ACTION_CHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, #endif -#ifdef HAS_FCHFLAGS +#ifdef HAVE_FCHFLAGS { "fchflags", ACTION_FCHFLAGS, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } }, #endif -#ifdef HAS_CHFLAGSAT +#ifdef HAVE_CHFLAGSAT { "chflagsat", ACTION_CHFLAGSAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_STRING, TYPE_NONE } }, #endif -#ifdef HAS_LCHFLAGS +#ifdef HAVE_LCHFLAGS { "lchflags", ACTION_LCHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, #endif { "truncate", ACTION_TRUNCATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, { "ftruncate", ACTION_FTRUNCATE, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NONE } }, +#ifdef HAVE_POSIX_FALLOCATE + { "posix_fallocate", ACTION_POSIX_FALLOCATE, { TYPE_DESCRIPTOR, TYPE_NUMBER, TYPE_NUMBER, TYPE_NONE } }, +#endif { "stat", ACTION_STAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, { "fstat", ACTION_FSTAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } }, { "lstat", ACTION_LSTAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, +#ifdef HAVE_FSTATAT { "fstatat", ACTION_FSTATAT, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_STRING, TYPE_STRING, TYPE_NONE } }, +#endif { "pathconf", ACTION_PATHCONF, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, { "fpathconf", ACTION_FPATHCONF, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } }, -#ifdef HAS_LPATHCONF +#ifdef HAVE_LPATHCONF { "lpathconf", ACTION_LPATHCONF, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, #endif -#ifdef HAS_FREEBSD_ACL +#ifdef HAS_NFSV4_ACL_SUPPORT { "prependacl", ACTION_PREPENDACL, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, { "readacl", ACTION_READACL, { TYPE_STRING, TYPE_NONE } }, #endif { "write", ACTION_WRITE, { TYPE_DESCRIPTOR, TYPE_STRING, TYPE_NONE } }, +#ifdef HAVE_UTIMENSAT + { "utimensat", ACTION_UTIMENSAT, { + TYPE_DESCRIPTOR, /* Directory */ + TYPE_STRING, /* Relative path */ + TYPE_NUMBER, /* atime seconds */ + TYPE_STRING, /* atime nanoseconds */ + TYPE_NUMBER, /* mtime seconds */ + TYPE_STRING, /* mtime nanoseconds */ + TYPE_STRING, /* flags */}}, +#endif { NULL, -1, { TYPE_NONE } } }; struct flag { long long f_flag; const char *f_str; }; static struct flag open_flags[] = { -#ifdef O_RDONLY +#ifdef O_RDONLY { O_RDONLY, "O_RDONLY" }, #endif -#ifdef O_WRONLY +#ifdef O_WRONLY { O_WRONLY, "O_WRONLY" }, #endif -#ifdef O_RDWR +#ifdef O_RDWR { O_RDWR, "O_RDWR" }, #endif -#ifdef O_NONBLOCK +#ifdef O_NONBLOCK { O_NONBLOCK, "O_NONBLOCK" }, #endif -#ifdef O_APPEND +#ifdef O_APPEND { O_APPEND, "O_APPEND" }, #endif -#ifdef O_CREAT +#ifdef O_CREAT { O_CREAT, "O_CREAT" }, #endif -#ifdef O_TRUNC +#ifdef O_TRUNC { O_TRUNC, "O_TRUNC" }, #endif -#ifdef O_EXCL +#ifdef O_EXCL { O_EXCL, "O_EXCL" }, #endif -#ifdef O_SHLOCK +#ifdef O_SHLOCK { O_SHLOCK, "O_SHLOCK" }, #endif -#ifdef O_EXLOCK +#ifdef O_EXLOCK { O_EXLOCK, "O_EXLOCK" }, #endif -#ifdef O_DIRECT +#ifdef O_DIRECT { O_DIRECT, "O_DIRECT" }, #endif -#ifdef O_FSYNC +#ifdef O_FSYNC { O_FSYNC, "O_FSYNC" }, #endif -#ifdef O_SYNC +#ifdef O_SYNC { O_SYNC, "O_SYNC" }, #endif -#ifdef O_NOFOLLOW +#ifdef O_NOFOLLOW { O_NOFOLLOW, "O_NOFOLLOW" }, #endif -#ifdef O_NOCTTY +#ifdef O_NOCTTY { O_NOCTTY, "O_NOCTTY" }, #endif -#ifdef O_DIRECTORY +#ifdef O_DIRECTORY { O_DIRECTORY, "O_DIRECTORY" }, #endif { 0, NULL } }; -#ifdef HAS_CHFLAGS +#ifdef HAVE_CHFLAGS static struct flag chflags_flags[] = { -#ifdef UF_NODUMP +#ifdef UF_NODUMP { UF_NODUMP, "UF_NODUMP" }, #endif -#ifdef UF_IMMUTABLE +#ifdef UF_IMMUTABLE { UF_IMMUTABLE, "UF_IMMUTABLE" }, #endif -#ifdef UF_APPEND +#ifdef UF_APPEND { UF_APPEND, "UF_APPEND" }, #endif -#ifdef UF_NOUNLINK +#ifdef UF_NOUNLINK { UF_NOUNLINK, "UF_NOUNLINK" }, #endif -#ifdef UF_OPAQUE +#ifdef UF_OPAQUE { UF_OPAQUE, "UF_OPAQUE" }, #endif -#ifdef SF_ARCHIVED +#ifdef SF_ARCHIVED { SF_ARCHIVED, "SF_ARCHIVED" }, #endif -#ifdef SF_IMMUTABLE +#ifdef SF_IMMUTABLE { SF_IMMUTABLE, "SF_IMMUTABLE" }, #endif -#ifdef SF_APPEND +#ifdef SF_APPEND { SF_APPEND, "SF_APPEND" }, #endif -#ifdef SF_NOUNLINK +#ifdef SF_NOUNLINK { SF_NOUNLINK, "SF_NOUNLINK" }, #endif -#ifdef SF_SNAPSHOT +#ifdef SF_SNAPSHOT { SF_SNAPSHOT, "SF_SNAPSHOT" }, #endif { 0, NULL } }; #endif +#ifdef HAVE_UNLINKAT static struct flag unlinkat_flags[] = { { AT_REMOVEDIR, "AT_REMOVEDIR" }, { 0, NULL } }; +#endif +#ifdef HAVE_LINKAT static struct flag linkat_flags[] = { +#ifdef AT_SYMLINK_FOLLOW { AT_SYMLINK_FOLLOW, "AT_SYMLINK_FOLLOW" }, +#endif { 0, NULL } }; +#endif +#ifdef HAVE_CHFLAGSAT static struct flag chflagsat_flags[] = { { AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" }, { 0, NULL } }; +#endif +#ifdef HAVE_FCHMODAT static struct flag fchmodat_flags[] = { { AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" }, { 0, NULL } }; +#endif +#ifdef HAVE_FCHOWNAT static struct flag fchownat_flags[] = { { AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" }, { 0, NULL } }; +#endif +#ifdef HAVE_FSTATAT static struct flag fstatat_flags[] = { { AT_SYMLINK_NOFOLLOW, "AT_SYMLINK_NOFOLLOW" }, { 0, NULL } }; +#endif struct name { int n_name; const char *n_str; }; static struct name pathconf_names[] = { -#ifdef _PC_LINK_MAX +#ifdef _PC_LINK_MAX { _PC_LINK_MAX, "_PC_LINK_MAX" }, #endif -#ifdef _PC_NAME_MAX +#ifdef _PC_NAME_MAX { _PC_NAME_MAX, "_PC_NAME_MAX" }, #endif -#ifdef _PC_PATH_MAX +#ifdef _PC_PATH_MAX { _PC_PATH_MAX, "_PC_PATH_MAX" }, #endif -#ifdef _PC_SYMLINK_MAX +#ifdef _PC_SYMLINK_MAX { _PC_SYMLINK_MAX, "_PC_SYMLINK_MAX" }, #endif { 0, NULL } }; static const char *err2str(int error); static int *descriptors; static int ndescriptors; static void usage(void) { fprintf(stderr, "usage: pjdfstest [-U umask] [-u uid] [-g gid1[,gid2[...]]] syscall args ...\n"); exit(1); } static long long str2flags(struct flag *tflags, char *sflags) { long long flags = 0; unsigned int i; char *f; /* 'none' or '0' means no flags */ if (strcmp(sflags, "none") == 0 || strcmp(sflags, "0") == 0) return (0); for (f = strtok(sflags, ",|"); f != NULL; f = strtok(NULL, ",|")) { for (i = 0; tflags[i].f_str != NULL; i++) { if (strcmp(tflags[i].f_str, f) == 0) break; } if (tflags[i].f_str == NULL) { fprintf(stderr, "unknown flag '%s'\n", f); exit(1); } flags |= tflags[i].f_flag; } return (flags); } -#ifdef HAS_CHFLAGS +#ifdef HAVE_CHFLAGS static char * flags2str(struct flag *tflags, long long flags) { static char sflags[1024]; unsigned int i; sflags[0] = '\0'; for (i = 0; tflags[i].f_str != NULL; i++) { if (flags & tflags[i].f_flag) { if (sflags[0] != '\0') strlcat(sflags, ",", sizeof(sflags)); strlcat(sflags, tflags[i].f_str, sizeof(sflags)); } } if (sflags[0] == '\0') strlcpy(sflags, "none", sizeof(sflags)); return (sflags); } #endif static int str2name(struct name *names, char *name) { unsigned int i; for (i = 0; names[i].n_str != NULL; i++) { if (strcmp(names[i].n_str, name) == 0) return (names[i].n_name); } return (-1); } static struct syscall_desc * find_syscall(const char *name) { int i; for (i = 0; syscalls[i].sd_name != NULL; i++) { if (strcmp(syscalls[i].sd_name, name) == 0) return (&syscalls[i]); } return (NULL); } static void -show_stat(struct stat64 *sp, const char *what) +show_stat(stat_t *sp, const char *what) { if (strcmp(what, "mode") == 0) printf("0%o", (unsigned int)(sp->st_mode & ALLPERMS)); else if (strcmp(what, "inode") == 0) printf("%lld", (long long)sp->st_ino); else if (strcmp(what, "nlink") == 0) printf("%lld", (long long)sp->st_nlink); else if (strcmp(what, "uid") == 0) printf("%d", (int)sp->st_uid); else if (strcmp(what, "gid") == 0) printf("%d", (int)sp->st_gid); else if (strcmp(what, "size") == 0) printf("%lld", (long long)sp->st_size); else if (strcmp(what, "blocks") == 0) printf("%lld", (long long)sp->st_blocks); else if (strcmp(what, "atime") == 0) printf("%lld", (long long)sp->st_atime); - else if (strcmp(what, "mtime") == 0) - printf("%lld", (long long)sp->st_mtime); +#if defined(HAVE_STRUCT_STAT_ST_ATIM) || \ + defined(HAVE_STRUCT_STAT_ST_ATIMESPEC) + else if (strcmp(what, "atime_ns") == 0) +#ifdef HAVE_STRUCT_STAT_ST_ATIMESPEC + printf("%lld", (long long)sp->st_atimespec.tv_nsec); +#else + printf("%lld", (long long)sp->st_atim.tv_nsec); +#endif +#endif /* st_atim* */ else if (strcmp(what, "ctime") == 0) printf("%lld", (long long)sp->st_ctime); -#ifdef HAS_CHFLAGS +#if defined(HAVE_STRUCT_STAT_ST_CTIM) || \ + defined(HAVE_STRUCT_STAT_ST_CTIMESPEC) + else if (strcmp(what, "ctime_ns") == 0) +#ifdef HAVE_STRUCT_STAT_ST_CTIMESPEC + printf("%lld", (long long)sp->st_ctimespec.tv_nsec); +#else + printf("%lld", (long long)sp->st_ctim.tv_nsec); +#endif +#endif /* st_ctim* */ + else if (strcmp(what, "mtime") == 0) + printf("%lld", (long long)sp->st_mtime); + else if (strcmp(what, "mtime_ns") == 0) +#if defined(HAVE_STRUCT_STAT_ST_MTIM) || \ + defined(HAVE_STRUCT_STAT_ST_MTIMESPEC) +#ifdef HAVE_STRUCT_STAT_ST_MTIMESPEC + printf("%lld", (long long)sp->st_mtimespec.tv_nsec); +#else + printf("%lld", (long long)sp->st_mtim.tv_nsec); +#endif +#endif /* st_mtim* */ +#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIME + else if (strcmp(what, "birthtime") == 0) + printf("%lld", (long long)sp->st_birthtime); +#endif /* st_birthtime */ +#if defined(HAVE_STRUCT_STAT_ST_BIRTHTIM) || \ + defined(HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC) + else if (strcmp(what, "birthtime_ns") == 0) +#ifdef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC + printf("%lld", (long long)sp->st_birthtimespec.tv_nsec); +#else + printf("%lld", (long long)sp->st_birthtim.tv_nsec); +#endif +#endif /* st_birthtim{,espec} */ +#ifdef HAVE_CHFLAGS else if (strcmp(what, "flags") == 0) printf("%s", flags2str(chflags_flags, (long long)sp->st_flags)); #endif else if (strcmp(what, "major") == 0) printf("%u", (unsigned int)major(sp->st_rdev)); else if (strcmp(what, "minor") == 0) printf("%u", (unsigned int)minor(sp->st_rdev)); else if (strcmp(what, "type") == 0) { switch (sp->st_mode & S_IFMT) { case S_IFIFO: printf("fifo"); break; case S_IFCHR: printf("char"); break; case S_IFDIR: printf("dir"); break; case S_IFBLK: printf("block"); break; case S_IFREG: printf("regular"); break; case S_IFLNK: printf("symlink"); break; case S_IFSOCK: printf("socket"); break; default: printf("unknown"); break; } } else { printf("unknown"); } } static void -show_stats(struct stat64 *sp, char *what) +show_stats(stat_t *sp, char *what) { const char *s = ""; char *w; for (w = strtok(what, ","); w != NULL; w = strtok(NULL, ",")) { printf("%s", s); show_stat(sp, w); s = ","; } printf("\n"); } static void descriptor_add(int fd) { ndescriptors++; if (descriptors == NULL) { descriptors = malloc(sizeof(descriptors[0]) * ndescriptors); } else { descriptors = realloc(descriptors, sizeof(descriptors[0]) * ndescriptors); } assert(descriptors != NULL); descriptors[ndescriptors - 1] = fd; } static int descriptor_get(int pos) { if (pos < 0 || pos >= ndescriptors) { fprintf(stderr, "invalid descriptor %d\n", pos); exit(1); } return (descriptors[pos]); } static unsigned int call_syscall(struct syscall_desc *scall, char *argv[]) { - struct stat64 sb; + stat_t sb; +#ifdef HAVE_UTIMENSAT + struct timespec times[2]; + int flag; +#endif long long flags; unsigned int i; char *endp; int name, rval; union { char *str; long long num; } args[MAX_ARGS]; -#ifdef HAS_FREEBSD_ACL +#ifdef HAS_NFSV4_ACL_SUPPORT int entry_id = ACL_FIRST_ENTRY; acl_t acl, newacl; acl_entry_t entry, newentry; #endif /* * Verify correctness of the arguments. */ for (i = 0; i < sizeof(args)/sizeof(args[0]); i++) { if (scall->sd_args[i] == TYPE_NONE) { if (argv[i] == NULL || strcmp(argv[i], ":") == 0) break; fprintf(stderr, "too many arguments [%s]\n", argv[i]); exit(1); } else { if (argv[i] == NULL || strcmp(argv[i], ":") == 0) { if (scall->sd_args[i] & TYPE_OPTIONAL) break; fprintf(stderr, "too few arguments\n"); exit(1); } if ((scall->sd_args[i] & TYPE_MASK) == TYPE_STRING) { if (strcmp(argv[i], "NULL") == 0) args[i].str = NULL; else if (strcmp(argv[i], "DEADCODE") == 0) args[i].str = (void *)0xdeadc0de; else args[i].str = argv[i]; } else if ((scall->sd_args[i] & TYPE_MASK) == TYPE_NUMBER) { args[i].num = strtoll(argv[i], &endp, 0); if (*endp != '\0' && !isspace((unsigned char)*endp)) { fprintf(stderr, "invalid argument %u, number expected [%s]\n", i, endp); exit(1); } } else if ((scall->sd_args[i] & TYPE_MASK) == TYPE_DESCRIPTOR) { if (strcmp(argv[i], "AT_FDCWD") == 0) { args[i].num = AT_FDCWD; } else if (strcmp(argv[i], "BADFD") == 0) { /* In case AT_FDCWD is -1 on some systems... */ if (AT_FDCWD == -1) args[i].num = -2; else args[i].num = -1; } else { int pos; pos = strtoll(argv[i], &endp, 0); if (*endp != '\0' && !isspace((unsigned char)*endp)) { fprintf(stderr, "invalid argument %u, number expected [%s]\n", i, endp); exit(1); } args[i].num = descriptor_get(pos); } } } } /* * Call the given syscall. */ #define NUM(n) (args[(n)].num) #define STR(n) (args[(n)].str) switch (scall->sd_action) { case ACTION_OPEN: flags = str2flags(open_flags, STR(1)); if (flags & O_CREAT) { if (i == 2) { fprintf(stderr, "too few arguments\n"); exit(1); } rval = open(STR(0), (int)flags, (mode_t)NUM(2)); } else { if (i == 3) { fprintf(stderr, "too many arguments\n"); exit(1); } rval = open(STR(0), (int)flags); } if (rval >= 0) descriptor_add(rval); break; +#ifdef HAVE_OPENAT case ACTION_OPENAT: flags = str2flags(open_flags, STR(2)); if (flags & O_CREAT) { if (i == 3) { fprintf(stderr, "too few arguments\n"); exit(1); } rval = openat(NUM(0), STR(1), (int)flags, (mode_t)NUM(3)); } else { if (i == 4) { fprintf(stderr, "too many arguments\n"); exit(1); } rval = openat(NUM(0), STR(1), (int)flags); } if (rval >= 0) descriptor_add(rval); break; +#endif case ACTION_CREATE: rval = open(STR(0), O_CREAT | O_EXCL, (mode_t)NUM(1)); if (rval >= 0) close(rval); break; case ACTION_UNLINK: rval = unlink(STR(0)); break; +#ifdef HAVE_UNLINKAT case ACTION_UNLINKAT: rval = unlinkat(NUM(0), STR(1), (int)str2flags(unlinkat_flags, STR(2))); break; +#endif case ACTION_MKDIR: rval = mkdir(STR(0), (mode_t)NUM(1)); break; +#ifdef HAVE_MKDIRAT case ACTION_MKDIRAT: rval = mkdirat(NUM(0), STR(1), (mode_t)NUM(2)); break; +#endif case ACTION_RMDIR: rval = rmdir(STR(0)); break; case ACTION_LINK: rval = link(STR(0), STR(1)); break; +#ifdef HAVE_LINKAT case ACTION_LINKAT: rval = linkat(NUM(0), STR(1), NUM(2), STR(3), (int)str2flags(linkat_flags, STR(4))); break; +#endif case ACTION_SYMLINK: rval = symlink(STR(0), STR(1)); break; +#ifdef HAVE_SYMLINKAT case ACTION_SYMLINKAT: rval = symlinkat(STR(0), NUM(1), STR(2)); break; +#endif case ACTION_RENAME: rval = rename(STR(0), STR(1)); break; +#ifdef HAVE_RENAMEAT case ACTION_RENAMEAT: rval = renameat(NUM(0), STR(1), NUM(2), STR(3)); break; +#endif case ACTION_MKFIFO: rval = mkfifo(STR(0), (mode_t)NUM(1)); break; +#ifdef HAVE_MKFIFOAT case ACTION_MKFIFOAT: rval = mkfifoat(NUM(0), STR(1), (mode_t)NUM(2)); break; +#endif case ACTION_MKNOD: +#ifdef HAVE_MKNODAT case ACTION_MKNODAT: +#endif { mode_t ntype; dev_t dev; int fa; switch (scall->sd_action) { case ACTION_MKNOD: fa = 0; break; +#ifdef HAVE_MKNODAT case ACTION_MKNODAT: fa = 1; break; +#endif default: abort(); } dev = makedev(NUM(fa + 3), NUM(fa + 4)); if (strcmp(STR(fa + 1), "c") == 0) /* character device */ ntype = S_IFCHR; else if (strcmp(STR(fa + 1), "b") == 0) /* block device */ ntype = S_IFBLK; else if (strcmp(STR(fa + 1), "f") == 0) /* fifo special */ ntype = S_IFIFO; else if (strcmp(STR(fa + 1), "d") == 0) /* directory */ ntype = S_IFDIR; else if (strcmp(STR(fa + 1), "o") == 0) /* regular file */ ntype = S_IFREG; else { fprintf(stderr, "wrong argument 1\n"); exit(1); } switch (scall->sd_action) { case ACTION_MKNOD: rval = mknod(STR(0), ntype | NUM(2), dev); break; +#ifdef HAVE_MKNODAT case ACTION_MKNODAT: rval = mknodat(NUM(0), STR(1), ntype | NUM(3), dev); break; +#endif default: abort(); } break; } case ACTION_BIND: { struct sockaddr_un sunx; sunx.sun_family = AF_UNIX; strncpy(sunx.sun_path, STR(0), sizeof(sunx.sun_path) - 1); sunx.sun_path[sizeof(sunx.sun_path) - 1] = '\0'; rval = socket(AF_UNIX, SOCK_STREAM, 0); if (rval < 0) break; rval = bind(rval, (struct sockaddr *)&sunx, sizeof(sunx)); break; } -#ifdef HAS_BINDAT +#ifdef HAVE_BINDAT case ACTION_BINDAT: { struct sockaddr_un sunx; sunx.sun_family = AF_UNIX; strncpy(sunx.sun_path, STR(1), sizeof(sunx.sun_path) - 1); sunx.sun_path[sizeof(sunx.sun_path) - 1] = '\0'; rval = socket(AF_UNIX, SOCK_STREAM, 0); if (rval < 0) break; rval = bindat(NUM(0), rval, (struct sockaddr *)&sunx, sizeof(sunx)); break; } #endif case ACTION_CONNECT: { struct sockaddr_un sunx; sunx.sun_family = AF_UNIX; strncpy(sunx.sun_path, STR(0), sizeof(sunx.sun_path) - 1); sunx.sun_path[sizeof(sunx.sun_path) - 1] = '\0'; rval = socket(AF_UNIX, SOCK_STREAM, 0); if (rval < 0) break; rval = connect(rval, (struct sockaddr *)&sunx, sizeof(sunx)); break; } -#ifdef HAS_CONNECTAT +#ifdef HAVE_CONNECTAT case ACTION_CONNECTAT: { struct sockaddr_un sunx; sunx.sun_family = AF_UNIX; strncpy(sunx.sun_path, STR(1), sizeof(sunx.sun_path) - 1); sunx.sun_path[sizeof(sunx.sun_path) - 1] = '\0'; rval = socket(AF_UNIX, SOCK_STREAM, 0); if (rval < 0) break; rval = connectat(NUM(0), rval, (struct sockaddr *)&sunx, sizeof(sunx)); break; } #endif case ACTION_CHMOD: rval = chmod(STR(0), (mode_t)NUM(1)); break; case ACTION_FCHMOD: rval = fchmod(NUM(0), (mode_t)NUM(1)); break; -#ifdef HAS_LCHMOD +#ifdef HAVE_LCHMOD case ACTION_LCHMOD: rval = lchmod(STR(0), (mode_t)NUM(1)); break; #endif +#ifdef HAVE_FCHMODAT case ACTION_FCHMODAT: rval = fchmodat(NUM(0), STR(1), (mode_t)NUM(2), str2flags(fchmodat_flags, STR(3))); break; +#endif case ACTION_CHOWN: rval = chown(STR(0), (uid_t)NUM(1), (gid_t)NUM(2)); break; case ACTION_FCHOWN: rval = fchown(NUM(0), (uid_t)NUM(1), (gid_t)NUM(2)); break; case ACTION_LCHOWN: rval = lchown(STR(0), (uid_t)NUM(1), (gid_t)NUM(2)); break; +#ifdef HAVE_FCHOWNAT case ACTION_FCHOWNAT: rval = fchownat(NUM(0), STR(1), (uid_t)NUM(2), (gid_t)NUM(3), (int)str2flags(fchownat_flags, STR(4))); break; -#ifdef HAS_CHFLAGS +#endif +#ifdef HAVE_CHFLAGS case ACTION_CHFLAGS: rval = chflags(STR(0), (unsigned long)str2flags(chflags_flags, STR(1))); break; #endif -#ifdef HAS_FCHFLAGS +#ifdef HAVE_FCHFLAGS case ACTION_FCHFLAGS: rval = fchflags(NUM(0), (unsigned long)str2flags(chflags_flags, STR(1))); break; #endif -#ifdef HAS_CHFLAGSAT +#ifdef HAVE_CHFLAGSAT case ACTION_CHFLAGSAT: rval = chflagsat(NUM(0), STR(1), (unsigned long)str2flags(chflags_flags, STR(2)), (int)str2flags(chflagsat_flags, STR(3))); break; #endif -#ifdef HAS_LCHFLAGS +#ifdef HAVE_LCHFLAGS case ACTION_LCHFLAGS: rval = lchflags(STR(0), (unsigned long)str2flags(chflags_flags, STR(1))); break; #endif case ACTION_TRUNCATE: +#ifdef _USE_STAT64 rval = truncate64(STR(0), NUM(1)); +#else + rval = truncate(STR(0), NUM(1)); +#endif break; case ACTION_FTRUNCATE: +#ifdef _USE_STAT64 rval = ftruncate64(NUM(0), NUM(1)); +#else + rval = ftruncate(NUM(0), NUM(1)); +#endif break; +#ifdef HAVE_POSIX_FALLOCATE + case ACTION_POSIX_FALLOCATE: + rval = posix_fallocate(NUM(0), NUM(1), NUM(2)); + if (rval != 0) { + errno = rval; + rval = -1; + } + break; +#endif case ACTION_STAT: +#ifdef _USE_STAT64 rval = stat64(STR(0), &sb); +#else + rval = stat(STR(0), &sb); +#endif if (rval == 0) { show_stats(&sb, STR(1)); return (i); } break; case ACTION_FSTAT: +#ifdef _USE_STAT64 rval = fstat64(NUM(0), &sb); +#else + rval = fstat(NUM(0), &sb); +#endif if (rval == 0) { show_stats(&sb, STR(1)); return (i); } break; case ACTION_LSTAT: +#ifdef _USE_STAT64 rval = lstat64(STR(0), &sb); +#else + rval = lstat(STR(0), &sb); +#endif if (rval == 0) { show_stats(&sb, STR(1)); return (i); } break; +#ifdef HAVE_FSTATAT case ACTION_FSTATAT: rval = fstatat(NUM(0), STR(1), &sb, (int)str2flags(fstatat_flags, STR(2))); if (rval == 0) { show_stats(&sb, STR(3)); return (i); } break; +#endif case ACTION_PATHCONF: case ACTION_FPATHCONF: -#ifdef HAS_LPATHCONF +#ifdef HAVE_LPATHCONF case ACTION_LPATHCONF: #endif { long lrval; name = str2name(pathconf_names, STR(1)); if (name == -1) { fprintf(stderr, "unknown name %s", STR(1)); exit(1); } errno = 0; switch (scall->sd_action) { case ACTION_PATHCONF: lrval = pathconf(STR(0), name); break; case ACTION_FPATHCONF: lrval = fpathconf(NUM(0), name); break; -#ifdef HAS_LPATHCONF +#ifdef HAVE_LPATHCONF case ACTION_LPATHCONF: lrval = lpathconf(STR(0), name); break; #endif default: abort(); } if (lrval == -1 && errno == 0) { printf("unlimited\n"); return (i); } else if (lrval >= 0) { printf("%ld\n", lrval); return (i); } rval = -1; break; } -#ifdef HAS_FREEBSD_ACL +#ifdef HAS_NFSV4_ACL_SUPPORT case ACTION_PREPENDACL: rval = -1; acl = acl_get_file(STR(0), ACL_TYPE_NFS4); if (acl == NULL) break; newacl = acl_from_text(STR(1)); if (acl == NULL) break; while (acl_get_entry(newacl, entry_id, &newentry) == 1) { entry_id = ACL_NEXT_ENTRY; if (acl_create_entry_np(&acl, &entry, 0)) break; if (acl_copy_entry(entry, newentry)) break; } rval = acl_set_file(STR(0), ACL_TYPE_NFS4, acl); break; case ACTION_READACL: acl = acl_get_file(STR(0), ACL_TYPE_NFS4); if (acl == NULL) rval = -1; else rval = 0; break; #endif case ACTION_WRITE: rval = write(NUM(0), STR(1), strlen(STR(1))); break; +#ifdef HAVE_UTIMENSAT + case ACTION_UTIMENSAT: + times[0].tv_sec = NUM(2); + if (strcmp(STR(3), "UTIME_NOW") == 0) + times[0].tv_nsec = UTIME_NOW; + else if (strcmp(STR(3), "UTIME_OMIT") == 0) + times[0].tv_nsec = UTIME_OMIT; + else + times[0].tv_nsec = strtol(STR(3), NULL, 10); + times[1].tv_sec = NUM(4); + if (strcmp(STR(5), "UTIME_NOW") == 0) + times[1].tv_nsec = UTIME_NOW; + else if (strcmp(STR(5), "UTIME_OMIT") == 0) + times[1].tv_nsec = UTIME_OMIT; + else + times[1].tv_nsec = strtol(STR(5), NULL, 10); + if (strcmp(STR(6), "AT_SYMLINK_NOFOLLOW") == 0) + flag = AT_SYMLINK_NOFOLLOW; + else + flag = strtol(STR(6), NULL, 10); + rval = utimensat(NUM(0), STR(1), times, flag); + break; +#endif default: fprintf(stderr, "unsupported syscall\n"); exit(1); } #undef STR #undef NUM if (rval < 0) { const char *serrno; serrno = err2str(errno); fprintf(stderr, "%s returned %d\n", scall->sd_name, rval); printf("%s\n", serrno); exit(1); } printf("0\n"); return (i); } static void set_gids(char *gids) { gid_t *gidset; long ngroups; char *g, *endp; unsigned i; ngroups = sysconf(_SC_NGROUPS_MAX); assert(ngroups > 0); gidset = malloc(sizeof(*gidset) * ngroups); assert(gidset != NULL); for (i = 0, g = strtok(gids, ","); g != NULL; g = strtok(NULL, ","), i++) { - if (i >= ngroups) { + if ((long)i >= ngroups) { fprintf(stderr, "too many gids\n"); exit(1); } gidset[i] = strtol(g, &endp, 0); if (*endp != '\0' && !isspace((unsigned char)*endp)) { fprintf(stderr, "invalid gid '%s' - number expected\n", g); exit(1); } } if (setgroups(i, gidset) < 0) { fprintf(stderr, "cannot change groups: %s\n", strerror(errno)); exit(1); } if (setegid(gidset[0]) < 0) { fprintf(stderr, "cannot change effective gid: %s\n", strerror(errno)); exit(1); } free(gidset); } int main(int argc, char *argv[]) { struct syscall_desc *scall; unsigned int n; char *gids, *endp; int uid, umsk, ch; uid = -1; gids = NULL; umsk = 0; while ((ch = getopt(argc, argv, "g:u:U:")) != -1) { switch(ch) { case 'g': gids = optarg; break; case 'u': uid = (int)strtol(optarg, &endp, 0); if (*endp != '\0' && !isspace((unsigned char)*endp)) { fprintf(stderr, "invalid uid '%s' - number " "expected\n", optarg); exit(1); } break; case 'U': umsk = (int)strtol(optarg, &endp, 0); if (*endp != '\0' && !isspace((unsigned char)*endp)) { fprintf(stderr, "invalid umask '%s' - number " "expected\n", optarg); exit(1); } break; default: usage(); } } argc -= optind; argv += optind; if (argc < 1) { fprintf(stderr, "too few arguments\n"); usage(); } if (gids != NULL) { fprintf(stderr, "changing groups to %s\n", gids); set_gids(gids); } if (uid != -1) { fprintf(stderr, "changing uid to %d\n", uid); if (setuid(uid) < 0) { fprintf(stderr, "cannot change uid: %s\n", strerror(errno)); exit(1); } } /* Change umask to requested value or to 0, if not requested. */ umask(umsk); for (;;) { scall = find_syscall(argv[0]); if (scall == NULL) { fprintf(stderr, "syscall '%s' not supported\n", argv[0]); exit(1); } argc++; argv++; n = call_syscall(scall, argv); argc += n; argv += n; if (argv[0] == NULL) break; argc++; argv++; } exit(0); } static const char * err2str(int error) { static char errnum[8]; switch (error) { -#ifdef EPERM +#ifdef EPERM case EPERM: return ("EPERM"); #endif -#ifdef ENOENT +#ifdef ENOENT case ENOENT: return ("ENOENT"); #endif -#ifdef ESRCH +#ifdef ESRCH case ESRCH: return ("ESRCH"); #endif -#ifdef EINTR +#ifdef EINTR case EINTR: return ("EINTR"); #endif -#ifdef EIO +#ifdef EIO case EIO: return ("EIO"); #endif -#ifdef ENXIO +#ifdef ENXIO case ENXIO: return ("ENXIO"); #endif -#ifdef E2BIG +#ifdef E2BIG case E2BIG: return ("E2BIG"); #endif -#ifdef ENOEXEC +#ifdef ENOEXEC case ENOEXEC: return ("ENOEXEC"); #endif -#ifdef EBADF +#ifdef EBADF case EBADF: return ("EBADF"); #endif -#ifdef ECHILD +#ifdef ECHILD case ECHILD: return ("ECHILD"); #endif -#ifdef EDEADLK +#ifdef EDEADLK case EDEADLK: return ("EDEADLK"); #endif -#ifdef ENOMEM +#ifdef ENOMEM case ENOMEM: return ("ENOMEM"); #endif -#ifdef EACCES +#ifdef EACCES case EACCES: return ("EACCES"); #endif -#ifdef EFAULT +#ifdef EFAULT case EFAULT: return ("EFAULT"); #endif -#ifdef ENOTBLK +#ifdef ENOTBLK case ENOTBLK: return ("ENOTBLK"); #endif -#ifdef EBUSY +#ifdef EBUSY case EBUSY: return ("EBUSY"); #endif -#ifdef EEXIST +#ifdef EEXIST case EEXIST: return ("EEXIST"); #endif -#ifdef EXDEV +#ifdef EXDEV case EXDEV: return ("EXDEV"); #endif -#ifdef ENODEV +#ifdef ENODEV case ENODEV: return ("ENODEV"); #endif -#ifdef ENOTDIR +#ifdef ENOTDIR case ENOTDIR: return ("ENOTDIR"); #endif -#ifdef EISDIR +#ifdef EISDIR case EISDIR: return ("EISDIR"); #endif -#ifdef EINVAL +#ifdef EINVAL case EINVAL: return ("EINVAL"); #endif -#ifdef ENFILE +#ifdef ENFILE case ENFILE: return ("ENFILE"); #endif -#ifdef EMFILE +#ifdef EMFILE case EMFILE: return ("EMFILE"); #endif -#ifdef ENOTTY +#ifdef ENOTTY case ENOTTY: return ("ENOTTY"); #endif -#ifdef ETXTBSY +#ifdef ETXTBSY case ETXTBSY: return ("ETXTBSY"); #endif -#ifdef EFBIG +#ifdef EFBIG case EFBIG: return ("EFBIG"); #endif -#ifdef ENOSPC +#ifdef ENOSPC case ENOSPC: return ("ENOSPC"); #endif -#ifdef ESPIPE +#ifdef ESPIPE case ESPIPE: return ("ESPIPE"); #endif -#ifdef EROFS +#ifdef EROFS case EROFS: return ("EROFS"); #endif -#ifdef EMLINK +#ifdef EMLINK case EMLINK: return ("EMLINK"); #endif -#ifdef EPIPE +#ifdef EPIPE case EPIPE: return ("EPIPE"); #endif -#ifdef EDOM +#ifdef EDOM case EDOM: return ("EDOM"); #endif -#ifdef ERANGE +#ifdef ERANGE case ERANGE: return ("ERANGE"); #endif -#ifdef EAGAIN +#ifdef EAGAIN case EAGAIN: return ("EAGAIN"); #endif -#ifdef EINPROGRESS +#ifdef EINPROGRESS case EINPROGRESS: return ("EINPROGRESS"); #endif -#ifdef EALREADY +#ifdef EALREADY case EALREADY: return ("EALREADY"); #endif -#ifdef ENOTSOCK +#ifdef ENOTSOCK case ENOTSOCK: return ("ENOTSOCK"); #endif -#ifdef EDESTADDRREQ +#ifdef EDESTADDRREQ case EDESTADDRREQ: return ("EDESTADDRREQ"); #endif -#ifdef EMSGSIZE +#ifdef EMSGSIZE case EMSGSIZE: return ("EMSGSIZE"); #endif -#ifdef EPROTOTYPE +#ifdef EPROTOTYPE case EPROTOTYPE: return ("EPROTOTYPE"); #endif -#ifdef ENOPROTOOPT +#ifdef ENOPROTOOPT case ENOPROTOOPT: return ("ENOPROTOOPT"); #endif -#ifdef EPROTONOSUPPORT +#ifdef EPROTONOSUPPORT case EPROTONOSUPPORT: return ("EPROTONOSUPPORT"); #endif -#ifdef ESOCKTNOSUPPORT +#ifdef ESOCKTNOSUPPORT case ESOCKTNOSUPPORT: return ("ESOCKTNOSUPPORT"); #endif -#ifdef EOPNOTSUPP +#ifdef EOPNOTSUPP case EOPNOTSUPP: return ("EOPNOTSUPP"); #endif -#ifdef EPFNOSUPPORT +#ifdef EPFNOSUPPORT case EPFNOSUPPORT: return ("EPFNOSUPPORT"); #endif -#ifdef EAFNOSUPPORT +#ifdef EAFNOSUPPORT case EAFNOSUPPORT: return ("EAFNOSUPPORT"); #endif -#ifdef EADDRINUSE +#ifdef EADDRINUSE case EADDRINUSE: return ("EADDRINUSE"); #endif -#ifdef EADDRNOTAVAIL +#ifdef EADDRNOTAVAIL case EADDRNOTAVAIL: return ("EADDRNOTAVAIL"); #endif -#ifdef ENETDOWN +#ifdef ENETDOWN case ENETDOWN: return ("ENETDOWN"); #endif -#ifdef ENETUNREACH +#ifdef ENETUNREACH case ENETUNREACH: return ("ENETUNREACH"); #endif -#ifdef ENETRESET +#ifdef ENETRESET case ENETRESET: return ("ENETRESET"); #endif -#ifdef ECONNABORTED +#ifdef ECONNABORTED case ECONNABORTED: return ("ECONNABORTED"); #endif -#ifdef ECONNRESET +#ifdef ECONNRESET case ECONNRESET: return ("ECONNRESET"); #endif -#ifdef ENOBUFS +#ifdef ENOBUFS case ENOBUFS: return ("ENOBUFS"); #endif -#ifdef EISCONN +#ifdef EISCONN case EISCONN: return ("EISCONN"); #endif -#ifdef ENOTCONN +#ifdef ENOTCONN case ENOTCONN: return ("ENOTCONN"); #endif -#ifdef ESHUTDOWN +#ifdef ESHUTDOWN case ESHUTDOWN: return ("ESHUTDOWN"); #endif -#ifdef ETOOMANYREFS +#ifdef ETOOMANYREFS case ETOOMANYREFS: return ("ETOOMANYREFS"); #endif -#ifdef ETIMEDOUT +#ifdef ETIMEDOUT case ETIMEDOUT: return ("ETIMEDOUT"); #endif -#ifdef ECONNREFUSED +#ifdef ECONNREFUSED case ECONNREFUSED: return ("ECONNREFUSED"); #endif -#ifdef ELOOP +#ifdef ELOOP case ELOOP: return ("ELOOP"); #endif -#ifdef ENAMETOOLONG +#ifdef ENAMETOOLONG case ENAMETOOLONG: return ("ENAMETOOLONG"); #endif -#ifdef EHOSTDOWN +#ifdef EHOSTDOWN case EHOSTDOWN: return ("EHOSTDOWN"); #endif -#ifdef EHOSTUNREACH +#ifdef EHOSTUNREACH case EHOSTUNREACH: return ("EHOSTUNREACH"); #endif -#ifdef ENOTEMPTY +#ifdef ENOTEMPTY case ENOTEMPTY: return ("ENOTEMPTY"); #endif -#ifdef EPROCLIM +#ifdef EPROCLIM case EPROCLIM: return ("EPROCLIM"); #endif -#ifdef EUSERS +#ifdef EUSERS case EUSERS: return ("EUSERS"); #endif -#ifdef EDQUOT +#ifdef EDQUOT case EDQUOT: return ("EDQUOT"); #endif -#ifdef ESTALE +#ifdef ESTALE case ESTALE: return ("ESTALE"); #endif -#ifdef EREMOTE +#ifdef EREMOTE case EREMOTE: return ("EREMOTE"); #endif -#ifdef EBADRPC +#ifdef EBADRPC case EBADRPC: return ("EBADRPC"); #endif -#ifdef ERPCMISMATCH +#ifdef ERPCMISMATCH case ERPCMISMATCH: return ("ERPCMISMATCH"); #endif -#ifdef EPROGUNAVAIL +#ifdef EPROGUNAVAIL case EPROGUNAVAIL: return ("EPROGUNAVAIL"); #endif -#ifdef EPROGMISMATCH +#ifdef EPROGMISMATCH case EPROGMISMATCH: return ("EPROGMISMATCH"); #endif -#ifdef EPROCUNAVAIL +#ifdef EPROCUNAVAIL case EPROCUNAVAIL: return ("EPROCUNAVAIL"); #endif -#ifdef ENOLCK +#ifdef ENOLCK case ENOLCK: return ("ENOLCK"); #endif -#ifdef ENOSYS +#ifdef ENOSYS case ENOSYS: return ("ENOSYS"); #endif -#ifdef EFTYPE +#ifdef EFTYPE case EFTYPE: return ("EFTYPE"); #endif -#ifdef EAUTH +#ifdef EAUTH case EAUTH: return ("EAUTH"); #endif -#ifdef ENEEDAUTH +#ifdef ENEEDAUTH case ENEEDAUTH: return ("ENEEDAUTH"); #endif -#ifdef EIDRM +#ifdef EIDRM case EIDRM: return ("EIDRM"); #endif -#ifdef ENOMSG +#ifdef ENOMSG case ENOMSG: return ("ENOMSG"); #endif -#ifdef EOVERFLOW +#ifdef EOVERFLOW case EOVERFLOW: return ("EOVERFLOW"); #endif -#ifdef ECANCELED +#ifdef ECANCELED case ECANCELED: return ("ECANCELED"); #endif -#ifdef EILSEQ +#ifdef EILSEQ case EILSEQ: return ("EILSEQ"); #endif -#ifdef ENOATTR +#ifdef ENOATTR case ENOATTR: return ("ENOATTR"); #endif -#ifdef EDOOFUS +#ifdef EDOOFUS case EDOOFUS: return ("EDOOFUS"); #endif -#ifdef EBADMSG +#ifdef EBADMSG case EBADMSG: return ("EBADMSG"); #endif -#ifdef EMULTIHOP +#ifdef EMULTIHOP case EMULTIHOP: return ("EMULTIHOP"); #endif -#ifdef ENOLINK +#ifdef ENOLINK case ENOLINK: return ("ENOLINK"); #endif -#ifdef EPROTO +#ifdef EPROTO case EPROTO: return ("EPROTO"); #endif default: snprintf(errnum, sizeof(errnum), "%d", error); return (errnum); } } Index: vendor/pjdfstest/dist/tests/chflags/00.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/00.t (revision 320447) @@ -1,178 +1,179 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags changes flags" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:UFS) allflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK" userflags="UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE" systemflags="SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK" echo "1..742" ;; FreeBSD:ZFS) allflags="UF_NODUMP,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK" userflags="UF_NODUMP" systemflags="SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK" echo "1..482" ;; *) quick_exit ;; esac n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} for type in regular dir fifo block char socket; do create_file ${type} ${n0} expect none stat ${n0} flags expect 0 chflags ${n0} ${allflags} expect ${allflags} stat ${n0} flags expect 0 chflags ${n0} ${userflags} expect ${userflags} stat ${n0} flags expect 0 chflags ${n0} ${systemflags} expect ${systemflags} stat ${n0} flags expect 0 chflags ${n0} none expect none stat ${n0} flags if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi create_file ${type} ${n0} expect none stat ${n0} flags expect 0 lchflags ${n0} ${allflags} expect ${allflags} stat ${n0} flags expect 0 lchflags ${n0} ${userflags} expect ${userflags} stat ${n0} flags expect 0 lchflags ${n0} ${systemflags} expect ${systemflags} stat ${n0} flags expect 0 lchflags ${n0} none expect none stat ${n0} flags if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done expect 0 create ${n0} 0644 expect 0 symlink ${n0} ${n1} expect none stat ${n1} flags expect none lstat ${n1} flags expect 0 chflags ${n1} ${allflags} expect ${allflags} stat ${n1} flags expect none lstat ${n1} flags expect 0 chflags ${n1} ${userflags} expect ${userflags} stat ${n1} flags expect none lstat ${n1} flags expect 0 chflags ${n1} ${systemflags} expect ${systemflags} stat ${n1} flags expect none lstat ${n1} flags expect 0 chflags ${n1} none expect none stat ${n1} flags expect none lstat ${n1} flags expect 0 unlink ${n1} expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 symlink ${n0} ${n1} expect none stat ${n1} flags expect none lstat ${n1} flags expect 0 lchflags ${n1} ${allflags} expect ${allflags} lstat ${n1} flags expect none stat ${n1} flags expect 0 lchflags ${n1} ${userflags} expect ${userflags} lstat ${n1} flags expect none stat ${n1} flags expect 0 lchflags ${n1} ${systemflags} expect ${systemflags} lstat ${n1} flags expect none stat ${n1} flags expect 0 lchflags ${n1} none expect none lstat ${n1} flags expect none stat ${n1} flags expect 0 unlink ${n1} expect 0 unlink ${n0} # successful chflags(2) updates ctime. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} for flag in `echo ${allflags},none | tr ',' ' '`; do ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 chflags ${n0} ${flag} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 done if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} for flag in `echo ${allflags},none | tr ',' ' '`; do ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect 0 lchflags ${n0} ${flag} ctime2=`${fstest} lstat ${n0} ctime` test_check $ctime1 -lt $ctime2 done if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done # unsuccessful chflags(2) does not update ctime. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} for flag in `echo ${allflags},none | tr ',' ' '`; do ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EPERM -u 65534 chflags ${n0} ${flag} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 done if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} for flag in `echo ${allflags},none | tr ',' ' '`; do ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect EPERM -u 65534 lchflags ${n0} ${flag} ctime2=`${fstest} lstat ${n0} ctime` test_check $ctime1 -eq $ctime2 done if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/chflags/01.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/01.t (revision 320447) @@ -1,22 +1,29 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/01.t 211474 2010-08-18 22:06:43Z pjd $ desc="chflags returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh require chflags +if requires_root +then echo "1..17" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR chflags ${n0}/${n1}/test SF_IMMUTABLE expect 0 unlink ${n0}/${n1} done expect 0 rmdir ${n0} + +else +echo "1..1" +fi Index: vendor/pjdfstest/dist/tests/chflags/02.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/02.t (revision 320447) @@ -1,28 +1,29 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..12" nx=`namegen_max` nxx="${nx}x" expect 0 create ${nx} 0644 expect 0 chflags ${nx} SF_IMMUTABLE expect SF_IMMUTABLE stat ${nx} flags expect 0 chflags ${nx} none expect 0 unlink ${nx} expect ENAMETOOLONG chflags ${nxx} SF_IMMUTABLE expect 0 create ${nx} 0644 expect 0 lchflags ${nx} SF_IMMUTABLE expect SF_IMMUTABLE stat ${nx} flags expect 0 lchflags ${nx} none expect 0 unlink ${nx} expect ENAMETOOLONG lchflags ${nxx} SF_IMMUTABLE Index: vendor/pjdfstest/dist/tests/chflags/03.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/03.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..12" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 create ${nx} 0644 expect 0 chflags ${nx} SF_IMMUTABLE expect SF_IMMUTABLE stat ${nx} flags expect 0 chflags ${nx} none expect 0 unlink ${nx} expect ENAMETOOLONG chflags ${nxx} SF_IMMUTABLE expect 0 create ${nx} 0644 expect 0 lchflags ${nx} SF_IMMUTABLE expect SF_IMMUTABLE stat ${nx} flags expect 0 lchflags ${nx} none expect 0 unlink ${nx} expect ENAMETOOLONG lchflags ${nxx} SF_IMMUTABLE rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/chflags/04.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/04.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns ENOENT if the named file does not exist" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..4" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT chflags ${n0}/${n1}/test SF_IMMUTABLE expect ENOENT chflags ${n0}/${n1} SF_IMMUTABLE expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chflags/05.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/05.t (revision 320447) @@ -1,35 +1,36 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..16" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} UF_NODUMP expect UF_NODUMP -u 65534 -g 65534 stat ${n1}/${n2} flags expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} none expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 chflags ${n1}/${n2} UF_NODUMP expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} UF_NODUMP expect UF_NODUMP -u 65534 -g 65534 stat ${n1}/${n2} flags expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} none expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chflags/06.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/06.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP chflags ${n0}/test SF_IMMUTABLE expect ELOOP chflags ${n1}/test SF_IMMUTABLE expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/chflags/07.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/07.t (revision 320447) @@ -1,50 +1,51 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns EPERM when the effective user ID does not match the owner of the file and the effective user ID is not the super-user" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..93" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n1} expect EPERM -u 65534 -g 65534 chflags ${n1} UF_NODUMP expect none stat ${n1} flags expect 0 chown ${n1} 65534 65534 expect EPERM -u 65533 -g 65533 chflags ${n1} UF_NODUMP expect none stat ${n1} flags if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi create_file ${type} ${n1} expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_NODUMP expect none lstat ${n1} flags expect 0 lchown ${n1} 65534 65534 expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_NODUMP expect none lstat ${n1} flags if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chflags/08.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/08.t (revision 320447) @@ -1,58 +1,59 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and the user is not the super-user" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..249" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n1} expect 0 chown ${n1} 65534 65534 for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do expect 0 chflags ${n1} ${flag} expect EPERM -u 65533 -g 65533 chflags ${n1} UF_NODUMP expect ${flag} stat ${n1} flags expect EPERM -u 65534 -g 65534 chflags ${n1} UF_NODUMP expect ${flag} stat ${n1} flags done expect 0 chflags ${n1} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi create_file ${type} ${n1} expect 0 lchown ${n1} 65534 65534 for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do expect 0 lchflags ${n1} ${flag} expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_NODUMP expect ${flag} lstat ${n1} flags expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_NODUMP expect ${flag} lstat ${n1} flags done expect 0 lchflags ${n1} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chflags/09.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/09.t (revision 320447) @@ -1,66 +1,67 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and securelevel is greater than 0" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..327" n0=`namegen` n1=`namegen` n2=`namegen` old=`sysctl -n security.jail.chflags_allowed` sysctl security.jail.chflags_allowed=1 >/dev/null expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n1} expect 0 chown ${n1} 65534 65534 for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do expect 0 chflags ${n1} ${flag} jexpect 1 `pwd` EPERM chflags ${n1} UF_NODUMP expect ${flag} stat ${n1} flags jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_NODUMP expect ${flag} stat ${n1} flags jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_NODUMP expect ${flag} stat ${n1} flags done expect 0 chflags ${n1} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi create_file ${type} ${n1} expect 0 lchown ${n1} 65534 65534 for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do expect 0 lchflags ${n1} ${flag} jexpect 1 `pwd` EPERM lchflags ${n1} UF_NODUMP expect ${flag} lstat ${n1} flags jexpect 1 `pwd` EPERM -u 65533 -g 65533 lchflags ${n1} UF_NODUMP expect ${flag} lstat ${n1} flags jexpect 1 `pwd` EPERM -u 65534 -g 65534 lchflags ${n1} UF_NODUMP expect ${flag} lstat ${n1} flags done expect 0 lchflags ${n1} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done sysctl security.jail.chflags_allowed=${old} >/dev/null cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chflags/10.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/10.t (revision 320447) @@ -1,54 +1,55 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns EPERM if non-super-user tries to set one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..197" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n1} expect 0 chown ${n1} 65534 65534 for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag} expect none stat ${n1} flags expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag} expect none stat ${n1} flags done if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi create_file ${type} ${n1} expect 0 lchown ${n1} 65534 65534 for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do expect EPERM -u 65533 -g 65533 lchflags ${n1} ${flag} expect none lstat ${n1} flags expect EPERM -u 65534 -g 65534 lchflags ${n1} ${flag} expect none lstat ${n1} flags done if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chflags/11.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/11.t (revision 320447) @@ -1,58 +1,59 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns EPERM if a user tries to set or remove the SF_SNAPSHOT flag" dir=`dirname $0` . ${dir}/../misc.sh require chflags_SF_SNAPSHOT echo "1..145" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n1} expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT expect none stat ${n1} flags expect EPERM chflags ${n1} SF_SNAPSHOT expect none stat ${n1} flags expect 0 chown ${n1} 65534 65534 expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT expect none stat ${n1} flags expect EPERM chflags ${n1} SF_SNAPSHOT expect none stat ${n1} flags if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi create_file ${type} ${n1} expect EPERM -u 65534 -g 65534 lchflags ${n1} SF_SNAPSHOT expect none lstat ${n1} flags expect EPERM lchflags ${n1} SF_SNAPSHOT expect none lstat ${n1} flags expect 0 lchown ${n1} 65534 65534 expect EPERM -u 65534 -g 65534 lchflags ${n1} SF_SNAPSHOT expect none lstat ${n1} flags expect EPERM lchflags ${n1} SF_SNAPSHOT expect none lstat ${n1} flags if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chflags/12.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/12.t (revision 320447) @@ -1,68 +1,69 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:UFS) echo "1..14" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 - n=`mdconfig -a -n -t malloc -s 1m` - newfs /dev/md${n} >/dev/null + n=`mdconfig -a -n -t malloc -s 1m` || exit + newfs /dev/md${n} >/dev/null || exit mount /dev/md${n} ${n0} expect 0 create ${n0}/${n1} 0644 expect 0 chflags ${n0}/${n1} UF_IMMUTABLE expect UF_IMMUTABLE stat ${n0}/${n1} flags expect 0 chflags ${n0}/${n1} none expect none stat ${n0}/${n1} flags mount -ur /dev/md${n} expect EROFS chflags ${n0}/${n1} UF_IMMUTABLE expect none stat ${n0}/${n1} flags mount -uw /dev/md${n} expect 0 chflags ${n0}/${n1} UF_IMMUTABLE expect UF_IMMUTABLE stat ${n0}/${n1} flags expect 0 chflags ${n0}/${n1} none expect none stat ${n0}/${n1} flags expect 0 unlink ${n0}/${n1} umount /dev/md${n} - mdconfig -d -u ${n} + mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} ;; FreeBSD:ZFS) echo "1..12" n0=`namegen` n1=`namegen` - n=`mdconfig -a -n -t malloc -s 128m` + n=`mdconfig -a -n -t malloc -s 128m` || exit zpool create ${n0} /dev/md${n} expect 0 create /${n0}/${n1} 0644 expect 0 chflags /${n0}/${n1} UF_NODUMP expect UF_NODUMP stat /${n0}/${n1} flags expect 0 chflags /${n0}/${n1} none expect none stat /${n0}/${n1} flags zfs set readonly=on ${n0} expect EROFS chflags /${n0}/${n1} UF_NODUMP expect none stat /${n0}/${n1} flags zfs set readonly=off ${n0} expect 0 chflags /${n0}/${n1} UF_NODUMP expect UF_NODUMP stat /${n0}/${n1} flags expect 0 chflags /${n0}/${n1} none expect none stat /${n0}/${n1} flags expect 0 unlink /${n0}/${n1} zpool destroy ${n0} - mdconfig -d -u ${n} + mdconfig -d -u ${n} || exit ;; *) quick_exit ;; esac Index: vendor/pjdfstest/dist/tests/chflags/13.t =================================================================== --- vendor/pjdfstest/dist/tests/chflags/13.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chflags/13.t (revision 320447) @@ -1,14 +1,15 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chflags/13.t 211352 2010-08-15 21:24:17Z pjd $ desc="chflags returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..2" expect EFAULT chflags NULL UF_NODUMP expect EFAULT chflags DEADCODE UF_NODUMP Index: vendor/pjdfstest/dist/tests/chmod/00.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/00.t (revision 320447) @@ -1,138 +1,139 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod changes permission" dir=`dirname $0` . ${dir}/../misc.sh if supported lchmod; then echo "1..203" else echo "1..119" fi n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} expect 0 chmod ${n0} 0111 expect 0111 stat ${n0} mode expect 0 symlink ${n0} ${n1} mode=`${fstest} lstat ${n1} mode` expect 0 chmod ${n1} 0222 expect 0222 stat ${n1} mode expect 0222 stat ${n0} mode expect ${mode} lstat ${n1} mode expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi if supported lchmod; then create_file ${type} ${n0} expect 0 lchmod ${n0} 0111 expect 0111 lstat ${n0} mode if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi done # successful chmod(2) updates ctime. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 chmod ${n0} 0111 ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi if supported lchmod; then create_file ${type} ${n0} ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect 0 lchmod ${n0} 0111 ctime2=`${fstest} lstat ${n0} ctime` test_check $ctime1 -lt $ctime2 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi done # unsuccessful chmod(2) does not update ctime. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EPERM -u 65534 chmod ${n0} 0111 ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi if supported lchmod; then create_file ${type} ${n0} ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect EPERM -u 65534 lchmod ${n0} 0321 ctime2=`${fstest} lstat ${n0} ctime` test_check $ctime1 -eq $ctime2 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi done # POSIX: If the calling process does not have appropriate privileges, and if # the group ID of the file does not match the effective group ID or one of the # supplementary group IDs and if the file is a regular file, bit S_ISGID # (set-group-ID on execution) in the file's mode shall be cleared upon # successful return from chmod(). expect 0 create ${n0} 0755 expect 0 chown ${n0} 65535 65535 expect 0 -u 65535 -g 65535 chmod ${n0} 02755 expect 02755 stat ${n0} mode expect 0 -u 65535 -g 65535 chmod ${n0} 0755 expect 0755 stat ${n0} mode todo FreeBSD "S_ISGID should be removed and chmod(2) should success and FreeBSD returns EPERM." expect 0 -u 65535 -g 65534 chmod ${n0} 02755 expect 0755 stat ${n0} mode expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/chmod/01.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/01.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/01.t 211474 2010-08-18 22:06:43Z pjd $ desc="chmod returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..17" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR chmod ${n0}/${n1}/test 0644 expect 0 unlink ${n0}/${n1} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chmod/02.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/02.t (revision 320447) @@ -1,24 +1,31 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh -echo "1..10" +if supported lchmod; then + echo "1..10" +else + echo "1..5" +fi nx=`namegen_max` nxx="${nx}x" expect 0 create ${nx} 0644 expect 0 chmod ${nx} 0620 expect 0620 stat ${nx} mode expect 0 unlink ${nx} expect ENAMETOOLONG chmod ${nxx} 0620 -expect 0 create ${nx} 0644 -expect 0 lchmod ${nx} 0620 -expect 0620 stat ${nx} mode -expect 0 unlink ${nx} -expect ENAMETOOLONG lchmod ${nxx} 0620 +if supported lchmod; then + expect 0 create ${nx} 0644 + expect 0 lchmod ${nx} 0620 + expect 0620 stat ${nx} mode + expect 0 unlink ${nx} + expect ENAMETOOLONG lchmod ${nxx} 0620 +fi Index: vendor/pjdfstest/dist/tests/chmod/03.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/03.t (revision 320447) @@ -1,28 +1,35 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh -echo "1..10" +if supported lchmod; then + echo "1..10" +else + echo "1..5" +fi nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 create ${nx} 0644 expect 0 chmod ${nx} 0642 expect 0642 stat ${nx} mode expect 0 unlink ${nx} expect ENAMETOOLONG chmod ${nxx} 0642 -expect 0 create ${nx} 0644 -expect 0 lchmod ${nx} 0642 -expect 0642 stat ${nx} mode -expect 0 unlink ${nx} -expect ENAMETOOLONG lchmod ${nxx} 0642 +if supported lchmod; then + expect 0 create ${nx} 0644 + expect 0 lchmod ${nx} 0642 + expect 0642 stat ${nx} mode + expect 0 unlink ${nx} + expect ENAMETOOLONG lchmod ${nxx} 0642 +fi rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/chmod/04.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/04.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns ENOENT if the named file does not exist" dir=`dirname $0` . ${dir}/../misc.sh if supported lchmod; then echo "1..9" else echo "1..7" fi n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT chmod ${n0}/${n1}/test 0644 expect ENOENT chmod ${n0}/${n1} 0644 if supported lchmod; then expect ENOENT lchmod ${n0}/${n1}/test 0644 expect ENOENT lchmod ${n0}/${n1} 0644 fi expect 0 symlink ${n2} ${n0}/${n1} expect ENOENT chmod ${n0}/${n1} 0644 expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chmod/05.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/05.t (revision 320447) @@ -1,42 +1,43 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh if supported lchmod; then echo "1..19" else echo "1..14" fi n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642 expect 0642 -u 65534 -g 65534 stat ${n1}/${n2} mode expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 chmod ${n1}/${n2} 0620 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0420 expect 0420 -u 65534 -g 65534 stat ${n1}/${n2} mode if supported lchmod; then expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 lchmod ${n1}/${n2} 0410 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 lchmod ${n1}/${n2} 0710 expect 0710 -u 65534 -g 65534 stat ${n1}/${n2} mode fi expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chmod/06.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/06.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/06.t 211474 2010-08-18 22:06:43Z pjd $ desc="chmod returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh if supported lchmod; then echo "1..10" else echo "1..8" fi n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP chmod ${n0} 0644 expect ELOOP chmod ${n1} 0644 expect ELOOP chmod ${n0}/test 0644 expect ELOOP chmod ${n1}/test 0644 if supported lchmod; then expect ELOOP lchmod ${n0}/test 0644 expect ELOOP lchmod ${n1}/test 0644 fi expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/chmod/07.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/07.t (revision 320447) @@ -1,62 +1,63 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user" dir=`dirname $0` . ${dir}/../misc.sh if supported lchmod; then echo "1..34" else echo "1..25" fi n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642 expect 0642 stat ${n1}/${n2} mode expect EPERM -u 65533 -g 65533 chmod ${n1}/${n2} 0641 expect 0642 stat ${n1}/${n2} mode expect 0 chown ${n1}/${n2} 0 0 expect EPERM -u 65534 -g 65534 chmod ${n1}/${n2} 0641 expect 0642 stat ${n1}/${n2} mode expect 0 unlink ${n1}/${n2} expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 symlink ${n2} ${n1}/${n3} expect 0 -u 65534 -g 65534 chmod ${n1}/${n3} 0642 expect 0642,65534,65534 stat ${n1}/${n2} mode,uid,gid expect EPERM -u 65533 -g 65533 chmod ${n1}/${n3} 0641 expect 0642,65534,65534 stat ${n1}/${n2} mode,uid,gid expect 0 chown ${n1}/${n3} 0 0 expect EPERM -u 65534 -g 65534 chmod ${n1}/${n3} 0641 expect 0642,0,0 stat ${n1}/${n2} mode,uid,gid expect 0 unlink ${n1}/${n2} expect 0 unlink ${n1}/${n3} if supported lchmod; then expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 lchmod ${n1}/${n2} 0642 expect 0642 stat ${n1}/${n2} mode expect EPERM -u 65533 -g 65533 lchmod ${n1}/${n2} 0641 expect 0642 stat ${n1}/${n2} mode expect 0 chown ${n1}/${n2} 0 0 expect EPERM -u 65534 -g 65534 lchmod ${n1}/${n2} 0641 expect 0642 stat ${n1}/${n2} mode expect 0 unlink ${n1}/${n2} fi expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chmod/08.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/08.t (revision 320447) @@ -1,98 +1,99 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns EPERM if the named file has its immutable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..29" ;; FreeBSD:UFS) echo "1..54" ;; *) quick_exit esac n0=`namegen` expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM chmod ${n0} 0600 supported lchmod && expect EPERM lchmod ${n0} 0600 expect 0644 stat ${n0} mode expect 0 chflags ${n0} none expect 0 chmod ${n0} 0600 expect 0600 stat ${n0} mode supported lchmod && expect 0 lchmod ${n0} 0400 supported lchmod && expect 0400 stat ${n0} mode expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_NOUNLINK expect 0 chmod ${n0} 0600 expect 0600 stat ${n0} mode supported lchmod && expect 0 lchmod ${n0} 0400 supported lchmod && expect 0400 stat ${n0} mode expect 0 chflags ${n0} none expect 0 unlink ${n0} case "${os}:${fs}" in FreeBSD:ZFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_APPEND expect 0 chmod ${n0} 0600 expect 0600 stat ${n0} mode supported lchmod && expect 0 lchmod ${n0} 0500 supported lchmod && expect 0500 stat ${n0} mode expect 0 chflags ${n0} none expect 0 chmod ${n0} 0400 expect 0400 stat ${n0} mode expect 0 unlink ${n0} ;; FreeBSD:UFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_APPEND expect EPERM chmod ${n0} 0600 supported lchmod && expect EPERM lchmod ${n0} 0600 expect 0644 stat ${n0} mode expect 0 chflags ${n0} none expect 0 chmod ${n0} 0600 expect 0600 stat ${n0} mode expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM chmod ${n0} 0600 supported lchmod && expect EPERM lchmod ${n0} 0600 expect 0644 stat ${n0} mode expect 0 chflags ${n0} none expect 0 chmod ${n0} 0600 expect 0600 stat ${n0} mode expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_NOUNLINK expect 0 chmod ${n0} 0600 expect 0600 stat ${n0} mode supported lchmod && expect 0 lchmod ${n0} 0400 supported lchmod && expect 0400 stat ${n0} mode expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_APPEND expect EPERM chmod ${n0} 0600 supported lchmod && expect EPERM lchmod ${n0} 0600 expect 0644 stat ${n0} mode expect 0 chflags ${n0} none expect 0 chmod ${n0} 0600 expect 0600 stat ${n0} mode expect 0 unlink ${n0} ;; esac Index: vendor/pjdfstest/dist/tests/chmod/09.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/09.t (revision 320447) @@ -1,37 +1,38 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..15" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 expect 0 chmod ${n0}/${n1} 0640 expect 0640 stat ${n0}/${n1} mode expect 0 lchmod ${n0}/${n1} 0530 expect 0530 stat ${n0}/${n1} mode mount -ur /dev/md${n} expect EROFS chmod ${n0}/${n1} 0600 expect EROFS lchmod ${n0}/${n1} 0600 expect 0530 stat ${n0}/${n1} mode mount -uw /dev/md${n} expect 0 chmod ${n0}/${n1} 0600 expect 0600 stat ${n0}/${n1} mode expect 0 lchmod ${n0}/${n1} 0640 expect 0640 stat ${n0}/${n1} mode expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chmod/10.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/10.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh if supported lchmod; then echo "1..4" else echo "1..2" fi expect EFAULT chmod NULL 0644 expect EFAULT chmod DEADCODE 0644 if supported lchmod; then expect EFAULT lchmod NULL 0644 expect EFAULT lchmod DEADCODE 0644 fi Index: vendor/pjdfstest/dist/tests/chmod/11.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/11.t (revision 320447) @@ -1,118 +1,129 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="chmod returns EFTYPE if the effective user ID is not the super-user, the mode includes the sticky bit (S_ISVTX), and path does not refer to a directory" dir=`dirname $0` . ${dir}/../misc.sh if supported lchmod; then echo "1..173" else echo "1..109" fi n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n1} expect 0 chmod ${n1} 01621 expect 01621 stat ${n1} mode expect 0 symlink ${n1} ${n2} expect 0 chmod ${n2} 01700 expect 01700 stat ${n1} mode expect 0 unlink ${n2} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi if supported lchmod; then create_file ${type} ${n1} expect 0 lchmod ${n1} 01621 expect 01621 lstat ${n1} mode if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi done expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 chmod ${n1} 01755 expect 01755 stat ${n1} mode expect 0 symlink ${n1} ${n2} expect 0 chmod ${n2} 01700 expect 01700 stat ${n1} mode expect 0 unlink ${n2} expect 0 rmdir ${n1} for type in regular fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n1} 0640 65534 65534 expect 0 symlink ${n1} ${n2} case "${os}" in + Darwin) + expect 0 -u 65534 -g 65534 chmod ${n1} 01644 + expect 01644 stat ${n1} mode + expect 0 -u 65534 -g 65534 chmod ${n2} 01640 + expect 01640 stat ${n1} mode + ;; FreeBSD) expect EFTYPE -u 65534 -g 65534 chmod ${n1} 01644 expect 0640 stat ${n1} mode expect EFTYPE -u 65534 -g 65534 chmod ${n2} 01644 expect 0640 stat ${n1} mode ;; SunOS) expect 0 -u 65534 -g 65534 chmod ${n1} 01644 expect 0644 stat ${n1} mode expect 0 -u 65534 -g 65534 chmod ${n2} 01640 expect 0640 stat ${n1} mode ;; Linux) expect 0 -u 65534 -g 65534 chmod ${n1} 01644 expect 01644 stat ${n1} mode expect 0 -u 65534 -g 65534 chmod ${n2} 01640 expect 01640 stat ${n1} mode ;; esac expect 0 unlink ${n2} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi if supported lchmod; then create_file ${type} ${n1} 0640 65534 65534 case "${os}" in + Darwin) + expect 0 -u 65534 -g 65534 lchmod ${n1} 01644 + expect 01644 lstat ${n1} mode + ;; FreeBSD) expect EFTYPE -u 65534 -g 65534 lchmod ${n1} 01644 expect 0640 lstat ${n1} mode ;; SunOS) expect 0 -u 65534 -g 65534 lchmod ${n1} 01644 expect 0644 lstat ${n1} mode ;; Linux) expect 0 -u 65534 -g 65534 lchmod ${n1} 01644 expect 01644 lstat ${n1} mode ;; esac if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi fi done cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chmod/12.t =================================================================== --- vendor/pjdfstest/dist/tests/chmod/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chmod/12.t (revision 320447) @@ -1,38 +1,39 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chmod/12.t 219463 2011-03-10 20:59:02Z pjd $ desc="verify SUID/SGID bit behaviour" dir=`dirname $0` . ${dir}/../misc.sh echo "1..14" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} # Check whether writing to the file by non-owner clears the SUID. expect 0 create ${n0} 04777 expect 0777 -u 65534 -g 65534 open ${n0} O_WRONLY : write 0 x : fstat 0 mode expect 0777 stat ${n0} mode expect 0 unlink ${n0} # Check whether writing to the file by non-owner clears the SGID. expect 0 create ${n0} 02777 expect 0777 -u 65534 -g 65534 open ${n0} O_RDWR : write 0 x : fstat 0 mode expect 0777 stat ${n0} mode expect 0 unlink ${n0} # Check whether writing to the file by non-owner clears the SUID+SGID. expect 0 create ${n0} 06777 expect 0777 -u 65534 -g 65534 open ${n0} O_RDWR : write 0 x : fstat 0 mode expect 0777 stat ${n0} mode expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/chown/00.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/00.t (revision 320447) @@ -1,458 +1,481 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/00.t 228975 2011-12-30 00:04:11Z uqs $ desc="chown changes ownership" dir=`dirname $0` . ${dir}/../misc.sh if supported lchmod; then echo "1..1349" else echo "1..1323" fi n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} # super-user can always modify ownership for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} expect 0 chown ${n0} 123 456 expect 123,456 lstat ${n0} uid,gid expect 0 chown ${n0} 0 0 expect 0,0 lstat ${n0} uid,gid expect 0 symlink ${n0} ${n1} uidgid=`${fstest} lstat ${n1} uid,gid` expect 0 chown ${n1} 123 456 expect 123,456 stat ${n1} uid,gid expect 123,456 stat ${n0} uid,gid expect ${uidgid} lstat ${n1} uid,gid expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} expect 0 lchown ${n0} 123 456 expect 123,456 lstat ${n0} uid,gid if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done # non-super-user can modify file group if he is owner of a file and # gid he is setting is in his groups list. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} expect 0 chown ${n0} 65534 65533 expect 65534,65533 lstat ${n0} uid,gid expect 0 -u 65534 -g 65532,65531 -- chown ${n0} -1 65532 expect 65534,65532 lstat ${n0} uid,gid expect 0 -u 65534 -g 65532,65531 chown ${n0} 65534 65531 expect 65534,65531 lstat ${n0} uid,gid expect 0 symlink ${n0} ${n1} uidgid=`${fstest} lstat ${n1} uid,gid` expect 0 chown ${n1} 65534 65533 expect 65534,65533 stat ${n0} uid,gid expect 65534,65533 stat ${n1} uid,gid expect ${uidgid} lstat ${n1} uid,gid expect 0 -u 65534 -g 65532,65531 -- chown ${n1} -1 65532 expect 65534,65532 stat ${n0} uid,gid expect 65534,65532 stat ${n1} uid,gid expect ${uidgid} lstat ${n1} uid,gid expect 0 -u 65534 -g 65532,65531 chown ${n1} 65534 65531 expect 65534,65531 stat ${n0} uid,gid expect 65534,65531 stat ${n1} uid,gid expect ${uidgid} lstat ${n1} uid,gid expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} expect 0 lchown ${n0} 65534 65533 expect 65534,65533 lstat ${n0} uid,gid expect 0 -u 65534 -g 65532,65531 -- lchown ${n0} -1 65532 expect 65534,65532 lstat ${n0} uid,gid expect 0 -u 65534 -g 65532,65531 lchown ${n0} 65534 65531 expect 65534,65531 lstat ${n0} uid,gid if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done # chown(2) return 0 if user is not owner of a file, but chown(2) is called # with both uid and gid equal to -1. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} expect 0 chown ${n0} 65534 65533 expect 0 -u 65532 -g 65531 -- chown ${n0} -1 -1 expect 65534,65533 stat ${n0} uid,gid expect 0 symlink ${n0} ${n1} uidgid=`${fstest} lstat ${n1} uid,gid` expect 0 chown ${n1} 65534 65533 expect 65534,65533 stat ${n0} uid,gid expect 65534,65533 stat ${n1} uid,gid expect ${uidgid} lstat ${n1} uid,gid expect 0 -u 65532 -g 65531 -- chown ${n0} -1 -1 expect 65534,65533 stat ${n0} uid,gid expect 65534,65533 stat ${n1} uid,gid expect ${uidgid} lstat ${n1} uid,gid expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} expect 0 lchown ${n0} 65534 65533 expect 0 -u 65532 -g 65531 -- lchown ${n0} -1 -1 expect 65534,65533 lstat ${n0} uid,gid if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done # when super-user calls chown(2), set-uid and set-gid bits may be removed. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} expect 0 chown ${n0} 65534 65533 expect 0 chmod ${n0} 06555 expect 06555,65534,65533 stat ${n0} mode,uid,gid expect 0 chown ${n0} 65532 65531 expect "(06555|0555),65532,65531" stat ${n0} mode,uid,gid expect 0 chmod ${n0} 06555 expect 06555,65532,65531 stat ${n0} mode,uid,gid expect 0 chown ${n0} 0 0 expect "(06555|0555),0,0" stat ${n0} mode,uid,gid expect 0 symlink ${n0} ${n1} expect 0 chown ${n1} 65534 65533 expect 0 chmod ${n1} 06555 expect 06555,65534,65533 stat ${n0} mode,uid,gid expect 06555,65534,65533 stat ${n1} mode,uid,gid expect 0 chown ${n1} 65532 65531 expect "(06555|0555),65532,65531" stat ${n0} mode,uid,gid expect "(06555|0555),65532,65531" stat ${n1} mode,uid,gid expect 0 chmod ${n1} 06555 expect 06555,65532,65531 stat ${n0} mode,uid,gid expect 06555,65532,65531 stat ${n1} mode,uid,gid expect 0 chown ${n1} 0 0 expect "(06555|0555),0,0" stat ${n0} mode,uid,gid expect "(06555|0555),0,0" stat ${n1} mode,uid,gid expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi if [ "${type}" != "symlink" ] || supported lchmod; then create_file ${type} ${n0} expect 0 lchown ${n0} 65534 65533 if supported lchmod; then expect 0 lchmod ${n0} 06555 else expect 0 chmod ${n0} 06555 fi expect 06555,65534,65533 lstat ${n0} mode,uid,gid expect 0 lchown ${n0} 65532 65531 expect "(06555|0555),65532,65531" lstat ${n0} mode,uid,gid if supported lchmod; then expect 0 lchmod ${n0} 06555 else expect 0 chmod ${n0} 06555 fi expect 06555,65532,65531 lstat ${n0} mode,uid,gid expect 0 lchown ${n0} 0 0 expect "(06555|0555),0,0" lstat ${n0} mode,uid,gid if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi done # when non-super-user calls chown(2) successfully, set-uid and set-gid bits may # be removed, except when both uid and gid are equal to -1. for type in regular dir fifo block char socket symlink; do + # + # Linux makes a destinction for behavior when an executable file vs a + # non-executable file. From chmod(2): + # + # When the owner or group of an executable file are changed by an + # unprivileged user the S_ISUID and S_ISGID mode bits are cleared. + # + # I believe in this particular case, the behavior's bugged. + # + if [ "${type}" = "dir" -a "${os}" = "Linux" ]; then + _todo_msg="Linux doesn't clear the SGID/SUID bits for directories, despite the description noted" + else + _todo_msg= + fi if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} expect 0 chown ${n0} 65534 65533 expect 0 chmod ${n0} 06555 expect 06555,65534,65533 stat ${n0} mode,uid,gid expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532 + [ -n "${_todo_msg}" ] && todo "Linux" "${_todo_msg}" expect 0555,65534,65532 stat ${n0} mode,uid,gid expect 0 chmod ${n0} 06555 expect 06555,65534,65532 stat ${n0} mode,uid,gid expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 65533 + [ -n "${_todo_msg}" ] && todo "Linux" "${_todo_msg}" expect 0555,65534,65533 stat ${n0} mode,uid,gid expect 0 chmod ${n0} 06555 expect 06555,65534,65533 stat ${n0} mode,uid,gid expect 0 -u 65534 -g 65533,65532 -- chown ${n0} -1 -1 expect "(06555|0555),65534,65533" stat ${n0} mode,uid,gid expect 0 symlink ${n0} ${n1} expect 0 chown ${n1} 65534 65533 expect 0 chmod ${n1} 06555 expect 06555,65534,65533 stat ${n0} mode,uid,gid expect 06555,65534,65533 stat ${n1} mode,uid,gid expect 0 -u 65534 -g 65533,65532 chown ${n1} 65534 65532 + [ -n "${_todo_msg}" ] && todo "Linux" "${_todo_msg}" expect 0555,65534,65532 stat ${n0} mode,uid,gid + [ -n "${_todo_msg}" ] && todo "Linux" "${_todo_msg}" expect 0555,65534,65532 stat ${n1} mode,uid,gid expect 0 chmod ${n1} 06555 expect 06555,65534,65532 stat ${n0} mode,uid,gid expect 06555,65534,65532 stat ${n1} mode,uid,gid expect 0 -u 65534 -g 65533,65532 -- chown ${n1} -1 65533 + [ -n "${_todo_msg}" ] && todo "Linux" "${_todo_msg}" expect 0555,65534,65533 stat ${n0} mode,uid,gid + [ -n "${_todo_msg}" ] && todo "Linux" "${_todo_msg}" expect 0555,65534,65533 stat ${n1} mode,uid,gid expect 0 chmod ${n1} 06555 expect 06555,65534,65533 stat ${n0} mode,uid,gid expect 06555,65534,65533 stat ${n1} mode,uid,gid expect 0 -u 65534 -g 65533,65532 -- chown ${n1} -1 -1 expect "(06555|0555),65534,65533" stat ${n0} mode,uid,gid expect "(06555|0555),65534,65533" stat ${n1} mode,uid,gid expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi if [ "${type}" != "symlink" ] || supported lchmod; then create_file ${type} ${n0} expect 0 lchown ${n0} 65534 65533 if supported lchmod; then expect 0 lchmod ${n0} 06555 else expect 0 chmod ${n0} 06555 fi expect 06555,65534,65533 lstat ${n0} mode,uid,gid expect 0 -u 65534 -g 65533,65532 lchown ${n0} 65534 65532 + [ -n "${_todo_msg}" ] && todo "Linux" "${_todo_msg}" expect 0555,65534,65532 lstat ${n0} mode,uid,gid if supported lchmod; then expect 0 lchmod ${n0} 06555 else expect 0 chmod ${n0} 06555 fi expect 06555,65534,65532 lstat ${n0} mode,uid,gid expect 0 -u 65534 -g 65533,65532 -- lchown ${n0} -1 65533 + [ -n "${_todo_msg}" ] && todo "Linux" "${_todo_msg}" expect 0555,65534,65533 lstat ${n0} mode,uid,gid if supported lchmod; then expect 0 lchmod ${n0} 06555 else expect 0 chmod ${n0} 06555 fi expect 06555,65534,65533 lstat ${n0} mode,uid,gid expect 0 -u 65534 -g 65533,65532 -- lchown ${n0} -1 -1 expect "(06555|0555),65534,65533" lstat ${n0} mode,uid,gid if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi done # successful chown(2) call (except uid and gid equal to -1) updates ctime. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 chown ${n0} 65534 65533 expect 65534,65533 stat ${n0} uid,gid ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 -u 65534 -g 65532 chown ${n0} 65534 65532 expect 65534,65532 stat ${n0} uid,gid ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 symlink ${n0} ${n1} ctime1=`${fstest} stat ${n1} ctime` sleep 1 expect 0 chown ${n1} 65533 65532 expect 65533,65532 stat ${n1} uid,gid ctime2=`${fstest} stat ${n1} ctime` test_check $ctime1 -lt $ctime2 ctime1=`${fstest} stat ${n1} ctime` sleep 1 expect 0 -u 65533 -g 65531 chown ${n1} 65533 65531 expect 65533,65531 stat ${n1} uid,gid ctime2=`${fstest} stat ${n1} ctime` test_check $ctime1 -lt $ctime2 expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect 0 lchown ${n0} 65534 65533 expect 65534,65533 lstat ${n0} uid,gid ctime2=`${fstest} lstat ${n0} ctime` test_check $ctime1 -lt $ctime2 ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect 0 -u 65534 -g 65532 lchown ${n0} 65534 65532 expect 65534,65532 lstat ${n0} uid,gid ctime2=`${fstest} lstat ${n0} ctime` test_check $ctime1 -lt $ctime2 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 -- chown ${n0} -1 -1 ctime2=`${fstest} stat ${n0} ctime` todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated." test_check $ctime1 -eq $ctime2 expect 0,0 stat ${n0} uid,gid expect 0 symlink ${n0} ${n1} ctime1=`${fstest} stat ${n1} ctime` sleep 1 expect 0 -- chown ${n1} -1 -1 ctime2=`${fstest} stat ${n1} ctime` todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated." test_check $ctime1 -eq $ctime2 expect 0,0 stat ${n1} uid,gid expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect 0 -- lchown ${n0} -1 -1 ctime2=`${fstest} lstat ${n0} ctime` todo Linux "According to POSIX: If both owner and group are -1, the times need not be updated." test_check $ctime1 -eq $ctime2 expect 0,0 lstat ${n0} uid,gid if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done # unsuccessful chown(2) does not update ctime. for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EPERM -u 65534 -- chown ${n0} 65534 -1 expect EPERM -u 65534 -g 65534 -- chown ${n0} -1 65534 expect EPERM -u 65534 -g 65534 chown ${n0} 65534 65534 ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0,0 stat ${n0} uid,gid expect 0 symlink ${n0} ${n1} ctime1=`${fstest} stat ${n1} ctime` sleep 1 expect EPERM -u 65534 -- chown ${n1} 65534 -1 expect EPERM -u 65534 -g 65534 -- chown ${n1} -1 65534 expect EPERM -u 65534 -g 65534 chown ${n1} 65534 65534 ctime2=`${fstest} stat ${n1} ctime` test_check $ctime1 -eq $ctime2 expect 0,0 stat ${n1} uid,gid expect 0 unlink ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect EPERM -u 65534 -- lchown ${n0} 65534 -1 expect EPERM -u 65534 -g 65534 -- lchown ${n0} -1 65534 expect EPERM -u 65534 -g 65534 lchown ${n0} 65534 65534 ctime2=`${fstest} lstat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0,0 lstat ${n0} uid,gid if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/chown/01.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/01.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/01.t 211474 2010-08-18 22:06:43Z pjd $ desc="chown returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..22" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR chown ${n0}/${n1}/test 65534 65534 expect ENOTDIR lchown ${n0}/${n1}/test 65534 65534 expect 0 unlink ${n0}/${n1} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chown/02.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/02.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="chown returns ENAMETOOLONG if a component of a pathname exceeded ${NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" nx=`namegen_max` nxx="${nx}x" expect 0 create ${nx} 0644 expect 0 chown ${nx} 65534 65534 expect 65534,65534 stat ${nx} uid,gid expect 0 unlink ${nx} expect ENAMETOOLONG chown ${nxx} 65534 65534 expect 0 create ${nx} 0644 expect 0 lchown ${nx} 65534 65534 expect 65534,65534 stat ${nx} uid,gid expect 0 unlink ${nx} expect ENAMETOOLONG lchown ${nxx} 65534 65534 Index: vendor/pjdfstest/dist/tests/chown/03.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/03.t (revision 320447) @@ -1,28 +1,29 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="chown returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 create ${nx} 0644 expect 0 chown ${nx} 65534 65534 expect 65534,65534 stat ${nx} uid,gid expect 0 unlink ${nx} expect ENAMETOOLONG chown ${nxx} 65534 65534 expect 0 create ${nx} 0644 expect 0 lchown ${nx} 65534 65534 expect 65534,65534 stat ${nx} uid,gid expect 0 unlink ${nx} expect ENAMETOOLONG lchown ${nxx} 65534 65534 rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/chown/04.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/04.t (revision 320447) @@ -1,23 +1,24 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/04.t 211410 2010-08-17 06:08:09Z pjd $ desc="chown returns ENOENT if the named file does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..9" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT chown ${n0}/${n1}/test 65534 65534 expect ENOENT chown ${n0}/${n1} 65534 65534 expect ENOENT lchown ${n0}/${n1}/test 65534 65534 expect ENOENT lchown ${n0}/${n1} 65534 65534 expect 0 symlink ${n2} ${n0}/${n1} expect ENOENT chown ${n0}/${n1} 65534 65534 expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chown/05.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/05.t (revision 320447) @@ -1,35 +1,36 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/05.t 211410 2010-08-17 06:08:09Z pjd $ desc="chown returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..18" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65533 expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65534 expect EACCES -u 65534 -g 65533,65534 -- lchown ${n1}/${n2} -1 65534 expect 0 chmod ${n1} 0755 expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid expect 0 -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65534 expect 65534,65534 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid expect 0 -u 65534 -g 65533,65534 -- lchown ${n1}/${n2} -1 65533 expect 65534,65533 -u 65534 -g 65533 stat ${n1}/${n2} uid,gid expect 0 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chown/06.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/06.t (revision 320447) @@ -1,23 +1,24 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/06.t 211410 2010-08-17 06:08:09Z pjd $ desc="chown returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP chown ${n0} 65534 65534 expect ELOOP chown ${n1} 65534 65534 expect ELOOP chown ${n0}/test 65534 65534 expect ELOOP chown ${n1}/test 65534 65534 expect ELOOP lchown ${n0}/test 65534 65534 expect ELOOP lchown ${n1}/test 65534 65534 expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/chown/07.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/07.t (revision 320447) @@ -1,53 +1,54 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/07.t 211410 2010-08-17 06:08:09Z pjd $ desc="chown returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user and the process is not an owner of the file" dir=`dirname $0` . ${dir}/../misc.sh echo "1..132" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n1}/${n2} 65534 65534 expect EPERM -u 65534 -g 65534 chown ${n1}/${n2} 65533 65533 expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65534 65534 expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65533 65533 expect EPERM -u 65534 -g 65534 -- chown ${n1}/${n2} -1 65533 expect 0 -u 65534 -g 65534 symlink ${n2} ${n1}/${n3} expect EPERM -u 65534 -g 65534 chown ${n1}/${n3} 65533 65533 expect EPERM -u 65533 -g 65533 chown ${n1}/${n3} 65534 65534 expect EPERM -u 65533 -g 65533 chown ${n1}/${n3} 65533 65533 expect EPERM -u 65534 -g 65534 -- chown ${n1}/${n3} -1 65533 expect 0 unlink ${n1}/${n3} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1}/${n2} else expect 0 unlink ${n1}/${n2} fi fi create_file ${type} ${n1}/${n2} 65534 65534 expect EPERM -u 65534 -g 65534 lchown ${n1}/${n2} 65533 65533 expect EPERM -u 65533 -g 65533 lchown ${n1}/${n2} 65534 65534 expect EPERM -u 65533 -g 65533 lchown ${n1}/${n2} 65533 65533 expect EPERM -u 65534 -g 65534 -- lchown ${n1}/${n2} -1 65533 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1}/${n2} else expect 0 unlink ${n1}/${n2} fi done expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chown/08.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/08.t (revision 320447) @@ -1,84 +1,85 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="chown returns EPERM if the named file has its immutable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..20" ;; FreeBSD:UFS) echo "1..44" ;; *) quick_exit esac n0=`namegen` expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM chown ${n0} 65534 65534 expect 0,0 stat ${n0} uid,gid expect 0 chflags ${n0} none expect 0 chown ${n0} 65534 65534 expect 65534,65534 stat ${n0} uid,gid expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_NOUNLINK expect 0 chown ${n0} 65534 65534 expect 65534,65534 stat ${n0} uid,gid expect 0 chflags ${n0} none expect 0 unlink ${n0} case "${os}:${fs}" in FreeBSD:ZFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_APPEND expect 0 chown ${n0} 65534 65534 expect 65534,65534 stat ${n0} uid,gid expect 0 chflags ${n0} none expect 0 unlink ${n0} ;; FreeBSD:UFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_APPEND expect EPERM chown ${n0} 65534 65534 expect 0,0 stat ${n0} uid,gid expect 0 chflags ${n0} none expect 0 chown ${n0} 65534 65534 expect 65534,65534 stat ${n0} uid,gid expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM chown ${n0} 65534 65534 expect 0,0 stat ${n0} uid,gid expect 0 chflags ${n0} none expect 0 chown ${n0} 65534 65534 expect 65534,65534 stat ${n0} uid,gid expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_NOUNLINK expect 0 chown ${n0} 65534 65534 expect 65534,65534 stat ${n0} uid,gid expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_APPEND expect EPERM chown ${n0} 65534 65534 expect 0,0 stat ${n0} uid,gid expect 0 chflags ${n0} none expect 0 chown ${n0} 65534 65534 expect 65534,65534 stat ${n0} uid,gid expect 0 unlink ${n0} ;; esac Index: vendor/pjdfstest/dist/tests/chown/09.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/09.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="chown returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..10" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 expect 0 chown ${n0}/${n1} 65534 65534 expect 65534,65534 stat ${n0}/${n1} uid,gid mount -ur /dev/md${n} expect EROFS chown ${n0}/${n1} 65533 65533 expect 65534,65534 stat ${n0}/${n1} uid,gid mount -uw /dev/md${n} expect 0 chown ${n0}/${n1} 65533 65533 expect 65533,65533 stat ${n0}/${n1} uid,gid expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/chown/10.t =================================================================== --- vendor/pjdfstest/dist/tests/chown/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/chown/10.t (revision 320447) @@ -1,14 +1,15 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/chown/10.t 211410 2010-08-17 06:08:09Z pjd $ desc="chown returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" expect EFAULT chown NULL 65534 65534 expect EFAULT chown DEADCODE 65534 65534 expect EFAULT lchown NULL 65534 65534 expect EFAULT lchown DEADCODE 65534 65534 Index: vendor/pjdfstest/dist/tests/conf =================================================================== --- vendor/pjdfstest/dist/tests/conf (revision 320446) +++ vendor/pjdfstest/dist/tests/conf (revision 320447) @@ -1,36 +1,60 @@ # $FreeBSD: head/tools/regression/pjdfstest/tests/conf 211354 2010-08-15 21:29:03Z pjd $ +# vim: filetype=sh noexpandtab ts=8 sw=8 # pjdfstest configuration file # Supported operating systems: FreeBSD, Darwin, SunOS, Linux os=`uname` +unsupported_os() +{ + echo "Unsupported operating system ${os}." >/dev/stderr + exit 1 +} + +get_mountpoint() +{ + case "${os}" in + Darwin|FreeBSD) + df . | tail -1 | awk '{print $NF}' + ;; + *) + unsupported_os + ;; + esac +} + case "${os}" in -FreeBSD|Darwin) +Darwin) GREP=grep #fs=`df -T . | tail -1 | awk '{print $2}'` - pattern="`df . | tail -1 | awk '{printf("%s on %s \n", $1, $6)}'`" - fs=`mount | ${GREP} -E "^${pattern}" | awk -F '[(,]' '{print toupper($2)}'` + mountpoint="`get_mountpoint`" + fs=`mount | grep "on $mountpoint" | sed -e 's/.*(//' -e 's/,.*//g' | tr '[:lower:]' '[:upper:]'` ;; +FreeBSD) + GREP=grep + #fs=`df -T . | tail -1 | awk '{print $2}'` + mountpoint="`get_mountpoint`" + fs=`mount -p | awk '$2 == "'$mountpoint'" { print toupper($3) }'` + ;; Solaris|SunOS) GREP=ggrep pattern=`df -Pk . | tail -1 | awk '{printf("%s on %s \n", $1, $6)}'` fs=`mount -v | ${GREP} -E "^${pattern}" | awk '{print $5}' | \ tr -s '[:lower:]' '[:upper:]'` ;; Linux) GREP=grep fs=`df -PT . | tail -1 | awk '{print toupper($2)}'` ;; *) - echo "Unsupported operating system ${os}." >/dev/stderr - exit 1 + unsupported_os ;; esac # If we cannot figure out file system type, define it here. #fs="UFS" if [ -z "${fs}" ]; then echo "Cannot figure out file system type, define it by hand." >/dev/stderr exit 1 fi Index: vendor/pjdfstest/dist/tests/ftruncate/00.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/00.t (revision 320447) @@ -1,58 +1,59 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/ftruncate/00.t 219439 2011-03-09 23:11:30Z pjd $ desc="ftruncate descrease/increase file size" dir=`dirname $0` . ${dir}/../misc.sh -echo "1..21" +echo "1..26" n0=`namegen` n1=`namegen` expect 0 mkdir ${n1} 0755 cdir=`pwd` cd ${n1} expect 0 create ${n0} 0644 expect 0 open ${n0} O_RDWR : ftruncate 0 1234567 expect 1234567 lstat ${n0} size expect 0 open ${n0} O_WRONLY : ftruncate 0 567 expect 567 lstat ${n0} size expect 0 unlink ${n0} dd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1 expect 0 open ${n0} O_RDWR : ftruncate 0 23456 expect 23456 lstat ${n0} size expect 0 open ${n0} O_WRONLY : ftruncate 0 1 expect 1 lstat ${n0} size expect 0 unlink ${n0} # successful ftruncate(2) updates ctime. expect 0 create ${n0} 0644 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 open ${n0} O_RDWR : ftruncate 0 123 ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 unlink ${n0} # unsuccessful ftruncate(2) does not update ctime. expect 0 create ${n0} 0644 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EINVAL -u 65534 open ${n0} O_RDONLY : ftruncate 0 123 ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0 unlink ${n0} # third argument should not affect permission. expect 0 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0 expect 0 unlink ${n0} expect 0 chmod . 0777 expect 0 -u 65534 open ${n0} O_CREAT,O_RDWR 0 : ftruncate 0 0 expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/ftruncate/01.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/01.t (revision 320447) @@ -1,18 +1,19 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/01.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 expect ENOTDIR truncate ${n0}/${n1}/test 123 expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/02.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/02.t (revision 320447) @@ -1,18 +1,19 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" nx=`namegen_max` nxx="${nx}x" expect 0 create ${nx} 0644 expect 0 truncate ${nx} 123 expect 123 stat ${nx} size expect 0 unlink ${nx} expect ENAMETOOLONG truncate ${nxx} 123 Index: vendor/pjdfstest/dist/tests/ftruncate/03.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/03.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 create ${nx} 0644 expect 0 truncate ${nx} 123 expect regular,123 stat ${nx} type,size expect 0 unlink ${nx} expect ENAMETOOLONG truncate ${nxx} 123 rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/ftruncate/04.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/04.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ENOENT if the named file does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT truncate ${n0}/${n1}/test 123 expect ENOENT truncate ${n0}/${n1} 123 expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/05.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/05.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..15" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 123 expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 truncate ${n1}/${n2} 1234 expect 0 chmod ${n1} 0755 expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 1234 expect 1234 -u 65534 -g 65534 stat ${n1}/${n2} size expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/06.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/06.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EACCES if the named file is not writable by the user" dir=`dirname $0` . ${dir}/../misc.sh echo "1..8" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 create ${n1} 0644 expect EACCES -u 65534 -g 65534 truncate ${n1} 123 expect 0 chown ${n1} 65534 65534 expect 0 chmod ${n1} 0444 expect EACCES -u 65534 -g 65534 truncate ${n1} 123 expect 0 unlink ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/07.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/07.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP truncate ${n0}/test 123 expect ELOOP truncate ${n1}/test 123 expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/ftruncate/08.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/08.t (revision 320447) @@ -1,78 +1,79 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EPERM if the named file has its immutable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..22" ;; FreeBSD:UFS) echo "1..44" ;; *) quick_exit esac n0=`namegen` expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM truncate ${n0} 123 expect 0 stat ${n0} size expect 0 chflags ${n0} none expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_NOUNLINK expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_APPEND todo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM." expect EPERM truncate ${n0} 123 todo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM." expect 0 stat ${n0} size expect 0 chflags ${n0} none expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 unlink ${n0} case "${os}:${fs}" in FreeBSD:UFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM truncate ${n0} 123 expect 0 stat ${n0} size expect 0 chflags ${n0} none expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_NOUNLINK expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_APPEND expect EPERM truncate ${n0} 123 expect 0 stat ${n0} size expect 0 chflags ${n0} none expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 unlink ${n0} ;; esac Index: vendor/pjdfstest/dist/tests/ftruncate/09.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/09.t (revision 320447) @@ -1,15 +1,16 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EISDIR if the named file is a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` expect 0 mkdir ${n0} 0755 expect EISDIR truncate ${n0} 123 expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/10.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/10.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..10" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 expect 0 truncate ${n0}/${n1} 123 expect 123 stat ${n0}/${n1} size mount -ur /dev/md${n} expect EROFS truncate ${n0}/${n1} 1234 expect 123 stat ${n0}/${n1} size mount -uw /dev/md${n} expect 0 truncate ${n0}/${n1} 1234 expect 1234 stat ${n0}/${n1} size expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/11.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/11.t (revision 320447) @@ -1,18 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ETXTBSY the file is a pure procedure (shared text) file that is being executed" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}" = "FreeBSD" ] || quick_exit +noexec && quick_exit echo "1..2" n0=`namegen` cp -pf `which sleep` ${n0} ./${n0} 3 & expect ETXTBSY truncate ${n0} 123 expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/12.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/12.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EFBIG or EINVAL if the length argument was greater than the maximum file size" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` expect 0 create ${n0} 0644 r=`${fstest} truncate ${n0} 999999999999999 2>/dev/null` case "${r}" in EFBIG|EINVAL) expect 0 stat ${n0} size ;; 0) expect 999999999999999 stat ${n0} size ;; *) echo "not ok ${ntest}" ntest=`expr ${ntest} + 1` ;; esac expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/13.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/13.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/13.t (revision 320447) @@ -1,16 +1,17 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/13.t 211352 2010-08-15 21:24:17Z pjd $ desc="ftruncate returns EINVAL if the length argument was less than 0" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" n0=`namegen` expect 0 create ${n0} 0644 expect EINVAL -- open ${n0} O_RDWR : ftruncate 0 -1 expect EINVAL -- open ${n0} O_WRONLY : ftruncate 0 -999999 expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/ftruncate/14.t =================================================================== --- vendor/pjdfstest/dist/tests/ftruncate/14.t (revision 320446) +++ vendor/pjdfstest/dist/tests/ftruncate/14.t (revision 320447) @@ -1,12 +1,13 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/14.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2" expect EFAULT truncate NULL 123 expect EFAULT truncate DEADCODE 123 Index: vendor/pjdfstest/dist/tests/granular/00.t =================================================================== --- vendor/pjdfstest/dist/tests/granular/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/granular/00.t (revision 320447) @@ -1,112 +1,113 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/granular/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="NFSv4 granular permissions checking - WRITE_DATA vs APPEND_DATA on directories" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit echo "1..49" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` expect 0 mkdir ${n2} 0755 expect 0 mkdir ${n3} 0777 cdir=`pwd` cd ${n2} # Tests 2..7 - check out whether root user can do stuff. # Can create files? expect 0 create ${n0} 0644 # Can create symlinks? expect 0 link ${n0} ${n1} expect 0 unlink ${n1} expect 0 unlink ${n0} # Can create directories? expect 0 mkdir ${n0} 0755 expect 0 rmdir ${n0} # Check whether user 65534 is permitted to create and remove # files, but not subdirectories. expect 0 prependacl . user:65534:write_data::allow,user:65534:append_data::deny # Can create files? expect 0 -u 65534 -g 65534 create ${n0} 0644 # Can create symlinks? expect 0 -u 65534 -g 65534 link ${n0} ${n1} expect 0 -u 65534 -g 65534 unlink ${n1} expect 0 -u 65534 -g 65534 unlink ${n0} # Can create directories? expect EACCES -u 65534 -g 65534 mkdir ${n0} 0755 expect ENOENT -u 65534 -g 65534 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 -u 65534 -g 65534 rmdir ${n0} # Can move files from other directory? expect 0 create ../${n3}/${n1} 0644 expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} # Can move files from other directory overwriting existing files? expect 0 create ../${n3}/${n1} 0644 expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} expect 0 -u 65534 -g 65534 unlink ${n0} # Can move directories from other directory? expect 0 mkdir ../${n3}/${n1} 0777 expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} # Can move directories from other directory overwriting existing directory? expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} expect 0 -u 65534 -g 65534 rmdir ../${n3}/${n1} # Check whether user 65534 is permitted to create # subdirectories, but not files - and to remove neither of them. expect 0 prependacl . user:65534:write_data::deny,user:65534:append_data::allow # Can create files? expect EACCES -u 65534 -g 65534 create ${n0} 0644 # Can create symlinks? expect 0 create ${n0} 0644 expect EACCES -u 65534 -g 65534 link ${n0} ${n1} expect ENOENT -u 65534 -g 65534 unlink ${n1} expect EACCES -u 65534 -g 65534 unlink ${n0} expect 0 unlink ${n0} # Can create directories? expect 0 -u 65534 -g 65534 mkdir ${n0} 0755 expect EACCES -u 65534 -g 65534 rmdir ${n0} expect 0 rmdir ${n0} # Can move files from other directory? expect 0 create ../${n3}/${n1} 0644 expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} # Can move files from other directory overwriting existing files? expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} expect 0 -u 65534 -g 65534 unlink ../${n3}/${n1} # Can move directories from other directory? expect 0 mkdir ../${n3}/${n1} 0777 expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} # Can move directories from other directory overwriting existing directory? expect 0 mkdir ../${n3}/${n1} 0777 expect EACCES -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} expect 0 prependacl . user:65534:delete_child::allow expect 0 -u 65534 -g 65534 rename ../${n3}/${n1} ${n0} expect 0 -u 65534 -g 65534 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n2} expect 0 rmdir ${n3} Index: vendor/pjdfstest/dist/tests/granular/01.t =================================================================== --- vendor/pjdfstest/dist/tests/granular/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/granular/01.t (revision 320447) @@ -1,37 +1,38 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/granular/01.t 211352 2010-08-15 21:24:17Z pjd $ desc="NFSv4 granular permissions checking - ACL_READ_ATTRIBUTES and ACL_WRITE_ATTRIBUTES" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} # Tests 1..12 - check out whether user 65534 is permitted to read attributes. expect 0 create ${n0} 0644 expect 0 lstat ${n0} size expect 0 -u 65534 -g 65534 stat ${n0} size expect 0 prependacl ${n0} user:65534:read_attributes::deny expect 0 lstat ${n0} size expect EACCES -u 65534 -g 65534 stat ${n0} size expect 0 prependacl ${n0} user:65534:read_attributes::allow expect 0 -u 65534 -g 65534 stat ${n0} size expect 0 lstat ${n0} size expect 0 unlink ${n0} # Tests 12..12 - check out whether user 65534 is permitted to write attributes. # XXX: Check if ACL_WRITE_ATTRIBUTES allows for modifying access times. cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/granular/02.t =================================================================== --- vendor/pjdfstest/dist/tests/granular/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/granular/02.t (revision 320447) @@ -1,144 +1,145 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/granular/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="NFSv4 granular permissions checking - ACL_READ_ACL and ACL_WRITE_ACL" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit echo "1..83" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} # Check whether user 65534 is permitted to read ACL. expect 0 create ${n0} 0644 expect 0 readacl ${n0} expect 0 -u 65534 -g 65534 readacl ${n0} expect 0 prependacl ${n0} user:65534:read_acl::deny expect 0 readacl ${n0} expect EACCES -u 65534 -g 65534 readacl ${n0} expect 0 prependacl ${n0} user:65534:read_acl::allow expect 0 -u 65534 -g 65534 readacl ${n0} expect 0 readacl ${n0} expect 0 unlink ${n0} # Check whether user 65534 is permitted to write ACL. expect 0 create ${n0} 0644 expect EPERM -u 65534 -g 65534 prependacl ${n0} user:65534:read_data::allow expect 0 prependacl ${n0} user:65534:write_acl::allow expect 0 -u 65534 -g 65534 prependacl ${n0} user:65534:read_data::allow expect 0 unlink ${n0} # Check whether user 65534 is permitted to write mode. expect 0 create ${n0} 0755 expect EPERM -u 65534 -g 65534 chmod ${n0} 0777 expect 0 prependacl ${n0} user:65534:write_acl::allow expect 0 -u 65534 -g 65534 chmod ${n0} 0777 expect 0 unlink ${n0} # There is an interesting problem with interaction between ACL_WRITE_ACL # and SUID/SGID bits. In case user does have ACL_WRITE_ACL, but is not # a file owner, Solaris does the following: # 1. Setting SUID fails with EPERM. # 2. Setting SGID succeeds, but mode is not changed. # 3. Modifying ACL does not clear SUID nor SGID bits. # 4. Writing the file does clear both SUID and SGID bits. # # What we are doing is the following: # 1. Setting SUID or SGID fails with EPERM. # 2. Modifying ACL does not clear SUID nor SGID bits. # 3. Writing the file does clear both SUID and SGID bits. # # Check whether user 65534 is denied to write mode with SUID bit. expect 0 create ${n0} 0755 expect EPERM -u 65534 -g 65534 chmod ${n0} 04777 expect 0 prependacl ${n0} user:65534:write_acl::allow expect EPERM -u 65534 -g 65534 chmod ${n0} 04777 expect 0 unlink ${n0} # Check whether user 65534 is denied to write mode with SGID bit. expect 0 create ${n0} 0755 expect EPERM -u 65534 -g 65534 chmod ${n0} 02777 expect 0 prependacl ${n0} user:65534:write_acl::allow expect EPERM -u 65534 -g 65534 chmod ${n0} 02777 expect 0 unlink ${n0} # Check whether user 65534 is allowed to write mode with sticky bit. expect 0 mkdir ${n0} 0755 expect EPERM -u 65534 -g 65534 chmod ${n0} 01777 expect 0 prependacl ${n0} user:65534:write_acl::allow expect 0 -u 65534 -g 65534 chmod ${n0} 01777 expect 0 rmdir ${n0} # Check whether modifying the ACL by not-owner preserves the SUID. expect 0 create ${n0} 04755 expect 0 prependacl ${n0} user:65534:write_acl::allow expect 0 -u 65534 -g 65534 prependacl ${n0} user:65534:write_data::allow expect 04755 stat ${n0} mode expect 0 unlink ${n0} # Check whether modifying the ACL by not-owner preserves the SGID. expect 0 create ${n0} 02755 expect 0 prependacl ${n0} user:65534:write_acl::allow expect 0 -u 65534 -g 65534 prependacl ${n0} user:65534:write_data::allow expect 02755 stat ${n0} mode expect 0 unlink ${n0} # Check whether modifying the ACL by not-owner preserves the sticky bit. expect 0 mkdir ${n0} 0755 expect 0 chmod ${n0} 01755 expect 0 prependacl ${n0} user:65534:write_acl::allow expect 0 -u 65534 -g 65534 prependacl ${n0} user:65534:write_data::allow expect 01755 stat ${n0} mode expect 0 rmdir ${n0} # Clearing the SUID and SGID bits when being written to by non-owner # is checked in chmod/12.t. # Check whether the file owner is always permitted to get and set # ACL and file mode, even if ACL_{READ,WRITE}_ACL would deny it. expect 0 chmod . 0777 expect 0 -u 65534 -g 65534 create ${n0} 0600 expect 0 -u 65534 -g 65534 prependacl ${n0} user:65534:write_acl::deny expect 0 -u 65534 -g 65534 prependacl ${n0} user:65534:read_acl::deny expect 0 -u 65534 -g 65534 readacl ${n0} expect 0600 -u 65534 -g 65534 stat ${n0} mode expect 0 -u 65534 -g 65534 chmod ${n0} 0777 expect 0 unlink ${n0} expect 0 -u 65534 -g 65534 mkdir ${n0} 0600 expect 0 -u 65534 -g 65534 prependacl ${n0} user:65534:write_acl::deny expect 0 -u 65534 -g 65534 prependacl ${n0} user:65534:read_acl::deny expect 0 -u 65534 -g 65534 readacl ${n0} expect 0600 -u 65534 -g 65534 stat ${n0} mode expect 0 -u 65534 -g 65534 chmod ${n0} 0777 expect 0 rmdir ${n0} # Check whether the root is allowed for these as well. expect 0 -u 65534 -g 65534 create ${n0} 0600 expect 0 prependacl ${n0} everyone@:write_acl::deny expect 0 prependacl ${n0} everyone@:read_acl::deny expect 0 readacl ${n0} expect 0600 stat ${n0} mode expect 0 chmod ${n0} 0777 expect 0 unlink ${n0} expect 0 -u 65534 -g 65534 mkdir ${n0} 0600 expect 0 prependacl ${n0} everyone@:write_acl::deny expect 0 prependacl ${n0} everyone@:read_acl::deny expect 0600 stat ${n0} mode expect 0 readacl ${n0} expect 0600 stat ${n0} mode expect 0 chmod ${n0} 0777 expect 0 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/granular/03.t =================================================================== --- vendor/pjdfstest/dist/tests/granular/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/granular/03.t (revision 320447) @@ -1,134 +1,135 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/granular/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="NFSv4 granular permissions checking - DELETE and DELETE_CHILD" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit echo "1..65" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` expect 0 mkdir ${n2} 0755 expect 0 mkdir ${n3} 0777 cdir=`pwd` cd ${n2} # Unlink allowed on writable directory. expect 0 create ${n0} 0644 expect EACCES -u 65534 -g 65534 unlink ${n0} expect 0 prependacl . user:65534:write_data::allow expect 0 -u 65534 -g 65534 unlink ${n0} # Moving file elsewhere allowed on writable directory. expect 0 create ${n0} 0644 expect 0 prependacl . user:65534:write_data::deny expect EACCES -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} expect 0 prependacl . user:65534:write_data::allow expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} # Moving file from elsewhere allowed on writable directory. expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 unlink ${n0} # Moving file from elsewhere overwriting local file allowed # on writable directory. expect 0 create ${n0} 0644 expect 0 create ../${n3}/${n0} 0644 expect 0 prependacl . user:65534:write_data::deny expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 prependacl . user:65534:write_data::allow expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 unlink ${n0} # Denied DELETE changes nothing wrt removing. expect 0 create ${n0} 0644 expect 0 prependacl ${n0} user:65534:delete::deny expect 0 -u 65534 -g 65534 unlink ${n0} # Denied DELETE changes nothing wrt moving elsewhere or from elsewhere. expect 0 create ${n0} 0644 expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 unlink ${n0} # DELETE_CHILD denies unlink on writable directory. expect 0 create ${n0} 0644 expect 0 prependacl . user:65534:delete_child::deny expect EPERM -u 65534 -g 65534 unlink ${n0} expect 0 unlink ${n0} # DELETE_CHILD denies moving file elsewhere. expect 0 create ${n0} 0644 expect EPERM -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} expect 0 rename ${n0} ../${n3}/${n0} # DELETE_CHILD does not deny moving file from elsewhere # to a writable directory. expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # DELETE_CHILD denies moving file from elsewhere # to a writable directory overwriting local file. expect 0 create ../${n3}/${n0} 0644 expect EPERM -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # DELETE allowed on file allows for unlinking, no matter # what permissions on containing directory are. expect 0 prependacl ${n0} user:65534:delete::allow expect 0 -u 65534 -g 65534 unlink ${n0} # Same for moving the file elsewhere. expect 0 create ${n0} 0644 expect 0 prependacl ${n0} user:65534:delete::allow expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} # Same for moving the file from elsewhere into a writable # directory with DELETE_CHILD denied. expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 unlink ${n0} # DELETE does not allow for overwriting a file in a unwritable # directory with DELETE_CHILD denied. expect 0 create ${n0} 0644 expect 0 create ../${n3}/${n0} 0644 expect 0 prependacl . user:65534:write_data::deny expect 0 prependacl . user:65534:delete_child::deny expect EPERM -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 prependacl ${n0} user:65534:delete::allow expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # But it allows for plain deletion. expect 0 -u 65534 -g 65534 unlink ${n0} # DELETE_CHILD allowed on unwritable directory. expect 0 create ${n0} 0644 expect 0 prependacl . user:65534:delete_child::allow expect 0 -u 65534 -g 65534 unlink ${n0} # Moving things elsewhere is allowed. expect 0 create ${n0} 0644 expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} # Moving things back is not. expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # Even if we're overwriting. expect 0 create ${n0} 0644 expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # Even if we have DELETE on the existing file. expect 0 prependacl ${n0} user:65534:delete::allow expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # Denied DELETE changes nothing wrt removing. expect 0 prependacl ${n0} user:65534:delete::deny expect 0 -u 65534 -g 65534 unlink ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/granular/04.t =================================================================== --- vendor/pjdfstest/dist/tests/granular/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/granular/04.t (revision 320447) @@ -1,80 +1,46 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/granular/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="NFSv4 granular permissions checking - ACL_WRITE_OWNER" dir=`dirname $0` . ${dir}/../misc.sh -[ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit +nfsv4acls || quick_exit -echo "1..52" +echo "1..22" n0=`namegen` -n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} # ACL_WRITE_OWNER permits to set gid to our own only. expect 0 create ${n0} 0644 expect 0,0 lstat ${n0} uid,gid expect EPERM -u 65534 -g 65532,65531 chown ${n0} -1 65532 expect 0,0 lstat ${n0} uid,gid expect 0 prependacl ${n0} user:65534:write_owner::allow expect EPERM -u 65534 -g 65532,65531 chown ${n0} -1 65530 expect 0,0 lstat ${n0} uid,gid expect 0 -u 65534 -g 65532,65531 chown ${n0} -1 65532 expect 0,65532 lstat ${n0} uid,gid expect 0 unlink ${n0} # ACL_WRITE_OWNER permits to set uid to our own only. expect 0 create ${n0} 0644 expect 0,0 lstat ${n0} uid,gid expect EPERM -u 65534 -g 65532,65531 chown ${n0} 65534 65531 expect 0,0 lstat ${n0} uid,gid expect 0 prependacl ${n0} user:65534:write_owner::allow expect EPERM -u 65534 -g 65532,65531 chown ${n0} 65530 65531 expect 0,0 lstat ${n0} uid,gid expect 0 -u 65534 -g 65532,65531 chown ${n0} 65534 65531 expect 65534,65531 lstat ${n0} uid,gid expect 0 unlink ${n0} - -# When non-owner calls chown(2) successfully, set-uid and set-gid bits are -# removed, except when both uid and gid are equal to -1. -expect 0 create ${n0} 0644 -expect 0 prependacl ${n0} user:65534:write_owner::allow -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532 -expect 0555,65534,65532 lstat ${n0} mode,uid,gid -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533 -expect 0555,65534,65533 lstat ${n0} mode,uid,gid -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1 -expect 06555,65534,65533 lstat ${n0} mode,uid,gid -expect 0 unlink ${n0} - -expect 0 mkdir ${n0} 0755 -expect 0 prependacl ${n0} user:65534:write_owner::allow -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 chown ${n0} 65534 65532 -expect 0555,65534,65532 lstat ${n0} mode,uid,gid -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 65533 -expect 0555,65534,65533 lstat ${n0} mode,uid,gid -expect 0 chmod ${n0} 06555 -expect 06555 lstat ${n0} mode -expect 0 -u 65534 -g 65533,65532 chown ${n0} -1 -1 -expect 06555,65534,65533 lstat ${n0} mode,uid,gid -expect 0 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/granular/05.t =================================================================== --- vendor/pjdfstest/dist/tests/granular/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/granular/05.t (revision 320447) @@ -1,149 +1,150 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/granular/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="NFSv4 granular permissions checking - DELETE and DELETE_CHILD with directories" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:ZFS" ] || quick_exit echo "1..68" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` expect 0 mkdir ${n2} 0755 expect 0 mkdir ${n3} 0777 cdir=`pwd` cd ${n2} # Unlink allowed on writable directory. expect 0 mkdir ${n0} 0755 expect EACCES -u 65534 -g 65534 rmdir ${n0} expect 0 prependacl . user:65534:write_data::allow expect 0 -u 65534 -g 65534 rmdir ${n0} # Moving directory elsewhere allowed on writable directory. expect 0 mkdir ${n0} 0777 expect 0 prependacl . user:65534:write_data::deny expect EACCES -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} expect 0 prependacl . user:65534:write_data::allow expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} # 12 # Moving directory from elsewhere allowed on writable directory. expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 prependacl . user:65534:append_data::allow expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 rmdir ${n0} # Moving directory from elsewhere overwriting local directory allowed # on writable directory. expect 0 mkdir ${n0} 0755 expect 0 mkdir ../${n3}/${n0} 0777 expect 0 prependacl . user:65534:write_data::deny expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 prependacl . user:65534:write_data::allow expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 rmdir ${n0} # 23 # Denied DELETE changes nothing wrt removing. expect 0 mkdir ${n0} 0755 expect 0 prependacl ${n0} user:65534:delete::deny expect 0 -u 65534 -g 65534 rmdir ${n0} # Denied DELETE changes nothing wrt moving elsewhere or from elsewhere. expect 0 mkdir ${n0} 0777 expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 rmdir ${n0} # DELETE_CHILD denies unlink on writable directory. expect 0 mkdir ${n0} 0755 expect 0 prependacl . user:65534:delete_child::deny expect EPERM -u 65534 -g 65534 rmdir ${n0} expect 0 rmdir ${n0} # 35 # DELETE_CHILD denies moving directory elsewhere. expect 0 mkdir ${n0} 0777 expect EPERM -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} expect 0 rename ${n0} ../${n3}/${n0} # DELETE_CHILD does not deny moving directory from elsewhere # to a writable directory. expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # DELETE_CHILD denies moving directory from elsewhere # to a writable directory overwriting local directory. expect 0 mkdir ../${n3}/${n0} 0755 expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # DELETE allowed on directory allows for unlinking, no matter # what permissions on containing directory are. expect 0 prependacl ${n0} user:65534:delete::allow expect 0 -u 65534 -g 65534 rmdir ${n0} # Same for moving the directory elsewhere. expect 0 mkdir ${n0} 0777 expect 0 prependacl ${n0} user:65534:delete::allow expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} # 46 # Same for moving the directory from elsewhere into a writable # directory with DELETE_CHILD denied. expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 rmdir ${n0} # DELETE does not allow for overwriting a directory in a unwritable # directory with DELETE_CHILD denied. expect 0 mkdir ${n0} 0755 expect 0 mkdir ../${n3}/${n0} 0777 expect 0 prependacl . user:65534:write_data::deny expect 0 prependacl . user:65534:delete_child::deny expect EPERM -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 prependacl ${n0} user:65534:delete::allow # XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # 54 # But it allows for plain deletion. # XXX: expect 0 -u 65534 -g 65534 rmdir ${n0} expect 0 rmdir ${n0} # DELETE_CHILD allowed on unwritable directory. expect 0 mkdir ${n0} 0755 expect 0 prependacl . user:65534:delete_child::allow expect 0 -u 65534 -g 65534 rmdir ${n0} # Moving things elsewhere is allowed. expect 0 mkdir ${n0} 0777 expect 0 -u 65534 -g 65534 rename ${n0} ../${n3}/${n0} # 60 # Moving things back is not. # XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # Even if we're overwriting. # XXX: expect 0 mkdir ${n0} 0755 expect 0 mkdir ../${n3}/${n0} 0777 # XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 mkdir ../${n3}/${n0} 0777 # Even if we have DELETE on the existing directory. expect 0 prependacl ${n0} user:65534:delete::allow # XXX: expect EACCES -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} expect 0 -u 65534 -g 65534 rename ../${n3}/${n0} ${n0} # Denied DELETE changes nothing wrt removing. expect 0 prependacl ${n0} user:65534:delete::deny expect 0 -u 65534 -g 65534 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/link/00.t =================================================================== --- vendor/pjdfstest/dist/tests/link/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/00.t (revision 320447) @@ -1,93 +1,94 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="link creates hardlinks" dir=`dirname $0` . ${dir}/../misc.sh echo "1..202" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` expect 0 mkdir ${n3} 0755 cdir=`pwd` cd ${n3} for type in regular fifo block char socket; do create_file ${type} ${n0} expect ${type},1 lstat ${n0} type,nlink expect 0 link ${n0} ${n1} expect ${type},2 lstat ${n0} type,nlink expect ${type},2 lstat ${n1} type,nlink expect 0 link ${n1} ${n2} expect ${type},3 lstat ${n0} type,nlink expect ${type},3 lstat ${n1} type,nlink expect ${type},3 lstat ${n2} type,nlink expect 0 chmod ${n1} 0201 expect 0 chown ${n1} 65534 65533 expect ${type},0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid expect ${type},0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid expect ${type},0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid expect 0 unlink ${n0} expect ENOENT lstat ${n0} type,mode,nlink,uid,gid expect ${type},0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid expect ${type},0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid expect 0 unlink ${n2} expect ENOENT lstat ${n0} type,mode,nlink,uid,gid expect ${type},0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid expect ENOENT lstat ${n2} type,mode,nlink,uid,gid expect 0 unlink ${n1} expect ENOENT lstat ${n0} type,mode,nlink,uid,gid expect ENOENT lstat ${n1} type,mode,nlink,uid,gid expect ENOENT lstat ${n2} type,mode,nlink,uid,gid done # successful link(2) updates ctime. for type in regular fifo block char socket; do create_file ${type} ${n0} ctime1=`${fstest} stat ${n0} ctime` dctime1=`${fstest} stat . ctime` dmtime1=`${fstest} stat . mtime` sleep 1 expect 0 link ${n0} ${n1} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 dctime2=`${fstest} stat . ctime` test_check $dctime1 -lt $dctime2 dmtime2=`${fstest} stat . mtime` test_check $dctime1 -lt $dmtime2 expect 0 unlink ${n0} expect 0 unlink ${n1} done # unsuccessful link(2) does not update ctime. for type in regular fifo block char socket; do create_file ${type} ${n0} expect 0 -- chown ${n0} 65534 -1 ctime1=`${fstest} stat ${n0} ctime` dctime1=`${fstest} stat . ctime` dmtime1=`${fstest} stat . mtime` sleep 1 expect EACCES -u 65534 link ${n0} ${n1} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 dctime2=`${fstest} stat . ctime` test_check $dctime1 -eq $dctime2 dmtime2=`${fstest} stat . mtime` test_check $dctime1 -eq $dmtime2 expect 0 unlink ${n0} done cd ${cdir} expect 0 rmdir ${n3} Index: vendor/pjdfstest/dist/tests/link/01.t =================================================================== --- vendor/pjdfstest/dist/tests/link/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/01.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/01.t 211474 2010-08-18 22:06:43Z pjd $ desc="link returns ENOTDIR if a component of either path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..32" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR link ${n0}/${n1}/test ${n0}/${n2} create_file ${type} ${n0}/${n2} expect ENOTDIR link ${n0}/${n2} ${n0}/${n1}/test expect 0 unlink ${n0}/${n1} expect 0 unlink ${n0}/${n2} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/02.t =================================================================== --- vendor/pjdfstest/dist/tests/link/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/02.t (revision 320447) @@ -1,25 +1,26 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns ENAMETOOLONG if a component of either pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` nx=`namegen_max` nxx="${nx}x" expect 0 create ${nx} 0644 expect 0 link ${nx} ${n0} expect 0 unlink ${nx} expect 0 link ${n0} ${nx} expect 0 unlink ${n0} expect 0 unlink ${nx} expect 0 create ${n0} 0644 expect ENAMETOOLONG link ${n0} ${nxx} expect 0 unlink ${n0} expect ENAMETOOLONG link ${nxx} ${n0} Index: vendor/pjdfstest/dist/tests/link/03.t =================================================================== --- vendor/pjdfstest/dist/tests/link/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/03.t (revision 320447) @@ -1,31 +1,32 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns ENAMETOOLONG if an entire length of either path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..13" n0=`namegen` nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 create ${nx} 0644 expect 0 link ${nx} ${n0} expect 2 stat ${n0} nlink expect 2 stat ${nx} nlink expect 0 unlink ${nx} expect 0 link ${n0} ${nx} expect 2 stat ${n0} nlink expect 2 stat ${nx} nlink expect 0 unlink ${nx} expect ENAMETOOLONG link ${n0} ${nxx} expect 1 stat ${n0} nlink expect 0 unlink ${n0} expect ENAMETOOLONG link ${nxx} ${n0} rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/link/04.t =================================================================== --- vendor/pjdfstest/dist/tests/link/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/04.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns ENOENT if a component of either path prefix does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT link ${n0}/${n1}/test ${n2} expect 0 create ${n2} 0644 expect ENOENT link ${n2} ${n0}/${n1}/test expect 0 unlink ${n2} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/05.t =================================================================== --- vendor/pjdfstest/dist/tests/link/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/05.t (revision 320447) @@ -1,36 +1,37 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EMLINK if the link count of the file named by name1 would exceed 32767" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..5" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs -i 1 /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs -i 1 /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 i=1 while :; do link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1 if [ $? -ne 0 ]; then break fi i=`expr $i + 1` done test_check $i -eq 32767 expect EMLINK link ${n0}/${n1} ${n0}/${n2} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/06.t =================================================================== --- vendor/pjdfstest/dist/tests/link/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/06.t (revision 320447) @@ -1,43 +1,44 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EACCES when a component of either path prefix denies search permission" dir=`dirname $0` . ${dir}/../misc.sh echo "1..18" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` n4=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 mkdir ${n2} 0755 expect 0 chown ${n2} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 expect 0 -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} expect 0 -u 65534 -g 65534 unlink ${n2}/${n4} expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n1}/${n4} expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} expect 0 chmod ${n1} 0755 expect 0 chmod ${n2} 0644 expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} expect 0 unlink ${n1}/${n3} expect 0 rmdir ${n1} expect 0 rmdir ${n2} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/07.t =================================================================== --- vendor/pjdfstest/dist/tests/link/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/07.t (revision 320447) @@ -1,41 +1,42 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EACCES when the requested link requires writing in a directory with a mode that denies write permission" dir=`dirname $0` . ${dir}/../misc.sh echo "1..17" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` n4=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 mkdir ${n2} 0755 expect 0 chown ${n2} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 expect 0 -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} expect 0 -u 65534 -g 65534 unlink ${n2}/${n4} expect 0 chmod ${n2} 0555 expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} expect 0 chmod ${n1} 0555 expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n1}/${n4} expect 0 chmod ${n1} 0755 expect 0 unlink ${n1}/${n3} expect 0 rmdir ${n1} expect 0 rmdir ${n2} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/08.t =================================================================== --- vendor/pjdfstest/dist/tests/link/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/08.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns ELOOP if too many symbolic links were encountered in translating one of the pathnames" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP link ${n0}/test ${n2} expect ELOOP link ${n1}/test ${n2} expect 0 create ${n2} 0644 expect ELOOP link ${n2} ${n0}/test expect ELOOP link ${n2} ${n1}/test expect 0 unlink ${n0} expect 0 unlink ${n1} expect 0 unlink ${n2} Index: vendor/pjdfstest/dist/tests/link/09.t =================================================================== --- vendor/pjdfstest/dist/tests/link/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/09.t (revision 320447) @@ -1,18 +1,19 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns ENOENT if the source file does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" n0=`namegen` n1=`namegen` expect 0 create ${n0} 0644 expect 0 link ${n0} ${n1} expect 0 unlink ${n0} expect 0 unlink ${n1} expect ENOENT link ${n0} ${n1} Index: vendor/pjdfstest/dist/tests/link/10.t =================================================================== --- vendor/pjdfstest/dist/tests/link/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/10.t (revision 320447) @@ -1,26 +1,27 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/10.t 211474 2010-08-18 22:06:43Z pjd $ desc="link returns EEXIST if the destination file does exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..23" n0=`namegen` n1=`namegen` expect 0 create ${n0} 0644 for type in regular dir fifo block char socket symlink; do create_file ${type} ${n1} expect EEXIST link ${n0} ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/link/11.t =================================================================== --- vendor/pjdfstest/dist/tests/link/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/11.t (revision 320447) @@ -1,41 +1,42 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EPERM if the source file is a directory" dir=`dirname $0` . ${dir}/../misc.sh n0=`namegen` n1=`namegen` n2=`namegen` case "${os}:${fs}" in SunOS:UFS) echo "1..10" expect 0 mkdir ${n0} 0755 expect 0 link ${n0} ${n1} expect 0 unlink ${n1} expect 0 rmdir ${n0} ;; *) echo "1..9" expect 0 mkdir ${n0} 0755 expect EPERM link ${n0} ${n1} expect 0 rmdir ${n0} ;; esac expect 0 mkdir ${n0} 0755 expect 0 chown ${n0} 65534 65534 cdir=`pwd` cd ${n0} expect 0 -u 65534 -g 65534 mkdir ${n1} 0755 expect EPERM -u 65534 -g 65534 link ${n1} ${n2} expect 0 -u 65534 -g 65534 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/12.t =================================================================== --- vendor/pjdfstest/dist/tests/link/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/12.t (revision 320447) @@ -1,95 +1,85 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EPERM if the source file has its immutable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) - echo "1..27" + echo "1..28" ;; FreeBSD:UFS) echo "1..48" ;; *) quick_exit esac n0=`namegen` n1=`namegen` expect 0 create ${n0} 0644 expect 1 stat ${n0} nlink expect 0 link ${n0} ${n1} expect 2 stat ${n0} nlink expect 0 unlink ${n1} expect 1 stat ${n0} nlink expect 0 chflags ${n0} SF_IMMUTABLE -todo FreeBSD:ZFS "Creating a hard link to a file protected by SF_IMMUTABLE should return EPERM." expect EPERM link ${n0} ${n1} -todo FreeBSD:ZFS "Creating a hard link to a file protected by SF_IMMUTABLE should return EPERM." expect 1 stat ${n0} nlink expect 0 chflags ${n0} none -todo FreeBSD:ZFS "Creating a hard link to a file protected by SF_IMMUTABLE should return EPERM." expect 0 link ${n0} ${n1} expect 2 stat ${n0} nlink expect 0 unlink ${n1} expect 1 stat ${n0} nlink expect 0 chflags ${n0} SF_NOUNLINK expect 0 link ${n0} ${n1} expect 2 stat ${n0} nlink expect 0 chflags ${n0} none expect 0 unlink ${n1} expect 1 stat ${n0} nlink +expect 0 chflags ${n0} SF_APPEND +expect EPERM link ${n0} ${n1} +expect 0 chflags ${n0} none +expect 0 link ${n0} ${n1} +expect 2 stat ${n0} nlink +expect 0 unlink ${n1} +expect 1 stat ${n0} nlink + case "${os}:${fs}" in -FreeBSD:ZFS) - expect 0 chflags ${n0} SF_APPEND - expect 0 link ${n0} ${n1} - expect 2 stat ${n0} nlink - expect 0 chflags ${n0} none - expect 0 unlink ${n1} - expect 1 stat ${n0} nlink - ;; FreeBSD:UFS) - expect 0 chflags ${n0} SF_APPEND - expect EPERM link ${n0} ${n1} - expect 0 chflags ${n0} none - expect 0 link ${n0} ${n1} - expect 2 stat ${n0} nlink - expect 0 unlink ${n1} - expect 1 stat ${n0} nlink - expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM link ${n0} ${n1} expect 0 chflags ${n0} none expect 0 link ${n0} ${n1} expect 2 stat ${n0} nlink expect 0 unlink ${n1} expect 1 stat ${n0} nlink expect 0 chflags ${n0} UF_NOUNLINK expect 0 link ${n0} ${n1} expect 2 stat ${n0} nlink expect 0 chflags ${n0} none expect 0 unlink ${n1} expect 1 stat ${n0} nlink expect 0 chflags ${n0} UF_APPEND expect EPERM link ${n0} ${n1} expect 0 chflags ${n0} none expect 0 link ${n0} ${n1} expect 2 stat ${n0} nlink expect 0 unlink ${n1} expect 1 stat ${n0} nlink ;; esac expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/link/13.t =================================================================== --- vendor/pjdfstest/dist/tests/link/13.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/13.t (revision 320447) @@ -1,86 +1,87 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/13.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EPERM if the parent directory of the destination file has its immutable flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..29" ;; FreeBSD:UFS) echo "1..49" ;; *) quick_exit esac n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 expect 1 stat ${n0}/${n1} nlink expect 0 link ${n0}/${n1} ${n0}/${n2} expect 2 stat ${n0}/${n1} nlink expect 0 unlink ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM link ${n0}/${n1} ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink expect 0 chflags ${n0} none expect 0 link ${n0}/${n1} ${n0}/${n2} expect 2 stat ${n0}/${n1} nlink expect 0 unlink ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink expect 0 chflags ${n0} SF_NOUNLINK expect 0 link ${n0}/${n1} ${n0}/${n2} expect 2 stat ${n0}/${n1} nlink expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink expect 0 chflags ${n0} SF_APPEND expect 0 link ${n0}/${n1} ${n0}/${n2} expect 2 stat ${n0}/${n1} nlink expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink case "${os}:${fs}" in FreeBSD:UFS) expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM link ${n0}/${n1} ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink expect 0 chflags ${n0} none expect 0 link ${n0}/${n1} ${n0}/${n2} expect 2 stat ${n0}/${n1} nlink expect 0 unlink ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink expect 0 chflags ${n0} UF_NOUNLINK expect 0 link ${n0}/${n1} ${n0}/${n2} expect 2 stat ${n0}/${n1} nlink expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink expect 0 chflags ${n0} UF_APPEND expect 0 link ${n0}/${n1} ${n0}/${n2} expect 2 stat ${n0}/${n1} nlink expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n2} expect 1 stat ${n0}/${n1} nlink ;; esac expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/14.t =================================================================== --- vendor/pjdfstest/dist/tests/link/14.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/14.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/14.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EXDEV if the source and the destination files are on different file systems" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}" = "FreeBSD" ] || quick_exit echo "1..8" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 expect EXDEV link ${n0}/${n1} ${n2} expect 0 unlink ${n0}/${n1} expect 0 create ${n1} 0644 expect EXDEV link ${n1} ${n0}/${n2} expect 0 unlink ${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/15.t =================================================================== --- vendor/pjdfstest/dist/tests/link/15.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/15.t (revision 320447) @@ -1,33 +1,34 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/15.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns ENOSPC if the directory in which the entry for the new link is being placed cannot be extended because there is no space left on the file system containing the directory" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..4" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 256k` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 512k` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 i=0 while :; do link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1 if [ $? -ne 0 ]; then break fi i=`expr $i + 1` done expect ENOSPC link ${n0}/${n1} ${n0}/${n2} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/16.t =================================================================== --- vendor/pjdfstest/dist/tests/link/16.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/16.t (revision 320447) @@ -1,34 +1,35 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/16.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EROFS if the requested link requires writing in a directory on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}" = "FreeBSD" ] || quick_exit echo "1..9" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 expect 0 link ${n0}/${n1} ${n0}/${n2} expect 0 unlink ${n0}/${n2} mount -ur /dev/md${n} expect EROFS link ${n0}/${n1} ${n0}/${n2} mount -uw /dev/md${n} expect 0 link ${n0}/${n1} ${n0}/${n2} expect 0 unlink ${n0}/${n2} expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/link/17.t =================================================================== --- vendor/pjdfstest/dist/tests/link/17.t (revision 320446) +++ vendor/pjdfstest/dist/tests/link/17.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/link/17.t 211352 2010-08-15 21:24:17Z pjd $ desc="link returns EFAULT if one of the pathnames specified is outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..8" n0=`namegen` expect 0 create ${n0} 0644 expect EFAULT link ${n0} NULL expect EFAULT link ${n0} DEADCODE expect 0 unlink ${n0} expect EFAULT link NULL ${n0} expect EFAULT link DEADCODE ${n0} expect EFAULT link NULL DEADCODE expect EFAULT link DEADCODE NULL Index: vendor/pjdfstest/dist/tests/misc.sh =================================================================== --- vendor/pjdfstest/dist/tests/misc.sh (revision 320446) +++ vendor/pjdfstest/dist/tests/misc.sh (revision 320447) @@ -1,221 +1,331 @@ # $FreeBSD$ ntest=1 -case "${dir}" in -/*) - maindir="${dir}/../.." - ;; -*) - maindir="`pwd`/${dir}/../.." - ;; -esac +confdir=${dir:-$(dirname "$0")} +maindir=${dir:-$(dirname "$0")} +while [ ! -r "$confdir/conf" -a "$confdir" != / ]; do + confdir=$(cd $confdir/..; pwd) +done +while [ "$maindir" != / ]; do + if [ -f "$maindir/pjdfstest" -a -x "$maindir/pjdfstest" ]; then + break + fi + maindir=$(cd $maindir/../; pwd) +done fstest="${maindir}/pjdfstest" -. ${maindir}/tests/conf +if ! . ${confdir}/conf; then + echo "not ok - could not source configuration file" + exit 1 +fi +if [ ! -x $fstest ]; then + echo "not ok - could not find pjdfstest app" + exit 1 +fi +requires_root() +{ + case "$(id -u)" in + 0) + return 0 + ;; + *) + echo "not ok ${ntest} not root" + return 1 + ;; + esac +} + expect() { e="${1}" shift r=`${fstest} $* 2>/dev/null | tail -1` echo "${r}" | ${GREP} -Eq '^'${e}'$' if [ $? -eq 0 ]; then if [ -z "${todomsg}" ]; then echo "ok ${ntest}" else echo "ok ${ntest} # TODO ${todomsg}" fi else if [ -z "${todomsg}" ]; then echo "not ok ${ntest} - tried '$*', expected ${e}, got ${r}" else echo "not ok ${ntest} # TODO ${todomsg}" fi fi todomsg="" ntest=$((ntest+1)) } jexpect() { s="${1}" d="${2}" e="${3}" + shift 3 - r=`jail -s ${s} / pjdfstest 127.0.0.1 /bin/sh -c "cd ${d} && ${fstest} $* 2>/dev/null" | tail -1` + r=`jail -s ${s} / pjdfstest 127.0.0.1 /bin/sh -c "cd ${d} && ${fstest} $* 2>/dev/null" 2>/dev/null | tail -1` echo "${r}" | ${GREP} -Eq '^'${e}'$' if [ $? -eq 0 ]; then if [ -z "${todomsg}" ]; then echo "ok ${ntest}" else echo "ok ${ntest} # TODO ${todomsg}" fi else if [ -z "${todomsg}" ]; then echo "not ok ${ntest} - tried '$*', expected ${e}, got ${r}" else echo "not ok ${ntest} # TODO ${todomsg}" fi fi todomsg="" ntest=$((ntest+1)) } test_check() { if [ $* ]; then if [ -z "${todomsg}" ]; then echo "ok ${ntest}" else echo "ok ${ntest} # TODO ${todomsg}" fi else if [ -z "${todomsg}" ]; then echo "not ok ${ntest}" else echo "not ok ${ntest} # TODO ${todomsg}" fi fi todomsg="" ntest=$((ntest+1)) } todo() { if [ "${os}" = "${1}" -o "${os}:${fs}" = "${1}" ]; then todomsg="${2}" fi } namegen() { echo "pjdfstest_`dd if=/dev/urandom bs=1k count=1 2>/dev/null | openssl md5 | awk '{print $NF}'`" } namegen_len() { len="${1}" name="" while :; do namepart="`dd if=/dev/urandom bs=64 count=1 2>/dev/null | openssl md5 | awk '{print $NF}'`" name="${name}${namepart}" curlen=`printf "%s" "${name}" | wc -c` [ ${curlen} -lt ${len} ] || break done name=`echo "${name}" | cut -b -${len}` printf "%s" "${name}" } # POSIX: # {NAME_MAX} # Maximum number of bytes in a filename (not including terminating null). namegen_max() { name_max=`${fstest} pathconf . _PC_NAME_MAX` namegen_len ${name_max} } # POSIX: # {PATH_MAX} # Maximum number of bytes in a pathname, including the terminating null character. dirgen_max() { name_max=`${fstest} pathconf . _PC_NAME_MAX` complen=$((name_max/2)) path_max=`${fstest} pathconf . _PC_PATH_MAX` # "...including the terminating null character." path_max=$((path_max-1)) name="" while :; do name="${name}`namegen_len ${complen}`/" curlen=`printf "%s" "${name}" | wc -c` [ ${curlen} -lt ${path_max} ] || break done name=`echo "${name}" | cut -b -${path_max}` name=`echo "${name}" | sed -E 's@/$@x@'` printf "%s" "${name}" } quick_exit() { echo "1..1" echo "ok 1" exit 0 } supported() { case "${1}" in lchmod) if [ "${os}" != "FreeBSD" ]; then return 1 fi ;; chflags) if [ "${os}" != "FreeBSD" ]; then return 1 fi ;; chflags_SF_SNAPSHOT) if [ "${os}" != "FreeBSD" -o "${fs}" != "UFS" ]; then return 1 fi ;; + posix_fallocate) + if [ "${os}" != "FreeBSD" ]; then + return 1 + fi + ;; + stat_st_birthtime) + case "${os}" in + Darwin|FreeBSD) + ;; + *) + return 1 + ;; + esac + ;; + utimensat) + case ${os} in + Darwin) + return 1 + ;; + esac + ;; esac return 0 } require() { if supported ${1}; then return fi quick_exit } +if [ "${os}" = "FreeBSD" ]; then +mountpoint() +{ + df $1 | tail -1 | awk '{ print $6 }' +} + +mount_options() +{ + mount -p | awk '$2 == "'$(mountpoint .)'" { print $4 }' | sed -e 's/,/ /g' +} + +nfsv4acls() +{ + if mount_options | grep -q nfsv4acls; then + return 0 + fi + return 1 +} + +noexec() +{ + if mount_options | grep -q noexec; then + return 0 + fi + return 1 +} + +nosuid() +{ + if mount_options | grep -q nosuid; then + return 0 + fi + return 1 +} +else +mountpoint() +{ + return 1 +} +mount_options() +{ + return 1 +} +nfsv4acls() +{ + return 1 +} +noexec() +{ + return 1 +} +nosuid() +{ + return 1 +} +fi + # usage: # create_file # create_file # create_file # create_file create_file() { type="${1}" name="${2}" case "${type}" in none) return ;; regular) expect 0 create ${name} 0644 ;; dir) expect 0 mkdir ${name} 0755 ;; fifo) expect 0 mkfifo ${name} 0644 ;; block) expect 0 mknod ${name} b 0644 1 2 ;; char) expect 0 mknod ${name} c 0644 1 2 ;; socket) expect 0 bind ${name} ;; symlink) expect 0 symlink test ${name} ;; esac if [ -n "${3}" -a -n "${4}" -a -n "${5}" ]; then - expect 0 lchmod ${name} ${3} + if [ "${type}" = symlink ]; then + expect 0 lchmod ${name} ${3} + else + expect 0 chmod ${name} ${3} + fi expect 0 lchown ${name} ${4} ${5} elif [ -n "${3}" -a -n "${4}" ]; then expect 0 lchown ${name} ${3} ${4} elif [ -n "${3}" ]; then - expect 0 lchmod ${name} ${3} + if [ "${type}" = symlink ]; then + expect 0 lchmod ${name} ${3} + else + expect 0 chmod ${name} ${3} + fi fi } Index: vendor/pjdfstest/dist/tests/mkdir/00.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/00.t (revision 320447) @@ -1,73 +1,74 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir creates directories" dir=`dirname $0` . ${dir}/../misc.sh echo "1..36" n0=`namegen` n1=`namegen` expect 0 mkdir ${n1} 0755 cdir=`pwd` cd ${n1} # POSIX: The file permission bits of the new directory shall be initialized from # mode. These file permission bits of the mode argument shall be modified by the # process' file creation mask. expect 0 mkdir ${n0} 0755 expect dir,0755 lstat ${n0} type,mode expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0151 expect dir,0151 lstat ${n0} type,mode expect 0 rmdir ${n0} expect 0 -U 077 mkdir ${n0} 0151 expect dir,0100 lstat ${n0} type,mode expect 0 rmdir ${n0} expect 0 -U 070 mkdir ${n0} 0345 expect dir,0305 lstat ${n0} type,mode expect 0 rmdir ${n0} expect 0 -U 0501 mkdir ${n0} 0345 expect dir,0244 lstat ${n0} type,mode expect 0 rmdir ${n0} # POSIX: The directory's user ID shall be set to the process' effective user ID. # The directory's group ID shall be set to the group ID of the parent directory # or to the effective group ID of the process. expect 0 chown . 65535 65535 expect 0 -u 65535 -g 65535 mkdir ${n0} 0755 expect 65535,65535 lstat ${n0} uid,gid expect 0 rmdir ${n0} expect 0 -u 65535 -g 65534 mkdir ${n0} 0755 expect "65535,6553[45]" lstat ${n0} uid,gid expect 0 rmdir ${n0} expect 0 chmod . 0777 expect 0 -u 65534 -g 65533 mkdir ${n0} 0755 expect "65534,6553[35]" lstat ${n0} uid,gid expect 0 rmdir ${n0} # POSIX: Upon successful completion, mkdir() shall mark for update the st_atime, # st_ctime, and st_mtime fields of the directory. Also, the st_ctime and # st_mtime fields of the directory that contains the new entry shall be marked # for update. expect 0 chown . 0 0 time=`${fstest} stat . ctime` sleep 1 expect 0 mkdir ${n0} 0755 atime=`${fstest} stat ${n0} atime` test_check $time -lt $atime mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime mtime=`${fstest} stat . mtime` test_check $time -lt $mtime ctime=`${fstest} stat . ctime` test_check $time -lt $ctime expect 0 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/mkdir/01.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/01.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/01.t 211474 2010-08-18 22:06:43Z pjd $ desc="mkdir returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..17" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR mkdir ${n0}/${n1}/test 0755 expect 0 unlink ${n0}/${n1} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkdir/02.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/02.t (revision 320447) @@ -1,16 +1,17 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" nx=`namegen_max` nxx="${nx}x" expect 0 mkdir ${nx} 0755 expect 0 rmdir ${nx} expect ENAMETOOLONG mkdir ${nxx} 0755 Index: vendor/pjdfstest/dist/tests/mkdir/03.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/03.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 mkdir ${nx} 0755 expect 0 rmdir ${nx} expect ENAMETOOLONG mkdir ${nxx} 0755 rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/mkdir/04.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/04.t (revision 320447) @@ -1,16 +1,17 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns ENOENT if a component of the path prefix does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT mkdir ${n0}/${n1}/test 0755 expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkdir/05.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/05.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkdir/06.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/06.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns EACCES when write permission is denied on the parent directory of the directory to be created" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 chmod ${n1} 0555 expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkdir/07.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/07.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP mkdir ${n0}/test 0755 expect ELOOP mkdir ${n1}/test 0755 expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/mkdir/08.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/08.t (revision 320447) @@ -1,66 +1,67 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns EPERM if the parent directory of the directory to be created has its immutable flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..17" ;; FreeBSD:UFS) echo "1..30" ;; *) quick_exit esac n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 mkdir ${n0}/${n1} 0755 expect 0 rmdir ${n0}/${n1} expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} none expect 0 mkdir ${n0}/${n1} 0755 expect 0 rmdir ${n0}/${n1} expect 0 chflags ${n0} SF_NOUNLINK expect 0 mkdir ${n0}/${n1} 0755 expect 0 rmdir ${n0}/${n1} expect 0 chflags ${n0} none expect 0 chflags ${n0} SF_APPEND expect 0 mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} none expect 0 rmdir ${n0}/${n1} case "${os}:${fs}" in FreeBSD:UFS) expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} none expect 0 mkdir ${n0}/${n1} 0755 expect 0 rmdir ${n0}/${n1} expect 0 chflags ${n0} UF_NOUNLINK expect 0 mkdir ${n0}/${n1} 0755 expect 0 rmdir ${n0}/${n1} expect 0 chflags ${n0} none expect 0 chflags ${n0} UF_APPEND expect 0 mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} none expect 0 rmdir ${n0}/${n1} ;; esac expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkdir/09.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/09.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..7" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 mkdir ${n0}/${n1} 0755 expect 0 rmdir ${n0}/${n1} mount -ur /dev/md${n} expect EROFS mkdir ${n0}/${n1} 0755 mount -uw /dev/md${n} expect 0 mkdir ${n0}/${n1} 0755 expect 0 rmdir ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkdir/10.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/10.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns EEXIST if the named file exists" dir=`dirname $0` . ${dir}/../misc.sh echo "1..21" n0=`namegen` for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0} expect EEXIST mkdir ${n0} 0755 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done Index: vendor/pjdfstest/dist/tests/mkdir/11.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/11.t (revision 320447) @@ -1,31 +1,32 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns ENOSPC if there are no free inodes on the file system on which the directory is being created" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 256k` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 512k` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit i=0 while :; do mkdir ${n0}/${i} >/dev/null 2>&1 if [ $? -ne 0 ]; then break fi i=`expr $i + 1` done expect ENOSPC mkdir ${n0}/${n1} 0755 umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkdir/12.t =================================================================== --- vendor/pjdfstest/dist/tests/mkdir/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkdir/12.t (revision 320447) @@ -1,12 +1,13 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkdir/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkdir returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2" expect EFAULT mkdir NULL 0755 expect EFAULT mkdir DEADCODE 0755 Index: vendor/pjdfstest/dist/tests/mkfifo/00.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/00.t (revision 320447) @@ -1,73 +1,74 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo creates fifo files" dir=`dirname $0` . ${dir}/../misc.sh echo "1..36" n0=`namegen` n1=`namegen` expect 0 mkdir ${n1} 0755 cdir=`pwd` cd ${n1} # POSIX: The file permission bits of the new FIFO shall be initialized from # mode. The file permission bits of the mode argument shall be modified by the # process' file creation mask. expect 0 mkfifo ${n0} 0755 expect fifo,0755 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 mkfifo ${n0} 0151 expect fifo,0151 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 077 mkfifo ${n0} 0151 expect fifo,0100 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 070 mkfifo ${n0} 0345 expect fifo,0305 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 0501 mkfifo ${n0} 0345 expect fifo,0244 lstat ${n0} type,mode expect 0 unlink ${n0} # POSIX: The FIFO's user ID shall be set to the process' effective user ID. # The FIFO's group ID shall be set to the group ID of the parent directory or to # the effective group ID of the process. expect 0 chown . 65535 65535 expect 0 -u 65535 -g 65535 mkfifo ${n0} 0755 expect 65535,65535 lstat ${n0} uid,gid expect 0 unlink ${n0} expect 0 -u 65535 -g 65534 mkfifo ${n0} 0755 expect "65535,6553[45]" lstat ${n0} uid,gid expect 0 unlink ${n0} expect 0 chmod . 0777 expect 0 -u 65534 -g 65533 mkfifo ${n0} 0755 expect "65534,6553[35]" lstat ${n0} uid,gid expect 0 unlink ${n0} # POSIX: Upon successful completion, mkfifo() shall mark for update the # st_atime, st_ctime, and st_mtime fields of the file. Also, the st_ctime and # st_mtime fields of the directory that contains the new entry shall be marked # for update. expect 0 chown . 0 0 time=`${fstest} stat . ctime` sleep 1 expect 0 mkfifo ${n0} 0755 atime=`${fstest} stat ${n0} atime` test_check $time -lt $atime mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime mtime=`${fstest} stat . mtime` test_check $time -lt $mtime ctime=`${fstest} stat . ctime` test_check $time -lt $ctime expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/mkfifo/01.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/01.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/01.t 211474 2010-08-18 22:06:43Z pjd $ desc="mkfifo returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..17" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR mkfifo ${n0}/${n1}/test 0644 expect 0 unlink ${n0}/${n1} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkfifo/02.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/02.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" nx=`namegen_max` nxx="${nx}x" expect 0 mkfifo ${nx} 0644 expect fifo,0644 stat ${nx} type,mode expect 0 unlink ${nx} expect ENAMETOOLONG mkfifo ${nxx} 0644 Index: vendor/pjdfstest/dist/tests/mkfifo/03.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/03.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 mkfifo ${nx} 0644 expect fifo stat ${nx} type expect 0 unlink ${nx} expect ENAMETOOLONG mkfifo ${nxx} 0644 rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/mkfifo/04.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/04.t (revision 320447) @@ -1,16 +1,17 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns ENOENT if a component of the path prefix does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT mkfifo ${n0}/${n1}/test 0644 expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkfifo/05.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/05.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkfifo/06.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/06.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns EACCES when write permission is denied on the parent directory of the file to be created" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 chmod ${n1} 0555 expect EACCES -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkfifo/07.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/07.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP mkfifo ${n0}/test 0644 expect ELOOP mkfifo ${n1}/test 0644 expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/mkfifo/08.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/08.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..7" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 mkfifo ${n0}/${n1} 0644 expect 0 unlink ${n0}/${n1} mount -ur /dev/md${n} expect EROFS mkfifo ${n0}/${n1} 0644 mount -uw /dev/md${n} expect 0 mkfifo ${n0}/${n1} 0644 expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkfifo/09.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/09.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/09.t 211474 2010-08-18 22:06:43Z pjd $ desc="mkfifo returns EEXIST if the named file exists" dir=`dirname $0` . ${dir}/../misc.sh echo "1..21" n0=`namegen` for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0} expect EEXIST mkfifo ${n0} 0644 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done Index: vendor/pjdfstest/dist/tests/mkfifo/10.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/10.t (revision 320447) @@ -1,66 +1,67 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns EPERM if the parent directory of the file to be created has its immutable flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..17" ;; FreeBSD:UFS) echo "1..30" ;; *) quick_exit esac n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 mkfifo ${n0}/${n1} 0644 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM mkfifo ${n0}/${n1} 0644 expect 0 chflags ${n0} none expect 0 mkfifo ${n0}/${n1} 0644 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_NOUNLINK expect 0 mkfifo ${n0}/${n1} 0644 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} none expect 0 chflags ${n0} SF_APPEND expect 0 mkfifo ${n0}/${n1} 0644 expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} case "${os}:${fs}" in FreeBSD:UFS) expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM mkfifo ${n0}/${n1} 0644 expect 0 chflags ${n0} none expect 0 mkfifo ${n0}/${n1} 0644 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} UF_NOUNLINK expect 0 mkfifo ${n0}/${n1} 0644 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} none expect 0 chflags ${n0} UF_APPEND expect 0 mkfifo ${n0}/${n1} 0644 expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} ;; esac expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkfifo/11.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/11.t (revision 320447) @@ -1,31 +1,32 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns ENOSPC if there are no free inodes on the file system on which the file is being created" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 256k` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 512k` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit i=0 while :; do mkfifo ${n0}/${i} >/dev/null 2>&1 if [ $? -ne 0 ]; then break fi i=`expr $i + 1` done expect ENOSPC mkfifo ${n0}/${n1} 0644 umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mkfifo/12.t =================================================================== --- vendor/pjdfstest/dist/tests/mkfifo/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mkfifo/12.t (revision 320447) @@ -1,12 +1,13 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mkfifo/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="mkfifo returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2" expect EFAULT mkfifo NULL 0644 expect EFAULT mkfifo DEADCODE 0644 Index: vendor/pjdfstest/dist/tests/mknod/00.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/00.t (revision 320447) @@ -1,73 +1,74 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod creates fifo files" dir=`dirname $0` . ${dir}/../misc.sh echo "1..36" n0=`namegen` n1=`namegen` expect 0 mkdir ${n1} 0755 cdir=`pwd` cd ${n1} # POSIX: The file permission bits of the new FIFO shall be initialized from # mode. The file permission bits of the mode argument shall be modified by the # process' file creation mask. expect 0 mknod ${n0} f 0755 0 0 expect fifo,0755 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 mknod ${n0} f 0151 0 0 expect fifo,0151 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 077 mknod ${n0} f 0151 0 0 expect fifo,0100 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 070 mknod ${n0} f 0345 0 0 expect fifo,0305 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 0501 mknod ${n0} f 0345 0 0 expect fifo,0244 lstat ${n0} type,mode expect 0 unlink ${n0} # POSIX: The FIFO's user ID shall be set to the process' effective user ID. # The FIFO's group ID shall be set to the group ID of the parent directory or to # the effective group ID of the process. expect 0 chown . 65535 65535 expect 0 -u 65535 -g 65535 mknod ${n0} f 0755 0 0 expect 65535,65535 lstat ${n0} uid,gid expect 0 unlink ${n0} expect 0 -u 65535 -g 65534 mknod ${n0} f 0755 0 0 expect "65535,6553[45]" lstat ${n0} uid,gid expect 0 unlink ${n0} expect 0 chmod . 0777 expect 0 -u 65534 -g 65533 mknod ${n0} f 0755 0 0 expect "65534,6553[35]" lstat ${n0} uid,gid expect 0 unlink ${n0} -# POSIX: Upon successful completion, mkfifo() shall mark for update the +# POSIX: Upon successful completion, mknod() shall mark for update the # st_atime, st_ctime, and st_mtime fields of the file. Also, the st_ctime and # st_mtime fields of the directory that contains the new entry shall be marked # for update. expect 0 chown . 0 0 time=`${fstest} stat . ctime` sleep 1 expect 0 mknod ${n0} f 0755 0 0 atime=`${fstest} stat ${n0} atime` test_check $time -lt $atime mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime mtime=`${fstest} stat . mtime` test_check $time -lt $mtime ctime=`${fstest} stat . ctime` test_check $time -lt $ctime expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/mknod/01.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/01.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/01.t 211474 2010-08-18 22:06:43Z pjd $ desc="mknod returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..27" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR mknod ${n0}/${n1}/test b 0644 1 2 expect ENOTDIR mknod ${n0}/${n1}/test c 0644 1 2 expect ENOTDIR mknod ${n0}/${n1}/test f 0644 0 0 expect 0 unlink ${n0}/${n1} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mknod/02.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/02.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" nx=`namegen_max` nxx="${nx}x" expect 0 mknod ${nx} f 0644 0 0 expect fifo,0644 stat ${nx} type,mode expect 0 unlink ${nx} expect ENAMETOOLONG mknod ${nxx} f 0644 0 0 expect 0 mknod ${nx} b 0644 1 2 expect block,0644 stat ${nx} type,mode expect 0 unlink ${nx} expect ENAMETOOLONG mknod ${nxx} b 0644 0 0 expect 0 mknod ${nx} c 0644 1 2 expect char,0644 stat ${nx} type,mode expect 0 unlink ${nx} expect ENAMETOOLONG mknod ${nxx} c 0644 0 0 Index: vendor/pjdfstest/dist/tests/mknod/03.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/03.t (revision 320447) @@ -1,31 +1,32 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 mknod ${nx} f 0644 0 0 expect fifo stat ${nx} type expect 0 unlink ${nx} expect ENAMETOOLONG mknod ${nxx} f 0644 0 0 expect 0 mknod ${nx} b 0644 1 2 expect block stat ${nx} type expect 0 unlink ${nx} expect ENAMETOOLONG mknod ${nxx} b 0644 1 2 expect 0 mknod ${nx} c 0644 1 2 expect char stat ${nx} type expect 0 unlink ${nx} expect ENAMETOOLONG mknod ${nxx} c 0644 1 2 rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/mknod/04.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/04.t (revision 320447) @@ -1,16 +1,17 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/04.t 211352 2010-08-15 21:24:17Z pjd $ -desc="mkfifo returns ENOENT if a component of the path prefix does not exist" +desc="mknod returns ENOENT if a component of the path prefix does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT mknod ${n0}/${n1}/test f 0644 0 0 expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mknod/05.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/05.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mknod ${n1}/${n2} f 0644 0 0 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 mknod ${n1}/${n2} f 0644 0 0 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 mknod ${n1}/${n2} f 0644 0 0 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mknod/06.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/06.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod returns EACCES when write permission is denied on the parent directory of the file to be created" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mknod ${n1}/${n2} f 0644 0 0 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 chmod ${n1} 0555 expect EACCES -u 65534 -g 65534 mknod ${n1}/${n2} f 0644 0 0 expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 mknod ${n1}/${n2} f 0644 0 0 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mknod/07.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/07.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP mknod ${n0}/test f 0644 0 0 expect ELOOP mknod ${n1}/test f 0644 0 0 expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/mknod/08.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/08.t (revision 320447) @@ -1,23 +1,24 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/08.t 211474 2010-08-18 22:06:43Z pjd $ desc="mknod returns EEXIST if the named file exists" dir=`dirname $0` . ${dir}/../misc.sh echo "1..35" n0=`namegen` for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0} expect EEXIST mknod ${n0} b 0644 0 0 expect EEXIST mknod ${n0} c 0644 0 0 expect EEXIST mknod ${n0} f 0644 0 0 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done Index: vendor/pjdfstest/dist/tests/mknod/09.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/09.t (revision 320447) @@ -1,64 +1,65 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod returns EPERM if the parent directory of the file to be created has its immutable flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:UFS) echo "1..30" ;; *) echo "1..17" ;; esac n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 mknod ${n0}/${n1} f 0644 0 0 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM mknod ${n0}/${n1} f 0644 0 0 expect 0 chflags ${n0} none expect 0 mknod ${n0}/${n1} f 0644 0 0 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_APPEND expect 0 mknod ${n0}/${n1} f 0644 0 0 expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_NOUNLINK expect 0 mknod ${n0}/${n1} f 0644 0 0 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} none case "${os}:${fs}" in FreeBSD:UFS) expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM mknod ${n0}/${n1} f 0644 0 0 expect 0 chflags ${n0} none expect 0 mknod ${n0}/${n1} f 0644 0 0 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} UF_APPEND expect 0 mknod ${n0}/${n1} f 0644 0 0 expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} UF_NOUNLINK expect 0 mknod ${n0}/${n1} f 0644 0 0 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} none ;; esac expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/mknod/10.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/10.t (revision 320447) @@ -1,12 +1,13 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2" expect EFAULT mknod NULL f 0644 0 0 expect EFAULT mknod DEADCODE f 0644 0 0 Index: vendor/pjdfstest/dist/tests/mknod/11.t =================================================================== --- vendor/pjdfstest/dist/tests/mknod/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/mknod/11.t (revision 320447) @@ -1,79 +1,80 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/mknod/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="mknod creates device files" dir=`dirname $0` . ${dir}/../misc.sh case "${os}" in SunOS) echo "1..40" ;; *) echo "1..28" ;; esac n0=`namegen` n1=`namegen` expect 0 mkdir ${n1} 0755 cdir=`pwd` cd ${n1} for type in c b; do case "${type}" in c) stattype="char" ;; b) stattype="block" ;; esac # Create char special with old-style numbers expect 0 mknod ${n0} ${type} 0755 1 2 expect ${stattype},0755 lstat ${n0} type,mode expect 1,2 lstat ${n0} major,minor expect EEXIST mknod ${n0} ${type} 0777 3 4 expect 0 unlink ${n0} case "${os}" in SunOS) # Create char special with new-style numbers expect 0 mknod ${n0} ${type} 0755 4095 4095 expect ${stattype},0755 lstat ${n0} type,mode expect 4095,4095 lstat ${n0} major,minor expect EEXIST mknod ${n0} ${type} 0777 4000 4000 expect 0 unlink ${n0} # mknod returns EINVAL if device's numbers are too big # for 32-bit solaris !! expect EINVAL mknod ${n0} ${type} 0755 4096 262144 ;; esac # POSIX: Upon successful completion, mknod(2) shall mark for update the # st_atime, st_ctime, and st_mtime fields of the file. Also, the st_ctime and # st_mtime fields of the directory that contains the new entry shall be marked # for update. expect 0 chown . 0 0 time=`${fstest} stat . ctime` sleep 1 expect 0 mknod ${n0} ${type} 0755 1 2 atime=`${fstest} stat ${n0} atime` test_check $time -lt $atime mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime mtime=`${fstest} stat . mtime` test_check $time -lt $mtime ctime=`${fstest} stat . ctime` test_check $time -lt $ctime expect 0 unlink ${n0} done cd ${cdir} expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/open/00.t =================================================================== --- vendor/pjdfstest/dist/tests/open/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/00.t (revision 320447) @@ -1,99 +1,100 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="open opens (and eventually creates) a file" dir=`dirname $0` . ${dir}/../misc.sh echo "1..47" n0=`namegen` n1=`namegen` expect 0 mkdir ${n1} 0755 cdir=`pwd` cd ${n1} # POSIX: (If O_CREAT is specified and the file doesn't exist) [...] the access # permission bits of the file mode shall be set to the value of the third # argument taken as type mode_t modified as follows: a bitwise AND is performed # on the file-mode bits and the corresponding bits in the complement of the # process' file mode creation mask. Thus, all bits in the file mode whose # corresponding bit in the file mode creation mask is set are cleared. expect 0 open ${n0} O_CREAT,O_WRONLY 0755 expect regular,0755 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 open ${n0} O_CREAT,O_WRONLY 0151 expect regular,0151 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 077 open ${n0} O_CREAT,O_WRONLY 0151 expect regular,0100 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 070 open ${n0} O_CREAT,O_WRONLY 0345 expect regular,0305 lstat ${n0} type,mode expect 0 unlink ${n0} expect 0 -U 0501 open ${n0} O_CREAT,O_WRONLY 0345 expect regular,0244 lstat ${n0} type,mode expect 0 unlink ${n0} # POSIX: (If O_CREAT is specified and the file doesn't exist) [...] the user ID # of the file shall be set to the effective user ID of the process; the group ID # of the file shall be set to the group ID of the file's parent directory or to # the effective group ID of the process [...] expect 0 chown . 65535 65535 expect 0 -u 65535 -g 65535 open ${n0} O_CREAT,O_WRONLY 0644 expect 65535,65535 lstat ${n0} uid,gid expect 0 unlink ${n0} expect 0 -u 65535 -g 65534 open ${n0} O_CREAT,O_WRONLY 0644 expect "65535,6553[45]" lstat ${n0} uid,gid expect 0 unlink ${n0} expect 0 chmod . 0777 expect 0 -u 65534 -g 65533 open ${n0} O_CREAT,O_WRONLY 0644 expect "65534,6553[35]" lstat ${n0} uid,gid expect 0 unlink ${n0} # Update parent directory ctime/mtime if file didn't exist. expect 0 chown . 0 0 time=`${fstest} stat . ctime` sleep 1 expect 0 open ${n0} O_CREAT,O_WRONLY 0644 atime=`${fstest} stat ${n0} atime` test_check $time -lt $atime mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime mtime=`${fstest} stat . mtime` test_check $time -lt $mtime ctime=`${fstest} stat . ctime` test_check $time -lt $ctime expect 0 unlink ${n0} # Don't update parent directory ctime/mtime if file existed. expect 0 create ${n0} 0644 dmtime=`${fstest} stat . mtime` dctime=`${fstest} stat . ctime` sleep 1 expect 0 open ${n0} O_CREAT,O_RDONLY 0644 mtime=`${fstest} stat . mtime` test_check $dmtime -eq $mtime ctime=`${fstest} stat . ctime` test_check $dctime -eq $ctime expect 0 unlink ${n0} echo test > ${n0} expect 5 stat ${n0} size mtime1=`${fstest} stat ${n0} mtime` ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 open ${n0} O_WRONLY,O_TRUNC mtime2=`${fstest} stat ${n0} mtime` test_check $mtime1 -lt $mtime2 ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 stat ${n0} size expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/open/01.t =================================================================== --- vendor/pjdfstest/dist/tests/open/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/01.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/01.t 211474 2010-08-18 22:06:43Z pjd $ desc="open returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..22" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR open ${n0}/${n1}/test O_RDONLY expect ENOTDIR open ${n0}/${n1}/test O_CREAT 0644 expect 0 unlink ${n0}/${n1} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/02.t =================================================================== --- vendor/pjdfstest/dist/tests/open/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/02.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" nx=`namegen_max` nxx="${nx}x" expect 0 open ${nx} O_CREAT 0620 expect regular,0620 stat ${nx} type,mode expect 0 unlink ${nx} expect ENAMETOOLONG open ${nxx} O_CREAT 0620 Index: vendor/pjdfstest/dist/tests/open/03.t =================================================================== --- vendor/pjdfstest/dist/tests/open/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/03.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns ENAMETOOLONG if an entire path name exceeded ${PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 open ${nx} O_CREAT 0642 expect regular,0642 stat ${nx} type,mode expect 0 unlink ${nx} expect ENAMETOOLONG open ${nxx} O_CREAT 0642 rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/open/04.t =================================================================== --- vendor/pjdfstest/dist/tests/open/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/04.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns ENOENT if a component of the path name that must exist does not exist or O_CREAT is not set and the named file does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT open ${n0}/${n1}/test O_CREAT 0644 expect ENOENT open ${n0}/${n1} O_RDONLY expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/05.t =================================================================== --- vendor/pjdfstest/dist/tests/open/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/05.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/06.t =================================================================== --- vendor/pjdfstest/dist/tests/open/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/06.t (revision 320447) @@ -1,187 +1,188 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EACCES when the required permissions (for reading and/or writing) are denied for the given flags" dir=`dirname $0` . ${dir}/../misc.sh echo "1..144" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 chown ${n0} 65534 65534 cdir=`pwd` cd ${n0} # Regular file. expect 0 -u 65534 -g 65534 create ${n1} 0644 expect 0 -u 65534 -g 65534 chmod ${n1} 0600 expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY, expect 0 -u 65534 -g 65534 open ${n1} O_WRONLY, expect 0 -u 65534 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0060 expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY, expect 0 -u 65533 -g 65534 open ${n1} O_WRONLY, expect 0 -u 65533 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0006 expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY, expect 0 -u 65533 -g 65533 open ${n1} O_WRONLY, expect 0 -u 65533 -g 65533 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0477 expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY, expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY, expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0747 expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY, expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY, expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0774 expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY, expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY, expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0277 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY, expect 0 -u 65534 -g 65534 open ${n1} O_WRONLY, expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0727 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY, expect 0 -u 65533 -g 65534 open ${n1} O_WRONLY, expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0772 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY, expect 0 -u 65533 -g 65533 open ${n1} O_WRONLY, expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0177 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY, expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY, expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0717 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY, expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY, expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0771 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY, expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY, expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0077 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY, expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY, expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0707 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY, expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY, expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 chmod ${n1} 0770 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY, expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY, expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR, expect 0 -u 65534 -g 65534 unlink ${n1} # FIFO. expect 0 -u 65534 -g 65534 mkfifo ${n1} 0644 expect 0 -u 65534 -g 65534 chmod ${n1} 0600 expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY,O_NONBLOCK expect 0 -u 65534 -g 65534 open ${n1} O_RDWR,O_NONBLOCK expect 0 -u 65534 -g 65534 chmod ${n1} 0060 expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY,O_NONBLOCK expect 0 -u 65533 -g 65534 open ${n1} O_RDWR,O_NONBLOCK expect 0 -u 65534 -g 65534 chmod ${n1} 0006 expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY,O_NONBLOCK expect 0 -u 65533 -g 65533 open ${n1} O_RDWR,O_NONBLOCK expect 0 -u 65534 -g 65534 chmod ${n1} 0477 expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY,O_NONBLOCK expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 chmod ${n1} 0747 expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY,O_NONBLOCK expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 chmod ${n1} 0774 expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY,O_NONBLOCK expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 chmod ${n1} 0177 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 chmod ${n1} 0717 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 chmod ${n1} 0771 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 chmod ${n1} 0077 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 chmod ${n1} 0707 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 chmod ${n1} 0770 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR expect 0 -u 65534 -g 65534 unlink ${n1} # Directory. expect 0 -u 65534 -g 65534 mkdir ${n1} 0755 expect 0 -u 65534 -g 65534 chmod ${n1} 0600 expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0060 expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0006 expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0477 expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0747 expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0774 expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0277 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0727 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0772 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0177 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0717 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0771 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0077 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0707 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 chmod ${n1} 0770 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY expect 0 -u 65534 -g 65534 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/07.t =================================================================== --- vendor/pjdfstest/dist/tests/open/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/07.t (revision 320447) @@ -1,45 +1,46 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EACCES when O_TRUNC is specified and write permission is denied" dir=`dirname $0` . ${dir}/../misc.sh echo "1..23" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 chown ${n0} 65534 65534 cdir=`pwd` cd ${n0} expect 0 -u 65534 -g 65534 create ${n1} 0644 expect 0 -u 65534 -g 65534 chmod ${n1} 0477 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 chmod ${n1} 0747 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 chmod ${n1} 0774 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 chmod ${n1} 0177 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 chmod ${n1} 0717 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 chmod ${n1} 0771 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 chmod ${n1} 0077 expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 chmod ${n1} 0707 expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 chmod ${n1} 0770 expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC expect 0 -u 65534 -g 65534 unlink ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/08.t =================================================================== --- vendor/pjdfstest/dist/tests/open/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/08.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EACCES when O_CREAT is specified, the file does not exist, and the directory in which it is to be created does not permit writing" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_CREAT 0644 cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/09.t =================================================================== --- vendor/pjdfstest/dist/tests/open/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/09.t (revision 320447) @@ -1,66 +1,67 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="O_CREAT is specified, the file does not exist, and the directory in which it is to be created has its immutable flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..17" ;; FreeBSD:UFS) echo "1..30" ;; *) quick_exit esac n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 chflags ${n0} none expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_NOUNLINK expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_APPEND expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} case "${os}:${fs}" in FreeBSD:UFS) expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 chflags ${n0} none expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} UF_NOUNLINK expect 0 symlink test ${n0}/${n1} expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} UF_APPEND expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} ;; esac expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/10.t =================================================================== --- vendor/pjdfstest/dist/tests/open/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/10.t (revision 320447) @@ -1,58 +1,59 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EPERM when the named file has its immutable flag set and the file is to be modified" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..14" ;; FreeBSD:UFS) echo "1..28" ;; *) quick_exit esac n0=`namegen` expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM open ${n0} O_WRONLY expect EPERM open ${n0} O_RDWR expect EPERM open ${n0} O_RDONLY,O_TRUNC expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_NOUNLINK expect 0 open ${n0} O_WRONLY expect 0 open ${n0} O_RDWR expect 0 open ${n0} O_RDONLY,O_TRUNC expect 0 chflags ${n0} none expect 0 unlink ${n0} case "${os}:${fs}" in FreeBSD:UFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM open ${n0} O_WRONLY expect EPERM open ${n0} O_RDWR expect EPERM open ${n0} O_RDONLY,O_TRUNC expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_NOUNLINK expect 0 open ${n0} O_WRONLY expect 0 open ${n0} O_RDWR expect 0 open ${n0} O_RDONLY,O_TRUNC expect 0 chflags ${n0} none expect 0 unlink ${n0} ;; esac Index: vendor/pjdfstest/dist/tests/open/11.t =================================================================== --- vendor/pjdfstest/dist/tests/open/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/11.t (revision 320447) @@ -1,56 +1,57 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EPERM when the named file has its append-only flag set, the file is to be modified, and O_TRUNC is specified or O_APPEND is not specified" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..12" ;; FreeBSD:UFS) echo "1..24" ;; *) quick_exit esac n0=`namegen` expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_APPEND expect 0 open ${n0} O_WRONLY,O_APPEND expect 0 open ${n0} O_RDWR,O_APPEND expect EPERM open ${n0} O_WRONLY expect EPERM open ${n0} O_RDWR todo FreeBSD:ZFS "When fle is protected by SF_APPEND, open(O_TRUNC) should return EPERM." expect EPERM open ${n0} O_RDONLY,O_TRUNC todo FreeBSD:ZFS "When fle is protected by SF_APPEND, open(O_TRUNC) should return EPERM." expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC todo FreeBSD:ZFS "When fle is protected by SF_APPEND, open(O_TRUNC) should return EPERM." expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC todo FreeBSD:ZFS "When fle is protected by SF_APPEND, open(O_TRUNC) should return EPERM." expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC expect 0 chflags ${n0} none expect 0 unlink ${n0} case "${os}:${fs}" in FreeBSD:UFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_APPEND expect 0 open ${n0} O_WRONLY,O_APPEND expect 0 open ${n0} O_RDWR,O_APPEND expect EPERM open ${n0} O_WRONLY expect EPERM open ${n0} O_RDWR expect EPERM open ${n0} O_RDONLY,O_TRUNC expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC expect 0 chflags ${n0} none expect 0 unlink ${n0} ;; esac Index: vendor/pjdfstest/dist/tests/open/12.t =================================================================== --- vendor/pjdfstest/dist/tests/open/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/12.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP open ${n0}/test O_RDONLY expect ELOOP open ${n1}/test O_RDONLY expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/open/13.t =================================================================== --- vendor/pjdfstest/dist/tests/open/13.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/13.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/13.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EISDIR when trying to open a directory for writing" dir=`dirname $0` . ${dir}/../misc.sh require chflags echo "1..8" n0=`namegen` expect 0 mkdir ${n0} 0755 expect 0 open ${n0} O_RDONLY expect EISDIR open ${n0} O_WRONLY expect EISDIR open ${n0} O_RDWR expect EISDIR open ${n0} O_RDONLY,O_TRUNC expect EISDIR open ${n0} O_WRONLY,O_TRUNC expect EISDIR open ${n0} O_RDWR,O_TRUNC expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/14.t =================================================================== --- vendor/pjdfstest/dist/tests/open/14.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/14.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/14.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EROFS if the named file resides on a read-only file system, and the file is to be modified" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..10" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 expect 0 open ${n0}/${n1} O_WRONLY expect 0 open ${n0}/${n1} O_RDWR expect 0 open ${n0}/${n1} O_RDONLY,O_TRUNC mount -ur /dev/md${n} expect EROFS open ${n0}/${n1} O_WRONLY expect EROFS open ${n0}/${n1} O_RDWR expect EROFS open ${n0}/${n1} O_RDONLY,O_TRUNC mount -uw /dev/md${n} expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/15.t =================================================================== --- vendor/pjdfstest/dist/tests/open/15.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/15.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/15.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EROFS when O_CREAT is specified and the named file would reside on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..5" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 expect 0 unlink ${n0}/${n1} mount -ur /dev/md${n} expect EROFS open ${n0}/${n1} O_RDONLY,O_CREAT 0644 mount -uw /dev/md${n} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/16.t =================================================================== --- vendor/pjdfstest/dist/tests/open/16.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/16.t (revision 320447) @@ -1,19 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/16.t 219621 2011-03-13 19:35:13Z pjd $ -desc="open returns ELOOP when O_NOFOLLOW was specified and the target is a symbolic link" - dir=`dirname $0` . ${dir}/../misc.sh +if [ "${os}" = "FreeBSD" ]; then + error=EMLINK +else + error=ELOOP +fi +desc="open returns $error when O_NOFOLLOW was specified and the target is a symbolic link" + echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} -expect ELOOP open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644 -expect ELOOP open ${n1} O_RDONLY,O_NOFOLLOW -expect ELOOP open ${n1} O_WRONLY,O_NOFOLLOW -expect ELOOP open ${n1} O_RDWR,O_NOFOLLOW +expect $error open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644 +expect $error open ${n1} O_RDONLY,O_NOFOLLOW +expect $error open ${n1} O_WRONLY,O_NOFOLLOW +expect $error open ${n1} O_RDWR,O_NOFOLLOW expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/open/17.t =================================================================== --- vendor/pjdfstest/dist/tests/open/17.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/17.t (revision 320447) @@ -1,15 +1,16 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/17.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns ENXIO when O_NONBLOCK is set, the named file is a fifo, O_WRONLY is set, and no process has the file open for reading" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` expect 0 mkfifo ${n0} 0644 expect ENXIO open ${n0} O_WRONLY,O_NONBLOCK expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/open/18.t =================================================================== --- vendor/pjdfstest/dist/tests/open/18.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/18.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/18.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EWOULDBLOCK when O_NONBLOCK and one of O_SHLOCK or O_EXLOCK is specified and the file is locked" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}" = "FreeBSD" ] || quick_exit echo "1..6" n0=`namegen` expect 0 create ${n0} 0644 expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/open/19.t =================================================================== --- vendor/pjdfstest/dist/tests/open/19.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/19.t (revision 320447) @@ -1,31 +1,32 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/19.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns ENOSPC when O_CREAT is specified, the file does not exist, and there are no free inodes on the file system on which the file is being created" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 256k` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 512k` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit i=0 while :; do touch ${n0}/${i} >/dev/null 2>&1 if [ $? -ne 0 ]; then break fi i=`expr $i + 1` done expect ENOSPC open ${n0}/${i} O_RDONLY,O_CREAT 0644 umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/open/20.t =================================================================== --- vendor/pjdfstest/dist/tests/open/20.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/20.t (revision 320447) @@ -1,20 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/20.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns ETXTBSY when the file is a pure procedure (shared text) file that is being executed and the open() system call requests write access" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit +noexec && quick_exit echo "1..4" n0=`namegen` cp -pf `which sleep` ${n0} ./${n0} 3 & expect ETXTBSY open ${n0} O_WRONLY expect ETXTBSY open ${n0} O_RDWR expect ETXTBSY open ${n0} O_RDONLY,O_TRUNC expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/open/21.t =================================================================== --- vendor/pjdfstest/dist/tests/open/21.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/21.t (revision 320447) @@ -1,12 +1,13 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/21.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2" expect EFAULT open NULL O_RDONLY expect EFAULT open DEADCODE O_RDONLY Index: vendor/pjdfstest/dist/tests/open/22.t =================================================================== --- vendor/pjdfstest/dist/tests/open/22.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/22.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/22.t 211352 2010-08-15 21:24:17Z pjd $ desc="open returns EEXIST when O_CREAT and O_EXCL were specified and the file exists" dir=`dirname $0` . ${dir}/../misc.sh echo "1..21" n0=`namegen` for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0} expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done Index: vendor/pjdfstest/dist/tests/open/23.t =================================================================== --- vendor/pjdfstest/dist/tests/open/23.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/23.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/23.t 211352 2010-08-15 21:24:17Z pjd $ desc="open may return EINVAL when an attempt was made to open a descriptor with an illegal combination of O_RDONLY, O_WRONLY, and O_RDWR" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" n0=`namegen` expect 0 create ${n0} 0644 expect "0|EINVAL" open ${n0} O_RDONLY,O_RDWR expect "0|EINVAL" open ${n0} O_WRONLY,O_RDWR expect "0|EINVAL" open ${n0} O_RDONLY,O_WRONLY,O_RDWR expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/open/24.t =================================================================== --- vendor/pjdfstest/dist/tests/open/24.t (revision 320446) +++ vendor/pjdfstest/dist/tests/open/24.t (revision 320447) @@ -1,17 +1,32 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/open/24.t 211352 2010-08-15 21:24:17Z pjd $ -desc="open returns EOPNOTSUPP when trying to open UNIX domain socket" - dir=`dirname $0` . ${dir}/../misc.sh +# POSIX doesn't explicitly state the errno for open(2)'ing sockets. +case ${os} in +Darwin|FreeBSD) + expected_error=EOPNOTSUPP + ;; +Linux) + expected_error=ENXIO + ;; +*) + echo "1..0 # SKIP: unsupported OS: ${os}" + exit 0 + ;; +esac + +desc="open returns $expected_error when trying to open UNIX domain socket" + echo "1..5" n0=`namegen` expect 0 bind ${n0} -expect "EOPNOTSUPP" open ${n0} O_RDONLY -expect "EOPNOTSUPP" open ${n0} O_WRONLY -expect "EOPNOTSUPP" open ${n0} O_RDWR +expect $expected_error open ${n0} O_RDONLY +expect $expected_error open ${n0} O_WRONLY +expect $expected_error open ${n0} O_RDWR expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/rename/00.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/00.t (revision 320447) @@ -1,91 +1,92 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename changes file name" dir=`dirname $0` . ${dir}/../misc.sh echo "1..150" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` expect 0 mkdir ${n3} 0755 cdir=`pwd` cd ${n3} for type in regular fifo block char socket; do create_file ${type} ${n0} 0644 expect ${type},0644,1 lstat ${n0} type,mode,nlink inode=`${fstest} lstat ${n0} inode` expect 0 rename ${n0} ${n1} expect ENOENT lstat ${n0} type,mode,nlink expect ${type},${inode},0644,1 lstat ${n1} type,inode,mode,nlink expect 0 link ${n1} ${n0} expect ${type},${inode},0644,2 lstat ${n0} type,inode,mode,nlink expect ${type},${inode},0644,2 lstat ${n1} type,inode,mode,nlink expect 0 rename ${n1} ${n2} expect ${type},${inode},0644,2 lstat ${n0} type,inode,mode,nlink expect ENOENT lstat ${n1} type,mode,nlink expect ${type},${inode},0644,2 lstat ${n2} type,inode,mode,nlink expect 0 unlink ${n0} expect 0 unlink ${n2} done expect 0 mkdir ${n0} 0755 expect dir,0755 lstat ${n0} type,mode inode=`${fstest} lstat ${n0} inode` expect 0 rename ${n0} ${n1} expect ENOENT lstat ${n0} type,mode expect dir,${inode},0755 lstat ${n1} type,inode,mode expect 0 rmdir ${n1} expect 0 create ${n0} 0644 rinode=`${fstest} lstat ${n0} inode` expect regular,0644 lstat ${n0} type,mode expect 0 symlink ${n0} ${n1} sinode=`${fstest} lstat ${n1} inode` expect regular,${rinode},0644 stat ${n1} type,inode,mode expect symlink,${sinode} lstat ${n1} type,inode expect 0 rename ${n1} ${n2} expect regular,${rinode},0644 stat ${n0} type,inode,mode expect ENOENT lstat ${n1} type,mode expect symlink,${sinode} lstat ${n2} type,inode expect 0 unlink ${n0} expect 0 unlink ${n2} # successful rename(2) updates ctime. for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0} ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect 0 rename ${n0} ${n1} ctime2=`${fstest} lstat ${n1} ctime` test_check $ctime1 -lt $ctime2 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done # unsuccessful link(2) does not update ctime. for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0} ctime1=`${fstest} lstat ${n0} ctime` sleep 1 expect EACCES -u 65534 rename ${n0} ${n1} ctime2=`${fstest} lstat ${n0} ctime` test_check $ctime1 -eq $ctime2 if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done cd ${cdir} expect 0 rmdir ${n3} Index: vendor/pjdfstest/dist/tests/rename/01.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/01.t (revision 320447) @@ -1,23 +1,24 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/01.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns ENAMETOOLONG if a component of either pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..8" n0=`namegen` nx=`namegen_max` nxx="${nx}x" expect 0 create ${nx} 0644 expect 0 rename ${nx} ${n0} expect 0 rename ${n0} ${nx} expect 0 unlink ${nx} expect 0 create ${n0} 0644 expect ENAMETOOLONG rename ${n0} ${nxx} expect 0 unlink ${n0} expect ENAMETOOLONG rename ${nxx} ${n0} Index: vendor/pjdfstest/dist/tests/rename/02.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/02.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns ENAMETOOLONG if an entire length of either path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 create ${n0} 0644 expect 0 rename ${n0} ${nx} expect 0 rename ${nx} ${n0} expect ENAMETOOLONG rename ${n0} ${nxx} expect 0 unlink ${n0} expect ENAMETOOLONG rename ${nxx} ${n0} rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/rename/03.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/03.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns ENOENT if a component of the 'from' path does not exist, or a path prefix of 'to' does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT rename ${n0}/${n1}/test ${n2} expect 0 create ${n2} 0644 expect ENOENT rename ${n2} ${n0}/${n1}/test expect 0 unlink ${n2} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/04.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/04.t (revision 320447) @@ -1,43 +1,44 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EACCES when a component of either path prefix denies search permission" dir=`dirname $0` . ${dir}/../misc.sh echo "1..18" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` n4=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 mkdir ${n2} 0755 expect 0 chown ${n2} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} expect 0 -u 65534 -g 65534 rename ${n2}/${n4} ${n1}/${n3} expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n1}/${n4} expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} expect 0 chmod ${n1} 0755 expect 0 chmod ${n2} 0644 expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} expect 0 unlink ${n1}/${n3} expect 0 rmdir ${n1} expect 0 rmdir ${n2} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/05.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/05.t (revision 320447) @@ -1,41 +1,42 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EACCES when the requested link requires writing in a directory with a mode that denies write permission" dir=`dirname $0` . ${dir}/../misc.sh echo "1..17" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` n4=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 mkdir ${n2} 0755 expect 0 chown ${n2} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} expect 0 -u 65534 -g 65534 rename ${n2}/${n4} ${n1}/${n3} expect 0 chmod ${n2} 0555 expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} expect 0 chmod ${n1} 0555 expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n1}/${n4} expect 0 chmod ${n1} 0755 expect 0 unlink ${n1}/${n3} expect 0 rmdir ${n1} expect 0 rmdir ${n2} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/06.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/06.t (revision 320447) @@ -1,61 +1,62 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EPERM if the file pointed at by the 'from' argument has its immutable, undeletable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND" echo "1..195" ;; FreeBSD:UFS) flags="SF_IMMUTABLE SF_NOUNLINK SF_APPEND UF_IMMUTABLE UF_NOUNLINK UF_APPEND" echo "1..351" ;; *) quick_exit esac n0=`namegen` n1=`namegen` for type in regular dir fifo block char socket symlink; do if [ "${type}" != "symlink" ]; then create_file ${type} ${n0} for flag in ${flags}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect EPERM rename ${n0} ${n1} [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect ENOENT rename ${n1} ${n0} done expect 0 chflags ${n0} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi fi create_file ${type} ${n0} for flag in ${flags}; do expect 0 lchflags ${n0} ${flag} expect ${flag} lstat ${n0} flags [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect EPERM rename ${n0} ${n1} [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect ENOENT rename ${n1} ${n0} done expect 0 lchflags ${n0} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done Index: vendor/pjdfstest/dist/tests/rename/07.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/07.t (revision 320447) @@ -1,66 +1,67 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EPERM if the parent directory of the file pointed at by the 'from' argument has its immutable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) flags1="SF_IMMUTABLE SF_APPEND" flags2="SF_NOUNLINK" echo "1..128" ;; FreeBSD:UFS) flags1="SF_IMMUTABLE SF_APPEND UF_IMMUTABLE UF_APPEND" flags2="SF_NOUNLINK UF_NOUNLINK" echo "1..212" ;; *) quick_exit esac n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0}/${n1} for flag in ${flags1}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect EPERM rename ${n0}/${n1} ${n2} [ "${flag}" = "SF_APPEND" ] && todo FreeBSD:ZFS "Renaming a file protected by SF_APPEND should return EPERM." expect ENOENT rename ${n2} ${n0}/${n1} done expect 0 chflags ${n0} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0}/${n1} else expect 0 unlink ${n0}/${n1} fi done for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0}/${n1} for flag in ${flags2}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags expect 0 rename ${n0}/${n1} ${n2} expect 0 rename ${n2} ${n0}/${n1} done expect 0 chflags ${n0} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0}/${n1} else expect 0 unlink ${n0}/${n1} fi done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/08.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/08.t (revision 320447) @@ -1,63 +1,64 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) flags1="SF_IMMUTABLE" flags2="SF_NOUNLINK SF_APPEND" echo "1..128" ;; FreeBSD:UFS) flags1="SF_IMMUTABLE UF_IMMUTABLE" flags2="SF_NOUNLINK SF_APPEND UF_NOUNLINK UF_APPEND" echo "1..219" ;; *) quick_exit esac n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 for type in regular dir fifo block char socket symlink; do create_file ${type} ${n1} for flag in ${flags1}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags expect EPERM rename ${n1} ${n0}/${n2} done expect 0 chflags ${n0} none if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done for type in regular dir fifo block char socket symlink; do create_file ${type} ${n1} for flag in ${flags2}; do expect 0 chflags ${n0} ${flag} expect ${flag} stat ${n0} flags expect 0 rename ${n1} ${n0}/${n2} expect 0 chflags ${n0} none expect 0 rename ${n0}/${n2} ${n1} done if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1} else expect 0 unlink ${n1} fi done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/09.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/09.t (revision 320447) @@ -1,191 +1,192 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EACCES or EPERM if the directory containing 'from' is marked sticky, and neither the containing directory nor 'from' are owned by the effective user ID" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2353" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` n4=`namegen` expect 0 mkdir ${n4} 0755 cdir=`pwd` cd ${n4} expect 0 mkdir ${n0} 0755 expect 0 chmod ${n0} 01777 expect 0 chown ${n0} 65534 65534 expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 for type in regular fifo block char socket symlink; do # User owns both: the source sticky directory and the source file. expect 0 chown ${n0} 65534 65534 create_file ${type} ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` for type in none regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} # User owns the source sticky directory, but doesn't own the source file. for id in 0 65533; do expect 0 chown ${n0} 65534 65534 create_file ${type} ${n0}/${n2} ${id} ${id} inode=`${fstest} lstat ${n0}/${n2} inode` for type in none regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode},${id},${id} lstat ${n1}/${n3} inode,uid,gid expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} done # User owns the source file, but doesn't own the source sticky directory. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file ${type} ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` for type in none regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} done # User doesn't own the source sticky directory nor the source file. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file ${type} ${n0}/${n2} ${id} ${id} inode=`${fstest} lstat ${n0}/${n2} inode` for type in none regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid if [ "${type}" != "none" ]; then expect 65534,65534 lstat ${n1}/${n3} uid,gid expect 0 unlink ${n1}/${n3} fi done expect 0 unlink ${n0}/${n2} done done # User owns both: the source sticky directory and the source directory. expect 0 chown ${n0} 65534 65534 create_file dir ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 rename ${n1}/${n3} ${n0}/${n2} expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 rmdir ${n1}/${n3} # User owns the source sticky directory, but doesn't own the source directory. # This fails when changing parent directory, because this will modify # source directory inode (the .. link in it), but we can still rename it # without changing its parent directory. for id in 0 65533; do expect 0 chown ${n0} 65534 65534 create_file dir ${n0}/${n2} ${id} ${id} inode=`${fstest} lstat ${n0}/${n2} inode` expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid expect ENOENT lstat ${n1}/${n3} type expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n0}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},${id},${id} lstat ${n0}/${n3} inode,uid,gid expect 0 rename ${n0}/${n3} ${n0}/${n2} expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid expect dir,${id},${id} lstat ${n0}/${n2} type,uid,gid expect 0 rmdir ${n1}/${n3} expect 0 -u 65534 -g 65534 mkdir ${n0}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n0}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},${id},${id} lstat ${n0}/${n3} inode,uid,gid expect 0 rmdir ${n0}/${n3} done # User owns the source directory, but doesn't own the source sticky directory. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file dir ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 rename ${n1}/${n3} ${n0}/${n2} expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode},65534,65534 lstat ${n1}/${n3} inode,uid,gid expect 0 rmdir ${n1}/${n3} done # User doesn't own the source sticky directory nor the source directory. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file dir ${n0}/${n2} ${id} ${id} inode=`${fstest} lstat ${n0}/${n2} inode` expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid expect ENOENT lstat ${n1}/${n3} type expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode},${id},${id} lstat ${n0}/${n2} inode,uid,gid expect dir,65534,65534 lstat ${n1}/${n3} type,uid,gid expect 0 rmdir ${n0}/${n2} expect 0 rmdir ${n1}/${n3} done expect 0 rmdir ${n1} expect 0 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n4} Index: vendor/pjdfstest/dist/tests/rename/10.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/10.t (revision 320447) @@ -1,156 +1,157 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EACCES or EPERM if the file pointed at by the 'to' argument exists, the directory containing 'to' is marked sticky, and neither the containing directory nor 'to' are owned by the effective user ID" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2099" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` n4=`namegen` expect 0 mkdir ${n4} 0755 cdir=`pwd` cd ${n4} expect 0 mkdir ${n0} 0755 expect 0 chown ${n0} 65534 65534 expect 0 mkdir ${n1} 0755 expect 0 chmod ${n1} 01777 for type in regular fifo block char socket symlink; do # User owns both: the sticky directory and the destination file. expect 0 chown ${n1} 65534 65534 create_file ${type} ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` for type in regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode} lstat ${n1}/${n3} inode expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} # User owns the sticky directory, but doesn't own the destination file. for id in 0 65533; do expect 0 chown ${n1} 65534 65534 create_file ${type} ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` for type in regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} ${id} ${id} expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode} lstat ${n1}/${n3} inode expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} done # User owns the destination file, but doesn't own the sticky directory. for id in 0 65533; do expect 0 chown ${n1} ${id} ${id} create_file ${type} ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` for type in regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} 65534 65534 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} inode expect ${inode} lstat ${n1}/${n3} inode expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2} expect ${inode} lstat ${n0}/${n2} inode expect ENOENT lstat ${n1}/${n3} inode done expect 0 unlink ${n0}/${n2} done # User doesn't own the sticky directory nor the destination file. for id in 0 65533; do expect 0 chown ${n1} ${id} ${id} create_file ${type} ${n0}/${n2} 65534 65534 inode=`${fstest} lstat ${n0}/${n2} inode` for type in regular fifo block char socket symlink; do create_file ${type} ${n1}/${n3} ${id} ${id} expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode} lstat ${n0}/${n2} inode expect ${id},${id} lstat ${n1}/${n3} uid,gid expect 0 unlink ${n1}/${n3} done expect 0 unlink ${n0}/${n2} done done # User owns both: the sticky directory and the destination directory. expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755 inode=`${fstest} lstat ${n0}/${n2} inode` expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode} lstat ${n1}/${n3} inode expect 0 rmdir ${n1}/${n3} # User owns the sticky directory, but doesn't own the destination directory. for id in 0 65533; do expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755 inode=`${fstest} lstat ${n0}/${n2} inode` expect 0 -u ${id} -g ${id} mkdir ${n1}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode} lstat ${n1}/${n3} inode expect 0 rmdir ${n1}/${n3} done # User owns the destination directory, but doesn't own the sticky directory. for id in 0 65533; do expect 0 chown ${n1} ${id} ${id} expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755 inode=`${fstest} lstat ${n0}/${n2} inode` expect 0 -u 65534 -g 65534 mkdir ${n1}/${n3} 0755 expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ENOENT lstat ${n0}/${n2} type expect ${inode} lstat ${n1}/${n3} inode expect 0 rmdir ${n1}/${n3} done # User doesn't own the sticky directory nor the destination directory. for id in 0 65533; do expect 0 chown ${n1} ${id} ${id} expect 0 -u 65534 -g 65534 mkdir ${n0}/${n2} 0755 inode=`${fstest} lstat ${n0}/${n2} inode` expect 0 -u ${id} -g ${id} mkdir ${n1}/${n3} 0755 expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} expect ${inode} lstat ${n0}/${n2} inode expect ${id},${id} lstat ${n1}/${n3} uid,gid expect 0 rmdir ${n0}/${n2} expect 0 rmdir ${n1}/${n3} done expect 0 rmdir ${n1} expect 0 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n4} Index: vendor/pjdfstest/dist/tests/rename/11.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/11.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns ELOOP if too many symbolic links were encountered in translating one of the pathnames" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP rename ${n0}/test ${n2} expect ELOOP rename ${n1}/test ${n2} expect 0 create ${n2} 0644 expect ELOOP rename ${n2} ${n0}/test expect ELOOP rename ${n2} ${n1}/test expect 0 unlink ${n0} expect 0 unlink ${n1} expect 0 unlink ${n2} Index: vendor/pjdfstest/dist/tests/rename/12.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/12.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/12.t 211474 2010-08-18 22:06:43Z pjd $ desc="rename returns ENOTDIR if a component of either path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..32" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket; do create_file ${type} ${n0}/${n1} expect ENOTDIR rename ${n0}/${n1}/test ${n0}/${n2} create_file ${type} ${n0}/${n2} expect ENOTDIR link ${n0}/${n2} ${n0}/${n1}/test expect 0 unlink ${n0}/${n1} expect 0 unlink ${n0}/${n2} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/13.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/13.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/13.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/13.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns ENOTDIR when the 'from' argument is a directory, but 'to' is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..32" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket symlink; do create_file ${type} ${n1} expect ENOTDIR rename ${n0} ${n1} expect dir lstat ${n0} type expect ${type} lstat ${n1} type expect 0 unlink ${n1} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/14.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/14.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/14.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/14.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EISDIR when the 'to' argument is a directory, but 'from' is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..32" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular fifo block char socket symlink; do create_file ${type} ${n1} expect EISDIR rename ${n1} ${n0} expect dir lstat ${n0} type expect ${type} lstat ${n1} type expect 0 unlink ${n1} done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/15.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/15.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/15.t (revision 320447) @@ -1,34 +1,35 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/15.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EXDEV if the link named by 'to' and the file named by 'from' are on different file systems" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}" = "FreeBSD" ] || quick_exit echo "1..23" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0}/${n1} expect EXDEV rename ${n0}/${n1} ${n2} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0}/${n1} else expect 0 unlink ${n0}/${n1} fi done umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/16.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/16.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/16.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/16.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EROFS if the requested link requires writing in a directory on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}" = "FreeBSD" ] || quick_exit echo "1..8" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 mount -ur /dev/md${n} expect EROFS rename ${n0}/${n1} ${n0}/${n2} expect EROFS rename ${n0}/${n1} ${n2} expect 0 create ${n2} 0644 expect EROFS rename ${n2} ${n0}/${n2} expect 0 unlink ${n2} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/17.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/17.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/17.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/17.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EFAULT if one of the pathnames specified is outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..8" n0=`namegen` expect 0 create ${n0} 0644 expect EFAULT rename ${n0} NULL expect EFAULT rename ${n0} DEADCODE expect 0 unlink ${n0} expect EFAULT rename NULL ${n0} expect EFAULT rename DEADCODE ${n0} expect EFAULT rename NULL DEADCODE expect EFAULT rename DEADCODE NULL Index: vendor/pjdfstest/dist/tests/rename/18.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/18.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/18.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/18.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EINVAL when the 'from' argument is a parent directory of 'to'" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 expect 0 mkdir ${n0}/${n1} 0755 expect EINVAL rename ${n0} ${n0}/${n1} expect EINVAL rename ${n0} ${n0}/${n1}/${n2} expect 0 rmdir ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/19.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/19.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/19.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/19.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EINVAL/EBUSY when an attempt is made to rename '.' or '..'" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 expect 0 mkdir ${n0}/${n1} 0755 expect "EINVAL|EBUSY" rename ${n0}/${n1}/. ${n2} expect "EINVAL|EBUSY" rename ${n0}/${n1}/.. ${n2} expect 0 rmdir ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/20.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/20.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/20.t (revision 320447) @@ -1,29 +1,30 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/20.t 211352 2010-08-15 21:24:17Z pjd $ desc="rename returns EEXIST or ENOTEMPTY if the 'to' argument is a directory and is not empty" dir=`dirname $0` . ${dir}/../misc.sh echo "1..25" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 expect 0 mkdir ${n1} 0755 for type in regular dir fifo block char socket symlink; do create_file ${type} ${n1}/${n2} expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n1}/${n2} else expect 0 unlink ${n1}/${n2} fi done expect 0 rmdir ${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rename/21.t =================================================================== --- vendor/pjdfstest/dist/tests/rename/21.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rename/21.t (revision 320447) @@ -1,47 +1,48 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rename/21.t 211352 2010-08-15 21:24:17Z pjd $ desc="write access to subdirectory is required to move it to another directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..16" n0=`namegen` n1=`namegen` n2=`namegen` n3=`namegen` expect 0 mkdir ${n2} 0777 expect 0 mkdir ${n3} 0777 cdir=`pwd` # Check that write permission on containing directory (${n2}) is enough # to rename subdirectory (${n0}). If we rename directory write access # to this directory may also be required. expect 0 mkdir ${n2}/${n0} 0700 expect "0|EACCES" -u 65534 -g 65534 rename ${n2}/${n0} ${n2}/${n1} expect "0|EACCES" -u 65534 -g 65534 rename ${n2}/${n1} ${n2}/${n0} # Check that write permission on containing directory (${n2}) is not enough # to move subdirectory (${n0}) from that directory. # Actually POSIX says that write access to ${n2} and ${n3} may be enough # to move ${n0} from ${n2} to ${n3}. expect "0|EACCES" -u 65534 -g 65534 rename ${n2}/${n0} ${n3}/${n1} expect "0|ENOENT" rmdir ${n2}/${n0} expect ENOENT rmdir ${n2}/${n0} expect "0|ENOENT" rmdir ${n3}/${n1} expect ENOENT rmdir ${n3}/${n1} # Check that write permission on containing directory (${n2}) is enough # to move file (${n0}) from that directory. expect 0 create ${n2}/${n0} 0644 expect 0 -u 65534 -g 65534 rename ${n2}/${n0} ${n3}/${n1} expect 0 unlink ${n3}/${n1} expect ENOENT unlink ${n2}/${n0} expect 0 rmdir ${n3} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/rmdir/00.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/00.t (revision 320447) @@ -1,28 +1,29 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir removes directories" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect dir lstat ${n0} type expect 0 rmdir ${n0} expect ENOENT lstat ${n0} type expect 0 mkdir ${n0} 0755 expect 0 mkdir ${n0}/${n1} 0755 time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 rmdir ${n0}/${n1} mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/01.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/01.t (revision 320447) @@ -1,30 +1,31 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/01.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns ENOTDIR if a component of the path is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..14" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 expect ENOTDIR rmdir ${n0}/${n1}/test expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} expect 0 create ${n0} 0644 expect ENOTDIR rmdir ${n0} expect 0 unlink ${n0} expect 0 symlink ${n1} ${n0} expect ENOTDIR rmdir ${n0} expect 0 unlink ${n0} expect 0 mkfifo ${n0} 0644 expect ENOTDIR rmdir ${n0} expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/02.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/02.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" nx=`namegen_max` nxx="${nx}x" expect 0 mkdir ${nx} 0755 expect 0 rmdir ${nx} expect ENOENT rmdir ${nx} expect ENAMETOOLONG rmdir ${nxx} Index: vendor/pjdfstest/dist/tests/rmdir/03.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/03.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns ENAMETOOLONG if an entire path name exceeded ${PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 mkdir ${nx} 0755 expect dir,0755 stat ${nx} type,mode expect 0 rmdir ${nx} expect ENOENT rmdir ${nx} expect ENAMETOOLONG rmdir ${nxx} rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/rmdir/04.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/04.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns ENOENT if the named directory does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 rmdir ${n0} expect ENOENT rmdir ${n0} expect ENOENT rmdir ${n1} Index: vendor/pjdfstest/dist/tests/rmdir/05.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/05.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP rmdir ${n0}/test expect ELOOP rmdir ${n1}/test expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/rmdir/06.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/06.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/06.t 211474 2010-08-18 22:06:43Z pjd $ desc="rmdir returns EEXIST or ENOTEMPTY the named directory contains files other than '.' and '..' in it" dir=`dirname $0` . ${dir}/../misc.sh echo "1..23" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0}/${n1} expect "EEXIST|ENOTEMPTY" rmdir ${n0} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0}/${n1} else expect 0 unlink ${n0}/${n1} fi done expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/07.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/07.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/08.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/08.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EACCES when write permission is denied on the directory containing the link to be removed" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 expect 0 chmod ${n1} 0555 expect EACCES -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/09.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/09.t (revision 320447) @@ -1,65 +1,66 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EPERM if the named directory has its immutable, undeletable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..15" ;; FreeBSD:UFS) echo "1..30" ;; *) quick_exit esac n0=`namegen` expect 0 mkdir ${n0} 0755 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM rmdir ${n0} expect 0 chflags ${n0} none expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 chflags ${n0} SF_NOUNLINK expect EPERM rmdir ${n0} expect 0 chflags ${n0} none expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 chflags ${n0} SF_APPEND todo FreeBSD:ZFS "Removing a directory protected by SF_APPEND should return EPERM." expect EPERM rmdir ${n0} todo FreeBSD:ZFS "Removing a directory protected by SF_APPEND should return EPERM." expect 0 chflags ${n0} none todo FreeBSD:ZFS "Removing a directory protected by SF_APPEND should return EPERM." expect 0 rmdir ${n0} case "${os}:${fs}" in FreeBSD:UFS) expect 0 mkdir ${n0} 0755 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM rmdir ${n0} expect 0 chflags ${n0} none expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 chflags ${n0} UF_NOUNLINK expect EPERM rmdir ${n0} expect 0 chflags ${n0} none expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 chflags ${n0} UF_APPEND expect EPERM rmdir ${n0} expect 0 chflags ${n0} none expect 0 rmdir ${n0} ;; esac Index: vendor/pjdfstest/dist/tests/rmdir/10.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/10.t (revision 320447) @@ -1,67 +1,68 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EPERM if the parent directory of the named file has its immutable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..16" ;; FreeBSD:UFS) echo "1..30" ;; *) quick_exit esac n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM rmdir ${n0}/${n1} expect 0 chflags ${n0} none expect 0 rmdir ${n0}/${n1} expect 0 mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} SF_NOUNLINK expect 0 rmdir ${n0}/${n1} expect 0 chflags ${n0} none expect 0 mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} SF_APPEND todo FreeBSD:ZFS "Removing an entry from directory protected by SF_APPEND should return EPERM." expect EPERM rmdir ${n0}/${n1} expect 0 chflags ${n0} none todo FreeBSD:ZFS "Removing an entry from directory protected by SF_APPEND should return EPERM." expect 0 rmdir ${n0}/${n1} case "${os}:${fs}" in FreeBSD:UFS) expect 0 mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM rmdir ${n0}/${n1} expect 0 chflags ${n0} none expect 0 rmdir ${n0}/${n1} expect 0 mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} UF_NOUNLINK expect 0 rmdir ${n0}/${n1} expect 0 chflags ${n0} none expect 0 mkdir ${n0}/${n1} 0755 expect 0 chflags ${n0} UF_APPEND expect EPERM rmdir ${n0}/${n1} expect 0 chflags ${n0} none expect 0 rmdir ${n0}/${n1} ;; esac expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/11.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/11.t (revision 320447) @@ -1,57 +1,58 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EACCES or EPERM if the directory containing the directory to be removed is marked sticky, and neither the containing directory nor the directory to be removed are owned by the effective user ID" dir=`dirname $0` . ${dir}/../misc.sh echo "1..47" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} expect 0 mkdir ${n0} 0755 expect 0 chown ${n0} 65534 65534 expect 0 chmod ${n0} 01777 # User owns both: the sticky directory and the directory to be removed. expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755 expect dir,65534,65534 lstat ${n0}/${n1} type,uid,gid expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} expect ENOENT lstat ${n0}/${n1} type # User owns the directory to be removed, but doesn't own the sticky directory. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file dir ${n0}/${n1} 65534 65534 expect dir,65534,65534 lstat ${n0}/${n1} type,uid,gid expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} expect ENOENT lstat ${n0}/${n1} type done # User owns the sticky directory, but doesn't own the directory to be removed. expect 0 chown ${n0} 65534 65534 for id in 0 65533; do create_file dir ${n0}/${n1} ${id} ${id} expect dir,${id},${id} lstat ${n0}/${n1} type,uid,gid expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} expect ENOENT lstat ${n0}/${n1} type done # User doesn't own the sticky directory nor the directory to be removed. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file dir ${n0}/${n1} ${id} ${id} expect dir,${id},${id} lstat ${n0}/${n1} type,uid,gid expect "EACCES|EPERM" -u 65534 -g 65534 rmdir ${n0}/${n1} expect dir,${id},${id} lstat ${n0}/${n1} type,uid,gid expect 0 rmdir ${n0}/${n1} done expect 0 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/rmdir/12.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/12.t (revision 320447) @@ -1,20 +1,21 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EINVAL if the last component of the path is '.' and EEXIST or ENOTEMPTY if the last component of the path is '..'" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 mkdir ${n0}/${n1} 0755 expect EINVAL rmdir ${n0}/${n1}/. todo FreeBSD "According to POSIX: EEXIST or ENOTEMPTY - The path argument names a directory that is not an empty directory, or there are hard links to the directory other than dot or a single entry in dot-dot." expect "ENOTEMPTY|EEXIST" rmdir ${n0}/${n1}/.. expect 0 rmdir ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/13.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/13.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/13.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/13.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EBUSY if the directory to be removed is the mount point for a mounted file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}" = "FreeBSD" ] || quick_exit echo "1..3" n0=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect EBUSY rmdir ${n0} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/14.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/14.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/14.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/14.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..5" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 mkdir ${n0}/${n1} 0755 mount -ur /dev/md${n} expect EROFS rmdir ${n0}/${n1} mount -uw /dev/md${n} expect 0 rmdir ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/rmdir/15.t =================================================================== --- vendor/pjdfstest/dist/tests/rmdir/15.t (revision 320446) +++ vendor/pjdfstest/dist/tests/rmdir/15.t (revision 320447) @@ -1,12 +1,13 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/rmdir/15.t 211352 2010-08-15 21:24:17Z pjd $ desc="rmdir returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2" expect EFAULT rmdir NULL expect EFAULT rmdir DEADCODE Index: vendor/pjdfstest/dist/tests/symlink/00.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/00.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink creates symbolic links" dir=`dirname $0` . ${dir}/../misc.sh echo "1..14" n0=`namegen` n1=`namegen` expect 0 create ${n0} 0644 expect regular,0644 lstat ${n0} type,mode expect 0 symlink ${n0} ${n1} expect symlink lstat ${n1} type expect regular,0644 stat ${n1} type,mode expect 0 unlink ${n0} expect ENOENT stat ${n1} type,mode expect 0 unlink ${n1} expect 0 mkdir ${n0} 0755 time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 symlink test ${n0}/${n1} mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/symlink/01.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/01.t (revision 320447) @@ -1,18 +1,19 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/01.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns ENOTDIR if a component of the name2 path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 expect ENOTDIR symlink test ${n0}/${n1}/test expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/symlink/02.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/02.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns ENAMETOOLONG if a component of the name2 pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..7" n0=`namegen` nx=`namegen_max` nxx="${nx}x" expect 0 symlink ${nx} ${n0} expect 0 unlink ${n0} expect 0 symlink ${n0} ${nx} expect 0 unlink ${nx} expect ENAMETOOLONG symlink ${n0} ${nxx} expect 0 symlink ${nxx} ${n0} expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/symlink/03.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/03.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns ENAMETOOLONG if an entire length of either path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 symlink ${nx} ${n0} expect 0 unlink ${n0} expect 0 symlink ${n0} ${nx} expect 0 unlink ${nx} expect ENAMETOOLONG symlink ${n0} ${nxx} expect ENAMETOOLONG symlink ${nxx} ${n0} rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/symlink/04.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/04.t (revision 320447) @@ -1,16 +1,17 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns ENOENT if a component of the name2 path prefix does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT symlink test ${n0}/${n1}/test expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/symlink/05.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/05.t (revision 320447) @@ -1,34 +1,35 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns EACCES when a component of the name2 path prefix denies search permission" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 symlink test ${n1}/${n2} expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/symlink/06.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/06.t (revision 320447) @@ -1,34 +1,35 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns EACCES if the parent directory of the file to be created denies write permission" dir=`dirname $0` . ${dir}/../misc.sh echo "1..12" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 chmod ${n1} 0555 expect EACCES -u 65534 -g 65534 symlink test ${n1}/${n2} expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} expect 0 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/symlink/07.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/07.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns ELOOP if too many symbolic links were encountered in translating the name2 path name" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP symlink test ${n0}/test expect ELOOP symlink test ${n1}/test expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/symlink/08.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/08.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/08.t 211474 2010-08-18 22:06:43Z pjd $ desc="symlink returns EEXIST if the name2 argument already exists" dir=`dirname $0` . ${dir}/../misc.sh echo "1..21" n0=`namegen` for type in regular dir fifo block char socket symlink; do create_file ${type} ${n0} expect EEXIST symlink test ${n0} if [ "${type}" = "dir" ]; then expect 0 rmdir ${n0} else expect 0 unlink ${n0} fi done Index: vendor/pjdfstest/dist/tests/symlink/09.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/09.t (revision 320447) @@ -1,66 +1,67 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns EPERM if the parent directory of the file named by name2 has its immutable flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..17" ;; FreeBSD:UFS) echo "1..30" ;; *) quick_exit esac n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 symlink test ${n0}/${n1} expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM symlink test ${n0}/${n1} expect 0 chflags ${n0} none expect 0 symlink test ${n0}/${n1} expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_NOUNLINK expect 0 symlink test ${n0}/${n1} expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} SF_APPEND expect 0 symlink test ${n0}/${n1} expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} case "${os}:${fs}" in FreeBSD:UFS) expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM symlink test ${n0}/${n1} expect 0 chflags ${n0} none expect 0 symlink test ${n0}/${n1} expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} UF_NOUNLINK expect 0 symlink test ${n0}/${n1} expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} UF_APPEND expect 0 symlink test ${n0}/${n1} expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} ;; esac expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/symlink/10.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/10.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns EROFS if the file name2 would reside on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..7" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 symlink test ${n0}/${n1} expect 0 unlink ${n0}/${n1} mount -ur /dev/md${n} expect EROFS symlink test ${n0}/${n1} mount -uw /dev/md${n} expect 0 symlink test ${n0}/${n1} expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/symlink/11.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/11.t (revision 320447) @@ -1,31 +1,32 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns ENOSPC if there are no free inodes on the file system on which the symbolic link is being created" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..3" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 256k` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 512k` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit i=0 while :; do ln -s test ${n0}/${i} >/dev/null 2>&1 if [ $? -ne 0 ]; then break fi i=`expr $i + 1` done expect ENOSPC symlink test ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/symlink/12.t =================================================================== --- vendor/pjdfstest/dist/tests/symlink/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/symlink/12.t (revision 320447) @@ -1,18 +1,19 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/symlink/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="symlink returns EFAULT if one of the pathnames specified is outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` expect EFAULT symlink NULL ${n0} expect EFAULT symlink DEADCODE ${n0} expect EFAULT symlink test NULL expect EFAULT symlink test DEADCODE expect EFAULT symlink NULL DEADCODE expect EFAULT symlink DEADCODE NULL Index: vendor/pjdfstest/dist/tests/truncate/00.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/00.t (revision 320447) @@ -1,51 +1,52 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate descrease/increase file size" dir=`dirname $0` . ${dir}/../misc.sh echo "1..21" n0=`namegen` n1=`namegen` expect 0 mkdir ${n1} 0755 cdir=`pwd` cd ${n1} expect 0 create ${n0} 0644 expect 0 truncate ${n0} 1234567 expect 1234567 lstat ${n0} size expect 0 truncate ${n0} 567 expect 567 lstat ${n0} size expect 0 unlink ${n0} dd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1 expect 0 truncate ${n0} 23456 expect 23456 lstat ${n0} size expect 0 truncate ${n0} 1 expect 1 lstat ${n0} size expect 0 unlink ${n0} # successful truncate(2) updates ctime. expect 0 create ${n0} 0644 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 truncate ${n0} 123 ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 unlink ${n0} # unsuccessful truncate(2) does not update ctime. expect 0 create ${n0} 0644 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EACCES -u 65534 truncate ${n0} 123 ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/truncate/01.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/01.t (revision 320447) @@ -1,18 +1,19 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/01.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 expect ENOTDIR truncate ${n0}/${n1}/test 123 expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/truncate/02.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/02.t (revision 320447) @@ -1,18 +1,19 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" nx=`namegen_max` nxx="${nx}x" expect 0 create ${nx} 0644 expect 0 truncate ${nx} 123 expect 123 stat ${nx} size expect 0 unlink ${nx} expect ENAMETOOLONG truncate ${nxx} 123 Index: vendor/pjdfstest/dist/tests/truncate/03.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/03.t (revision 320447) @@ -1,22 +1,23 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 create ${nx} 0644 expect 0 truncate ${nx} 123 expect regular,123 stat ${nx} type,size expect 0 unlink ${nx} expect ENAMETOOLONG truncate ${nxx} 123 rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/truncate/04.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/04.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ENOENT if the named file does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect ENOENT truncate ${n0}/${n1}/test 123 expect ENOENT truncate ${n0}/${n1} 123 expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/truncate/05.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/05.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..15" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 123 expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 truncate ${n1}/${n2} 1234 expect 0 chmod ${n1} 0755 expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 1234 expect 1234 -u 65534 -g 65534 stat ${n1}/${n2} size expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/truncate/06.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/06.t (revision 320447) @@ -1,24 +1,25 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EACCES if the named file is not writable by the user" dir=`dirname $0` . ${dir}/../misc.sh echo "1..8" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 create ${n1} 0644 expect EACCES -u 65534 -g 65534 truncate ${n1} 123 expect 0 chown ${n1} 65534 65534 expect 0 chmod ${n1} 0444 expect EACCES -u 65534 -g 65534 truncate ${n1} 123 expect 0 unlink ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/truncate/07.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/07.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP truncate ${n0}/test 123 expect ELOOP truncate ${n1}/test 123 expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/truncate/08.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/08.t (revision 320447) @@ -1,78 +1,79 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EPERM if the named file has its immutable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..22" ;; FreeBSD:UFS) echo "1..44" ;; *) quick_exit esac n0=`namegen` expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM truncate ${n0} 123 expect 0 stat ${n0} size expect 0 chflags ${n0} none expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_NOUNLINK expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_APPEND todo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM." expect EPERM truncate ${n0} 123 todo FreeBSD:ZFS "Truncating a file protected by SF_APPEND should return EPERM." expect 0 stat ${n0} size expect 0 chflags ${n0} none expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 unlink ${n0} case "${os}:${fs}" in FreeBSD:UFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM truncate ${n0} 123 expect 0 stat ${n0} size expect 0 chflags ${n0} none expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_NOUNLINK expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_APPEND expect EPERM truncate ${n0} 123 expect 0 stat ${n0} size expect 0 chflags ${n0} none expect 0 truncate ${n0} 123 expect 123 stat ${n0} size expect 0 unlink ${n0} ;; esac Index: vendor/pjdfstest/dist/tests/truncate/09.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/09.t (revision 320447) @@ -1,15 +1,16 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EISDIR if the named file is a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` expect 0 mkdir ${n0} 0755 expect EISDIR truncate ${n0} 123 expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/truncate/10.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/10.t (revision 320447) @@ -1,32 +1,33 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..10" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 expect 0 truncate ${n0}/${n1} 123 expect 123 stat ${n0}/${n1} size mount -ur /dev/md${n} expect EROFS truncate ${n0}/${n1} 1234 expect 123 stat ${n0}/${n1} size mount -uw /dev/md${n} expect 0 truncate ${n0}/${n1} 1234 expect 1234 stat ${n0}/${n1} size expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/truncate/11.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/11.t (revision 320447) @@ -1,18 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns ETXTBSY the file is a pure procedure (shared text) file that is being executed" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}" = "FreeBSD" ] || quick_exit +noexec && quick_exit echo "1..2" n0=`namegen` cp -pf `which sleep` ${n0} ./${n0} 3 & expect ETXTBSY truncate ${n0} 123 expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/truncate/12.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/12.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EFBIG or EINVAL if the length argument was greater than the maximum file size" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` expect 0 create ${n0} 0644 r=`${fstest} truncate ${n0} 999999999999999 2>/dev/null` case "${r}" in EFBIG|EINVAL) expect 0 stat ${n0} size ;; 0) expect 999999999999999 stat ${n0} size ;; *) echo "not ok ${ntest}" ntest=`expr ${ntest} + 1` ;; esac expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/truncate/13.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/13.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/13.t (revision 320447) @@ -1,16 +1,17 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/13.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EINVAL if the length argument was less than 0" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" n0=`namegen` expect 0 create ${n0} 0644 expect EINVAL -- truncate ${n0} -1 expect EINVAL -- truncate ${n0} -999999 expect 0 unlink ${n0} Index: vendor/pjdfstest/dist/tests/truncate/14.t =================================================================== --- vendor/pjdfstest/dist/tests/truncate/14.t (revision 320446) +++ vendor/pjdfstest/dist/tests/truncate/14.t (revision 320447) @@ -1,12 +1,13 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/truncate/14.t 211352 2010-08-15 21:24:17Z pjd $ desc="truncate returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2" expect EFAULT truncate NULL 123 expect EFAULT truncate DEADCODE 123 Index: vendor/pjdfstest/dist/tests/unlink/00.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/00.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/00.t (revision 320447) @@ -1,212 +1,213 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/00.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink removes regular files, symbolic links, fifos and sockets" dir=`dirname $0` . ${dir}/../misc.sh echo "1..112" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} expect 0 create ${n0} 0644 expect regular lstat ${n0} type expect 0 unlink ${n0} expect ENOENT lstat ${n0} type expect 0 symlink ${n1} ${n0} expect symlink lstat ${n0} type expect 0 unlink ${n0} expect ENOENT lstat ${n0} type expect 0 mkfifo ${n0} 0644 expect fifo lstat ${n0} type expect 0 unlink ${n0} expect ENOENT lstat ${n0} type expect 0 mknod ${n0} b 0644 1 2 expect block lstat ${n0} type expect 0 unlink ${n0} expect ENOENT lstat ${n0} type expect 0 mknod ${n0} c 0644 1 2 expect char lstat ${n0} type expect 0 unlink ${n0} expect ENOENT lstat ${n0} type expect 0 bind ${n0} expect socket lstat ${n0} type expect 0 unlink ${n0} expect ENOENT lstat ${n0} type # successful unlink(2) updates ctime. expect 0 create ${n0} 0644 expect 0 link ${n0} ${n1} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n1} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 unlink ${n0} expect 0 mkfifo ${n0} 0644 expect 0 link ${n0} ${n1} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n1} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 unlink ${n0} expect 0 mknod ${n0} b 0644 1 2 expect 0 link ${n0} ${n1} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n1} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 unlink ${n0} expect 0 mknod ${n0} c 0644 1 2 expect 0 link ${n0} ${n1} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n1} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 unlink ${n0} expect 0 bind ${n0} expect 0 link ${n0} ${n1} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n1} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -lt $ctime2 expect 0 unlink ${n0} # unsuccessful unlink(2) does not update ctime. expect 0 create ${n0} 0644 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EACCES -u 65534 unlink ${n0} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0 unlink ${n0} expect 0 mkfifo ${n0} 0644 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EACCES -u 65534 unlink ${n0} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0 unlink ${n0} expect 0 mknod ${n0} b 0644 1 2 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EACCES -u 65534 unlink ${n0} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0 unlink ${n0} expect 0 mknod ${n0} c 0644 1 2 ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EACCES -u 65534 unlink ${n0} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0 unlink ${n0} expect 0 bind ${n0} ctime1=`${fstest} stat ${n0} ctime` sleep 1 expect EACCES -u 65534 unlink ${n0} ctime2=`${fstest} stat ${n0} ctime` test_check $ctime1 -eq $ctime2 expect 0 unlink ${n0} expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n0}/${n1} mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 mkfifo ${n0}/${n1} 0644 time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n0}/${n1} mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 mknod ${n0}/${n1} b 0644 1 2 time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n0}/${n1} mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 mknod ${n0}/${n1} c 0644 1 2 time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n0}/${n1} mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 bind ${n0}/${n1} time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n0}/${n1} mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 rmdir ${n0} expect 0 mkdir ${n0} 0755 expect 0 symlink test ${n0}/${n1} time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n0}/${n1} mtime=`${fstest} stat ${n0} mtime` test_check $time -lt $mtime ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 rmdir ${n0} expect 0 create ${n0} 0644 expect 0 link ${n0} ${n1} time=`${fstest} stat ${n0} ctime` sleep 1 expect 0 unlink ${n1} ctime=`${fstest} stat ${n0} ctime` test_check $time -lt $ctime expect 0 unlink ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/unlink/01.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/01.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/01.t (revision 320447) @@ -1,18 +1,19 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/01.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns ENOTDIR if a component of the path prefix is not a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..5" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 expect ENOTDIR unlink ${n0}/${n1}/test expect 0 unlink ${n0}/${n1} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/unlink/02.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/02.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/02.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/02.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns ENAMETOOLONG if a component of a pathname exceeded {NAME_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" nx=`namegen_max` nxx="${nx}x" expect 0 create ${nx} 0644 expect 0 unlink ${nx} expect ENOENT unlink ${nx} expect ENAMETOOLONG unlink ${nxx} Index: vendor/pjdfstest/dist/tests/unlink/03.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/03.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/03.t (revision 320447) @@ -1,21 +1,22 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/03.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns ENAMETOOLONG if an entire path name exceeded {PATH_MAX} characters" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" nx=`dirgen_max` nxx="${nx}x" mkdir -p "${nx%/*}" expect 0 create ${nx} 0644 expect 0 unlink ${nx} expect ENOENT unlink ${nx} expect ENAMETOOLONG unlink ${nxx} rm -rf "${nx%%/*}" Index: vendor/pjdfstest/dist/tests/unlink/04.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/04.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/04.t (revision 320447) @@ -1,17 +1,18 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/04.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns ENOENT if the named file does not exist" dir=`dirname $0` . ${dir}/../misc.sh echo "1..4" n0=`namegen` n1=`namegen` expect 0 create ${n0} 0644 expect 0 unlink ${n0} expect ENOENT unlink ${n0} expect ENOENT unlink ${n1} Index: vendor/pjdfstest/dist/tests/unlink/05.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/05.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/05.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/05.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns EACCES when search permission is denied for a component of the path prefix" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 chmod ${n1} 0644 expect EACCES -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/unlink/06.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/06.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/06.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/06.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns EACCES when write permission is denied on the directory containing the link to be removed" dir=`dirname $0` . ${dir}/../misc.sh echo "1..10" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n0} 0755 cdir=`pwd` cd ${n0} expect 0 mkdir ${n1} 0755 expect 0 chown ${n1} 65534 65534 expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 expect 0 chmod ${n1} 0555 expect EACCES -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 chmod ${n1} 0755 expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} expect 0 rmdir ${n1} cd ${cdir} expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/unlink/07.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/07.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/07.t (revision 320447) @@ -1,19 +1,20 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/07.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns ELOOP if too many symbolic links were encountered in translating the pathname" dir=`dirname $0` . ${dir}/../misc.sh echo "1..6" n0=`namegen` n1=`namegen` expect 0 symlink ${n0} ${n1} expect 0 symlink ${n1} ${n0} expect ELOOP unlink ${n0}/test expect ELOOP unlink ${n1}/test expect 0 unlink ${n0} expect 0 unlink ${n1} Index: vendor/pjdfstest/dist/tests/unlink/08.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/08.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/08.t (revision 320447) @@ -1,16 +1,17 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/08.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink may return EPERM if the named file is a directory" dir=`dirname $0` . ${dir}/../misc.sh echo "1..3" n0=`namegen` expect 0 mkdir ${n0} 0755 todo Linux "According to POSIX: EPERM - The file named by path is a directory, and either the calling process does not have appropriate privileges, or the implementation prohibits using unlink() on directories." expect "0|EPERM" unlink ${n0} expect "0|ENOENT" rmdir ${n0} Index: vendor/pjdfstest/dist/tests/unlink/09.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/09.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/09.t (revision 320447) @@ -1,65 +1,66 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/09.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns EPERM if the named file has its immutable, undeletable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..15" ;; FreeBSD:UFS) echo "1..30" ;; *) quick_exit esac n0=`namegen` expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM unlink ${n0} expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_NOUNLINK expect EPERM unlink ${n0} expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} SF_APPEND todo FreeBSD:ZFS "Removing a file protected by SF_APPEND should return EPERM." expect EPERM unlink ${n0} todo FreeBSD:ZFS "Removing a file protected by SF_APPEND should return EPERM." expect 0 chflags ${n0} none todo FreeBSD:ZFS "Removing a file protected by SF_APPEND should return EPERM." expect 0 unlink ${n0} case "${os}:${fs}" in FreeBSD:UFS) expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM unlink ${n0} expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_NOUNLINK expect EPERM unlink ${n0} expect 0 chflags ${n0} none expect 0 unlink ${n0} expect 0 create ${n0} 0644 expect 0 chflags ${n0} UF_APPEND expect EPERM unlink ${n0} expect 0 chflags ${n0} none expect 0 unlink ${n0} ;; esac Index: vendor/pjdfstest/dist/tests/unlink/10.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/10.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/10.t (revision 320447) @@ -1,67 +1,68 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/10.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns EPERM if the parent directory of the named file has its immutable or append-only flag set" dir=`dirname $0` . ${dir}/../misc.sh require chflags case "${os}:${fs}" in FreeBSD:ZFS) echo "1..16" ;; FreeBSD:UFS) echo "1..30" ;; *) quick_exit esac n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 expect 0 create ${n0}/${n1} 0644 expect 0 chflags ${n0} SF_IMMUTABLE expect EPERM unlink ${n0}/${n1} expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 create ${n0}/${n1} 0644 expect 0 chflags ${n0} SF_NOUNLINK expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} none expect 0 create ${n0}/${n1} 0644 expect 0 chflags ${n0} SF_APPEND todo FreeBSD:ZFS "Removing a file from a directory protected by SF_APPEND should return EPERM." expect EPERM unlink ${n0}/${n1} expect 0 chflags ${n0} none todo FreeBSD:ZFS "Removing a file from a directory protected by SF_APPEND should return EPERM." expect 0 unlink ${n0}/${n1} case "${os}:${fs}" in FreeBSD:UFS) expect 0 create ${n0}/${n1} 0644 expect 0 chflags ${n0} UF_IMMUTABLE expect EPERM unlink ${n0}/${n1} expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} expect 0 create ${n0}/${n1} 0644 expect 0 chflags ${n0} UF_NOUNLINK expect 0 unlink ${n0}/${n1} expect 0 chflags ${n0} none expect 0 create ${n0}/${n1} 0644 expect 0 chflags ${n0} UF_APPEND expect EPERM unlink ${n0}/${n1} expect 0 chflags ${n0} none expect 0 unlink ${n0}/${n1} ;; esac expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/unlink/11.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/11.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/11.t (revision 320447) @@ -1,63 +1,64 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/11.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns EACCES or EPERM if the directory containing the file is marked sticky, and neither the containing directory nor the file to be removed are owned by the effective user ID" dir=`dirname $0` . ${dir}/../misc.sh echo "1..270" n0=`namegen` n1=`namegen` n2=`namegen` expect 0 mkdir ${n2} 0755 cdir=`pwd` cd ${n2} expect 0 mkdir ${n0} 0755 expect 0 chmod ${n0} 01777 expect 0 chown ${n0} 65534 65534 for type in regular fifo block char socket symlink; do # User owns both: the sticky directory and the file. expect 0 chown ${n0} 65534 65534 create_file ${type} ${n0}/${n1} 65534 65534 expect ${type},65534,65534 lstat ${n0}/${n1} type,uid,gid expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} expect ENOENT lstat ${n0}/${n1} type # User owns the sticky directory, but doesn't own the file. for id in 0 65533; do expect 0 chown ${n0} 65534 65534 create_file ${type} ${n0}/${n1} ${id} ${id} expect ${type},${id},${id} lstat ${n0}/${n1} type,uid,gid expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} expect ENOENT lstat ${n0}/${n1} type done # User owns the file, but doesn't own the sticky directory. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file ${type} ${n0}/${n1} 65534 65534 expect ${type},65534,65534 lstat ${n0}/${n1} type,uid,gid expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} expect ENOENT lstat ${n0}/${n1} type done # User doesn't own the sticky directory nor the file. for id in 0 65533; do expect 0 chown ${n0} ${id} ${id} create_file ${type} ${n0}/${n1} ${id} ${id} expect ${type},${id},${id} lstat ${n0}/${n1} type,uid,gid expect "EACCES|EPERM" -u 65534 -g 65534 unlink ${n0}/${n1} expect ${type},${id},${id} lstat ${n0}/${n1} type,uid,gid expect 0 unlink ${n0}/${n1} done done expect 0 rmdir ${n0} cd ${cdir} expect 0 rmdir ${n2} Index: vendor/pjdfstest/dist/tests/unlink/12.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/12.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/12.t (revision 320447) @@ -1,27 +1,28 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/12.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns EROFS if the named file resides on a read-only file system" dir=`dirname $0` . ${dir}/../misc.sh [ "${os}:${fs}" = "FreeBSD:UFS" ] || quick_exit echo "1..5" n0=`namegen` n1=`namegen` expect 0 mkdir ${n0} 0755 -n=`mdconfig -a -n -t malloc -s 1m` -newfs /dev/md${n} >/dev/null -mount /dev/md${n} ${n0} +n=`mdconfig -a -n -t malloc -s 1m` || exit +newfs /dev/md${n} >/dev/null || exit +mount /dev/md${n} ${n0} || exit expect 0 create ${n0}/${n1} 0644 mount -ur /dev/md${n} expect EROFS unlink ${n0}/${n1} mount -uw /dev/md${n} expect 0 unlink ${n0}/${n1} umount /dev/md${n} -mdconfig -d -u ${n} +mdconfig -d -u ${n} || exit expect 0 rmdir ${n0} Index: vendor/pjdfstest/dist/tests/unlink/13.t =================================================================== --- vendor/pjdfstest/dist/tests/unlink/13.t (revision 320446) +++ vendor/pjdfstest/dist/tests/unlink/13.t (revision 320447) @@ -1,12 +1,13 @@ #!/bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 # $FreeBSD: head/tools/regression/pjdfstest/tests/unlink/13.t 211352 2010-08-15 21:24:17Z pjd $ desc="unlink returns EFAULT if the path argument points outside the process's allocated address space" dir=`dirname $0` . ${dir}/../misc.sh echo "1..2" expect EFAULT unlink NULL expect EFAULT unlink DEADCODE Index: vendor/pjdfstest/dist/tests/utimensat/00.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/00.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/00.t (revision 320447) @@ -0,0 +1,36 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat changes timestamps on any type of file" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..32" + +n0=`namegen` +n1=`namegen` + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + +DATE1=1900000000 #Sun Mar 17 11:46:40 MDT 2030 +DATE2=1950000000 #Fri Oct 17 04:40:00 MDT 2031 +for type in regular dir fifo block char socket; do + create_file ${type} ${n0} + expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE2 0 0 + expect $DATE1 lstat ${n0} atime + expect $DATE2 lstat ${n0} mtime + if [ "${type}" = "dir" ]; then + expect 0 rmdir ${n0} + else + expect 0 unlink ${n0} + fi +done + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/01.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/01.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/01.t (revision 320447) @@ -0,0 +1,56 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat with UTIME_NOW will set the will set typestamps to now" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..7" + +n0=`namegen` +n1=`namegen` +TIME_MARGIN=300 # Allow up to a 5 minute delta between the timestamps + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + + +create_file regular ${n0} +old_mtime=`$fstest lstat ${n0} mtime` +old_atime=`$fstest lstat ${n0} atime` +sleep 1 # Ensure that future timestamps will be different than this one + +expect 0 open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_NOW 0 UTIME_NOW 0 +new_mtime=`$fstest lstat ${n0} mtime` +new_atime=`$fstest lstat ${n0} atime` +delta_mtime=$(( $new_mtime - $old_mtime )) +delta_atime=$(( $new_atime - $old_atime )) + +if [ "$delta_mtime" -gt 0 ]; then + if [ "$delta_mtime" -lt $TIME_MARGIN ]; then + echo "ok 4" + else + echo "not ok 4 new mtime is implausibly far in the future" + fi +else + echo "not ok 4 mtime was not updated" +fi +if [ "$delta_atime" -gt 0 ]; then + if [ "$delta_atime" -lt $TIME_MARGIN ]; then + echo "ok 5" + else + echo "not ok 5 new atime is implausibly far in the future" + fi +else + echo "not ok 5 atime was not updated" +fi +ntest=$((ntest+2)) +expect 0 unlink ${n0} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/02.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/02.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/02.t (revision 320447) @@ -0,0 +1,35 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat with UTIME_OMIT will leave the time unchanged" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..10" + +n0=`namegen` +n1=`namegen` +DATE1=1900000000 #Sun Mar 17 11:46:40 MDT 2030 +DATE2=1950000000 #Fri Oct 17 04:40:00 MDT 2031 + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + +create_file regular ${n0} +orig_mtime=`$fstest lstat ${n0} mtime` +expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 0 UTIME_OMIT 0 +expect $DATE1 lstat ${n0} atime +expect $orig_mtime lstat ${n0} mtime + +expect 0 open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_OMIT $DATE2 0 0 +expect $DATE1 lstat ${n0} atime +expect $DATE2 lstat ${n0} mtime +expect 0 unlink ${n0} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/03.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/03.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/03.t (revision 320447) @@ -0,0 +1,39 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat can update birthtimes" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +require stat_st_birthtime + +echo "1..12" + +n0=`namegen` +n1=`namegen` +DATE1=100000000 #Sat Mar 3 02:46:40 MST 1973 +DATE2=200000000 #Mon May 3 13:33:20 MDT 1976 + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + +create_file regular ${n0} +expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE1 0 0 +expect $DATE1 lstat ${n0} atime +expect $DATE1 lstat ${n0} mtime +expect $DATE1 lstat ${n0} birthtime + +expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE2 0 $DATE2 0 0 +expect $DATE2 lstat ${n0} atime +expect $DATE2 lstat ${n0} mtime +expect $DATE1 lstat ${n0} birthtime + +expect 0 unlink ${n0} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/04.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/04.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/04.t (revision 320447) @@ -0,0 +1,36 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat can set mtime < atime or vice versa" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..10" + +n0=`namegen` +n1=`namegen` +DATE1=100000000 #Sat Mar 3 02:46:40 MST 1973 +DATE2=200000000 #Mon May 3 13:33:20 MDT 1976 + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + + +create_file regular ${n0} +expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE2 0 0 +expect $DATE1 lstat ${n0} atime +expect $DATE2 lstat ${n0} mtime + +expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE2 0 $DATE1 0 0 +expect $DATE2 lstat ${n0} atime +expect $DATE1 lstat ${n0} mtime + +expect 0 unlink ${n0} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/05.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/05.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/05.t (revision 320447) @@ -0,0 +1,53 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat can follow symlinks" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..16" + +n0=`namegen` +n1=`namegen` +n2=`namegen` +DATE1=1900000000 #Sun Mar 17 11:46:40 MDT 2030 +DATE2=1950000000 #Fri Oct 17 04:40:00 MDT 2031 +DATE3=1960000000 #Mon Feb 9 21:26:40 MST 2032 +DATE4=1970000000 #Fri Jun 4 16:13:20 MDT 2032 +DATE5=1980000000 #Tue Sep 28 10:00:00 MDT 2032 +DATE6=1990000000 #Sat Jan 22 02:46:40 MST 2033 + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + + +create_file regular ${n0} +ln -s ${n0} ${n2} +expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE2 0 0 + +expect 0 open . O_RDONLY : utimensat 0 ${n2} $DATE3 0 $DATE4 0 AT_SYMLINK_NOFOLLOW +expect $DATE1 lstat ${n0} atime +expect $DATE2 lstat ${n0} mtime +expect $DATE3 lstat ${n2} atime +expect $DATE4 lstat ${n2} mtime + +expect 0 open . O_RDONLY : utimensat 0 ${n2} $DATE5 0 $DATE6 0 0 +expect $DATE5 lstat ${n0} atime +expect $DATE6 lstat ${n0} mtime +# If atime is disabled on the current mount, then ${n2}'s atime should still be +# $DATE3. However, if atime is enabled, then ${n2}'s atime will be the current +# system time. For this test, it's sufficient to simply check that it didn't +# get set to DATE5 +test_check "$DATE5" -ne `"$fstest" lstat ${n2} atime` +expect $DATE4 lstat ${n2} mtime + +expect 0 unlink ${n0} +expect 0 unlink ${n2} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/06.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/06.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/06.t (revision 320447) @@ -0,0 +1,45 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat with UTIME_NOW will work if the caller has write permission" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..13" + +n0=`namegen` +n1=`namegen` +UID_NOBODY=`id -u nobody` +GID_NOBODY=`id -g nobody` +UID_ROOT=`id -u root` +GID_ROOT=`id -g root` + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + +create_file regular ${n0} 0644 +# First check that nobody can't update the timestamps +expect EACCES -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_NOW 0 UTIME_NOW 0 + +# Now check that the owner can update the timestamps +expect 0 chown ${n0} $UID_NOBODY $GID_NOBODY +expect 0 chmod ${n0} 0444 +expect 0 -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_NOW 0 UTIME_NOW 0 + +# Now check that the superuser can update the timestamps +expect 0 -u $UID_ROOT open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_OMIT 0 UTIME_OMIT 0 + +# Now check that anyone with write permission can update the timestamps +expect 0 chown ${n0} $UID_ROOT $GID_ROOT +expect 0 chmod ${n0} 0666 +expect 0 -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_NOW 0 UTIME_NOW 0 + +expect 0 unlink ${n0} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/07.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/07.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/07.t (revision 320447) @@ -0,0 +1,51 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat will work if the caller is the owner or root" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..17" + +n0=`namegen` +n1=`namegen` +DATE1=1900000000 #Sun Mar 17 11:46:40 MDT 2030 +DATE2=1950000000 #Fri Oct 17 04:40:00 MDT 2031 +UID_NOBODY=`id -u nobody` +GID_NOBODY=`id -g nobody` +UID_ROOT=`id -u root` +GID_ROOT=`id -g root` + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + +create_file regular ${n0} 0644 $UID_ROOT $GID_ROOT +# First check that nobody can't update the timestamps +expect EPERM -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_OMIT $DATE2 0 0 +expect EPERM -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 0 UTIME_OMIT 0 +expect EPERM -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE2 0 0 + +# Now check that a nonowner with write permission can't update the timestamps +expect 0 chmod ${n0} 0666 +expect EPERM -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} 0 UTIME_OMIT $DATE2 0 0 +expect EPERM -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 0 UTIME_OMIT 0 +expect EPERM -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE2 0 0 + +# Now check that the owner can update the timestamps +expect 0 chown ${n0} $UID_NOBODY $GID_NOBODY +expect 0 chmod ${n0} 0444 +expect 0 -u $UID_NOBODY open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE2 0 + +# Now check that the superuser can update the timestamps +expect 0 -u $UID_ROOT open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE2 0 0 + + +expect 0 unlink ${n0} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/08.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/08.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/08.t (revision 320447) @@ -0,0 +1,40 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat can set timestamps with subsecond precision" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..9" + +n0=`namegen` +n1=`namegen` +# Different file systems have different timestamp resolutions. Check that they +# can do 0.1 second, but don't bother checking the finest resolution. +DATE1=100000000 #Sat Mar 3 02:46:40 MST 1973 +DATE1_NS=100000000 +DATE2=200000000 #Mon May 3 13:33:20 MDT 1976 +DATE2_NS=200000000 + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + +create_file regular ${n0} 0644 +expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE1 $DATE1_NS $DATE2 $DATE2_NS 0 +expect $DATE1_NS lstat ${n0} atime_ns +expect $DATE2_NS lstat ${n0} mtime_ns +if supported "stat_st_birthtime"; then + expect $DATE2_NS lstat ${n0} birthtime_ns +else + test_check true +fi + +expect 0 unlink ${n0} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/tests/utimensat/09.t =================================================================== --- vendor/pjdfstest/dist/tests/utimensat/09.t (nonexistent) +++ vendor/pjdfstest/dist/tests/utimensat/09.t (revision 320447) @@ -0,0 +1,35 @@ +#! /bin/sh +# vim: filetype=sh noexpandtab ts=8 sw=8 +# $FreeBSD$ + +desc="utimensat is y2038 compliant" + +dir=`dirname $0` +. ${dir}/../misc.sh + +require "utimensat" + +echo "1..7" + +require utimensat + +n0=`namegen` +n1=`namegen` +DATE1=2147483648 # 2^31, ie Mon Jan 18 20:14:08 MST 2038 +DATE2=4294967296 # 2^32, ie Sat Feb 6 23:28:16 MST 2106 + +expect 0 mkdir ${n1} 0755 +cdir=`pwd` +cd ${n1} + + +create_file regular ${n0} +expect 0 open . O_RDONLY : utimensat 0 ${n0} $DATE1 0 $DATE2 0 0 +expect $DATE1 lstat ${n0} atime +expect $DATE2 lstat ${n0} mtime + + +expect 0 unlink ${n0} + +cd ${cdir} +expect 0 rmdir ${n1} Index: vendor/pjdfstest/dist/travis/build.sh =================================================================== --- vendor/pjdfstest/dist/travis/build.sh (nonexistent) +++ vendor/pjdfstest/dist/travis/build.sh (revision 320447) @@ -0,0 +1,8 @@ +#!/bin/sh + +set -e + +cd $(dirname $0)/.. +autoreconf -ifs +./configure +make Property changes on: vendor/pjdfstest/dist/travis/build.sh ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: vendor/pjdfstest/dist/travis/test.sh =================================================================== --- vendor/pjdfstest/dist/travis/test.sh (nonexistent) +++ vendor/pjdfstest/dist/travis/test.sh (revision 320447) @@ -0,0 +1,29 @@ +#!/bin/sh + +set -ex + +cd $(dirname $0)/.. + +df . +uname -a + +case "$(uname)" in +Darwin) + sw_vers -productVersion + mount + # FIXME: OSX has test issues that need to be addressed per Issue #13. + exit 0 + ;; +FreeBSD) + mount -p + ;; +Linux) + for release_file in /etc/lsb-release /etc/os-release; do + echo "$release_file.. ->" + cat $release_file + done + mount + ;; +esac + +sudo prove -rv . Property changes on: vendor/pjdfstest/dist/travis/test.sh ___________________________________________________________________ Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:executable ## -0,0 +1 ## +* \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property