Annotation of sbbs/sbbs2/smb/docs/smb.hst, revision 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.