|
|
1.1 ! root 1: .TH DBZ 1 "11 Feb 1992" ! 2: .BY "C News" ! 3: .SH NAME ! 4: dbz \- operate on dbz databases of text ! 5: .SH SYNOPSIS ! 6: .B dbz ! 7: [ ! 8: .BR \- { axmc } ! 9: ] [ ! 10: .B \-t ! 11: c ! 12: ] [ ! 13: .B \-l ! 14: length ! 15: ] [ ! 16: .BR \- { qiue } ! 17: ] [ ! 18: .B \-f ! 19: old ! 20: ] [ ! 21: .B \-p ! 22: parms ! 23: ] database file ... ! 24: .SH DESCRIPTION ! 25: .I Dbz ! 26: is a shell-level interface to the ! 27: .IR dbz (3z) ! 28: database routines for indexed access to a text file. ! 29: .PP ! 30: The ! 31: .I database ! 32: file must be a text file, ! 33: one line per database record, ! 34: with the key the first field on the line. ! 35: The ! 36: .B \-t ! 37: option sets the field-separator character; the default is tab. ! 38: Setting the separator character to NUL (with ! 39: .BR "\-t\ ''" ) ! 40: makes the whole line the key. ! 41: Lines must not exceed 1023 bytes in length including the newline; ! 42: this limit can be increased with the ! 43: .B \-l ! 44: option. ! 45: The limitations and restrictions of ! 46: .IR dbz (3z) ! 47: must also be observed; ! 48: in particular, it remains the user's responsibility to ensure that ! 49: no attempt is made to store two entries (whether identical or not) ! 50: with the same key. ! 51: .PP ! 52: In the absence of options, ! 53: .I dbz ! 54: creates a ! 55: .IR dbz (3z) ! 56: index for the database; ! 57: the index comprises files ! 58: .IB database .pag ! 59: and ! 60: .IB database .dir ! 61: in the same directory. ! 62: Any previous index is silently overwritten. ! 63: The ! 64: .BR \-a , ! 65: .BR \-x , ! 66: .BR \-m , ! 67: and ! 68: .B \-c ! 69: options specify other operations. ! 70: .PP ! 71: With ! 72: .BR \-a , ! 73: .I dbz ! 74: appends lines from the ! 75: .IR file (s) ! 76: (standard input if none) ! 77: to the database, updating both the ! 78: text file and the indexes. ! 79: .PP ! 80: With ! 81: .BR \-x , ! 82: .I dbz ! 83: reads keys from the ! 84: .IR file (s) ! 85: (standard input if none) ! 86: and prints (on standard output) the corresponding lines, if any, ! 87: from the database. ! 88: The input is in the form of database lines, although only the keys are ! 89: significant. ! 90: The ! 91: .B \-q ! 92: option makes ! 93: .B \-x ! 94: print the input lines whose keys are found instead of the database ! 95: lines; this is somewhat faster. ! 96: .PP ! 97: With ! 98: .BR \-m , ! 99: operation is the same as for ! 100: .B \-x ! 101: except that the keys which are \fInot\fR present in the database are printed. ! 102: .PP ! 103: With ! 104: .BR \-c , ! 105: .I dbz ! 106: checks the database for internal consistency. ! 107: The ! 108: .B \-q ! 109: option causes this check to be done more quickly but less thoroughly ! 110: (each key is looked up in the index, but no check is made to be sure ! 111: that the index entry points to the right place). ! 112: .PP ! 113: The ! 114: .B \-i ! 115: option suppresses the use of ! 116: .IR dbz (3z)'s ! 117: .I incore ! 118: facility. ! 119: This makes accesses slower, but keeps the files current ! 120: during updating ! 121: and reduces ! 122: startup/shutdown overhead. ! 123: .PP ! 124: Normally, ! 125: .I dbz ! 126: checks whether a key is already in the database before adding it. ! 127: The ! 128: .B \-u ! 129: option suppresses this check, speeding things up at the expense of safety. ! 130: .PP ! 131: A new index is normally created with default size, ! 132: case mapping, and tagging. ! 133: The default size is right for 90-100,000 records. ! 134: The default case mapping is right for RFC822 message-ids. ! 135: See ! 136: .IR dbz (3z) ! 137: for what tagging is about. ! 138: (Note, these defaults can be changed when ! 139: .IR dbz (3z) ! 140: is installed.) ! 141: .PP ! 142: If the ! 143: .B \-f ! 144: option is given, ! 145: size, case mapping, and tagging ! 146: are instead initialized based on the ! 147: database ! 148: .IR old . ! 149: This is mostly useful when ! 150: creating a new generation of an existing database. ! 151: (See the description of ! 152: .I dbzagain ! 153: in ! 154: .IR dbz (3z) ! 155: for details.) ! 156: .PP ! 157: If the ! 158: .B \-p ! 159: option is given, the ! 160: .I parms ! 161: string specifies the size, case mapping, and tagging. ! 162: If ! 163: .I parms ! 164: is a single decimal number, ! 165: that is taken as the expected number of records ! 166: in the index, with case mapping and tagging defaulted. ! 167: Alternatively, ! 168: .I parms ! 169: can be three fields\(ema decimal number, a case-mapping code character, and a ! 170: hexadecimal tag mask\(emseparated by white space. ! 171: The decimal number is, again, the expected number of records; ! 172: 0 means ``use the default''. ! 173: See ! 174: .IR dbz (3z) ! 175: for possible choices of case-mapping code, ! 176: but in particular, ! 177: .B 0 ! 178: means ``no case mapping''. ! 179: See ! 180: .IR dbz (3z) ! 181: for details on tag masks; ! 182: 0 means ``use the default''. ! 183: .PP ! 184: If the ! 185: .B \-e ! 186: option is given, the decimal number in ! 187: .B \-p ! 188: is taken to be the exact table size, not the expected number of records, ! 189: and invocation of ! 190: .I dbzsize ! 191: (see ! 192: .IR dbz (3z)) ! 193: to predict a good size for that number of records is suppressed. ! 194: .PP ! 195: The ! 196: .B \&.pag ! 197: file is normally about 6 bytes per record (based on the estimate given to ! 198: .B \-p ! 199: or the previous history of the ! 200: .B \-f ! 201: database). ! 202: The ! 203: .B \&.dir ! 204: file is tiny. ! 205: .SH SEE ALSO ! 206: dbz(3z) ! 207: .SH HISTORY ! 208: Written at U of Toronto by Henry Spencer, for the C News project. ! 209: See ! 210: .IR dbz (3z) ! 211: for the history of the underlying database routines. ! 212: .SH BUGS ! 213: There are a number of undocumented options with obscure effects, ! 214: meant for debugging and regression testing of ! 215: .IR dbz (3z). ! 216: .PP ! 217: Permissions for the index files probably ought to be taken from those ! 218: of the base file. ! 219: .PP ! 220: The line-length limit is a blemish, alleviated only slightly by ! 221: .BR \-l .
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.