Deleted Added
full compact
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 ---