pjdfstest.c (193373) | pjdfstest.c (196948) |
---|---|
1/*- 2 * Copyright (c) 2006-2007 Pawel Jakub Dawidek <pjd@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * | 1/*- 2 * Copyright (c) 2006-2007 Pawel Jakub Dawidek <pjd@FreeBSD.org> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 9 unchanged lines hidden (view full) --- 18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24 * SUCH DAMAGE. 25 * |
26 * $FreeBSD: head/tools/regression/fstest/fstest.c 193373 2009-06-03 09:24:58Z pjd $ | 26 * $FreeBSD: head/tools/regression/fstest/fstest.c 196948 2009-09-07 19:40:22Z trasz $ |
27 */ 28 29#include <sys/param.h> 30#include <sys/stat.h> 31#include <stdio.h> 32#include <stdlib.h> 33#include <unistd.h> 34#include <fcntl.h> --- 5 unchanged lines hidden (view full) --- 40 41#ifndef HAS_TRUNCATE64 42#define truncate64 truncate 43#endif 44#ifndef HAS_STAT64 45#define stat64 stat 46#define lstat64 lstat 47#endif | 27 */ 28 29#include <sys/param.h> 30#include <sys/stat.h> 31#include <stdio.h> 32#include <stdlib.h> 33#include <unistd.h> 34#include <fcntl.h> --- 5 unchanged lines hidden (view full) --- 40 41#ifndef HAS_TRUNCATE64 42#define truncate64 truncate 43#endif 44#ifndef HAS_STAT64 45#define stat64 stat 46#define lstat64 lstat 47#endif |
48#ifdef HAS_FREEBSD_ACL 49#include <sys/acl.h> 50#endif |
|
48 49#ifndef ALLPERMS 50#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) 51#endif 52 53enum action { 54 ACTION_OPEN, 55 ACTION_CREATE, --- 14 unchanged lines hidden (view full) --- 70 ACTION_CHFLAGS, 71#endif 72#ifdef HAS_LCHFLAGS 73 ACTION_LCHFLAGS, 74#endif 75 ACTION_TRUNCATE, 76 ACTION_STAT, 77 ACTION_LSTAT, | 51 52#ifndef ALLPERMS 53#define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO) 54#endif 55 56enum action { 57 ACTION_OPEN, 58 ACTION_CREATE, --- 14 unchanged lines hidden (view full) --- 73 ACTION_CHFLAGS, 74#endif 75#ifdef HAS_LCHFLAGS 76 ACTION_LCHFLAGS, 77#endif 78 ACTION_TRUNCATE, 79 ACTION_STAT, 80 ACTION_LSTAT, |
78 ACTION_PATHCONF | 81 ACTION_PATHCONF, 82#ifdef HAS_FREEBSD_ACL 83 ACTION_PREPENDACL, 84 ACTION_READACL, 85#endif 86 ACTION_WRITE, |
79}; 80 81#define TYPE_NONE 0x0000 82#define TYPE_STRING 0x0001 83#define TYPE_NUMBER 0x0002 84 85#define TYPE_OPTIONAL 0x0100 86 --- 26 unchanged lines hidden (view full) --- 113#endif 114#ifdef HAS_LCHFLAGS 115 { "lchflags", ACTION_LCHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, 116#endif 117 { "truncate", ACTION_TRUNCATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, 118 { "stat", ACTION_STAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, 119 { "lstat", ACTION_LSTAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, 120 { "pathconf", ACTION_PATHCONF, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, | 87}; 88 89#define TYPE_NONE 0x0000 90#define TYPE_STRING 0x0001 91#define TYPE_NUMBER 0x0002 92 93#define TYPE_OPTIONAL 0x0100 94 --- 26 unchanged lines hidden (view full) --- 121#endif 122#ifdef HAS_LCHFLAGS 123 { "lchflags", ACTION_LCHFLAGS, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, 124#endif 125 { "truncate", ACTION_TRUNCATE, { TYPE_STRING, TYPE_NUMBER, TYPE_NONE } }, 126 { "stat", ACTION_STAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, 127 { "lstat", ACTION_LSTAT, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, 128 { "pathconf", ACTION_PATHCONF, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, |
129#ifdef HAS_FREEBSD_ACL 130 { "prependacl", ACTION_PREPENDACL, { TYPE_STRING, TYPE_STRING, TYPE_NONE } }, 131 { "readacl", ACTION_READACL, { TYPE_STRING, TYPE_NONE } }, 132#endif 133 { "write", ACTION_WRITE, { TYPE_STRING, TYPE_NONE } }, |
|
121 { NULL, -1, { TYPE_NONE } } 122}; 123 124struct flag { 125 long long f_flag; 126 char *f_str; 127}; 128 --- 263 unchanged lines hidden (view full) --- 392 long long flags; 393 unsigned int i; 394 char *endp; 395 int name, rval; 396 union { 397 char *str; 398 long long num; 399 } args[MAX_ARGS]; | 134 { NULL, -1, { TYPE_NONE } } 135}; 136 137struct flag { 138 long long f_flag; 139 char *f_str; 140}; 141 --- 263 unchanged lines hidden (view full) --- 405 long long flags; 406 unsigned int i; 407 char *endp; 408 int name, rval; 409 union { 410 char *str; 411 long long num; 412 } args[MAX_ARGS]; |
413#ifdef HAS_FREEBSD_ACL 414 int entry_id = ACL_FIRST_ENTRY; 415 acl_t acl, newacl; 416 acl_entry_t entry, newentry; 417#endif |
|
400 401 /* 402 * Verify correctness of the arguments. 403 */ 404 for (i = 0; i < sizeof(args)/sizeof(args[0]); i++) { 405 if (scall->sd_args[i] == TYPE_NONE) { 406 if (argv[i] == NULL || strcmp(argv[i], ":") == 0) 407 break; --- 127 unchanged lines hidden (view full) --- 535 return (i); 536 } else if (lrval >= 0) { 537 printf("%ld\n", lrval); 538 return (i); 539 } 540 rval = -1; 541 break; 542 } | 418 419 /* 420 * Verify correctness of the arguments. 421 */ 422 for (i = 0; i < sizeof(args)/sizeof(args[0]); i++) { 423 if (scall->sd_args[i] == TYPE_NONE) { 424 if (argv[i] == NULL || strcmp(argv[i], ":") == 0) 425 break; --- 127 unchanged lines hidden (view full) --- 553 return (i); 554 } else if (lrval >= 0) { 555 printf("%ld\n", lrval); 556 return (i); 557 } 558 rval = -1; 559 break; 560 } |
561#ifdef HAS_FREEBSD_ACL 562 case ACTION_PREPENDACL: 563 rval = -1; 564 565 acl = acl_get_file(STR(0), ACL_TYPE_NFS4); 566 if (acl == NULL) 567 break; 568 569 newacl = acl_from_text(STR(1)); 570 if (acl == NULL) 571 break; 572 573 while (acl_get_entry(newacl, entry_id, &newentry) == 1) { 574 entry_id = ACL_NEXT_ENTRY; 575 576 if (acl_create_entry_np(&acl, &entry, 0)) 577 break; 578 579 if (acl_copy_entry(entry, newentry)) 580 break; 581 } 582 583 rval = acl_set_file(STR(0), ACL_TYPE_NFS4, acl); 584 break; 585 586 case ACTION_READACL: 587 acl = acl_get_file(STR(0), ACL_TYPE_NFS4); 588 if (acl == NULL) 589 rval = -1; 590 else 591 rval = 0; 592 break; 593#endif 594 595 case ACTION_WRITE: 596 rval = open(STR(0), O_WRONLY); 597 if (rval < 0) 598 break; 599 600 rval = write(rval, "x", 1); 601 break; 602 |
|
543 default: 544 fprintf(stderr, "unsupported syscall\n"); 545 exit(1); 546 } 547#undef STR 548#undef NUM 549 if (rval < 0) { 550 const char *serrno; --- 505 unchanged lines hidden --- | 603 default: 604 fprintf(stderr, "unsupported syscall\n"); 605 exit(1); 606 } 607#undef STR 608#undef NUM 609 if (rval < 0) { 610 const char *serrno; --- 505 unchanged lines hidden --- |