/************************************************************************ ************************************************************************* ** NOTE: ** ** This Module is part of the ATARI ST Implementation of Parselst ** ** It should NOT be used for general reference. Please read the com- ** ** plete Disclaimer either at the TOP of PARSELST.C. ** ** Peter Glasmacher at 1:143/9 Ph (408)985-1538 ** ************************************************************************* *************************************************************************/ /*----------------------------------------------------------------------* * Nodelist Parser * * * * This module was originally written by Bob Hartman * * Sysop of FidoNet node 1:132/101 * * * * Spark Software, 427-3 Amherst St, CS 2032, Suite 232, Nashua, NH 03061* * * * This program source code is being released with the following * * provisions: * * * * 1. You are free to make changes to this source code for use on * * your own machine, however, altered source files may not be * * distributed without the consent of Spark Software. * * * * 2. You may distribute "patches" or "diff" files for any changes * * that you have made, provided that the "patch" or "diff" files are * * also sent to Spark Software for inclusion in future releases of * * the entire package. A "diff" file for the source archives may * * also contain a compiled version, provided it is clearly marked * * as not being created from the original source code. * * No other executable versions may be distributed without the * * consent of Spark Software. * * * * 3. You are free to include portions of this source code in any * * program you develop, providing: a) Credit is given to Spark * * Software for any code that may is used, and b) The resulting * * program is free to anyone wanting to use it, including commercial * * and government users. * * * * 4. There is NO technical support available for dealing with this * * source code, or the accompanying executable files. This source * * code is provided as is, with no warranty expressed or implied * * (I hate legalease). In other words, if you don't know what to * * do with it, don't use it, and if you are brave enough to use it,* * you're on your own. * * * * Spark Software may be contacted by modem at (603) 888-8179 * * (node 1:132/101) * * on the public FidoNet network, or at the address given above. * * * *-----------------------------------------------------------------------*/ typedef struct SC { int zone; int net; int node; char *script; struct SC *next; } SCTR, *SCTRP; typedef struct PW { int zone; int net; int node; char *pw; struct PW *next; } PWTR, *PWTRP; typedef struct PH { int zone; int net; int node; char *num; struct PH *next; } PHTR, *PHTRP; typedef struct BD { int zone; int net; int node; int baud; struct BD *next; } BDTR, *BDTRP; typedef struct DL { char *mstr; int mlen; char *pre; char *post; struct DL *next; } DLTR, *DLTRP; typedef struct CO { char *mstr; int mlen; int cost; int baud; struct CO *next; } COTR, *COTRP; typedef struct FN { char *fname; int private; struct FN *next; } FNLST, *FNLSTP; typedef struct ET { int zone; int net; int node; char etype; struct ET *next; } ETTR, *ETTRP; typedef struct CM { int zone; int net; int node; struct CM *next; } CMTR, *CMTRP; struct _oldnode { int number; /* node number */ int net; /* net number */ int cost; /* cost per minute to call */ int rate; /* baud rate */ char name[20]; /* node name */ char phone[40]; /* phone number */ char city[40]; /* city and state */ }; struct _node { int net; /* net number */ int number; /* node number, */ int cost; /* cost per minute to call */ char name[34]; /* node name */ char phone[40]; /* phone number */ char city[30]; /* city and state, */ char password[8]; /* warning, not necessarily null terminated */ int realcost; /* phone company's charge */ int hubnode; /* node # of this node's hub or 0 if none */ char rate; /* actual baud rate divided by 300 */ char modem; /* modem type code (see below) */ unsigned int flags1; /* set of flags (see below) */ int reserved; /* reserved */ }; /*------------------------------------------------------------------------*/ /* Values for the `flags1' field */ /*------------------------------------------------------------------------*/ #define B_hub 0x0001 /* node is a net hub 0000 0000 0000 0001 */ #define B_host 0x0002 /* node is a net host 0000 0000 0000 0010 */ #define B_region 0x0004 /* node is region coord 0000 0000 0000 0100 */ #define B_zone 0x0008 /* node is a zone coord 0000 0000 0000 1000 */ #define B_CM 0x0010 /* runs continuous mail 0000 0000 0001 0000 */ #define B_ores1 0x0020 /* reserved for Opus 0000 0000 0010 0000 */ #define B_ores2 0x0040 /* reserved for Opus 0000 0000 0100 0000 */ #define B_ores3 0x0080 /* reserved for Opus 0000 0000 1000 0000 */ #define B_ores4 0x0100 /* reserved for Opus 0000 0001 0000 0000 */ #define B_ores5 0x0200 /* reserved for Opus 0000 0010 0000 0000 */ #define B_res1 0x0400 /* reserved for non-Opus 0000 0100 0000 0000 */ #define B_res2 0x0800 /* reserved for non-Opus 0000 1000 0000 0000 */ #define B_res3 0x1000 /* reserved for non-Opus 0001 0000 0000 0000 */ #define B_res4 0x2000 /* reserved for non-Opus 0010 0000 0000 0000 */ #define B_res5 0x4000 /* reserved for non-Opus 0100 0000 0000 0000 */ #define B_res6 0x8000 /* reserved for non-Opus 1000 0000 0000 0000 */ /*------------------------------------------------------------------------*/ /* Values for the `modem' field */ /*------------------------------------------------------------------------*/ #define M_HST 0x01 /* node uses an HST 0000 0001 */ #define M_PEP 0x02 /* node uses a PEP modem 0000 0001 */ /*--------------------------------------------------------------------------*/ /* Nodelist.Idx */ /* (File is terminated by EOF) */ /*--------------------------------------------------------------------------*/ struct _ndi { int node; /* node number */ int net; /* net number */ }; /* SEAdog NETLIST.DOG format */ struct netls { int netnum; char netname[14]; char netcity[40]; int havehost; int nethost; int havegate; int netgate; long nodeptr; int numnodes; }; /* SEAdog NODELIST.DOG format */ struct nodels { int nodenum; char nodename[14]; char nodecity[40]; char nodephone[40]; int havehub; int nodehub; int nodecost; int nodebaud; }; /* SEAdog INDEX.DOG format */ struct nidxs { int idxnet; int idxnode; long netlptr; long nodelptr; long idxspace; }; /* Things most nodelists don't contain, but Binkley likes to have */ struct extrastuff { char password[8]; unsigned int flags1; char extra[6]; /* for future expansion */ }; /* QuickBBS v2.01 QNL_IDX.BBS format */ struct qidx { int zone; int net; int node; char nodetype; }; /* QuickBBS v2.01 QNL_DAT.BBS format */ struct qdat { char nodetype; int zone; int net; int node; char namesize; char name[20]; char citysize; char city[40]; char phonesize; char phone[40]; char passwordsize; char password[8]; unsigned int flags; int baudrate; int cost; }; /*----------------------------------------------------------------------* * STarNet Nodelist *-----------------------------------------------------------------------*/ struct starlist { int type; int zone; int net; int node; int rnet; int rnode; int baud; int cost; int route; char bbsname[50]; char bbsloc[30]; char bbsnumber[20]; char password[10]; int flags; char res1; char res2; char res3; char res4; }; struct dex { int type; int zone; int net; long position; char realloc[30]; char location[50]; }; /* Used for low-level I/O routines */ typedef struct { char far *wbuff; char far *wptr; unsigned int wsize; } WBUFFER, *WBUFFPTR;