+-+-+-+ Beginning of part 5 +-+-+-+ X be deleted. Default: 60 days. X run_on_day - on which day should the purge actually be run. X X - Page 16 - X BBOARD April 23, 1990 X`012 X X X X X X X This must be a full day "name" (Sunday, Monday, etc.) X and is case-insensitive. Default: "Sunday". X run_on_time - time of day to execute purge. This is a 24- X hour format string. The purge should not be started X until after your JANTIDY.COM has run to prevent X disruption of BBoard activity. Default: "4:30". X never_purge - the list of conferences that should never be X touched. This should be an uppercase-only, colon- X delimited (before and after each entry) string. X Default: ":X-INFO-BBOARD:X-UNKNOWN:". X archive_notes - should expired notes be extracted to a file X before they're deleted. This can be anything that X evaluates to True or False. Default: "F". X min_note - initial topic number that can be deleted. This X allows initial topics to be devoted to a description of X the conference or local meta-discussions about the X conference. Default: 5. X X This procedure provides a needed support tool for BBoard. If you X have any improvements or suggestions for improvement, please send X me your code or ideas. This is one of the pieces of BBoard that X could probably stand the most improvement and, in the long run, X be one of the most used and most useful. X X X X X X X X X X X X X X X X X X X X X X X X X X X X X - Page 17 - X BBOARD April 23, 1990 X`012 X X X X X X X X INTERACTIVE COMMANDS X X BBoard receives and processes certain interactive commands X through Jnet. There are two types of commands: restricted and X unrestricted. Unrestricted commands will be accepted from any X user at any node except those specifically listed in the :ignore X control section. Restricted commands will only be accepted from X users at the same node as BBoard who are listed in the :manager X control section in the control file. X X Any interactive command that begins with an asterisk (*) will be X ignored by BBoard. This is to prevent possible endless chatter X between BBoard and a LISTSERV-type server at another node. X X X DISPLAY Command X X Display the status of a conference or conferences. The close date X (based on posting interval) and the last time that the conference X had an entry posted will be sent as an interactive response. X X Type: Unrestricted X Syntax: Display X Minimum: D X X Note that conference-specifier may be wildcarded with * or %. X X HELP Command X X Display a short description of BBoard and addresses for who to X contact for further information. X X Type: Unrestricted X Syntax: HELP `124 ? X Minimum: HELP or ? X X RELOAD Command X X Reload the control file. BBoard will respond with a completion X message after the control file is reloaded. X X Type: Restricted X Syntax: RELoad X Minimum: REL X X RESET Command X X Reset the closing date of the specified conference. This will X force the next entry to generate a new topic in the conference. X X - Page 18 - X BBOARD April 23, 1990 X`012 X X X X X X X X Type: Restricted X Syntax: RESET X Minimum: RESET X X Note that conference-name must be fully specified and wildcards X are not allowed. X X RESUME Command X X Allow BBoard to post entries to Notes. Used after a SUSPEND X command to begin posting any entries accumulated during the X suspension and permit all future postings. X X Type: Restricted X Syntax: RESUme X Minimum: RESU X X SHUTDOWN Command X X Perform shutdown tasks prior to terminating processing. BBoard X will verify that all incoming Jnet links, specified with :links X in the control file, are inactive. Shutdown will not be allowed X if a SUSPEND command has been given and there are any outstanding X entries to post. X X Type: Restricted X Syntax: SHUTdown X Minimum: SHUT X X STATUS Command X X Display start-up times and number of posted and unposted entries X since start-up. X X Type: Unrestricted X Syntax: Status X Minimum: S X X SUSPEND Command X X Prevent BBoard from beginning any posting jobs until a RESUME is X given. This will stop BBoard from writing any entries to Notes, X although incoming mail will still be processed and prepared for X posting. X X Type: Restricted X Syntax: SUSPend X Minimum: SUSP X X X - Page 19 - X BBOARD April 23, 1990 X`012 X X X X X X X WRITE Command X X Force BBoard to write unposted entries to Notes. X X Type: Restricted X Syntax: WRIte X Minimum: WRI X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X - Page 20 - X BBOARD April 23, 1990 X`012 X X X X X X X X SUPPORT X X Disclaimer X X BBoard uses undocumented Jnet hooks. Joiner Associates, Inc., X extends no support for user utilization of these function calls X and so the actions that BBoard performs are officially X unsupported. X X The author will support BBoard to the best of his ability, given X the lack of official support by Joiner Associates, Inc. X X X Trade Marks X X VMS and VAX Notes are trade marks of Digital Equipment X Corporation. X Jnet is a trade mark of Joiner Associates, Inc. X X X New Features X X Version 1.41 new features: X o Addition of SUSPEND and RESUME processing, required for X "expiring" entries in Notes conferences. X o Inclusion of BBOARD_MAKE_CONF.COM to generate X conferences for BBoard. X o Inclusion of NOTES_PURGE.COM to expire entire topics as X Notes conferences begin to get large. X X Version 1.40 new features (in no particular order): X o The topic for digests is now posted as the conference X alias, rather than BBoard. X o Only one detached posting job will be allowed to run. X If another should be started, it will be deferred until X the other job completes. This reduces the CPU load X whenever a link restarts after a long outage. X Additionally, this removes the need for any sort of X batch submission and processing of postings. X o Subject lines starting with '$' will have a space ' ' X prepended to them. This prevents the Notes processing X from aborting due to a '$' forcing control back to DCL. X o 'From' text will possibly have angle brackets "<>" X placed around it which will give Gold-F (from X NOTES$COMMAND.SAMPLE) a better chance of determining X the poster's address. X o Some logical names (BBOARD_NOTECONTROL_FILE, X BBOARD_ERROR_CONF, BBOARD_TIME_INTERVAL, X BBOARD_COUNT_INTERVAL) have been moved into the Control X X - Page 21 - X BBOARD April 23, 1990 X`012 X X X X X X X File, reducing the number of logical names required for X BBoard to four. X o Add a HELP command to give a limited description and X provide addresses to contact for further information. X o Move digest definitions into the Control File, rather X than being hard-coded, as they were previously. X X X Possible Future Enhancements X X The following are possible future enhancements to BBoard: X o Add Restricted command CURRENT . X This will cause the specified conference(s) to change X their close date so that they are "current". Weekly X conferences will end on the coming Saturday and monthly X conferences will end at the end of the month. X o User Exits to allow further processing of incoming X messages. This can be used for testing or for further X distribution of mail. X o Provide a mechanism to copy header information onto the X tail-end of each posting in selected conferences. This X will be especially useful during mail loops to provide X the headers that everyone needs to solve this problem. X o Interface BBoard to Callable Notes to speed access. X (Yes, Callable Notes exists; No, no one I know can X provide me with any information, yet.) X X X Author X X BBoard was written by: X Benjamin M. Cohen X Ben@SPCVXA.Bitnet X X Additionally, support is available through the Info-BBoard X distribution list at SPCVXA.Bitnet. To request to be included on X this distribution list, send a mail message to I-BBREQ@SPCVXA. X X X X X X X X X X X X X X X - Page 22 - X BBOARD April 23, 1990 X`012 $ GOSUB UNPACK_FILE $ FILE_IS = "BBOARD.H" $ CHECKSUM_IS = 2120618141 $ COPY SYS$INPUT VMS_SHARE_DUMMY.DUMMY X#define TRUE 1 X#define FALSE 0 X X#define SLOP_LEN 5`009`009`009/* Extra space on allocated strings */ X Xtypedef long SYSTIM[2]; X X/* Some interesting structures */ X Xstruct jnet_file_header `123 X char host[10]; X char user[10]; X char filename[10]; X char filetype[10]; X char device[10]; X char class[2]; X char local_file[128]; X char jnet_file[128]; X char conf_name[41]; X char flag_user_exit;`009`009/* For later development */ X`125; X Xstruct list_info `123 X char scan_data[11]; X char conf_hdr[21]; X char conf_user[13]; X int flag_digest; X int flag_keyword; X char new_topic_interval; X char conf_name[41]; X`125; X Xstruct source_info `123 X char id[3]; X char scan_text[21]; X int reg_text_length; X char * header_text; X`125; X Xstruct rule_info `123 X char ids[2][3]; X char comparison[3]; X char action[3]; X char id_from[3]; X char id_subj[3]; X`125; X Xstruct command `123 X char * name; X int min_len; X int privileged; X int cmd_value; X`125; X Xstruct $NUMTIM `123 X unsigned short year; X unsigned short month; X unsigned short day; X unsigned short hour; X unsigned short minute; X unsigned short second; X unsigned short h_second; X`125; X X/* Functions for prototyping */ X X/* From BBOARD.C */ X Xvoid timer_reset(void); Xvoid process_message(void); X X/* From BBSUPP.C */ X Xchar * log_tran(char * log_name); Xvoid send_msg(char * n, char * u, char * s); Xvoid send_log_file(char * s); Xchar * get_vms_ver(void); Xvoid init_log_file(void); Xvoid send_opcom(char * s); Xvoid from_text_fondle(char * s); Xvoid subj_text_fondle(char * s); Xvoid report_error(char * s, int error); Xint receive_file(struct jnet_file_header * f); Xint receive_message(char * node, char * user, char * msg); X X/* From SUPP.C */ X Xvoid critical_error(char * err_line); Xvoid inter_error(char * log_flag, char * err_line, char * node, char * user); Xvoid str_desc(struct dsc$descriptor * desc, char * str); Xchar * strip(char * s); Xchar * trim_end(char * s); Xchar * scrunch(char * s); Xchar * strupr(char * s); Xchar * strlwr(char * s); Xchar * remove_quotes(char * s); Xlong * get_time(long * buf); Xstruct $NUMTIM * get_numtim(struct $NUMTIM * num, long * buf); Xlong * start_end_time(char delt_type, long * buf_start, long * buf_end); Xvoid * xmalloc(unsigned size); Xvoid xfree(void * mem); Xint fgets_lcl(char * s, int len, FILE * f); X X/* From RULES.C */ X Xint read_control_file(int reload, char * node, char * user); Xvoid do_rules(FILE * note); Xchar * find_source(char * id); Xvoid scan_header(FILE * note, struct source_info * p); Xint digest_find(char dig_type, int * len, int * error); Xint ignore_msgs(char * n, char * u); Xint valid_manager(char * n, char * u); Xint mandatory_link(char * l); X#ifdef DEBUG Xvoid dump_control_file(void); X#endif X X/* From USEFILE.C */ X Xvoid use_file(struct jnet_file_header * f); Xvoid put_note(FILE * note, struct rule_info * rule, struct list_info * list, X int error_note); X X/* From USEMSG.C */ X Xvoid use_msg(char * node, char * user, char * msg); X X/* From HOOKS.C */ X Xint check_for_hook(char * hook); Xvoid load_host_name(char * host); Xchar * check_links_down(void); Xchar * get_jnet_ver(void); Xchar * get_jnet_wrk(struct dsc$descriptor * jni_vers_dsc); X X/* From NOTELOG.C */ X Vvoid fondle_note_log_file(FILE * out, char interval, char * conf, char * hdr) X; Xvoid reset_log_file_entry(char * conf, char * node, char * user); Xvoid display_log_file_entry(char * conf, char * node, char * user); X X/* From COMSUPP.C */ X Xvoid com_write_notes(void); XFILE * com_open(void); -+-+-+-+-+ End of part 5 +-+-+-+-+-