Annotation of sbbs/sbbs2/smb/docs/smb.hst, revision 1.1.1.1

1.1       root        1: Synchronet Message Base Specification Modification History
                      2: ==========================================================
                      3: 
                      4: ******************************
                      5: 01/20/94 Initial Release v1.00
                      6: ******************************
                      7: 
                      8: Quite a few spelling errors in SMB.TXT corrected.
                      9: 
                     10: Estimated maximum number of messages (in Introduction of SMB.TXT) formula
                     11: corrected (1500 rounded to nearest 256 is 1536, not 2048).
                     12: 
                     13: Pages 32 and 38 (SENDEREXT and RECIPIENTEXT header field types) incorrectly
                     14: stated the index record contains CRC-32s, when in fact the index contains
                     15: CRC-16s of the agent names or extensions.
                     16: 
                     17: FORWARDTO header field types incorrectly stated they were for replies, rather
                     18: than forwarding instructions.
                     19: 
                     20: Trigger header field types incorrectly stated they were "attachments" rather
                     21: than triggers.
                     22: 
                     23: Bug fixed in smb_open() function in smblib.c: was allocating buffer via
                     24: setvbuf for wrong file pointer when opening header file. Caused loss of 
                     25: memory (2k) everytime smb_open() was called.
                     26: 
                     27: Bug fixed in smb_getmsghdr() function in smblib.c: msg->from_agent,to_agent,
                     28: and replyto_agent were not initialized properly.
                     29: 
                     30: Added from_ext, to_ext, and replyto_ext fields to msg struct. Initialized
                     31: with call to smb_getmsghdr() function. These are convenience pointers for
                     32: the to, from, and replyto agent extensions (user numbers, usually).
                     33: 
                     34: Fixed a nasty bug in the smb_freemsgdat() function, causing odd values in the
                     35: SDA file and cross-linked messages when fast allocation mode was not used for
                     36: new messages.
                     37: 
                     38: smb_putmsghdr() function replaced by smb_putmsg() and it calls smb_putmsghdr()
                     39: and smb_putmsgidx() - previously smb_putmsghdr() actually wrote the header
                     40: and the index. So you must change any occurances of smb_putmsghdr() to
                     41: smb_putmsg() if you intend to write to both the index and header records.
                     42: 
                     43: smb_open() now takes a "retry_time" parameter (number of seconds) to lock
                     44: and read the message base header and verify the "id" and "version". Added
                     45: new error codes: -1 indicates failure to lock message base header, -2 indicates
                     46: id mismatch, and -3 indicates incompatible message base version.
                     47: 
                     48: rewind() and clearerr() calls added to library functions to eliminate the
                     49: problem of "sticky" error flags when using fread() and fwrite(). Reordered
                     50: the use of chsize() to force seeking (with fseek()) before using the file
                     51: descriptor operation (chsize()) would would fail under some circumstances.
                     52: 
                     53: smb_getmsgidx() function now uses "fast" message number look-up algorythm.
                     54: 
                     55: Added smb_getlastidx() function to retrieve the last index in the message
                     56: base.
                     57: 
                     58: Allocation strategy for hfield and dfield elements of the smbmsg_t structure
                     59: were changed to require less memory. Rather than an array of pointers (pointer
                     60: to a pointer) of type hfield_t or dfield_t, they are simply an array (pointer)
                     61: of type hfield_t or dfield_t. The only change you need to make are any
                     62: references to "smbmsg_t.hfield[x]->etc" to "smbmsg_t.hfield[x].etc".
                     63: 
                     64: Added several new error codes to smb_getmsghdr(). -7 indicates missing one
                     65: of the three mandatory header fields (sender, recipient, or subject). -8
                     66: indicates that total_dfields element of smbhdr_t is incorrect (extends beyond
                     67: smbhdr_t.length). -9 indicates incompatible header version.
                     68: 
                     69: New error code to smb_addcrc(), -4 indicates error getting length of file.
                     70: 
                     71: smb_putmsghdr() returns -2 on failure write header, -3 on failure to write
                     72: dfield, -4 on failure to write hfield (fixed), -5 on failure to write hfield
                     73: (data), and -6 on failure to pad record with NULLs.
                     74: 
                     75: Bugs fixed in sample conversion source code and SMBUTIL: Overwriting first
                     76: two bytes of next record when using self-packing storage, SBBSFIDO would
                     77: crash on blank kludge lines, SEEN-BYs weren't converted properly by SBBSFIDO,
                     78: and more.
                     79: 
                     80: *** IMPORTANT ***
                     81: Index format changed, added message time field to idxrec_t for fast pointer
                     82: manipulation by (import) date/time stamp. This is SMB format v1.10 and is
                     83: not compatible with the v1.00 format. A conversion program (100TO110.EXE)
                     84: is included with source code for converted any existing message bases.
                     85: 
                     86: CHKSMB, a utility for checking message bases for corruption, included with
                     87: SMBLIB.
                     88: 
                     89: SMBUTIL and CHKSMB both accept wildcard arguments for processing multiple
                     90: message bases.
                     91: 
                     92: idxrec_t.to and idxrec_t.from may contain USER NUMBER instead of CRC of user
                     93: names. This implementation is currently specific to E-mail boxes on Synchronet
                     94: BBS. E-mail from non-local users are stored with a "from" field of 0.
                     95: 
                     96: **********************
                     97: 03/28/94 Release v1.10
                     98: **********************
                     99: 
                    100: Forgot to include this file (oops).
                    101: 
                    102: ***********************
                    103: 03/28/94 Release v1.10a
                    104: ***********************
                    105: 
                    106: Fixed problem with buffered fread() routine attempting to read into a locked
                    107: regions.
                    108: 
                    109: Added smb_stack() function for saving (pushing) currently open message base
                    110: and ability to pop it off later.
                    111: 
                    112: Added fix for keeping original sender information in smbmsg_t structure when
                    113: a message has been forwarded.
                    114: 
                    115: CHKSMB now correctly support multiple destination messages (without reporting
                    116: missallocated active data blocks) and now reports packable bytes available.
                    117: 
                    118: SMBUTIL can now conditionally compress a message base, only if so many K are
                    119: compressable.
                    120: 
                    121: Fixed problem with incorrect UTC value.
                    122: 
                    123: Added NET_WWIV network type.
                    124: 
                    125: **********************
                    126: 06/02/94 Release v1.11
                    127: **********************
                    128: 
                    129: Created Watcom compatible MAKEFILE for DOS, 32-bit DOS, and 32-bit OS/2
                    130: versions of SMBUTIL.
                    131: 
                    132: Enhanced macro definitions in SMBDEFS.H for MALLOC, FREE, and REALLOC to
                    133: support Watcom and other compilers other than Borland. Also added LMALLOC
                    134: and LFREE macros for large allocation (>64k) operations.
                    135: 
                    136: Fixed problem with multiple calls to setvbuf() when using Watcom C libraries.
                    137: Memory allocated by setvbuf() would never be released. To work around this
                    138: Watcom C bug, a static buffer, shd_buf[], is now used instead.
                    139: 
                    140: Fixed bug in smb_getmsghdr() that would cause it to return -6 when attempting
                    141: to allocate 0 length header fields.
                    142: 
                    143: Added LZH.C to SMBLIB for message data compression/decompression.
                    144: 
                    145: Removed the 16-bit CRC functions from SMBUTIL and put them in CRC16.C (now part
                    146: of SMBLIB) for easier integration into other applications.
                    147: 
                    148: Added Hyper Allocation storage method to specification: smbstatus_t.reserved
                    149: changed to smbstatus_t.attr and SMB_HYPERALLOC bit is set when Hyper Allocation
                    150: storage is used for a message base. This is the only change between v1.10 and 
                    151: v1.20 of the message base format. No other bits in smbstatus_t.attr are 
                    152: currently defined. See the specification for definition of the Hyper Allocation
                    153: storage method.
                    154: 
                    155: Changed SMB Storage and Retrieval Protocol chapters in the specification to
                    156: Pseudo-code examples.
                    157: 
                    158: Added SMBLIB Storage and Retrieval C example chapters to the specification.
                    159: 
                    160: Added field descriptions for message base header record fields and Status Info
                    161: (base header #1) record fields to the specification.
                    162: 
                    163: Changed SMBLIB smb_addmsghdr() 'fast' argument to 'storage' to specify the
                    164: storage method to use (either SMB_SELFPACK, SMB_FASTALLOC, or SMB_HYPERALLOC).
                    165: Previous usage (0 for self-pack, 1 for fast) still compatible.
                    166: 
                    167: Added smb_hallocdat() and smb_hallochdr() to SMBLIB functions for the Hyper
                    168: Allocation storage method.
                    169: 
                    170: Added SMB_STACK_XCHNG operation to smb_stack() function, to exchange the top
                    171: of the stack with the currently open message base.
                    172: 
                    173: **********************
                    174: 02/14/95 Release v1.20
                    175: **********************
                    176: 
                    177: smb_close() was modified in the following ways:
                    178:        Only attempts to close non-NULL file pointers
                    179:        If shd_fp is currently open, calls smb_unlocksmbhdr() before closing
                    180:                (just in case it was left locked by application)
                    181: 
                    182: smb_open() was modified in the following ways:
                    183:        Initializes all file pointers to NULL
                    184:        calls smb_close() if any of the files couldn't be opened
                    185: 
                    186: smb_locksmbhdr() was modified in the following ways:
                    187:        If lock fails, attempts to unlock the header before next lock
                    188:                attempt (just incase application attempts to lock a locked
                    189:                header without first unlocking it)
                    190: 
                    191: smb_lockmsghdr() was modified in the following ways:
                    192:        If lock fails, attempts to unlock the header before next lock
                    193:                attempt (same reason stated above)
                    194: 
                    195: CHKSMB (1.21) was modified in the following ways:
                    196:        Tests for valid translations strings in the .SDT files
                    197:        Displays totals for bytes used by header and data blocks, bytes used
                    198:                by deleted messages, and bytes saved by LZH compression
                    199: 
                    200: SMBUTIL (1.21) underwent some minor cosmetic changes.
                    201: 
                    202: ***********************
                    203: 03/18/95 Release v1.20a
                    204: ***********************
                    205: 
                    206: SMBUTIL (1.22) now compiles correctly under Watcom, using correct time zone
                    207: information. SMBUTIL maint() will no longer delete messages if max_age is
                    208: specified in the SMB header and the when_imported time for a message is in the
                    209: future.
                    210: 
                    211: Fixed problem in LZH.C that would cause lzh_decode() to generate exception
                    212: errors when compiled with a 32-bit compiler.
                    213: 
                    214: CHKSMB (1.22) now supports /E command line switch to display extended
                    215: information about corrupted messages. CHKSMB.C is now Watcom compatible.
                    216: 
                    217: Added fflush() calls to all smblib functions that write to the SDT, SHA, or SDA
                    218: files. This eliminates the problem of duplicate data offsets (data blocks for
                    219: multiple messages pointing to the same location) causing corrupted SDT files
                    220: (unsupported translation types reported by CHKSMB).
                    221: 
                    222: Added fflush() call after writing to SDT file in SMB_PUT example in SMB.TXT.
                    223: 
                    224: Fixed example *2SMB.C files to be compatible with SMBLIB v1.20 smb_create()
                    225: function.
                    226: 
                    227: Fixed smb_hallocdat() function prototype to stop redeclaration warnings.
                    228: 
                    229: Minor typos in specification fixed.
                    230: 
                    231: ***********************
                    232: 04/24/95 Release v1.20b
                    233: ***********************
                    234: 
                    235: Added SMB_EMAIL (1<<0) attribute definition for the message base status header
                    236: to specify a local e-mail message base where index "to" and "from" fields are
                    237: stored as user numbers, not CRC-16s (this is the only change between v1.20
                    238: and v1.21 of the SMB format).
                    239: 
                    240: Version 1.21 of FIXSMB no longer needs the "/M" switch to correctly fix a
                    241: Synchronet e-mail message base (as long as the SMB_EMAIL status attr is set).
                    242: 
                    243: Version 1.23 of SMBUTIL can now import text into a Synchronet e-mail message
                    244: base (as long as the SMB_EMAIL status attr has been set). It will ask for the
                    245: sender and recipient user numbers. Fixed an apparently nasty bug that would
                    246: cause damage to message bases when (I)mporting (check for SMB_HYPERALLOC
                    247: attribute was backwards). Excess baggage in the SMBUTIL source code was also
                    248: removed (no longer supports /L, /F, and /D command line switches). Only
                    249: supports self-packing and hyper-allocated message bases (it will not damage
                    250: fast allocated bases, however). "SMBUTIL M" now correctly handles message bases
                    251: that contain messages that have been pre-flagged for deletion (MSG_DELETE attr
                    252: set).
                    253: 
                    254: Changed smb_open(int retry_count) function: if retry_count is 0, then a "fast
                    255: open" method is used which doesn't lock and read the status header to check
                    256: for compatibility and validity of message base.
                    257: 
                    258: Added SMBLIB_VERSION definition (string constant) to contain the current
                    259: version and revision (if applicable) of the SMB library. This version number
                    260: may not always be the same as SMB_VERSION (version of the SMB format) or the
                    261: current version of the specification. It may be helpful to include a display
                    262: of this version number somewhere in your application (i.e. printf("SMBLIB v%s"
                    263: ,SMBLIB_VERSION);).
                    264: 
                    265: Changed smb_stack() example in the Performance Issues chapter to keep two
                    266: message bases always open using SMB_STACK_XCHNG.
                    267: 
                    268: Fixed bug in SMBUTIL that would cause an infinite loop when analysing an
                    269: extrememly corrupted HyperAllocated message base.
                    270: 
                    271: Fixed bug in smb_stack() function when using SMB_STACK_XCHNG operation. Would
                    272: previously set current message base to an undefined message base, rather than
                    273: the message base on top of the stack (last pushed or exchanged).
                    274: 
                    275: CHKSMB v1.22 compiled in the 1.20b release did not support wildcards (wasn't
                    276: linked with WILDARGS.OBJ) - this has been fixed and is the only change in
                    277: CHKSMB v1.23.
                    278: 
                    279: **********************
                    280: 05/31/95 Release v1.21
                    281: **********************
                    282: 
                    283: Add uchar forwarded element to smbmsg_t structure. This variable is initialized
                    284: by the smb_getmsghdr() function. If the message has been forwarded, it will
                    285: be set to non-zero.
                    286: 
                    287: Fixed bug in LZH.C which caused lzh_decode() to produce incorrect results
                    288: (usually t's and spaces) when compiled with a 32-bit compiler.
                    289: 
                    290: Added HUGE16 and FAR16 macros to SMBDEFS.H for huge and far pointers for
                    291: 16-bit compilers only (default pointer type for 32-bit compilers).
                    292: 
                    293: Fixed bug in FIXSMB.C that would initialize the SDA file to the wrong length.
                    294: 
                    295: Added net type NET_MHS for MHS gateways.
                    296: 
                    297: SMBUTIL (1.24) will no longer free deleted headers when maintaining a message
                    298: base if the /A (no analysis) command line switch is used. This speeds up the
                    299: message base maintenance/pack operation significantly by using: SMBUTIL /A MP
                    300: 
                    301: ***********************
                    302: 08/31/95 Release v1.21a
                    303: ***********************
                    304: 
                    305: All smb_*() functions changed to accept pointers to an smb_t structure. This
                    306: eliminates the use of global variables (making DLLs difficult or impossible
                    307: to program). A pointer is used even if the function doesn't modify the data
                    308: to maintain a consistent API and compatibility with languages that don't
                    309: support the passing of user defined types by value (e.g. Visual Basic).
                    310: 
                    311: The smb_t structure contains a retry_time element that defines the maximum
                    312: number of seconds to wait while trying to open a locked message base or record.
                    313: If this element of the passed smb_t variable is 0, a default value of 10
                    314: seconds is used.
                    315: 
                    316: Added smb_getmsgtxt() and smb_freemsgtxt() functions to SMBLIB.C (only included
                    317: if SMB_GETMSGTXT is defined).
                    318: 
                    319: *******************
                    320: 11/18/95 Beta v2.00
                    321: *******************
                    322: 
                    323: Bug in smb_getmsgtxt() with message data field lengths less than 2.
                    324: 
                    325: **********************
                    326: 03/22/96 Release v2.01
                    327: **********************

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.