home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Devil's Doorknob BBS Capture (1996-2003)
/
devilsdoorknobbbscapture1996-2003.iso
/
Dloads
/
SYSOP
/
MODS1.ZIP
/
QWK.MOD
< prev
next >
Wrap
Text File
|
1994-08-05
|
15KB
|
393 lines
┌─────────────────────────────────────────────────────────────────────────────┐
│ ModTitle: Asylum Qwk 1.0e August 4, 1994 │
│ What Is?: Internal QWK dl/ul'r COMMON 2.0+ mod │
│ │
│ 1@2077 - Sam │
│ 1@7321 - Zu Digital │
│ │
│ Difficulty: A typical Asylum Mod, I call it easy, but who knows. │
│ │
│ Files affected: FCNS.H VARDEC.H BBS.C │
│ The very bottom has instructions on adding this to the pulldown menus │
│ BY: Asylum Group │
└─────────────────────────────────────────────────────────────────────────────┘
This is the release version of Asylum QWK, and is copyrighted work. It may be
used free of charge, but may not be sold, or modified and released without
this header (except by WWIV Software Services), without written permission
from Michael Deweese or Sam Morris.
Fixes so far since initial release:
-) Had to work on the upload REP a little more.
a) More work on the upload reply packet
b) Work on deleting of posts if there are to many in an area (yet again,
related to the upload reply packet)
c) Finally, REP packet isn't bothering me, this time I have to fix a bug
in the sysop setting maximum messages to download
d) Updated the listing of new files
d+) Add a check to abort if the disk space ran out
Please take steps to ensure your BBS can be recovered in case of a problem.
I take no responsibility in you doing this, or in what the mod may do.
If you have something to lose, then don't use this mod.
Now... this modification seems to work real well, special care and attention
is taken by the programmers of the Asylum Group to avoid memory allocation/
overrun/leaks problems (probably 99% of real problems), but unfortunately,
no one is perfect.
A) COMMON
If you don't already have COMMON installed, exit out of here and do so, the
version needed by this mod is at least version 2.0b. 2.0c is current, and
included in this packet.
1) QWK.C and QWK.H
Put Qwk.c and qwk.h in your bbs dir,
QWK*.MSG and QWK*.ANS goes in your gfiles dir.
(QWKCFG.ANS AND QWK.MSG... maybe others, double check)
2) MAKEFILE, if you use Turbo C makefiles, you are on your own, I only know
the Borland C++ makefile...
At the position that defines BBS_OVL = \
= srsend.obj subedit.obj subreq.obj subxtr.obj \
= sysopf.obj tedit.obj uedit.obj voteedit.obj \
= xferovl.obj xfertmp.obj xinit.obj common.obj \
* qwk.obj ^ Should be there from COMMON
^^^^^^^ add this
At the position that defines BBS_O_OVL = \
= $(OBJ)\sysopf.obj $(OBJ)\tedit.obj $(OBJ)\uedit.obj \
= $(OBJ)\voteedit.obj $(OBJ)\xferovl.obj $(OBJ)\xfertmp.obj \
= $(OBJ)\xinit.obj $(OBJ)\common.obj \
+ $(OBJ)\qwk.obj ^^^ add that
^^^^^^^^^^^^^^ add this if needed
And at the end ...
= xferovl.obj : xferovl.c
= $(TCC_OVL)
= xfertmp.obj : xfertmp.c
= $(TCC_OVL)
= xinit.obj : xinit.c
= $(TCC_OVL)
= common.obj : common.c
= $(TCC_OVL)
+ qwk.obj : qwk.c
+ $(TCC_OVL)
3) VARS.H
= #include <dos.h>
= #include <alloc.h>
= #include <time.h>
= #include "common.h"
+ #include "qwk.h"
= #include "fcns.h"
4) VARDEC.H
Add the following definitions to 'typdef struct { ... } userrec;
These definitions need to go RIGHT AFTER 'char res_gp[100]'. If you have
already added some things right here, it goes BEFORE it (ie right after char
res_gp)... got it? If you do not put this in the right place, your user
list might get a bit screwy.
= neg_account, /* $ debit */
= gold; /* game money */
=
= char
= res_float[32]; /* reserved for real values */
=
= char
+ // QWK uses 6 BYTES (***(((*** 6 ****))***) from RES_GP, subtract 6 from
+ // your curr1ent value, ie 99 goes down to 93
* res_gp[93]; /* reserved for whatever */
+
+ unsigned int qwk_max_msgs;
+ unsigned int qwk_max_msgs_per_sub;
+
+ unsigned int qwk_dont_scan_mail : 1;
+ unsigned int qwk_delete_mail : 1;
+ unsigned int qwk_dontsetnscan : 1;
+ unsigned int qwk_remove_color : 1;
+ unsigned int qwk_convert_color : 1;
+ unsigned int qwk_archive : 3;
+
+ unsigned int qwk_leave_bulletin : 1;
+ unsigned int qwk_dontscanfiles : 1;
+ unsigned int qwk_keep_routing : 1;
+ unsigned int : 1;
+ unsigned int qwk_protocol : 4;
+ // The below should be here from the COMMON mod, it HAS to be installed
= unsigned int use_internal_tag : 1;
= unsigned int use_menusys : 1;
=
= unsigned int use_three : 1;
************ NOTE ***************
DID YOU MODIFY RES_GP[???] TO 'ORIGINAL VALUE - 6'? (ie 99 to 93 if you already
have the common mod installed)
5) BBS.C
Make a way to access the QWK menu. This is in function mainmenu
= /*************************************************/
+ if(!strcmp(s, "QWK"))
+ qwk_menu();
= if ((strcmp(s,"UPLOAD")==0) && (actsl>10))
= upload_post();
6) FCNS.H
Type 'make fcns' or add the following definitions manually.
7) OPT_AUTOVAL
If you don't have this #defined, you need to find function properize, in
file NEWUSER.C and move it out of the #define. Take the whole function
and move it somewhere like the top of the file.
/* File: qwk.c */
void build_qwk_packet(void);
void qwk_gather_sub(int bn, struct qwk_junk *qwk_info);
void qwk_start_read(int msgnum, struct qwk_junk *qwk_info);
void make_pre_qwk(int msgnum, int *val, struct qwk_junk *qwk_info);
void put_in_qwk(postrec *m1, char *fn, int msgnum, struct qwk_junk *qwk_info);
void make_qwk_ready(char *text, long *len, char *address);
void qwk_remove_null(char *memory, int size);
void build_control_dat(struct qwk_junk *qwk_info);
int _fmsbintoieee(float *src4, float *dest4);
int _fieeetomsbin(float *src4, float *dest4);
void finish_qwk(struct qwk_junk *qwk_info);
void qwk_remove_email(void);
void qwk_gather_email(struct qwk_junk *qwk_info);
int select_qwk_archiver(struct qwk_junk *qwk_info, int ask);
void qwk_which_zip(char *thiszip);
void qwk_which_protocol(char *thisprotocol);
char * qwk_system_name(char *qwkname);
void upload_reply_packet(void);
void ready_reply_packet(char *name);
void make_text_ready(char *text, long len);
char * make_text_file(int filenumber, long *size, int curpos, int blocks);
void qwk_email_text(char *text, long size, char *title, char *to);
void qwk_inmsg(char *text, long size, messagerec *m1, char *aux, char *name, long thetime);
void process_reply_dat(char *name);
void qwk_post_text(char *text, long size, char *title, int sub);
int find_qwk_sub(struct qwk_sub_conf *subs, int amount, int fromsub, char *title);
int iscan_allsubs(int b);
void qwk_menu(void);
void qwk_send_file(char *fn, int *sent, int *abort);
int select_qwk_protocol(struct qwk_junk *qwk_info);
void config_qwk_bw(void);
char *qwk_readfile(messagerec *m1, char *aux, long *l);
long * qwk_save_qscan(void);
void qwk_restore_qscan(long *save_qsc_p);
void insert_after_routing(char *text, char *text2insert, long *len);
void smasm(struct qwk_config *qwk_cfg);
void qwk_sysop(void);
void modify_bulletins(struct qwk_config *qwk_cfg);
void close_qwk_cfg(struct qwk_config *qwk_cfg);
void read_qwk_cfg(struct qwk_config *qwk_cfg);
void write_qwk_cfg(struct qwk_config *qwk_cfg);
int get_qwk_max_msgs(unsigned int *max_msgs, unsigned int *max_per_sub);
char *qwk_current_text(int pos, char *text);
void config_qwk(void);
int qwk_open_file(char *fn);
int qwk_iscan(int b);
void qwk_delete(int mn);
void qwk_receive_file(char *fn, int *received, char *ft, int i);
void qwk_nscan(void);
*******************************************************************************
Other Mods by the Asylum Group: (All require COMMON mod to install)
WWIV User Pulldown Menus
Featuring script menus, once they are in, you don't need to mod the BBS to
change your menus around, includes ability to use ALL colors except for
the blinking ones in your menus, definable security for each menu item, and
instructions on how to expand the resource language.
List Files Plus (Listplus)
In the words of people who have installed this mod, simply the best
file list/search/tag/view/etc... mod for wwiv. Allows you to go back and
forth in the files, selecting the files with the up and down arrow, and at
the bottom a menu where you use the left and right arrow keys. The
menus commands consist of such commands as show next files, show previous
files, put file in batch queue (or can be done with a space bar), view
file, download file, enter batch menu, go back and forward a directory.
And now, it shows the files description, in true Vision/2 style, when you
list the files.
Q/Nscan Config Plus
Based on the same interface as listfiles plus, allows you to select the
subs and directories in your Q/Nscan simply by arrow keying to it and
pressing the space bar to toggle it. Has menu options (left and right
arrow key) to toggle all on or off, view next dirs/subs (if they don't all
fit on the screen) and view the previous dirs/subs. Full conference
support (auto-detecting) included.
If you use the pulldown menus, you can make this modification to add QWK
to the pulldown menus
1) PDCOMP.H
= #ifdef PDCOMPILER
= {"DEBUG"},
= #else
= {pd_debug},
= #endif
=
= #ifdef PDCOMPILER
= {"LIST_COMMON"},
= #else
= {pd_show_common_mods},
= #endif
=
+ #ifdef PDCOMPILER
+ {"QWK_MENU"},
+ #else
+ {qwk_menu},
+ #endif
+
+ #ifdef PDCOMPILER
+ {"UPLOAD_REPLY_PACKET"},
+ #else
+ {upload_reply_packet},
+ #endif
+
+ #ifdef PDCOMPILER
+ {"BUILD_QWK_PACKET"},
+ #else
+ {build_qwk_packet},
+ #endif
+
+ #ifdef PDCOMPILER
+ {"CONFIG_QWK"},
+ #else
+ {config_qwk},
+ #endif
+
+ #ifdef PDCOMPILER
+ {"QWK_SYSOP"},
+ #else
+ {qwk_sysop},
+ #endif
+
+ #ifdef PDCOMPILER
+ {"CONFIG_QSCAN"},
+ #else
+ {config_qscan},
+ #endif
+
+ #ifdef PDCOMPILER
+ {"CONFIG_NSCAN"},
+ #else
+ {config_nscan},
+ #endif
=
=
=
=
= {0}
= }; /* End of commands */
Recompile PDCOMP.EXE now...
^^^^^^^^^^^^^^^^^^^^^
And add a menu option, something like this... (This example in MAIN_PD.SRC)
= StartItem "Other Areas"
= "Transfer Area T" T transfer
= "Chat with the Sysop C" C reqchat
= "Set your defaults D" D defaults
= "Online programs ." . do_chains
= "Voting Booth V" V vote
= "Bulletin area G" G gfiles
= "Auto Message A" A write_automessage
= "Time Bank $" $ time_bank
= "BBS list B" B bbslist
= "Chat Room " 0 chat_room
= "Sysop menu area W" W sysop_pd
= MinSL 255
= EndItem
=
+ StartItem "Qwk"
+ "Qwk Menu " 0 qwk_menu
+ "Upload reply packet " 0 upload_reply_packet
+ "Download QWK packet " 0 build_qwk_packet
+ "Config my QWK settings " 0 config_qwk
+ "Config QScan (messages)" 0 config_qscan
+ "Config Nscan (files) " 0 config_nscan
+ "Sysop Qwk config " 0 qwk_sysop
+ MinSL 255
+ EndItem
=
= StartItem "Leaving"
= "Turn off novice menus X" X expert
= "Logoff of our BBS O" O logoff
Recompile your .SRC file you modifed...
3) Finally recompile your bbs, so the changes in PDCOMP.H take effect.
Credit where credit is due:
Thanks goes to Dave Wallace, Emerald Lady, Dawg, Spotnick, Unca Scrooge,
and the many, many other folks who have spent many hours helping us to produce
this modification. Thanks in part to their efforts, we can comfortably say
that Asylum QWK is as good or better than any QWK offline mail packet
generator on the market.
Thanks to Michael Leib, Barry <Waston?> and the guys at WOMR for their QWK
packages.
Thanks to Tolkien, Jim Wire, and Filo for their hard work and dedication
to WWIV.
And a special thanks to Wayne Bell.
Payment:
Asylum QWK is not shareware. We are releasing it free of charge. We feel QWK
is something that will highly benefit WWIV, and help it to become a more com-
petitive BBS software in the BBS software market. Therefore, no payment is
required. This modification *is* copyrighted.
However, if you feel that Asylum QWK is just what you have been looking for in
an offline mail packet generator, and would like to make a voluntary con-
tribution, you may send it to the following address:
Michael Deweese
4246 Wilson Mountain Rd
Roanoke VA 24014