725 lines
32 KiB
Plaintext
725 lines
32 KiB
Plaintext
The
|
||
OPENDOORS TECH JOURNAL
|
||
Volume 93, Number 5 July 20th, 1993
|
||
|
||
"The Greatest Thing to happen to Journalism Since Real People"
|
||
|
||
This Issue: A Word from the Editor - Scott Burkett
|
||
The Open Door - Brian Pirie (not!)
|
||
The Fidonet OPENDOORS Echo - Latest FAQ
|
||
Opendoors Tech Corner - ColorToString();
|
||
In Search Of - The Art of Debugging
|
||
Review: VID v2.01 - The Virus Information Door
|
||
OpenDoors Snippets!
|
||
OpenDoors Tech Journal Information
|
||
|
||
----------------------------------------------------------------------------
|
||
A Word from the Editor:
|
||
----------------------------------------------------------------------------
|
||
|
||
Finally! After months of long-distance mail polling, the OPENDOORS echo is
|
||
now residing on the North American fidonet backbone! Yep. Sorry, Ma Bell.
|
||
More on this later, and now .... the rest of the story. Sorry Paul Harvey.
|
||
|
||
Listen up children, today's editorial survey question is one which is sure to
|
||
draw quite a bit of flak from programmers around the globe. Which is the
|
||
better stimulant, Jolt Cola or Maxwell House? :-)
|
||
|
||
DoorNet! That's right. Strange things are amiss at the Circle-K! Look for
|
||
an OPENDOORS conference (both mail and file based) to appear soon on the
|
||
DoorNet backbone listing. Thanks go out to Vince Jacobs for his work on
|
||
getting this implemented. This should make ODTJ and OD distribution a bit
|
||
easier on all of us. There has been mention of gating the current fidonet
|
||
OPENDOORS echo through to Doornet. I applaud this idea and welcome it with
|
||
much grandiose. Ahem.
|
||
|
||
On another wavelength entirely, several hundred netmail messages were lost
|
||
from Under the Nile's mail machine a few weeks ago. Unfortunately, there
|
||
were a few requests for product announcements contained therein. If the
|
||
authors would be so kind as to send them back in, we will gladly publish
|
||
them in the next edition. Danke!
|
||
|
||
On a serious note, my gerbil died. Peace, and a bottle of hair grease....
|
||
|
||
(Scott, it's time for your medication....yes, mother)
|
||
|
||
----------------------------------------------------------------------------
|
||
THE OPEN DOOR - By Brian Pirie
|
||
----------------------------------------------------------------------------
|
||
|
||
Unfortunately (I know, I know), Brian was unavailable for this issue. I
|
||
finally tracked him down in Tibet, busily polling the local populace for
|
||
new ideas for the 4.20 release. At any rate, look for him in ODTJ #6, along
|
||
with (hopefully) OpenDoors 4.20... :-)
|
||
|
||
----------------------------------------------------------------------------
|
||
OPENDOORS Echo FAQ - Frequently Asked Questions
|
||
----------------------------------------------------------------------------
|
||
By: Brian Pirie
|
||
July 17th, 1993
|
||
|
||
ABOUT THIS FAQ
|
||
--------------
|
||
|
||
This document is a collection of frequently asked questions and answers.
|
||
If you have any questions about OpenDoors or the OPENDOORS echo, please
|
||
first refer to this FAQ. Not only will this help to reduce unnecessary
|
||
trafic in the echo, but it will also provide you with the answer to many
|
||
questions much more quickly than you would have otherwise.
|
||
|
||
If you have any suggestions for additions or changes to this FAQ, please
|
||
direct them to the moderator, Brian Pirie (FidoNet: 1:243/8, Internet:
|
||
brian@bpecomm.ocunix.on.ca).
|
||
|
||
Since the OPENDOORS echo and this FAQ are currently under a state of
|
||
change, this FAQ will be posted on a very regular basis for the time
|
||
being. In the future, the FAQ will probably be automatically posted on a
|
||
bi-weekly basis.
|
||
|
||
CONTENTS
|
||
--------
|
||
|
||
1.) What are the rules of the OPENDOORS echo?
|
||
2.) What IS OpenDoors?
|
||
3.) Where can I get a copy of OpenDoors?
|
||
4.) What is the newest version of OpenDoors?
|
||
5.) How much does OpenDoors cost?
|
||
6.) Is the OpenDoors source code available?
|
||
7.) Are there beta test versions of OpenDoors?
|
||
8.) How can I contact the author of OpenDoors?
|
||
9.) What IS the OpenDoors echo?
|
||
10.) What about the echo archives?
|
||
11.) How can I get help with OpenDoors or BBS door/utility programming?
|
||
12.) What guidelines are there for posting source code?
|
||
|
||
1.) WHAT ARE THE RULES OF THE OPENDOORS ECHO?
|
||
----------------------------------------
|
||
|
||
The rules of the OPENDOORS echo are few and far between. The most
|
||
important rules are those that are standard to all EchoMail conferences
|
||
that are distributed as a part of the FidoNet backbone distribution
|
||
system. The echo may not be used for illegal purposes, nor is profane
|
||
language accepted. Beyond this, your are trusted to use your own
|
||
judgement. While it is important to have as high a "signal to noise
|
||
ratio" as possible, it is also important to recognize the diverse group
|
||
of people you are communicating with though the OPENDOORS echo. There is
|
||
a wide range of technical knowledge, knowledge of network etiquette, and
|
||
personal background. If you can try to be as understanding and helpful
|
||
as possible, your doing so will help to keep friction and flaming to a
|
||
minimum.
|
||
|
||
Since the participants in the OPENDOORS echo are generally all
|
||
programmers, it seems natural that they will want to tell the world
|
||
about the programs they have written. For this reason, announcements of
|
||
new programs - either written with OpenDoors or of interest to the
|
||
participants of this echo - is encourage. However, advertising of new
|
||
programs is not the primary purpose of the echo. For this reason, we
|
||
would ask that you refrain from posting the same advertisment message
|
||
more than once within a reasonable length of time (perhaps a month).
|
||
|
||
If you are having any difficulty with the OPENDOORS echo - technical,
|
||
social, or otherwise - please feel more than free to contact the
|
||
moderator, Brian Pirie (1:243/8).
|
||
|
||
2.) WHAT IS OPENDOORS?
|
||
-----------------
|
||
|
||
OpenDoors is a Turbo C(++) / Borland C++ door programming toolkit used
|
||
by well over 100 door programmers around the world. OpenDoors handles
|
||
all of the details of door programming, such as communicating with the
|
||
modem, interfacing with virtually any BBS package, maintaining status
|
||
lines, monitoring carrier detect and user timeouts, handling sysop
|
||
function keys such as DOS shell or chat, providing advanced ANSI/AVATAR
|
||
graphics support, and much more.
|
||
|
||
OpenDoors is designed to allow you to write door programs just as you
|
||
would write any other C program, without requiring any additional effort
|
||
or knowledge. You can easily create fully functional door programs with
|
||
just a few lines of code. OpenDoors is so easy to use that many
|
||
OpenDoors programmers have begun using it with no programming
|
||
experience.
|
||
|
||
OpenDoors directly interfaces with all of the most popular BBS packages
|
||
including RemoteAccess, QuickBBS, Telegard, Wildcat, PC-Board, Maximus,
|
||
Renegade, EzyCom, RBBS-PC, Spitfire, SuperBBS, RoboBoard, WWIV and many
|
||
others. In addition, OpenDoors allows the sysop to specify custom door
|
||
information file formats to permit your doors to run on virtually any
|
||
BBS system.
|
||
|
||
Included with OpenDoors are a number of example doors that you can
|
||
compile, alter, or use as a basis for your own doors. Among these
|
||
example doors are a voting booth type door and an ANSI music
|
||
demonstration door, and dozens of sample doors within the door
|
||
programming tutorial manual.
|
||
|
||
OpenDoors also provides a number of special features that you can
|
||
optionally include in your doors, such as transparent configuation file
|
||
support, logfile support, FILES.BBS listing, and many advanced
|
||
ANSI/AVATAR graphics routines.
|
||
|
||
3.) WHERE CAN I GET A COPY OF OPENDOORS?
|
||
-----------------------------------
|
||
|
||
Below is a short table listing sites from which the newest version of
|
||
OpenDoors is available, as of April 19th, 1993. In addition to the sites
|
||
listed below, the newest verion of OpenDoors will likely be available
|
||
from any system that carries "Programmer's Distribution Network" files.
|
||
Also, if you send a self-addressed envelope, along with either a 3-1/2"
|
||
or 5-1/4" (360K) diskette, and $2.00 to cover postage, I would be happy
|
||
to mail the newest version of OpenDoors to you. My address is listed in
|
||
section 8.
|
||
|
||
Also, the most recent list of OpenDoors distribution sites is always
|
||
available for download or file request from my system, in the file
|
||
OD_SITES.ZIP. If you are interested in becoming an official OpenDoors
|
||
distribution site, please see the file included in the OD_SITES.ZIP
|
||
archive.
|
||
|
||
-------------------------------------------------------------------------------
|
||
FIDONET
|
||
LOCATION ADDRESS DATA NUMBER MODEM
|
||
-------------------------------------------------------------------------------
|
||
Sydney, Australia 3:712/618 +61 2 552 3255 (v.32/PEP)
|
||
Sydney, Australia 3:714/906 +61 2 977 6820 (v.32bis/HST)
|
||
Lancaster Park, Alberta, Canada 1:342/49 +1 403 973 3856 (v.32bis/HST)
|
||
Saint John, New Brunswick, Canada 1:255/7 +1 506 652 7292 (v.32bis)
|
||
Ottawa, Ontario, Canada 1:243/8 +1 613 526 4466 (v.32)
|
||
Mascouche, Quebec, Canada 1:167/235 +1 514 968 1709 (v.32bis)
|
||
Trieste, Italy 2:333/603 +39 40 3783111 (v.32bis/HST)
|
||
Paraparaumu, New Zealand 3:771/180 +64 4 298 4194 (v.32bis)
|
||
Cambridge, United Kingdom 2:440/34 +44 223 301487 (v.32bis)
|
||
Ipswich, Suffolk, United Kingdom 2:440/107 +44 473 692882 (v.32bis)
|
||
Ipswich, Suffolk, United Kingdom 2:440/112 +44 473 87450 (v.32bis)
|
||
Mildenhall, Suffolk, United Kingdom 2:440/37 +44 638 718623 (v.32bis/HST)
|
||
San Jose, California, USA 1:143/324 +1 408 265 4660 (v.32)
|
||
San Ramon, California, USA 1:161/610 +1 510 830 4616 (v.32bis/HST)
|
||
Fort Myers, Florida, USA 1:371/26 +1 813 939 3009 (v.32bis/HST)
|
||
Columbus, Georgia, USA 1:3613/12 +1 706 596 8126 (v.32)
|
||
Chicago, Illinois, USA 1:115/743 +1 312 587 8756 (v.32bis/HST)
|
||
Baltimore, Maryland, USA 1:261/1062 +1 410 256 1979 (v.32bis)
|
||
Minneapolis, Minnesota, USA 1:282/1016 +1 612 378 7783 (v.32bis)
|
||
Muskogee, Oklahoma, USA 1:3813/309 +1 918 687 1612 (v.32bis)
|
||
-------------------------------------------------------------------------------
|
||
|
||
4.) WHAT IS THE NEWEST VERSION OF OPENDOORS?
|
||
---------------------------------------
|
||
|
||
Version 4.10 is the most recently released version of OpenDoors. There
|
||
is a more recent beta-test version of OpenDoors. For information on this
|
||
beta-test version, see section 7.
|
||
|
||
5.) HOW MUCH DOES OPENDOORS COST?
|
||
----------------------------
|
||
|
||
OpenDoors is distributed on a try-before-you-buy basis. You can pickup a
|
||
copy of OpenDoors from any of the OpenDoors distribution sites, listed
|
||
above, to have a closer look at the package. However, if you wish to
|
||
continue using OpenDoors after the three week trial period, you must
|
||
purchase an OpenDoors registration. Full details on registering
|
||
OpenDoors is included in the OpenDoors manual. However, a brief table
|
||
listing the prices within a number of countries is listed below:
|
||
|
||
-----------------------------------------------
|
||
REGISTRATION
|
||
REGISTRATION ONLY AND SOURCE CODE
|
||
-----------------------------------------------
|
||
34 Canadian Dollars 68 Canadian Dollars
|
||
28 US Dollars 56 US Dollars
|
||
18 British Pounds 36 British Pounds
|
||
150 French Francs 300 French Francs
|
||
44 German Marks 88 German Marks
|
||
50 Netherland Gilders 100 Netherland Gilders
|
||
39 Australian Dollars 78 Australian Dollars
|
||
-----------------------------------------------
|
||
|
||
6.) IS THE OPENDOORS SOURCE CODE AVAILABLE?
|
||
--------------------------------------
|
||
|
||
Yes, the OpenDoors source code is available, at a cost equal to the
|
||
registration, to registered users. Both the regisration and source code
|
||
may also be purchased at the same time, for a cost equal to twice the
|
||
normal registration fee. When you purchase the OpenDoors source code,
|
||
the most recent version of the source code is sent to directly. Also,
|
||
you will be entitled to free upgrades to all future versions of the
|
||
source code. Whenever you wish to pick up a new version of the source
|
||
code, you may download it from the OpenDoors support BBS, arrange to
|
||
pick it up via a FidoNet-compatible mailer (simply send me a message
|
||
asking me to place the source code package "on hold" for you to poll and
|
||
pick up), or by sending a diskette and self-addressed diskette mailer.
|
||
|
||
7.) ARE THERE BETA TEST VERSIONS OF OPENDOORS?
|
||
-----------------------------------------
|
||
|
||
Yes. The beta test versions of OpenDoors are available to registered
|
||
OpenDoors users. However, keep in mind that the beta test version has
|
||
some new features that are still under development, and has not yet been
|
||
thoroughly tested. To save space, the documentation is not included with
|
||
the beta test version. As such, it is assumed that you also have the
|
||
most recent non-beta version of OpenDoors. The most recent beta version
|
||
may be file-requested from 1:243/8 as OD_BETA
|
||
|
||
8.) HOW CAN I CONTACT THE AUTHOR OF OPENDOORS?
|
||
-----------------------------------------
|
||
|
||
If you wish to contact the author of OpenDoors, Brian Pirie, please feel
|
||
free to do so. I may be reached by any of the following means:
|
||
|
||
FidoNet NetMail : 1:243/8
|
||
|
||
Internet EMail : brian@bpecomm.ocunix.on.ca
|
||
|
||
Modem (BBS) : +1 613 526 4466
|
||
|
||
Conventional Mail : Brian Pirie
|
||
Apt. #1416 - 2201 Riverside Drive
|
||
Ottawa, Ontario
|
||
K1H 8K9
|
||
Canada
|
||
|
||
9.) WHAT IS THE OPENDOORS ECHO?
|
||
--------------------------
|
||
|
||
The OPENDOORS echomail conference is devoted to OpenDoors and BBS door /
|
||
utility programming in general. The OPENDOORS echo serves as a place
|
||
where people working with OpenDoors can share ideas, source code
|
||
examples, and other tricks and techniques. Through the OPENDOORS echo
|
||
you can receive help with OpenDoors and programming in general. Also
|
||
available through the OPENDOORS echo is information on future versions
|
||
of OpenDoors and recent developments of concern to BBS door and utility
|
||
programmers. The OPENDOORS echo is also place for suggestions for future
|
||
versions of OpenDoors, OpenDoors bug reports, a place to announce the
|
||
availablility of your programs, and much more information of interest to
|
||
OpenDoors programmers. There are participants in the OpenDoors echo from
|
||
throughout Canada and the U.S., as well as people in Europe and
|
||
Australia.
|
||
|
||
10.) WHAT ABOUT THE ECHO ARCHIVES?
|
||
----------------------------
|
||
|
||
Although we attempt to answer the most commonly asked questions in this
|
||
FAQ, there is so much discussed in the OPENDOORS echo that it is
|
||
impossible to address every possible question. As such, you may be
|
||
interested in referring to the OPENDOORS echo archives, in order to
|
||
learn more about OpenDoors and BBS door/utility programming in general.
|
||
|
||
The OPENDOORS echo archives are prepared on a monthly basis, and
|
||
are available from the moderators system. Currently, the following
|
||
archives are available for request from 1:243/8 or download from the BBS
|
||
at +1 613 526 4466:
|
||
|
||
ODJUL92.ZIP 42776 Discussion from the OpenDoors echo, July '92
|
||
ODAUG92.ZIP 35432 Discussion from the OpenDoors echo, August '92
|
||
ODSEP92.ZIP 36308 Discussion from the OpenDoors echo, September '92
|
||
ODOCT92.ZIP 30922 Discussion from the OpenDoors echo, October '92
|
||
ODNOV92.ZIP 34844 Discussion from the OpenDoors echo, November '92
|
||
ODDEC92.ZIP 53647 Discussion from the OpenDoors echo, December '92
|
||
ODJAN93.ZIP 24683 Discussion from the OpenDoors echo, January '93
|
||
ODFEB93.ZIP 41562 Discussion from the OpenDoors echo, February '93
|
||
ODMAR93.ZIP 24080 Discussion from the OpenDoors echo, March '93
|
||
ODAPR93.ZIP 30027 Discussion from the OpenDoors echo, April '93
|
||
ODMAY93.ZIP 39440 Discussion from the OpenDoors echo, May '93
|
||
ODJUN93.ZIP 56615 Discussion from the OpenDoors echo, June '93
|
||
|
||
11.) HOW CAN I GET HELP WITH OPENDOORS OR BBS DOOR/UTILITY PROGRAMMING?
|
||
-----------------------------------------------------------------
|
||
|
||
If you have any problems with a program, please feel more than free to
|
||
post a message here, asking for help. Afterall, that is one of the
|
||
central purposes of this echo. However, try to keep the following points
|
||
in mind when asking a question. Doing so will help others to better
|
||
understand your problem, and as such will help them help you.
|
||
|
||
A.) If you are having a problem with a program, try to
|
||
describe as much about the problem as possible. If you
|
||
can, precisely how to reproduce the problem. If you wish
|
||
to do so, posting source code can also be of great
|
||
advantage. For more information on posting source code in
|
||
the echo, please see section 12.
|
||
|
||
B.) Explain what steps you have already taken in trying to
|
||
solve your problem. This will allow others to pick up from
|
||
where you have become "stuck", and not suggest solutions
|
||
that you have already tried yourself.
|
||
|
||
|
||
|
||
12.) WHAT GUIDELINES ARE THERE FOR POSTING SOURCE CODE?
|
||
-------------------------------------------------
|
||
|
||
You are more than welcome to post source code in this echo. If you do
|
||
so, please keep the following guidelines in mind.
|
||
|
||
A.) Unless you explicitly say otherwise, any source code
|
||
posted in this echo will be considered to be released to
|
||
the public domain. If you have some source code that you
|
||
do not wish others to copy, don't post it here!
|
||
|
||
B.) For your source code to be useful to others, it has to be
|
||
understandable. Adding comments can be of great benifit to
|
||
someoone trying to understand your code.
|
||
|
||
C.) If you are posting a program written with OpenDoors,
|
||
please be sure that you do NOT include your registration
|
||
key in the source code!
|
||
|
||
----------------------------------------------------------------------------
|
||
OpenDoors Tech Corner: ColorToString()
|
||
----------------------------------------------------------------------------
|
||
|
||
Authored by: Brian Pirie, OpenDoors author
|
||
|
||
/* Function to convert an integer color attribute to an OpenDoors */
|
||
/* style color description string, in the format: */
|
||
/* */
|
||
/* [Flashing] [Bright] [Foreground] on [Background] */
|
||
/* */
|
||
/* The function takes two parameters, an unsigned integer */
|
||
/* representing the input color, and a pointer to a string where */
|
||
/* the colour description should be output. Be sure that this */
|
||
/* string is large enough to hold the largest possible color */
|
||
/* description string. (If the code is not altered, the largest */
|
||
/* possible string will be 35 characters, including the null */
|
||
/* terminator */
|
||
|
||
void ColorToString(unsigned int color, char *outString)
|
||
{
|
||
/* Array containing names of various colors */
|
||
static char colorString[8][33]={"Black",
|
||
"Blue",
|
||
"Green",
|
||
"Cyan",
|
||
"Red",
|
||
"Magenta",
|
||
"Yellow",
|
||
"White"};
|
||
|
||
/* Initialize string */
|
||
outString[0]='\0';
|
||
|
||
/* If flashing bit is set, output "Flashing" string + space */
|
||
if(color & 0x80) {
|
||
strcat(outString, "Flashing ");
|
||
}
|
||
|
||
/* If bright bit is set, output "Bright" string + space */
|
||
if(color & 0x08) {
|
||
strcat(outString, "Bright ");
|
||
}
|
||
|
||
/* Output foreground color */
|
||
strcat(outString, colorString[color & 0x07]);
|
||
|
||
/* Output the word "on" with a space before & after */
|
||
strcat(outString, " on ");
|
||
|
||
/* Output background color */
|
||
strcat(outString, colorString[(color & 0x70) >> 4]);
|
||
}
|
||
|
||
Editor's Note: Brian was kind enough to put this function together for us
|
||
upon request for a function to perform the reverse of the od_color_config()
|
||
function. I had to add a bracket or two that was left out (he did mention
|
||
that it was untested code!), but it works like a champ.
|
||
|
||
----------------------------------------------------------------------------
|
||
In Search Of - The Art of Debugging
|
||
By Mark Williamson
|
||
----------------------------------------------------------------------------
|
||
|
||
It happens. The inevitable. You have spent so many hours trying to
|
||
write the most optimized, cleanest code possible. But your best efforts
|
||
are laid to rest when some verocious little creature pops up, seemingly
|
||
at random, and wreaks havoc on all your efforts.
|
||
|
||
What causes these bugs to appear? Can it be programming style? Or a
|
||
forgotten temporary variable? Where, or where, is that bug!
|
||
|
||
If this has happened to you, don't feel bad. 50 percent of your time
|
||
programming will be devoted to the debugging cycle. Many books have
|
||
been written that are devoted to the art of programming style, debugging
|
||
and the development cycle. I will only touch on a couple of pointers to
|
||
get you started in the right direction in locating that invisible target
|
||
called so affectionately, the "bug."
|
||
|
||
Case scenario: I was working on a program that would shell to DOS using
|
||
one of the OD_SPAWN... functions. OPENDOOR.DOC discusses in
|
||
good detail how to use either of these functions. But, being the eager
|
||
programmer that I am, I happily went about my way after I read what I
|
||
thought I needed to know. The program in question uses a temporary
|
||
directory to store files extracted from .ZIP/.ARJ/etc.. archive files.
|
||
As the program was running, it worked just great. Unpacked the files
|
||
using PKZIP. Repacked them using ARJ.
|
||
|
||
Then I tried it again. That's when it all fell apart for me.
|
||
Unwillingly, I just started a four-day straight debugging session,
|
||
lasting until the wee hours of the night.
|
||
|
||
Point one: Always read the docs...thoroughly!
|
||
|
||
During this four day debugging frenzy I removed 20 or more variables I
|
||
didn't need, rewrote five functions to be more independent and portable
|
||
(ie modular programming) and greatly optimized the program overall.
|
||
|
||
But I still couldn't find the bug.
|
||
|
||
Here's a sample of the code:
|
||
|
||
od_set_cursor(15,20);
|
||
od_printf("`bright cyan`Unpacking");
|
||
error=run_it(progname,unpackcommand); // see the run_it function
|
||
// below.
|
||
if(error==0){
|
||
od_set_cursor(15,33);
|
||
od_printf("`bright green`<60><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> `bright cyan` Ok ");
|
||
}
|
||
|
||
The above code did not do as it appears it should. In fact, as soon as
|
||
the trace feature of Turbo C++ 3.0 hit the line that prints out the bar
|
||
and the word "Ok", what actually was printed out was something like
|
||
this:
|
||
|
||
|
||
Unpacking :\BBSFILES\BBSUPLOADS\CHKZIP.ZIP
|
||
|
||
but not:
|
||
|
||
Unpacking <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ok
|
||
|
||
Now remember, I hadn't read the section on the od_swapping_path variable
|
||
yet.
|
||
|
||
The OD_SPAWN.. functions will swap to either EMS memory or DISK. The
|
||
variable od_control.od_swapping_path is empty by default, which equates
|
||
to the CURRENT DIRECTORY!. Thus, when my utility unpacked/repacked the
|
||
files, it packed up the swap file also. Then, when I ran it the second
|
||
and future times on the same archive file, I was overwriting the swap
|
||
file! Effectively overwriting the program's data and code segments.
|
||
|
||
Lesson learned: Read the docs..first. Don't use the old tried and
|
||
untrue "If all else fails, read the docs." Read them first. Read them
|
||
several times.
|
||
|
||
How to debug:
|
||
|
||
If your compiler has a trace feature, use it.
|
||
|
||
Put all the variables in the watch window that could possibly have any
|
||
bearing on the function your are testing. Look for suspicious changes
|
||
in values when the variable has not been 'touched'.
|
||
|
||
Minimize global variable useage. This makes portability difficult. If
|
||
you write functions that do not rely on any outside information except
|
||
that which is passed as an parameter, then it will be much easier to use
|
||
the same functions over and over, throughout many of your projects.
|
||
|
||
Use descriptive variables. C gives you much luxury in the length of
|
||
your variable names. Use this to the max. How many times have you
|
||
scratched your head and wondered "what does this one do?"
|
||
|
||
Use descriptive function names. See above
|
||
|
||
Read other programmer's source for ideas. Many times you will probably
|
||
be reinventing the wheel. Read the C snippets for ideas. Check out
|
||
some other source code to see how it's done elsewhere. This may give
|
||
you much needed insight into the art of programming style.
|
||
|
||
And last but not least.. Use comment lines! Don't be vague. Commenting
|
||
your source code will most likely help only one person. You. But, you
|
||
are the only one that matters anyway right?
|
||
|
||
Good luck and press on!
|
||
|
||
Mark Williamson
|
||
Software Solutions
|
||
Fido 1:214/54
|
||
|
||
Home of Labtest 2.00 - The Definitive Upload Processor
|
||
Written entirely in Turbo C++ 3.0 using Brian Pirie's Open Doors 4.1
|
||
|
||
|
||
----------------------------------------------------------------------------
|
||
REVIEW: VID v2.01
|
||
----------------------------------------------------------------------------
|
||
|
||
VID v2.01, the BBS Virus Information Door from Cairo Research Labs, is now
|
||
available!
|
||
|
||
The original VID was designed to provide a quick online virus reference for
|
||
BBS users, but has quickly evolved into quite a bit more! Thanks to a
|
||
tremendous response from Sysops around the world, VID has provided BBS users
|
||
with quick, accurate viral assessments while online on their favorite BBS
|
||
system.
|
||
|
||
What's New in This Release?
|
||
|
||
o Over 100 new viruses added, bringing the total up to 1,557 entries.
|
||
|
||
o Cleaned up display in several of the search and list options,
|
||
including multi-column virus listings (Thanks to Chris Koziol).
|
||
|
||
o Provided an option for online documentation for end-users.
|
||
|
||
* Due to an internal problem in the original 2.00 release, you must
|
||
use v2.01+ to use any new enhancement modules. The database
|
||
structures have changed a bit.
|
||
|
||
* The periodic VID integrity check has been enhanced. VID now
|
||
stores its integrity information in a file called SANITY.CHK.
|
||
Ensure that this file resides in the VID directory!
|
||
|
||
* In the 2.00 release, the VIDDEF.TBL file had to reside in the
|
||
path. This was causing a message subsystem initialization error
|
||
if VID could not locate this file in the path! VID now looks in
|
||
the current directory first. (Thanks to Steve Pepin)
|
||
|
||
! In the Behavior search, although the default answer is "Ignore",
|
||
the prompt showed the default as "No". Fixed! (Steve Pepin).
|
||
|
||
! If VID was typed alone with no arguments, the old switches from
|
||
the 1.10 release were displayed! Fixed! (Steve Pepin, again!).
|
||
|
||
! VID now handles extraneous spaces in registration keys. This
|
||
occurred when clipping a key from a netmail message. Squashed!
|
||
(Thanks to Bart Holiman).
|
||
|
||
! In the 2.0 datafiles, the "Stealth" flag on several viruses was
|
||
not set properly. Squashed!
|
||
|
||
FREQ: VID - This will get you the VID engine, documentation, Lite-level
|
||
database, and any release notes. 165K in size (VID201.ZIP).
|
||
|
||
VIDPLUS - This will get you the VID+ modules. You must have the VID
|
||
engine (above) for this to be functional! This expands
|
||
to around 1.5MB or so. 323K in size (VP0793.ZIP).
|
||
|
||
FROM - Under the Nile BBS, 1:3613/12, 14.4 USR
|
||
(706) 596-8126
|
||
|
||
---------------------------------------------------------------------------
|
||
OPENDOORS SNIPPPPPPPPPETS!!!!!!
|
||
----------------------------------------------------------------------------
|
||
By : Mark Williamson
|
||
|
||
The previous post of this code had a little error. In the fill_box()
|
||
function, remove the od_clr_scr(). I had put that in for test purposes. Sorry
|
||
bout that!
|
||
|
||
/********************************************************************/
|
||
|
||
I would like to submit this code for the next issue of ODTJ. Please
|
||
post my name and bbs info in the ODTJ with this code:
|
||
|
||
/******************************************************
|
||
* fill_box() by Mark Williamson, Software Solutions BBS
|
||
* Fidonet 1:214/54, (209)997-0224
|
||
*
|
||
* This code will paint a box in the
|
||
* specified color using the specified
|
||
* character using ansi/avatar graphics.
|
||
* Note that this does not make a border!
|
||
* Only 'fills' a block on the screen.
|
||
* Can be used to clear just parts of a screen.
|
||
*
|
||
* Call the function with the following parameters:
|
||
*
|
||
* int srow,scol: Starting row,col of the box
|
||
* int erow,ecol: Ending row,col of the box
|
||
* int attrib: od_set_attrib() style color code
|
||
* char fill_char: The character to use to paint the
|
||
* block. Use ' ' to clear a block.
|
||
*
|
||
* This code is placed in the public domain.
|
||
******************************************************/
|
||
|
||
#include <stdio.h>
|
||
#include "opendoor.h"
|
||
|
||
void fill_box(int srow, int scol, int erow, int ecol,
|
||
int attrib, char fill_char);
|
||
|
||
void main(void)
|
||
{
|
||
fill_box(3,10,13,40,0x1f,'<27>');
|
||
}
|
||
|
||
void fill_box(int srow, int scol, int erow, int ecol,
|
||
int attrib,char fill_char)
|
||
{
|
||
int line_len,x;
|
||
if(srow<1) srow=1;
|
||
if(erow>24) erow=24;
|
||
if(scol<1) scol=1;
|
||
if(ecol>80) ecol=80;
|
||
line_len=ecol-scol;
|
||
/* od_clr_scr(); OOPS! TAKE THIS LINE OUT */
|
||
od_set_attrib(attrib);
|
||
for(x=srow;x<erow+1;x++) {
|
||
od_set_cursor(x,scol);
|
||
od_repeat(fill_char,line_len);
|
||
}
|
||
}
|
||
|
||
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
||
|
||
// The following function provided by Brian Pirie
|
||
// during a telephone conversation with Brian and myself
|
||
//
|
||
// Arguments: Prog - the path/filename of the program to run
|
||
// command_line - path/filename of the program and any
|
||
// command line arguments the program needs.
|
||
//
|
||
// Example: prog = "PKUNZIP"
|
||
// command_line = "PKUNZIP TESTFILE.ZIP"
|
||
//
|
||
// Return value: errorlevel of child process
|
||
int run_it(char *prog,char *command_line)
|
||
{
|
||
char *arg[3];
|
||
arg[0]=prog;
|
||
arg[1]=command_line;
|
||
arg[2]=NULL;
|
||
strcpy(arg[1],strshl(arg[1],strlen(prog)));
|
||
return(od_spawnvpe(P_WAIT,prog,arg,NULL));
|
||
}
|
||
|
||
----------------------------------------------------------------------------
|
||
OpenDoors Tech Journal Information
|
||
----------------------------------------------------------------------------
|
||
|
||
Editors: Scott Burkett
|
||
Under the Nile BBS
|
||
1:3613/12@fidonet.org
|
||
Scott.Burkett@f12.n3613.z1.fidonet.org (Internet EMail)
|
||
(706) 596-8126 14.4 USR
|
||
1113 29th Street
|
||
Columbus, GA 31902
|
||
|
||
Brian Pirie
|
||
BP ECOMM Systems
|
||
1:243/8@fidonet.org
|
||
brian@bpecomm.ocunix.on.ca (Internet EMail)
|
||
(613) 526-4466 14.4
|
||
1416 - 2201 Riverside Drive
|
||
Ottawa, Ontario
|
||
Canada
|
||
K1H 8K9
|
||
|
||
Published by and for programmers and users of the OpenDoors C Communications
|
||
Library and BBS Interface Kit by Pirie Enterprises. It is a compilation of
|
||
tips, reviews, and tidbits pertaining to BBS programming and general usage.
|
||
The opinions expressed in this publication do not necessarily represent those
|
||
of its editors, the OpenDoors author, or other contributors.
|
||
|
||
OBTAINING COPIES: The latest copy of the OpenDoors Tech Journal will always
|
||
be available under the magic name of TECHD (for the DOS version), and TECHW
|
||
(for the Windows .WRI version) at both of the systems listed above.
|
||
|
||
SUBMISSIONS: You are encouraged to submit articles for publication in the
|
||
journal. Please send all items to one of the afore-mentioned systems via BBS
|
||
upload or mailer file/attach.
|
||
|
||
----------------------------------------------------------------------------
|
||
->< End of The OpenDoors Tech Journal - Volume 93 Issue Number 5 ><-
|
||
----------------------------------------------------------------------------
|
||
|