summaryrefslogtreecommitdiff
path: root/static/netbsd/man2/rfilter.2
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man2/rfilter.2
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man2/rfilter.2')
-rw-r--r--static/netbsd/man2/rfilter.2117
1 files changed, 117 insertions, 0 deletions
diff --git a/static/netbsd/man2/rfilter.2 b/static/netbsd/man2/rfilter.2
new file mode 100644
index 00000000..5a30d2dd
--- /dev/null
+++ b/static/netbsd/man2/rfilter.2
@@ -0,0 +1,117 @@
+$NetBSD: rfilter.2,v 1.4 2020/03/22 23:24:08 gutteridge Exp $
+
+Advanced rfilter usage: the strip key, and cmd:// notation
+
+
+1. The strip key
+
+All examples so far have had a match field of foo/, and have
+subsequently stripped out foo/ from the path before calling the
+designated program. This example shows how to not strip, if
+desired.
+
+Remember that the third parameter in a configuration specifies
+the leading pathname component to strip (the ``strip key'' in my
+nomenclature). This must match the leading characters in the
+path, otherwise no stripping is done. To see the difference
+between stripping and no stripping, use the following
+configuration (or rfilter.2.conf):
+
+ echo/ rfilter echo/ echo %s
+ echo_nostrip/ rfilter no_strip echo %s
+
+Mount, and try a few things:
+
+ % mkdir portal
+
+ % mount_portal /usr/share/examples/mount_portal/rfilter.2.conf `pwd`/portal
+
+ % cat portal/echo/"Hello there."
+ Hello there.
+
+ % cat portal/echo_nostrip/"Hello there."
+ echo_nostrip/Hello there.
+
+Notice that in the second case, the full path name (after
+removing the mountpoint) was substituted for %s, and not just the
+portion beyond the match key.
+
+
+2. cmd://, and how it can cause problems
+
+With the proliferation of the web, URLs like
+http://host/path/path and ftp://host/path/path,
+gopher://host/path, etc. have become common. We can provide web
+access through the file system by parsing such names, and
+treating them appropriately. Use rfilter.2.conf, in particular,
+the following lines:
+
+ ftp:// rfilter nostrip ftp -Vo - %s
+ http:// rfilter nostrip ftp -Vo - %s
+
+Now, access the web!
+
+ % mount_portal /usr/share/examples/mount_portal/rfilter.2.conf `pwd`/portal
+
+ % cksum portal/http://www.NetBSD.org/
+ 362001418 6920 portal/http://www.NetBSD.org/
+
+ % more portal/http://www.NetBSD.org/
+ <html>
+ <head>
+ <!-- Copyright (c) 1996, 1997, 1998, 1999
+ The NetBSD Foundation, Inc. ALL RIGHTS RESERVED. -->
+ ...
+
+Similarly, we can access ftp sites via ftp://
+
+ % cat portal/ftp://ftp.NetBSD.org/pub/NetBSD/.message
+ GIVEN THE NATURE OF THE SOFTWARE MADE AVAILABLE UNDER THIS PROGRAM
+ IT IS HEREBY NOTED THAT ALL SOFTWARE, WITH THE EXCEPTION ...
+
+
+The difficulty with the URL format becomes clear if we try to tar
+a file from ftp://...:
+
+ % tar tzf portal/ftp://ftp.NetBSD.org/pub/NetBSD-current/tar_files/doc.tar.gz
+ portal/ftp: Unknown host
+ tar (child): can't open archive portal/ftp://ftp.NetBSD.org/pub/NetBSD-current/tar_files/doc.tar.gz : Input/output error
+
+The problem is, when tar sees a file of the form A:B, it assumes
+A is a hostname. In this case, A is "portal/ftp", which is
+obviously not a hostname.
+
+If we want to avoid this problem, there are at least two
+solutions:
+ 1. cat portal/ftp://ftp.NetBSD.org/pub/NetBSD-current/tar_files/doc.tar.gz | tar tzf -
+
+ 2. Use ftp%// in the configuration file:
+
+ ftp%// rfilter ftp%// ftp -Vo - ftp://%s
+
+ % tar tzf portal/ftp%//ftp.NetBSD.org/pub/NetBSD-current/tar_files/doc.tar.gz
+
+Note that in this case, we strip out ftp%//, and prepend ftp://
+to the path argument to ftp.
+
+tar is not the only application which treats a colon specially --
+some others include dump, restore, and rcp/scp. For this reason,
+it is recommended to use %, rather than :, for URL-like cmd%//
+portal configurations.
+
+
+3. Guru usage
+
+We conclude this file with an outlandish example showing the full
+utility of the rfilter portal. Assume we want a single command
+that can extract files from a bzip2'd tar archive that is on
+an ftp site. Currently, tar does not understand bzip2 format, so
+it requires at least 3 commands:
+ 1. fetch from ftp site
+ 2. bunzip2 the file
+ 3. extract.
+
+With appropriate portal configurations, the following single command
+would also work.
+
+tar xf portal/bzcat%//`pwd`/portal/ftp%//FTP.SITE.NET/path/path/tar.bz2