strfile.8 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. .\" $NetBSD: strfile.8,v 1.12 2004/09/09 22:03:21 wiz Exp $
  2. .\"
  3. .\" Copyright (c) 1989, 1991, 1993
  4. .\" The Regents of the University of California. All rights reserved.
  5. .\"
  6. .\" This code is derived from software contributed to Berkeley by
  7. .\" Ken Arnold.
  8. .\"
  9. .\" Redistribution and use in source and binary forms, with or without
  10. .\" modification, are permitted provided that the following conditions
  11. .\" are met:
  12. .\" 1. Redistributions of source code must retain the above copyright
  13. .\" notice, this list of conditions and the following disclaimer.
  14. .\" 2. Redistributions in binary form must reproduce the above copyright
  15. .\" notice, this list of conditions and the following disclaimer in the
  16. .\" documentation and/or other materials provided with the distribution.
  17. .\" 3. Neither the name of the University nor the names of its contributors
  18. .\" may be used to endorse or promote products derived from this software
  19. .\" without specific prior written permission.
  20. .\"
  21. .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  22. .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23. .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24. .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  25. .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  26. .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  27. .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  28. .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  29. .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  30. .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  31. .\" SUCH DAMAGE.
  32. .\"
  33. .\" @(#)strfile.8 8.1 (Berkeley) 6/9/93
  34. .\"
  35. .Dd June 9, 1993
  36. .Dt STRFILE 8
  37. .Os
  38. .Sh NAME
  39. .Nm strfile ,
  40. .Nm unstr
  41. .Nd "create a random access file for storing strings"
  42. .Sh SYNOPSIS
  43. .Nm strfile
  44. .Op Fl iorsx
  45. .Op Fl c Ar char
  46. .Ar source_file
  47. .Op Ar output_file
  48. .Nm unstr
  49. .Ar source_file
  50. .Sh DESCRIPTION
  51. .Nm
  52. reads a file containing groups of lines separated by a line containing
  53. a single percent
  54. .Ql \&%
  55. sign and creates a data file which contains
  56. a header structure and a table of file offsets for each group of lines.
  57. This allows random access of the strings.
  58. .Pp
  59. The output file, if not specified on the command line, is named
  60. .Ar source_file Ns Sy .out .
  61. .Pp
  62. The options are as follows:
  63. .Bl -tag -width "-c char"
  64. .It Fl c Ar char
  65. Change the delimiting character from the percent sign to
  66. .Ar char .
  67. .It Fl i
  68. Ignore case when ordering the strings.
  69. .It Fl o
  70. Order the strings in alphabetical order.
  71. The offset table will be sorted in the alphabetical order of the
  72. groups of lines referenced.
  73. Any initial non-alphanumeric characters are ignored.
  74. This option causes the
  75. .Dv STR_ORDERED
  76. bit in the header
  77. .Ar str_flags
  78. field to be set.
  79. .It Fl r
  80. Randomize access to the strings.
  81. Entries in the offset table will be randomly ordered.
  82. This option causes the
  83. .Dv STR_RANDOM
  84. bit in the header
  85. .Ar str_flags
  86. field to be set.
  87. .It Fl s
  88. Run silently; don't give a summary message when finished.
  89. .It Fl x
  90. Note that each alphabetic character in the groups of lines is rotated
  91. 13 positions in a simple caesar cipher.
  92. This option causes the
  93. .Dv STR_ROTATED
  94. bit in the header
  95. .Ar str_flags
  96. field to be set.
  97. .El
  98. .Pp
  99. The format of the header is:
  100. .Bd -literal -offset indent
  101. #define VERSION 1
  102. unsigned long str_version; /* version number */
  103. unsigned long str_numstr; /* # of strings in the file */
  104. unsigned long str_longlen; /* length of longest string */
  105. unsigned long str_shortlen; /* length of shortest string */
  106. #define STR_RANDOM 0x1 /* randomized pointers */
  107. #define STR_ORDERED 0x2 /* ordered pointers */
  108. #define STR_ROTATED 0x4 /* rot-13'd text */
  109. unsigned long str_flags; /* bit field for flags */
  110. char str_delim; /* delimiting character */
  111. .Ed
  112. .Pp
  113. All fields are written in big-endian byte order.
  114. .Pp
  115. The purpose of
  116. .Nm unstr
  117. is to undo the work of
  118. .Nm strfile .
  119. It prints out the strings contained in the file
  120. .Ar source_file
  121. in the order that they are listed in the header file
  122. .Ar source_file Ns Sy .dat
  123. to standard output.
  124. It is possible to create sorted versions of input files by using
  125. .Fl o
  126. when
  127. .Nm strfile
  128. is run and then using
  129. .Nm unstr
  130. to dump them out in the table order.
  131. .Sh FILES
  132. .Bl -tag -width strfile.out -compact
  133. .It Pa strfile.out
  134. default output file.
  135. .El
  136. .Sh SEE ALSO
  137. .Xr byteorder 3 ,
  138. .Xr fortune 6
  139. .Sh HISTORY
  140. The
  141. .Nm strfile
  142. utility first appeared in
  143. .Bx 4.4 .