typerules.4f
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:8k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. ." $Id: typerules.4f,v 1.4 2007/08/15 20:14:12 faxguy Exp $
  2. ."
  3. ." HylaFAX Facsimile Software
  4. ."
  5. ." Copyright (c) 1993-1996 Sam Leffler
  6. ." Copyright (c) 1993-1996 Silicon Graphics, Inc.
  7. ." HylaFAX is a trademark of Silicon Graphics
  8. ." 
  9. ." Permission to use, copy, modify, distribute, and sell this software and 
  10. ." its documentation for any purpose is hereby granted without fee, provided
  11. ." that (i) the above copyright notices and this permission notice appear in
  12. ." all copies of the software and related documentation, and (ii) the names of
  13. ." Sam Leffler and Silicon Graphics may not be used in any advertising or
  14. ." publicity relating to the software without the specific, prior written
  15. ." permission of Sam Leffler and Silicon Graphics.
  16. ." 
  17. ." THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  18. ." EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  19. ." WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  20. ." 
  21. ." IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  22. ." ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  23. ." OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  24. ." WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  25. ." LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  26. ." OF THIS SOFTWARE.
  27. ."
  28. .if n .po 0
  29. .ds Fx fIHylas-1FAXs+1fP
  30. .ds Ps Ps-2OSTs+2Ss-2CRIPTs+2
  31. .TH TYPERULES ${MANNUM4_5} "May 12, 1993"
  32. .SH NAME
  33. typerules - *(Fx file type identification and conversion rules
  34. .SH DESCRIPTION
  35. Only three types of files are accepted by the *(Fx
  36. server for transmission as facsimile:
  37. *(Ps(rg files, PDF files, and 
  38. .SM TIFF
  39. Class F (bilevel Group 3-encoded) files.
  40. All other types of files must be converted to one
  41. of these three formats.
  42. The facsimile submission program
  43. applies a set of rules against the contents
  44. of each input file to identify the file's
  45. type and to figure out how to convert the file to a format that is
  46. suitable for transmission.
  47. These rules are stored in the file
  48. .BR ${LIBDATA}/typerules ,
  49. an
  50. .SM ASCII
  51. file that is patterned after the
  52. .B /etc/magic
  53. file used by the System V
  54. .IR file (1)
  55. program.  However, there are significant differences, noted below.
  56. .PP
  57. Type rules work by matching data patterns in a file; typically
  58. patterns that appear in the first few bytes of the file (i.e.
  59. magic numbers).
  60. There are two types of rules,
  61. .I "primary rules"
  62. and
  63. .IR "secondary rules" .
  64. Secondary rules specify additional rules to apply
  65. .I after
  66. a primary rule has been matched.
  67. When secondary rules are used, rule scanning
  68. continues up to the next primary type rule in the file.
  69. .PP
  70. Each rule consists of a set of whitespace-separated fields:
  71. .nf
  72. .sp .5
  73. .ti +.5i
  74. .ta w'fIoffsetfP    'u +w'fIdatatypefP    'u +w'fImatchfP    'u +w'fIcommandfP  'u
  75. fIoffsetfP fIdatatypefP fImatchfP fIresultfP fIcommandfP
  76. .sp .5
  77. .fi
  78. If an line is terminated wth a backslash character, the entry
  79. is continued on the next line with any leading whitespace characters
  80. compressed to a single space.
  81. Comments are marked with the ``#'' character; everything from to the
  82. end of the line is discarded.
  83. Secondary rules have a ``>'' character in the first column of the line;
  84. primary rules do not.
  85. .PP
  86. The fields in each rule entry are:
  87. .TP 10
  88. .B offset
  89. The byte offset in the file at which data should be extracted
  90. and compared to a matching string or value.
  91. .TP 10
  92. .B datatype
  93. The type of data value to extract at the specified offset for
  94. comparison purposes; one of:
  95. ``byte''
  96. (8 bit unsigned number),
  97. ``short''
  98. (16 bit unsigned number),
  99. ``long''
  100. (32 bit unsigned number),
  101. ``string''
  102. (an array of bytes), 
  103. ``istring''
  104. (a case-insensitive array of bytes), or
  105. ``ascii''
  106. (an array of s-1ASCIIs+1-only bytes).
  107. .TP 10
  108. .B match
  109. The value and operation to use in matching; the value used is
  110. based on the datatype field.
  111. If value is ``x'', then
  112. it is interpreted to mean 
  113. .IR "match anything" ;
  114. otherwise the
  115. following operators are supported (where
  116. .I data
  117. is the value extracted from the file and
  118. .I value
  119. is specified in the match field) except for types ``string'', ``istring'', and ``ascii'':
  120. .nf
  121. .sp .5
  122. .RS
  123. .ta w'>=    'u +w'(data & value) == value    'u +w'>=    'u
  124. = data == value != data != value
  125. > data > value < data < value
  126. <= data <= value >= data >= value
  127. & (data & value) == value ! (data & value) != value
  128. ^ (data ^ value) != 0
  129. .RE
  130. .sp .5
  131. If no operation is specified then ``='' is used.
  132. .PP
  133. For ``string'', ``istring'', and ``ascii'' no operator is allowed; the implicit
  134. operation is always ``=''.  In these cases, the field is terminated by
  135. a tab or end of line, not by ``#'' or `` ''.  Characters in the field have
  136. their literal value; there are no C-style character escapes.
  137. .fi
  138. .TP 10
  139. .B result
  140. One of ``ps'', ``tiff'', or ``error'' (case insensitive).
  141. The first two results specify whether the
  142. rule generates a *(Ps file or a
  143. .SM TIFF/F
  144. file (Group 3-encoded bilevel data), respectively.
  145. The ``error'' result indicates that a
  146. file is unsuitable for transmission and, if supplied for transmission,
  147. should cause the job to be aborted with the
  148. .I command
  149. field used in an error message.
  150. .TP 10
  151. .B command
  152. A command description that is expanded and
  153. passed to the shell to convert the input file
  154. to the result format (suitable for sending as facsimile).
  155. Before the string is passed to the shell, it is scanned
  156. and the following ``%'' escape codes are substituted for:
  157. .nf
  158. .sp .5
  159. .RS
  160. .ta w'%<x>    'u
  161. %i input file name
  162. %o output file name
  163. %r output horizontal resolution in pixels/mm
  164. %R output horizontal resolution in pixels/inch
  165. %v output vertical resolution in lines/mm
  166. %V output vertical resolution in lines/inch
  167. %f data format, ``1'' for 1-d encoding or ``2'' for 2-d encoding
  168. %w page width in pixels
  169. %W page width in mm
  170. %l page length in pixels
  171. %L page length in mm
  172. %s page size by name
  173. %F the directory where *(Fx filter programs reside
  174. %<x> the <x> character (e.g. ``%%'' results in ``%''
  175. .RE
  176. .sp .5
  177. .fi
  178. See below for example uses of these codes.
  179. .SH EXAMPLES
  180. The following rules are used to match the formats
  181. that are handled directly by the server:
  182. .nf
  183. .sp .5
  184. .ta w'offset    'u +w'datatype    'u +w'#Inventor V    'u +w'result    'u +w'command        'u
  185. #offset datatype match result command
  186. 0 string %! ps # *(Ps
  187. 0 string %PDF ps # *(Ps by Ghostscript
  188. 0 short 0x4d4d tiff # big-endian s-1TIFFs+1
  189. 0 short 0x4949 tiff # little-endian s-1TIFFs+1
  190. .fi
  191. .PP
  192. These rules are used to process the
  193. .SM ASCII
  194. version of
  195. .SM IRIS
  196. Inventor database files while blocking the transmission
  197. of the binary format variant:
  198. .nf
  199. .sp .5
  200. .ta w'offset    'u +w'datatype    'u +w'#Inventor V    'u +w'result    'u +w'command        'u
  201. #offset datatype match result command
  202. 0 string #Inventor V error IRIS Inventor file 
  203. >15 string binary error binary IRIS Inventor file
  204. >15 string ascii ps %F/textfmt -fCourier-Bold -p11bpe
  205.     -U -q >%o <%i
  206. .fi
  207. .PP
  208. This rule is typically the last entry in the file and is
  209. used to convert all unmatched s-1ASCIIs+1 data files to *(Ps:
  210. .nf
  211. .sp .5
  212. .ta w'offset    'u +w'datatype    'u +w'#Inventor V    'u +w'result    'u +w'command        'u
  213. #offset datatype match result command
  214. 0 ascii x ps %F/textfmt -fCourier-Bold -p11bp -U -q >%o <%i
  215. .fi
  216. .SH NOTES
  217. It is much better to convert data that is to be
  218. transmitted to *(Ps because this data format
  219. permits the facsimile server to do the final imaging according to
  220. the optimal transfer parameters (resolution, binary encoding, etc.).
  221. .PP
  222. It might be better to allow secondary rules to augment a primary
  223. rule rather than just replace them.
  224. This would allow, for example, command line options to be selected
  225. based on file type.
  226. .SH "SEE ALSO"
  227. .IR sendfax (1),
  228. .IR hylafax-client (1)