svn commit: r225703 - in projects/jbuild/usr.bin/jbuild/filemon: .
test
David E. O'Brien
obrien at FreeBSD.org
Tue Sep 20 23:22:58 UTC 2011
Author: obrien
Date: Tue Sep 20 23:22:58 2011
New Revision: 225703
URL: http://svn.freebsd.org/changeset/base/225703
Log:
Things opened R/W should also produce an R record instead of treating an
open for O_RDWR the same as O_WRONLY.
Modified:
projects/jbuild/usr.bin/jbuild/filemon/filemon.h
projects/jbuild/usr.bin/jbuild/filemon/filemon_wrapper.c
projects/jbuild/usr.bin/jbuild/filemon/test/test_script.sh
Modified: projects/jbuild/usr.bin/jbuild/filemon/filemon.h
==============================================================================
--- projects/jbuild/usr.bin/jbuild/filemon/filemon.h Tue Sep 20 21:54:43 2011 (r225702)
+++ projects/jbuild/usr.bin/jbuild/filemon/filemon.h Tue Sep 20 23:22:58 2011 (r225703)
@@ -1,4 +1,5 @@
/*-
+ * Copyright (c) 2011, David E. O'Brien.
* Copyright (c) 2009-2011, Juniper Networks, Inc.
* All rights reserved.
*
@@ -29,4 +30,5 @@
#define FILEMON_SET_FD _IOWR('S', 1, int)
#define FILEMON_SET_PID _IOWR('S', 2, pid_t)
-#define FILEMON_VERSION 3 /* output format */
+#define FILEMON_VERSION 4 /* output format
+ (bump when adding record types) */
Modified: projects/jbuild/usr.bin/jbuild/filemon/filemon_wrapper.c
==============================================================================
--- projects/jbuild/usr.bin/jbuild/filemon/filemon_wrapper.c Tue Sep 20 21:54:43 2011 (r225702)
+++ projects/jbuild/usr.bin/jbuild/filemon/filemon_wrapper.c Tue Sep 20 23:22:58 2011 (r225703)
@@ -1,4 +1,5 @@
/*-
+ * Copyright (c) 2011, David E. O'Brien.
* Copyright (c) 2009-2011, Juniper Networks, Inc.
* All rights reserved.
*
@@ -258,11 +259,23 @@ filemon_wrapper_open(struct thread *td,
copyinstr(uap->path, filemon->fname1,
sizeof(filemon->fname1), &done);
+ if (uap->flags & O_RDWR) {
+ /*
+ * We'll get the W record below, but need
+ * to also output an R to distingish from
+ * O_WRONLY.
+ */
+ len = snprintf(filemon->msgbufr,
+ sizeof(filemon->msgbufr), "R %d %s\n",
+ curproc->p_pid, filemon->fname1);
+ filemon_output(filemon, filemon->msgbufr, len);
+ }
+
+
len = snprintf(filemon->msgbufr,
sizeof(filemon->msgbufr), "%c %d %s\n",
(uap->flags & O_ACCMODE) ? 'W':'R',
curproc->p_pid, filemon->fname1);
-
filemon_output(filemon, filemon->msgbufr, len);
/* Unlock the found filemon structure. */
Modified: projects/jbuild/usr.bin/jbuild/filemon/test/test_script.sh
==============================================================================
--- projects/jbuild/usr.bin/jbuild/filemon/test/test_script.sh Tue Sep 20 21:54:43 2011 (r225702)
+++ projects/jbuild/usr.bin/jbuild/filemon/test/test_script.sh Tue Sep 20 23:22:58 2011 (r225703)
@@ -26,11 +26,16 @@
#
# $FreeBSD$
+trap 'rm -f $f1 $f2; exit 1' 1 2 3 13 15
echo shazbot > /dev/null
f1=`mktemp /tmp/filemon_test.XXXXXX`
-trap 'rm -f $f1; exit 1' 1 2 3 13 15
+f2=`mktemp /tmp/ed-script.XXXXXX`
> $f1
echo "One line to rule them all" >> $f1
wc -l $f1 > /dev/null
-rm $f1
+# ed(1)'s /tmp/ed.* buffer file will be opened RW
+echo ',s/$/./g' > $f2
+echo 'wq' >>$f2
+ed -s $f1 < $f2
+rm $f1 $f2
uptime > /dev/null
More information about the svn-src-projects
mailing list