10568f49bSmrg<?xml version="1.0" encoding="UTF-8" ?>
20568f49bSmrg<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd">
30568f49bSmrg
49e7bcd65Smrg<appendix id='Resource_File_Format'>
59e7bcd65Smrg<title>Resource File Format</title>
69e7bcd65Smrg<para>
79e7bcd65SmrgA resource file contains text representing the default resource values for an
89e7bcd65Smrgapplication or set of applications.
99e7bcd65Smrg</para>
109e7bcd65Smrg
119e7bcd65Smrg<para>
129e7bcd65SmrgThe format of resource files is defined by
130568f49bSmrg<emphasis remap='I'>Xlib &mdash; C Language X Interface.</emphasis> and is reproduced here
149e7bcd65Smrgfor convenience only.
159e7bcd65Smrg</para>
169e7bcd65Smrg
179e7bcd65Smrg<para>The format of a resource specification is</para>
189e7bcd65Smrg<informaltable frame='none'>
199e7bcd65Smrg  <?dbfo keep-together="always" ?>
209e7bcd65Smrg  <tgroup cols='2' align='left' colsep='0' rowsep='0'>
219e7bcd65Smrg  <colspec colwidth='0.3*' colname='c1'/>
229e7bcd65Smrg  <colspec colwidth='1.0*' colname='c2'/>
239e7bcd65Smrg  <tbody>
249e7bcd65Smrg    <row>
259e7bcd65Smrg      <entry>ResourceLine</entry>
269e7bcd65Smrg      <entry>= Comment | IncludeFile | ResourceSpec | &lt;empty line&gt;</entry>
279e7bcd65Smrg    </row>
289e7bcd65Smrg    <row>
299e7bcd65Smrg      <entry>Comment</entry>
300568f49bSmrg      <entry>=&ldquo;!&rdquo; {&lt;any character except null or newline&gt;}</entry>
319e7bcd65Smrg    </row>
329e7bcd65Smrg    <row>
339e7bcd65Smrg      <entry>IncludeFile</entry>
340568f49bSmrg      <entry>= &ldquo;#&rdquo; WhiteSpace &ldquo;include&rdquo; WhiteSpace FileName WhiteSpace</entry>
359e7bcd65Smrg    </row>
369e7bcd65Smrg    <row>
379e7bcd65Smrg      <entry>FileName</entry>
389e7bcd65Smrg      <entry>= &lt;valid filename for operating system&gt;</entry>
399e7bcd65Smrg    </row>
409e7bcd65Smrg    <row>
419e7bcd65Smrg      <entry>ResourceSpec</entry>
420568f49bSmrg      <entry>= WhiteSpace ResourceName WhiteSpace &ldquo;:&rdquo; WhiteSpace Value</entry>
439e7bcd65Smrg    </row>
449e7bcd65Smrg    <row>
459e7bcd65Smrg      <entry>ResourceName</entry>
469e7bcd65Smrg      <entry>= [Binding] {Component Binding} ComponentName</entry>
479e7bcd65Smrg    </row>
489e7bcd65Smrg    <row>
499e7bcd65Smrg      <entry>Binding</entry>
500568f49bSmrg      <entry>=&ldquo;.&rdquo; | &ldquo;*&rdquo;</entry>
519e7bcd65Smrg    </row>
529e7bcd65Smrg    <row>
539e7bcd65Smrg      <entry>WhiteSpace</entry>
549e7bcd65Smrg      <entry>= {&lt;space> | &lt;horizontal tab&gt;}</entry>
559e7bcd65Smrg    </row>
569e7bcd65Smrg    <row>
579e7bcd65Smrg      <entry>Component</entry>
580568f49bSmrg      <entry>= &ldquo;?&rdquo; | ComponentName</entry>
599e7bcd65Smrg    </row>
609e7bcd65Smrg    <row>
619e7bcd65Smrg      <entry>ComponentName</entry>
629e7bcd65Smrg      <entry>= NameChar {NameChar}</entry>
639e7bcd65Smrg    </row>
649e7bcd65Smrg    <row>
659e7bcd65Smrg      <entry>NameChar</entry>
660568f49bSmrg      <entry>= &ldquo;a&rdquo;&ndash;&ldquo;z&rdquo; | &ldquo;A&rdquo;&ndash;&ldquo;Z&rdquo; | &ldquo;0&rdquo;&ndash;&ldquo;9&rdquo; | &ldquo;_&rdquo; | &ldquo;-&rdquo;</entry>
679e7bcd65Smrg    </row>
689e7bcd65Smrg    <row>
699e7bcd65Smrg      <entry>Value</entry>
709e7bcd65Smrg      <entry>={&lt;any character except null or unescaped newline&gt;}</entry>
719e7bcd65Smrg    </row>
729e7bcd65Smrg  </tbody>
739e7bcd65Smrg  </tgroup>
749e7bcd65Smrg</informaltable>
759e7bcd65Smrg
769e7bcd65Smrg<para>
779e7bcd65SmrgElements separated by vertical bar (|) are alternatives.
789e7bcd65SmrgCurly braces ({...}) indicate zero or more repetitions
799e7bcd65Smrgof the enclosed elements.
809e7bcd65SmrgSquare brackets ([...]) indicate that the enclosed element is optional.
810568f49bSmrgQuotes (&ldquo;...&rdquo;) are used around literal characters.
829e7bcd65Smrg</para>
839e7bcd65Smrg
849e7bcd65Smrg<para>
859e7bcd65SmrgIf the last character on a line is a backslash (\),
869e7bcd65Smrgthat line is assumed to continue on the next line.
879e7bcd65Smrg</para>
889e7bcd65Smrg
899e7bcd65Smrg<para>
909e7bcd65SmrgTo allow a Value to begin with whitespace,
910568f49bSmrgthe two-character sequence &ldquo;\<emphasis remap='I'>space</emphasis>&rdquo; (backslash followed by space)
929e7bcd65Smrgis recognized and replaced by a space character,
930568f49bSmrgand the two-character sequence &ldquo;\<emphasis remap='I'>tab</emphasis>&rdquo;
949e7bcd65Smrg(backslash followed by horizontal tab)
959e7bcd65Smrgis recognized and replaced by a horizontal tab character.
969e7bcd65Smrg</para>
979e7bcd65Smrg<para>
989e7bcd65SmrgTo allow a Value to contain embedded newline characters,
990568f49bSmrgthe two-character sequence &ldquo;\n&rdquo; is recognized and replaced by a
1009e7bcd65Smrgnewline character.
1019e7bcd65SmrgTo allow a Value to be broken across multiple lines in a text file,
1020568f49bSmrgthe two-character sequence &ldquo;\<emphasis remap='I'>newline</emphasis>&rdquo;
1039e7bcd65Smrg(backslash followed by newline) is
1049e7bcd65Smrgrecognized and removed from the value.
1059e7bcd65Smrg</para>
1069e7bcd65Smrg<para>
1079e7bcd65SmrgTo allow a Value to contain arbitrary character codes,
1080568f49bSmrgthe four-character sequence &ldquo;\<emphasis remap='I'>nnn</emphasis>&rdquo;,
1090568f49bSmrgwhere each <emphasis remap='I'>n</emphasis> is a digit character in the range of &ldquo;0&rdquo;&ndash;&ldquo;7&rdquo;,
1109e7bcd65Smrgis recognized and replaced with a single byte that contains
1119e7bcd65Smrgthe octal value specified by the sequence.
1120568f49bSmrgFinally, the two-character sequence &ldquo;\\&rdquo; is recognized
1139e7bcd65Smrgand replaced with a single backslash.
1149e7bcd65Smrg</para>
1159e7bcd65Smrg</appendix>
116