diff options
Diffstat (limited to 'doc/bbe.html')
| -rw-r--r-- | doc/bbe.html | 531 |
1 files changed, 531 insertions, 0 deletions
diff --git a/doc/bbe.html b/doc/bbe.html new file mode 100644 index 0000000..5f266e3 --- /dev/null +++ b/doc/bbe.html @@ -0,0 +1,531 @@ +<html lang="en"> +<head> +<title>bbe - binary block editor</title> +<meta http-equiv="Content-Type" content="text/html"> +<meta name="description" content="bbe - binary block editor"> +<meta name="generator" content="makeinfo 4.7"> +<link title="Top" rel="top" href="#Top"> +<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage"> +<!-- +This file documents the `bbe' - binary block editor + +Copyright (C) 2005 Timo Savinen + + Permission is granted to make and distribute verbatim copies of + this manual provided the copyright notice and this permission + notice are preserved on all copies. + + Permission is granted to copy and distribute modified versions of + this manual under the conditions for verbatim copying, provided + that the entire resulting derived work is distributed under the + terms of a permission notice identical to this one. + + Permission is granted to copy and distribute translations of this + manual into another language, under the above conditions for + modified versions. + --> +<meta http-equiv="Content-Style-Type" content="text/css"> +<style type="text/css"><!-- + pre.display { font-family:inherit } + pre.format { font-family:inherit } + pre.smalldisplay { font-family:inherit; font-size:smaller } + pre.smallformat { font-family:inherit; font-size:smaller } + pre.smallexample { font-size:smaller } + pre.smalllisp { font-size:smaller } + span.sc { font-variant:small-caps } + span.roman { font-family: serif; font-weight: normal; } +--></style> +</head> +<body> +<h1 class="settitle">bbe - binary block editor</h1> +<div class="node"> +<p><hr> +<a name="Top"></a>Next: <a rel="next" accesskey="n" href="#Overview">Overview</a>, +Previous: <a rel="previous" accesskey="p" href="#dir">(dir)</a>, +Up: <a rel="up" accesskey="u" href="#dir">(dir)</a> +<br> +</div> + +<h2 class="unnumbered">bbe</h2> + +<p>This file documents the <span class="command">bbe</span> - binary block editor + + <p>Copyright © 2005 Timo Savinen + + <blockquote> +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + + <p>Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + + <p>Permission is granted to copy and distribute translations of this manual +into another language, under the above conditions for modified versions. +</blockquote> + +<!-- All the menus can be updated with the EMACS command --> +<!-- texinfo-all-menus-update, which is normally bound to C-c C-u C-a. --> +<ul class="menu"> +<li><a accesskey="1" href="#Overview">Overview</a>: Preliminary information. +<li><a accesskey="2" href="#Samples">Samples</a>: Samples using <span class="command">bbe</span>. +<li><a accesskey="3" href="#Invoking-bbe">Invoking bbe</a>: How to run <span class="command">bbe</span>. +<li><a accesskey="4" href="#bbe-programs">bbe programs</a>: How <span class="command">bbe</span> works. +<li><a accesskey="5" href="#Problems">Problems</a>: Reporting bugs. +</ul> + +<div class="node"> +<p><hr> +<a name="Overview"></a>Next: <a rel="next" accesskey="n" href="#Samples">Samples</a>, +Previous: <a rel="previous" accesskey="p" href="#Top">Top</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> +<br> +</div> + +<h2 class="chapter">1 Preliminary information</h2> + +<p><a name="index-greetings-1"></a><a name="index-overview-2"></a> +The <span class="command">bbe</span> program is a sed-like editor for binary files. <span class="command">bbe</span> +performs basic byte related transformations on blocks of input stream. <span class="command">bbe</span> is non-interactive command line tool and +can be used as a part of a pipeline. <span class="command">bbe</span> makes only one pass over input stream. + + <p><span class="command">bbe</span> contains also grep-like features, like printing the filename, offset and block number. + +<div class="node"> +<p><hr> +<a name="Samples"></a>Next: <a rel="next" accesskey="n" href="#Invoking-bbe">Invoking bbe</a>, +Previous: <a rel="previous" accesskey="p" href="#Overview">Overview</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> +<br> +</div> + +<h2 class="chapter">2 Samples using <span class="command">bbe</span></h2> + +<p><a name="index-sample-3"></a> +Few examples of running <span class="command">bbe</span>: + + <dl> +<dt><span class="samp">bbe -b "/\x80\x50\x0e/:12" -e "d 0 3" -e "c BCD ASC" -e "A \x0a" -e "w /tmp/numbers" -o /dev/null /tmp/bdata</span><dd>Task here is to extract BCD coded numbers from the file <span class="file">/tmp/bdata</span> and write them +in ascii format with newline to file <span class="file">/tmp/numbers</span>. +12 bytes long blocks containing the BCD-numbers start with three byte sequence of +values <span class="samp">0x80</span>, <span class="samp">0x50</span> and <span class="samp">0x0e</span>. First three bytes (the block start sequence) +are removed (<span class="samp">d 0 3</span>) rest of the block is transformed from BCD to Ascii (<span class="samp">c BCD ASC</span>) and a newline character is +appended at the end of the block (<span class="samp">A \x0a</span>). +All transformed blocks are written to <span class="file">/tmp/numbers</span> (<span class="samp">w /tmp/numbers</span>). Nothing is written to +the output (<span class="samp">-o /dev/null</span>). +<br> + + <br><dt><span class="samp">bbe -b ":525" -e "i 524 \x0a" -o /tmp/data_with_nl /tmp/data</span><dd>A newline is added after every 525'th byte of the file <span class="file">/tmp/data</span>. Data with newlines is written to <span class="file">/tmp/data_with_nl</span>. +<br> + + <br><dt><span class="samp">bbe -b ":526" -e "d 525 1" -o /tmp/data /tmp/data_with_nl</span><dd>Every 526'th byte (inserted newline in previous example) is removed from the file <span class="file">/tmp/data_with_nl</span>. Data without newlines is written to <span class="file">/tmp/data</span>. +<br> + + <br><dt><span class="samp">bbe -e "s/\x0d\x0a/\x0a/"</span><dd>Same effect as has command <span class="command">dos2unix</span>. +</dl> + +<div class="node"> +<p><hr> +<a name="Invoking-bbe"></a>Next: <a rel="next" accesskey="n" href="#bbe-programs">bbe programs</a>, +Previous: <a rel="previous" accesskey="p" href="#Samples">Samples</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> +<br> +</div> + +<h2 class="chapter">3 How to run <span class="command">bbe</span></h2> + +<p><a name="index-running-bbe-4"></a><a name="index-using-5"></a> +<span class="command">bbe</span> accepts several commands to operate on blocks. Commands are +executed in the same order as they appear in command line or in a script file. +Order is significant, because the changes made to current byte by previous commands are +seen by next commands. + +<ul class="menu"> +<li><a accesskey="1" href="#Invocation">Invocation</a>: Program invocation +<li><a accesskey="2" href="#Block">Block</a>: Block definition +<li><a accesskey="3" href="#Commands">Commands</a>: bbe commands +<li><a accesskey="4" href="#Limits">Limits</a>: Limitations +</ul> + +<div class="node"> +<p><hr> +<a name="Invocation"></a>Next: <a rel="next" accesskey="n" href="#Block">Block</a>, +Up: <a rel="up" accesskey="u" href="#Invoking-bbe">Invoking bbe</a> +<br> +</div> + +<h3 class="section">3.1 Program invocation</h3> + +<p><a name="index-options-6"></a> +The format for running the <span class="command">bbe</span> program is: + +<pre class="example"> bbe <var>option</var> ... +</pre> + <p><code>bbe</code> supports the following options: + +<!-- Formatting copied from the Texinfo 4.0 manual. --> +<dl> +<dt><code>-b </code><var>BLOCK</var><dt><code>--block=</code><var>BLOCK</var><dd>Block definition. + + <br><dt><code>-e </code><var>COMMAND</var><dt><code>--expression=</code><var>COMMAND</var><dd>Add command(s) to the commands to be executed. Commands must separated by semicolon. + + <br><dt><code>-f </code><var>script-file</var><dt><code>--file=</code><var>script-file</var><dd>Add commands from <var>script-file</var> to the commands to be executed. + + <br><dt><code>-o </code><var>file</var><dt><code>--output=</code><var>file</var><dd>Write output to <var>file</var> instead of standard output. + + <br><dt><code>-s</code><dt><code>--suppress</code><dd>Suppress printing of normal output, print only block contents. + + <br><dt><code>-?</code><dt><code>--help</code><dd>Print an informative help message describing the options and then exit +successfully. + + <br><dt><code>-V</code><dt><code>--version</code><dd>Print the version number of <span class="command">bbe</span> and then exit successfully. +</dl> + + <p>All remaining options are names of input files, if no input files are specified or <code>-</code> is given, then the standard input is read. + +<div class="node"> +<p><hr> +<a name="Block"></a>Next: <a rel="next" accesskey="n" href="#Commands">Commands</a>, +Previous: <a rel="previous" accesskey="p" href="#Invocation">Invocation</a>, +Up: <a rel="up" accesskey="u" href="#Invoking-bbe">Invoking bbe</a> +<br> +</div> + +<h3 class="section">3.2 Block definition</h3> + +<p><a name="index-block-7"></a> +<span class="command">bbe</span> devides the input stream to blocks defined by the <code>-b</code> option. If block is +not defined, the whole input stream is considered as one block. Commands have effect only inside a block, rest of the input stream +remains untouched. Currently <span class="command">bbe</span> supports only one block definition per invocation. If input stream consists of different blocks, +several <span class="command">bbe</span>s can be combined in a pipeline. + + <p>A block can be defined several ways: + + <dl> +<dt><var>N</var><code>:</code><var>M</var><dd>Block starts at offset <var>N</var> of input stream (first byte is 0). Block is <var>M</var> bytes long. This definition allows +only one block to be defined. + + <br><dt><code>:</code><var>M</var><dd>The whole input stream is divided to <var>M</var>-size blocks. + + <br><dt><code>/</code><var>start</var><code>/:/</code><var>stop</var><code>/</code><dd>Blocks start with sequence <var>start</var> and end with sequence <var>stop</var>. Both <var>start</var> and <var>stop</var> are included to blocks. + + <br><dt><code>/</code><var>start</var><code>/:</code><dd>Blocks start with sequence <var>start</var> and ends at next occurrence of <var>start</var>. Only the first <var>start</var> is included to block. + + <br><dt><code>:/</code><var>stop</var><code>/</code><dd>Blocks start at the beginning of input stream or after the end of previous block. Block ends at first occurrence of <var>stop</var>. +Only the last <var>stop</var> is included to blocks. +</dl> + + <p>It is possible to use c-like byte values in <var>N</var>, <var>M</var>, <var>start</var> and <var>stop</var>. +Values in <var>start</var> and <var>stop</var> must be escaped with <code>\</code>, <code>\</code> can be escaped as <code>\\</code>. + + <p>Byte values can be expressed in decimal, octal or hexadecimal e.g. in <var>start</var> and <var>stop</var>: + + <dl> +<dt><code>\123, \32 or \0</code><dd>Decimal values + + <br><dt><code>\012, \08 or \0278</code><dd>Octal values + + <br><dt><code>\x0a, \x67 or \xff</code><dd>Hexadecimal values +</dl> + + <p>Also escape code <code>\y</code> can be used. Decimal values of <code>\y</code>'s: + + <dl> +<dt><code>\a</code><dd>7 + + <br><dt><code>\b</code><dd>8 + + <br><dt><code>\t</code><dd>9 + + <br><dt><code>\n</code><dd>10 + + <br><dt><code>\v</code><dd>11 + + <br><dt><code>\f</code><dd>12 + + <br><dt><code>\r</code><dd>13 + + <br><dt><code>\;</code><dd>59<br>Semicolon must be escaped, because it is a command delimitter. +</dl> + + <p>Values of <var>N</var> and <var>M</var> can be given in decimal, octal and hexadecimal: + + <dl> +<dt><code>123, 32 or 112232</code><dd>Decimal values + + <br><dt><code>0128, 08123 or 0</code><dd>Octal values + + <br><dt><code>x456a, x167 or xffde</code><dd>Hexadecimal values +</dl> + +<div class="node"> +<p><hr> +<a name="Commands"></a>Next: <a rel="next" accesskey="n" href="#Limits">Limits</a>, +Previous: <a rel="previous" accesskey="p" href="#Block">Block</a>, +Up: <a rel="up" accesskey="u" href="#Invoking-bbe">Invoking bbe</a> +<br> +</div> + +<h3 class="section">3.3 <span class="command">bbe</span> commands</h3> + +<p><a name="index-commands-8"></a> +Commands in <span class="command">bbe</span> can be divided in two groups: Block related commands +and byte related commands. Block related commands operate at block level e.g. remove a block. +Byte related commands work allways inside a block and they don't have effect beyond the block boundaries. + + <p>Same escape codes for byte values in <var>string</var>s can be used as in <var>start</var> and <var>stop</var> of block definition. + +<h4 class="subheading">Block commands are:</h4> + + <dl> +<dt><code>I </code><var>string</var><dd>Write the <var>string</var> to output stream before the block. + + <br><dt><code>D [</code><var>N</var><code>]</code><dd>Delete the <var>N</var>'th block. If <var>N</var> is not defined all blocks are deleted from output stream. +<strong>Note</strong>: First block is number one. + + <br><dt><code>A </code><var>string</var><dd>Write the <var>string</var> to output stream after the block. + + <br><dt><code>J </code><var>N</var><dd>Commands appearing after this command have no effect until <var>N</var> blocks are found. Means "Jump first <var>N</var> blocks". +<strong>Note</strong>: Commands that are defined before this command have effect on every block. + + <br><dt><code>L </code><var>N</var><dd>Commands appearing after this command have no effect after <var>N</var> blocks are found. Means "Leave blocks after <var>N</var>'th block". +<strong>Note</strong>: Commands that are defined before this command have effect on every block. + + <br><dt><code>N</code><dd>Before block contents the file name where the current block starts is printed with colon. + + <br><dt><code>F </code><var>f</var><dd>Before block contents the current stream offset and colon is printed in format specified by <var>f</var>. +Stream offset starts at zero. <var>f</var> can have one of following values: + <dl> +<dt><var>H</var><dd>Hexadecimal. + + <br><dt><var>D</var><dd>Decimal. + + <br><dt><var>O</var><dd>Octal. +</dl> + + <br><dt><code>B </code><var>f</var><dd>Before block contents the current block number and colon is printed in format specified by <var>f</var>. +Block numbering starts at one. <var>f</var> can have one of the sames codes as <code>F</code>-command +</dl> + +<h4 class="subheading">Byte commands are:</h4> + +<p><strong>Note</strong>: The <var>n</var> in byte commands is offset from the beginning of current block, first byte is number zero. + + <dl> +<dt><code>c </code><var>from</var> <var>to</var><dd>Converts bytes from <var>from</var> to <var>to</var>. Currently supported formats are: + <dl> +<dt><code>ASC</code><dd>Ascii + + <br><dt><code>BCD</code><dd>Binary Coded Decimal +</dl> + <strong>Note</strong>: Bytes, that cannot be converted are passed through as they are. e.g. in ASC -> BCD conversion, ASCII characters not +in range <code>'0'</code> – <code>'9'</code> are not converted. + + <br><dt><code>d </code><var>n</var> <var>m</var><dd>Delete <var>m</var> bytes starting from the offset <var>n</var>. + + <br><dt><code>i </code><var>n</var> <var>string</var><dd>Insert <var>string</var> after byte number <var>n</var>. + + <br><dt><code>j </code><var>n</var><dd>Commands appearing after <code>j</code>-command have no effect concerning bytes 0-<var>n</var> of the block. + + <br><dt><code>l </code><var>n</var><dd>Commands appearing after <code>l</code>-command have no effect concerning bytes starting from the byte number <var>n</var> of the block. + + <br><dt><code>p </code><var>format</var><dd>Contents of block is printed in formats specified by <var>format</var>. <var>format</var> can contain following format codes: + <dl> +<dt><var>H</var><dd>Hexadecimal. + + <br><dt><var>D</var><dd>Decimal. + + <br><dt><var>O</var><dd>Octal. + + <br><dt><var>A</var><dd>Ascii, nonprintable characters are printed as space. + + <br><dt><var>B</var><dd>Binary. +</dl> + + <p><var>format</var> can contain several codes, values are then separated by hyphen. + + <br><dt><code>r </code><var>n</var> <var>string</var><dd>Replace bytes with <var>string</var> starting at the byte number <var>n</var> of the block. + + <br><dt><code>s/</code><var>search</var><code>/</code><var>replace</var><code>/</code><dd>All occurences of <var>search</var> are replaced by <var>replace</var>. <var>replace</var> can be empty. Separator <code>/</code> can be replaced by any +character not present in <var>search</var> or <var>replace</var>. + + <br><dt><code>w </code><span class="file">file</span><dd>Contents of blocks are written to file <span class="file">file</span>. <strong>Note</strong>: Data inserted by commands <code>A</code> and <code>I</code> +are written to file <span class="file">file</span> and <code>j</code> and <code>l</code> commands have no effect on <code>w</code>-commands. Zero size files are not preserved.<br> +Filename can contain format string <code>%B</code> or <code>%nB</code>, these format strings are replace by current block number (starting from one), causing every block to have it's own file. +In <code>%nB</code>, the <code>n</code> is field width in range 0-99. If <code>n</code> has a leading zero, then the block numbers will be left padded with zeroes. + + <br><dt><code>y/</code><var>source</var><code>/</code><var>dest</var><code>/</code><dd>Translate bytes in <var>source</var> to the corresponding bytes in <var>dest</var>. <var>source</var> and <var>dest</var> must have equal length. +Separator <code>/</code> can be replaced by any character not present in <var>source</var> or <var>dest</var>. + + <br><dt><code>& c</code><dd>Performs binary and with <var>c</var> on block contents. + + <br><dt><code>| c</code><dd>Performs binary or with <var>c</var> on block contents. + + <br><dt><code>^ c</code><dd>Performs exclusive or with <var>c</var> on block contents. + + <br><dt><code>~</code><dd>Performs binary negation on block contents. +</dl> + +<div class="node"> +<p><hr> +<a name="Limits"></a>Previous: <a rel="previous" accesskey="p" href="#Commands">Commands</a>, +Up: <a rel="up" accesskey="u" href="#Invoking-bbe">Invoking bbe</a> +<br> +</div> + +<h3 class="section">3.4 Limitations</h3> + +<p><a name="index-big-files-9"></a><a name="index-limits-10"></a> +At least in GNU/Linux <span class="command">bbe</span> should be able to handle big files (> 4 GB), other +systems are not tested. + + <p>There are however, some limitations in block and command definitions: + + <dl> +<dt><em>Strings in block definition</em><dt><em>Search string in </em><code>s</code><em> command</em><dd>are limited to <em>16384</em> bytes. +<br> + + <br><dt><em>Total data to be inserted by </em><code>s</code><em> and </em><code>i</code><em> commands</em><dd>is <em>245760</em> bytes, that means the total data in command definitions, of course it can be inserted several times. +<br> +</dl> + +<div class="node"> +<p><hr> +<a name="bbe-programs"></a>Next: <a rel="next" accesskey="n" href="#Problems">Problems</a>, +Previous: <a rel="previous" accesskey="p" href="#Invoking-bbe">Invoking bbe</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> +<br> +</div> + +<h2 class="chapter">4 How <span class="command">bbe</span> works</h2> + +<p><span class="command">bbe</span> scans the input stream just once, so the last block may differ from the block definition, because <span class="command">bbe</span> doesn't +'peek' the end of the input stream. Last block may be shorter than defined, e.g. if block is defined as <span class="samp">/string/:128</span> +and if the end of input stream is found before 128'th byte of the last block is reached, the last block remains shorter. + +<h4 class="subheading">Basic execution cycle:</h4> + + <ol type=1 start=1> +<li>Start of the block is searched. If found, data before block is written to output stream (unless <span class="option">-s</span> is defined) and +step 2 is executed. + + <li>Block commands affecting the start of the block (<code>I</code>, <code>D</code>, <code>J</code>, <code>N</code>, <code>F</code> and <code>B</code>) are executed. + + <li>The block is scanned byte by byte and all byte commands (lower case letters) are executed. +<strong>Note</strong>: Commands are executed on results of previous commands, if e.g. the first byte of the block is deleted, +the following commands don't 'see' the removed byte. + + <li>When end of the block is reached the end of the block commands (<code>A</code>) are executed. + + <li>Next block is searched, data between the blocks, if not suppressed with <span class="option">-s</span>, is written to output stream. + </ol> + +<h4 class="subheading">Few examples:</h4> + + <dl> +<dt><span class="samp">echo "The quick brown fox jumps over a lazy dog" | bbe -b "/The/:21" -e "j 4" -e "s/ /X/"</span><dd>Output is + <pre class="example"> The quickXbrownXfoxXjumps over a lazy dog + </pre> + <p>The only block in this is + <pre class="example"> The quick brown fox j + </pre> + <p>All spaces in the block are converted to X's, before conversion first 4 bytes are skipped.<br> + + <br><dt><span class="samp">echo "The quick brown fox jumps over a lazy dog" | bbe -b ":/ /" -e "J 1" -e "A \x0a"</span><dd>Output is: + <pre class="example"> The quick + brown + fox + jumps + over + a + lazy + dog + + </pre> + <p>All blocks end at space, a newline character is inserted after every block except the first block.<br> + + <br><dt><span class="samp">echo "The quick brown fox jumps over a lazy dog" | bbe -e "r 4 fast\x20" -e "s/f/c/"</span><dd>Output is: + <pre class="example"> The cast brown cox jumps over a lazy dog + </pre> + <p>Also the <code>f</code> in <code>fast</code> is converted to <code>c</code>.<br> + + <br><dt><span class="samp">echo "1234567890" | bbe -b ":1" -e "L 9" -e "A -"</span><dd>Output is + <pre class="example"> 1-2-3-4-5-6-7-8-9-0 + </pre> + <p>Hyphen is inserted after every 1 byte long block,but not after 9'th block.<br> + + <br><dt><span class="samp">bbe -s -b "/First line/:/Last line/" /tmp/text</span><dd>Print lines between sentences <span class="samp">First line</span> and <span class="samp">Last line</span>.<br> + + <br><dt><span class="samp">bbe -s -b "%<a %:%</a>%" -e "s/\x0a/ /" -e "A \n" ./index.html</span><dd>Extract all links from <span class="file">./index.html</span>. To get one link per line, +all newlines are converted to spaces and newline is added after every link.<br> + + <br><dt><span class="samp">bbe -b "/\x5f\x28\x02/:10" -s -e "F d" -e "p h" -e "A \n" ./bindata</span><dd>10 bytes long sequences starting with values <code>x5f</code> <code>x28</code> and <code>x02</code> are printed as hex values. +Also the file offset is printed before each sequence and new line is added after every sequence. +Example output: + <pre class="example"> 52688:x5f x28 x02 x32 x36 x5f x81 x64 x01 x93 + 68898:x5f x28 x02 x39 x46 x5f x81 x64 x41 x05 + 69194:x5f x28 x02 x42 x36 x5f x81 x64 x41 x05 + </pre> + <p><br> + + <br><dt><span class="samp">bbe -b "/Linux/:5" -s -e "N;D;A \x0a" /bin/* | uniq</span><dd>Print the files names of those programs in /bin directory which contains word <span class="samp">Linux</span>. +Example output: + <pre class="example"> /bin/loadkeys: + /bin/mkbimage: + /bin/ps: + /bin/uname: + </pre> + <p><br> + + <br><dt><span class="samp">bbe -b "/\x5f\x81\x18\x06/:10" -s -e "B d;d 0 4;c BCD ASC;A \n" ./bindata</span><dd>Print BCD numbers and their block numbers in ascii format. Numbers start with sequence <code>x5f</code> <code>x81</code> <code>x18</code> <code>x06</code>. +The start sequence is not printed.<br> + + <br><dt><span class="samp">bbe -b "/\x5f/:2" -e "j 1;& \xf0" -o newdata bindata</span><dd>The least significant nybble of bytes after <code>x5f</code> is cleared.<br> + + <br><dt><span class="samp">bbe -b "/\xff\xd8\xff/:/\xff\xd9/" -s -e "w pic%02B.jpg" -o /dev/null manual.pdf</span><dd>Extract jpg-images from pdf-file to separate jpg-files (assuming that the jpg start/stop sequences +does not appear in other context than jpg-images). +Files will be named as <span class="file">pic01.jpg</span>, <span class="file">pic02.jpg</span>, <span class="file">pic03.jpg</span>,... +</dl> + +<div class="node"> +<p><hr> +<a name="Problems"></a>Previous: <a rel="previous" accesskey="p" href="#bbe-programs">bbe programs</a>, +Up: <a rel="up" accesskey="u" href="#Top">Top</a> +<br> +</div> + +<h2 class="chapter">5 Reporting Bugs</h2> + +<p><a name="index-bugs-11"></a><a name="index-problems-12"></a> +If you find a bug in <span class="command">bbe</span>, please send electronic mail to +<a href="mailto:tjsa@iki.fi">tjsa@iki.fi</a>. Include the version number, which you can find by +running <span class="samp">bbe --version</span><!-- /@w -->. Also include in your message the +output that the program produced and the output you expected. + + <p>If you have other questions, comments or suggestions about +<span class="command">bbe</span>, contact the author via electronic mail to +<a href="mailto:tjsa@iki.fi">tjsa@iki.fi</a>. The author will try to help you out, although he +may not have time to fix your problems. + + <div class="contents"> +<h2>Table of Contents</h2> +<ul> +<li><a name="toc_Top" href="#Top">bbe</a> +<li><a name="toc_Overview" href="#Overview">1 Preliminary information</a> +<li><a name="toc_Samples" href="#Samples">2 Samples using <span class="command">bbe</span></a> +<li><a name="toc_Invoking-bbe" href="#Invoking-bbe">3 How to run <span class="command">bbe</span></a> +<ul> +<li><a href="#Invocation">3.1 Program invocation</a> +<li><a href="#Block">3.2 Block definition</a> +<li><a href="#Commands">3.3 <span class="command">bbe</span> commands</a> +<li><a href="#Limits">3.4 Limitations</a> +</li></ul> +<li><a name="toc_bbe-programs" href="#bbe-programs">4 How <span class="command">bbe</span> works</a> +<li><a name="toc_Problems" href="#Problems">5 Reporting Bugs</a> +</li></ul> +</div> + +</body></html> + |

