MsgBase.open() would not, could not, actually create a message base.
It would create 3 0-byte files (*.shd, *.sdt, *.sid), but more is actually needed for a message base to be "created" (i.e. a call to smb_create()). So, MsgBase.open() now uses smb_open_sub() rather than smb_open() to initialize theSMB status fields with the proper default values (based on the sysop configuration) and calls smb_crate() if the header file is empty. Yes, normally, SCFG creates message bases, but it shouldn't have to (e.g. a fresh install on *nix, doesn't actually start with any files in data/subs) and now that we have JavaScript-based message lister/readers, we really needed this support.