aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/extattrctl/extattrctl.c
diff options
context:
space:
mode:
authorRobert Watson <rwatson@FreeBSD.org>2000-09-12 04:40:34 +0000
committerRobert Watson <rwatson@FreeBSD.org>2000-09-12 04:40:34 +0000
commit1fec210a697d244902acf2a4c8991f8f07a0a62b (patch)
tree12b3145c0187cc048f7aa327c5b1e2c7bbc87c42 /usr.sbin/extattrctl/extattrctl.c
parent16eb772dd793b44daf2ae297311b3b3437767e2c (diff)
downloadsrc-1fec210a697d244902acf2a4c8991f8f07a0a62b.tar.gz
src-1fec210a697d244902acf2a4c8991f8f07a0a62b.zip
o Add a ``-o'' argument to initattr, which causes extattrctl to overwrite
the existing attribute file rather than aborting with an error. o Useful if you want to reset the state of attributes on the system without allocating different disk blocks through deletion and recreation, for example, if you're doing benchmarks of extended attribute code. :-) Obtained from: TrustedBSD Project
Notes
Notes: svn path=/head/; revision=65767
Diffstat (limited to 'usr.sbin/extattrctl/extattrctl.c')
-rw-r--r--usr.sbin/extattrctl/extattrctl.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/usr.sbin/extattrctl/extattrctl.c b/usr.sbin/extattrctl/extattrctl.c
index 7d34831f007c..2d08926e1869 100644
--- a/usr.sbin/extattrctl/extattrctl.c
+++ b/usr.sbin/extattrctl/extattrctl.c
@@ -54,7 +54,7 @@ usage(void)
"usage:\n"
" extattrctl start [path]\n"
" extattrctl stop [path]\n"
- " extattrctl initattr [-p path] [attrsize] [attrfile]\n"
+ " extattrctl initattr [-o] [-p path] [attrsize] [attrfile]\n"
" extattrctl enable [path] [attrname] [attrfile]\n"
" extattrctl disable [path] [attrname]\n");
exit(-1);
@@ -82,11 +82,14 @@ initattr(int argc, char *argv[])
char *fs_path = NULL;
char *zero_buf = NULL;
long loop, num_inodes;
- int ch, i, error, chunksize;
+ int ch, i, error, chunksize, overwrite = 0, flags;
optind = 0;
- while ((ch = getopt(argc, argv, "p:r:w:")) != -1)
+ while ((ch = getopt(argc, argv, "op:r:w:")) != -1)
switch (ch) {
+ case 'o':
+ overwrite = 1;
+ break;
case 'p':
fs_path = strdup(optarg);
break;
@@ -101,8 +104,13 @@ initattr(int argc, char *argv[])
if (argc != 2)
usage();
+ if (overwrite)
+ flags = O_CREAT | O_WRONLY;
+ else
+ flags = O_CREAT | O_EXCL | O_WRONLY;
+
error = 0;
- if ((i = open(argv[1], O_CREAT | O_EXCL | O_WRONLY, 0600)) != -1) {
+ if ((i = open(argv[1], flags, 0600)) != -1) {
uef.uef_magic = UFS_EXTATTR_MAGIC;
uef.uef_version = UFS_EXTATTR_VERSION;
uef.uef_size = atoi(argv[0]);