-CHANGES-IPPTOOL.txt - 2013-05-29
+CHANGES-IPPTOOL.txt - 2013-06-06
--------------------------------
This file provides a list of changes to the ipptool binary distribution posted
on cups.org.
-2013-05-29
+2013-06-06
+ - New ippfind tool now included with ipptool.
- Added support for automatically extending the timeout when all of the
request data has not yet been written (all platforms but Windows
which does not support it...)
-CHANGES.txt - 1.7rc1 - 2013-06-05
+CHANGES.txt - 1.7rc1 - 2013-06-06
---------------------------------
CHANGES IN CUPS V1.7rc1
+ - Added a new ippfind tool for finding IPP printers and other Bonjour
+ services (<rdar://problem/13876199>)
- Fixed some issues with conversion of PWG media size names to
hundredths of millimeters (<rdar://problem/14065748>)
- The IPP backend could crash on OS X when printing to a Kerberized
-IPPTOOL.txt - 2013-05-02
+IPPTOOL.txt - 2013-06-06
------------------------
See the file CHANGES-IPPTOOL.txt for a list of changes to this software.
complex conformance tests and a simple way to query printer, job, and
subscription attributes.
+ CUPS also includes a user program called ippfind that can be used to find
+ IPP printers that have registered themselves using Bonjour (DNS-SD, mDNS,
+ and Zeroconf) and run commands such as ipptool.
-BASIC USAGE
+
+IPPFIND BASIC USAGE
+
+ The ippfind command can be used to discover IPP printers on your network.
+ For example, the following command prints the printer URI of registered IPP
+ printers:
+
+ ippfind
+
+ To find all color IPP printers, run:
+
+ ippfind --txt-color T
+
+ To run the IPP Everywhere conformance test file on every registered IPP
+ printer, run the following command instead:
+
+ ippfind --exec ipptool -t '{}' ipp-everywhere.test \;
+
+
+IPPTOOL BASIC USAGE
The ipptool command requires a printer URI and one or more "test" files that
describe the operations, attributes to display, and expected status and
</b>--help
<b>ippfind
</b>--version
-<h2 class="title"><a name="SUPPORTED_REGISTRATION_TYPES">Supported Registration Types</a></h2>
-<i>ippfind</i> supports the following registration types:
-<dl>
-<dt>_http._tcp
-</dt>
-<dd>HyperText Transport Protocol (HTTP, RFC 2616)
-</dd>
-<dt>_https._tcp
-</dt>
-<dd>Secure HyperText Transport Protocol (HTTPS, RFC 2818)
-</dd>
-<dt>_ipp._tcp
-</dt>
-<dd>Internet Printing Protocol (IPP, RFC 2911)
-</dd>
-<dt>_ipps._tcp
-</dt>
-<dd>Secure Internet Printing Protocol (IPPS, draft)
-</dd>
-<dt>_printer._tcp
-</dt>
-<dd>Line Printer Daemon (LPD, RFC 1179)
-
-</dd>
-</dl>
<h2 class="title"><a name="OPTIONS">Options</a></h2>
<dl>
<dt>--help
</dd>
</dl>
<h2 class="title"><a name="DESCRIPTION">Description</a></h2>
-<i>ippfind</i> finds printer services registered with the local DNS infrastructure or available through the local links.
+<i>ippfind</i> finds services registered with a DNS server or available through local devices. Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands. For example, to show the status of all registered IPP printers on your network, run:
+<pre>
+ ippfind --ls
+</pre>
+Similarly, to send a PostScript test page to every PostScript printer, run:
+<pre>
+ ippfind --txt-pdl application/postscript --exec ipptool \
+ -f onepage-letter.ps '{}' print-job.test \;
+</pre>
+
+<h2 class="title"><a name="REGISTRATION_TYPES">Registration Types</a></h2>
+<i>ippfind</i> supports the following registration types:
+<dl>
+<dt>_http._tcp
+</dt>
+<dd>HyperText Transport Protocol (HTTP, RFC 2616)
+</dd>
+<dt>_https._tcp
+</dt>
+<dd>Secure HyperText Transport Protocol (HTTPS, RFC 2818)
+</dd>
+<dt>_ipp._tcp
+</dt>
+<dd>Internet Printing Protocol (IPP, RFC 2911)
+</dd>
+<dt>_ipps._tcp
+</dt>
+<dd>Secure Internet Printing Protocol (IPPS, draft)
+</dd>
+<dt>_printer._tcp
+</dt>
+<dd>Line Printer Daemon (LPD, RFC 1179)
+</dd>
+</dl>
<h2 class="title"><a name="EXPRESSIONS">Expressions</a></h2>
-<i>ippfind</i> supports expressions much like the <i>find(1)</i> utility. However, unlike <i>find</i>, <i>ippfind</i> uses POSIX regular expressions instead of shell filename matching patterns. If -e, --exec, -l, --ls, -p, --print, --print-name, -q, --quiet, or -s is not specified, <i>ippfind</i> adds --print to print the service URI of anything it finds. The following expressions are supported:
+<i>ippfind</i> supports expressions much like the <i>find(1)</i> utility. However, unlike <i>find</i>, <i>ippfind</i> uses POSIX regular expressions instead of shell filename matching patterns. If --exec, -l, --ls, -p, --print, --print-name, -q, --quiet, -s, or -x is not specified, <i>ippfind</i> adds --print to print the service URI of anything it finds. The following expressions are supported:
<dl>
<dt>-d regex
</dt>
</dt>
<dd>True if the domain matches the given regular expression.
</dd>
-<dt>-e utility [argument ...] ;
-</dt>
-<dd></dd>
-<dt>--exec utility [argument ...] ;
-</dt>
-<dd>Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
-</dd>
<dt>--false
</dt>
<dd>Always false.
</dd>
+<dt>-h regex
+</dt>
+<dd></dd>
+<dt>--host regex
+</dt>
+<dd>True is the hostname matches the given regular expression.
+</dd>
<dt>-l
</dt>
<dd></dd>
</dt>
<dd>True if the URI resource path matches the given regular expression.
</dd>
+<dt>-P number[-number]
+</dt>
+<dd></dd>
+<dt>--port number[-number]
+</dt>
+<dd>True if the port matches the given number or range.
+</dd>
<dt>-p
</dt>
<dd></dd>
</dt>
<dd>True if the URI matches the given regular expression.
</dd>
+<dt>-x utility [argument ...] ;
+</dt>
+<dd></dd>
+<dt>--exec utility [argument ...] ;
+</dt>
+<dd>Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
+</dd>
</dl>
<p>Expressions may also contain modifiers:
<dl>
.\" which should have been included with this file. If this file is
.\" file is missing or damaged, see the license at "http://www.cups.org/".
.\"
-.TH ippfind 1 "CUPS" "5 June 2013" "Apple Inc."
+.TH ippfind 1 "CUPS" "6 June 2013" "Apple Inc."
.SH NAME
ippfind - find internet printing protocol printers
.SH SYNOPSIS
--help
.B ippfind
--version
-.SH SUPPORTED REGISTRATION TYPES
-\fIippfind\fR supports the following registration types:
-.TP 5
-_http._tcp
-HyperText Transport Protocol (HTTP, RFC 2616)
-.TP 5
-_https._tcp
-Secure HyperText Transport Protocol (HTTPS, RFC 2818)
-.TP 5
-_ipp._tcp
-Internet Printing Protocol (IPP, RFC 2911)
-.TP 5
-_ipps._tcp
-Secure Internet Printing Protocol (IPPS, draft)
-.TP 5
-_printer._tcp
-Line Printer Daemon (LPD, RFC 1179)
-
.SH OPTIONS
.TP 5
--help
Specifies the IPP version when listing. Supported values are 1.1, 2.0, 2.1, and 2.2.
.SH DESCRIPTION
-\fIippfind\fR finds printer services registered with the local DNS infrastructure or available through the local links.
+\fIippfind\fR finds services registered with a DNS server or available through local devices. Its primary purpose is to find IPP printers and show their URIs, show their current status, or run commands. For example, to show the status of all registered IPP printers on your network, run:
+.nf
+ ippfind --ls
+.fi
+Similarly, to send a PostScript test page to every PostScript printer, run:
+.nf
+ ippfind --txt-pdl application/postscript --exec ipptool \\
+ -f onepage-letter.ps '{}' print-job.test \\;
+.fi
+
+.SH REGISTRATION TYPES
+\fIippfind\fR supports the following registration types:
+.TP 5
+_http._tcp
+HyperText Transport Protocol (HTTP, RFC 2616)
+.TP 5
+_https._tcp
+Secure HyperText Transport Protocol (HTTPS, RFC 2818)
+.TP 5
+_ipp._tcp
+Internet Printing Protocol (IPP, RFC 2911)
+.TP 5
+_ipps._tcp
+Secure Internet Printing Protocol (IPPS, draft)
+.TP 5
+_printer._tcp
+Line Printer Daemon (LPD, RFC 1179)
.SH EXPRESSIONS
-\fIippfind\fR supports expressions much like the \fIfind(1)\fR utility. However, unlike \fIfind\fR, \fIippfind\fR uses POSIX regular expressions instead of shell filename matching patterns. If -e, --exec, -l, --ls, -p, --print, --print-name, -q, --quiet, or -s is not specified, \fIippfind\fR adds --print to print the service URI of anything it finds. The following expressions are supported:
+\fIippfind\fR supports expressions much like the \fIfind(1)\fR utility. However, unlike \fIfind\fR, \fIippfind\fR uses POSIX regular expressions instead of shell filename matching patterns. If --exec, -l, --ls, -p, --print, --print-name, -q, --quiet, -s, or -x is not specified, \fIippfind\fR adds --print to print the service URI of anything it finds. The following expressions are supported:
.TP 5
-d regex
.TP 5
--domain regex
True if the domain matches the given regular expression.
.TP 5
--e utility [argument ...] ;
-.TP 5
---exec utility [argument ...] ;
-Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
-.TP 5
--false
Always false.
.TP 5
.TP 5
--uri regex
True if the URI matches the given regular expression.
+.TP 5
+-x utility [argument ...] ;
+.TP 5
+--exec utility [argument ...] ;
+Executes the specified program if the current result is true. "{foo}" arguments are replaced with the corresponding value - see SUBSTITUTIONS below.
.PP
Expressions may also contain modifiers:
.TP 5
return (IPPFIND_EXIT_MEMORY);
break;
- case 'e' :
- i ++;
- if (i >= argc)
- {
- _cupsLangPrintf(stderr,
- _("ippfind: Missing program after %s."),
- "-e");
- show_usage();
- }
-
- if ((temp = new_expr(IPPFIND_OP_EXEC, invert, NULL, NULL,
- argv + i)) == NULL)
- return (IPPFIND_EXIT_MEMORY);
-
- while (i < argc)
- if (!strcmp(argv[i], ";"))
- break;
- else
- i ++;
-
- if (i >= argc)
- {
- _cupsLangPrintf(stderr,
- _("ippfind: Missing semi-colon after %s."),
- "-e");
- show_usage();
- }
-
- have_output = 1;
- break;
-
case 'h' :
i ++;
if (i >= argc)
return (IPPFIND_EXIT_MEMORY);
break;
+ case 'x' :
+ i ++;
+ if (i >= argc)
+ {
+ _cupsLangPrintf(stderr,
+ _("ippfind: Missing program after %s."),
+ "-x");
+ show_usage();
+ }
+
+ if ((temp = new_expr(IPPFIND_OP_EXEC, invert, NULL, NULL,
+ argv + i)) == NULL)
+ return (IPPFIND_EXIT_MEMORY);
+
+ while (i < argc)
+ if (!strcmp(argv[i], ";"))
+ break;
+ else
+ i ++;
+
+ if (i >= argc)
+ {
+ _cupsLangPrintf(stderr,
+ _("ippfind: Missing semi-colon after %s."),
+ "-x");
+ show_usage();
+ }
+
+ have_output = 1;
+ break;
+
default :
_cupsLangPrintf(stderr, _("%s: Unknown option \"-%c\"."),
"ippfind", *opt);
_cupsLangPuts(stderr, _("Expressions:"));
_cupsLangPuts(stderr, _(" -P number[-number] Match port to number or range."));
_cupsLangPuts(stderr, _(" -d regex Match domain to regular expression."));
- _cupsLangPuts(stderr, _(" -e utility [argument ...] ;\n"
- " Execute program if true."));
_cupsLangPuts(stderr, _(" -h regex Match hostname to regular expression."));
_cupsLangPuts(stderr, _(" -l List attributes."));
_cupsLangPuts(stderr, _(" -n regex Match service name to regular expression."));
_cupsLangPuts(stderr, _(" -s Print service name if true."));
_cupsLangPuts(stderr, _(" -t key True if the TXT record contains the key."));
_cupsLangPuts(stderr, _(" -u regex Match URI to regular expression."));
+ _cupsLangPuts(stderr, _(" -x utility [argument ...] ;\n"
+ " Execute program if true."));
_cupsLangPuts(stderr, _(" --domain regex Match domain to regular expression."));
_cupsLangPuts(stderr, _(" --exec utility [argument ...] ;\n"
" Execute program if true."));
echo Copying package files
cp CHANGES-IPPTOOL.txt IPPTOOL.txt LICENSE.txt $pkgdir
-cp doc/help/man-ipptool*.html $pkgdir
+cp doc/help/man-ipp*.html $pkgdir
cp test/color.jpg $pkgdir
cp test/create-printer-subscription.test $pkgdir
cp test/document-*.pdf $pkgdir
cp test/gray.jpg $pkgdir
cp test/ipp-[12].*.test $pkgdir
cp test/ipp-everywhere.test $pkgdir
+cp test/ippfind-static $pkgdir/ippfind
cp test/ipptool-static $pkgdir/ipptool
cp test/onepage-*.pdf $pkgdir
cp test/onepage-*.ps $pkgdir