#include "sysdep.h"
#include "sysconfig.h"
#include "ipcdef.h"
-#define CITADEL "Citadel/UX 5.02"
-#define REV_LEVEL 501
+#define CITADEL "Citadel/UX DR19980818"
+#define REV_LEVEL 503
#define SERVER_TYPE 0 /* zero for stock Citadel/UX; other developers please
obtain SERVER_TYPE codes for your implementations */
#undef tolower
#define tolower(x) ( ((x>='A')&&(x<='Z')) ? (x+'a'-'A') : x )
-#define strucmp(lstr,rstr) struncmp(lstr,rstr,32767)
#define NEW_CONFIG
+#define strucmp(lstr,rstr) struncmp(lstr,rstr,32767)
+
/*
* The only typedef we do is an 8-bit unsigned, for screen dimensions.
* All other defs are done using standard C types. The code assumes that
*/
typedef unsigned char CIT_UBYTE;
+#define ROOMNAMELEN 128
+
struct config {
char c_nodename[16]; /* UUCP and Citadel nodename */
char c_fqdn[64]; /* Fully Qualified Domain Name */
char c_humannode[21]; /* Long name of system */
char c_phonenum[16]; /* Dialup number of system */
int c_bbsuid; /* UID of the bbs-only user */
- int c_pwcrypt; /* password encryption seed */
char c_creataide; /* room creator = room aide flag */
int c_sleeping; /* watchdog timer setting */
char c_initax; /* initial access level */
char c_regiscall; /* call number to register on */
char c_twitdetect; /* twit detect flag */
- char c_twitroom[20]; /* twit detect msg move to room */
+ char c_twitroom[ROOMNAMELEN]; /* twit detect msg move to room */
int c_defent; /* command generated by <E> key */
char c_moreprompt[80]; /* paginator prompt */
char c_restrict; /* restrict Internet mail flag */
#define HUMANNODE config.c_humannode
#define PHONENUM config.c_phonenum
#define BBSUID config.c_bbsuid
-#define PWCRYPT config.c_pwcrypt
#define CREATAIDE config.c_creataide
-#define INITAX config.c_initax
#define REGISCALL config.c_regiscall
#define TWITDETECT config.c_twitdetect
#define TWITROOM config.c_twitroom
-#define MORE_PROMPT config.c_moreprompt
#define RESTRICT_INTERNET config.c_restrict
-#define MM_FILELEN config.c_msgbase
+
+/* Defines the relationship of a user to a particular room */
+struct visit {
+ char v_roomname[ROOMNAMELEN];
+ long v_generation;
+ long v_lastseen;
+ unsigned int v_flags;
+ };
+
+#define V_FORGET 1 /* User has zapped this room */
+#define V_LOCKOUT 2 /* User is locked out of this room */
+#define V_ACCESS 4 /* Access is granted to this room */
+
+#define UA_INUSE 1
+#define UA_KNOWN 2
+#define UA_GOTOALLOWED 4
+#define UA_HASNEWMSGS 8
+#define UA_ZAPPED 16
+
+/* Defines the actual user record */
struct usersupp { /* User record */
int USuid; /* userid (==BBSUID for bbs only) */
char password[20]; /* password (for BBS-only users) */
- long lastseen[MAXROOMS]; /* Last message seen in each room */
- char generation[MAXROOMS]; /* Generation # (for private rooms) */
- char forget[MAXROOMS]; /* Forgotten generation number */
- long mailnum[MAILSLOTS]; /* Message #'s of each mail message */
- long mailpos[MAILSLOTS]; /* Disk positions of each mail */
unsigned flags; /* See US_ flags below */
int timescalled; /* Total number of logins */
int posted; /* Number of messages posted (ever) */
char fullname[26]; /* Name for Citadel messages & mail */
char axlevel; /* Access level */
- CIT_UBYTE USscreenwidth; /* Screen width */
- CIT_UBYTE USscreenheight; /* Screen height */
- char spare[1]; /* spare bytes in the user account */
- long usernum; /* Eternal (non-recycled) user num */
- long lastcall; /* Last time the user called */
+ CIT_UBYTE USscreenwidth; /* Screen width (for textmode users)*/
+ CIT_UBYTE USscreenheight; /* Screen height(for textmode users)*/
+ long usernum; /* User number (never recycled) */
+ time_t lastcall; /* Last time the user called */
char USname[30]; /* Real name (i.e. not a handle) */
char USaddr[25]; /* Street address */
char UScity[15]; /* Municipality */
char USzip[10]; /* ZIP code */
char USphone[11]; /* Voice telephone number */
char USemail[32]; /* E-mail address (elsewhere) */
- int logged_time; /* (Not yet implemented) */
- int time_limit; /* (Not yet implemented) */
};
*/
#define MM_VALID 4 /* New users need validating */
-/****************************************************************************
- * Information returned when a message is written to the message base
- */
-struct smreturn { /* Return from the send_message() */
- long smnumber; /* Message number (if sent) */
- long smpos; /* Position in file (if sent) */
- int smerror; /* Error code */
- };
-
/****************************************************************************
* Room records
*/
struct quickroom {
- char QRname[20]; /* Max. len is 19, plus null term */
+ char QRname[ROOMNAMELEN]; /* Name of room */
char QRpasswd[10]; /* Only valid if it's a private rm */
long QRroomaide; /* User number of room aide */
long QRhighest; /* Highest message NUMBER in room */
- char QRgen; /* Generation number of room */
+ long QRgen; /* Generation number of room */
unsigned QRflags; /* See flag values below */
char QRdirname[15]; /* Directory name, if applicable */
long QRinfo; /* Info file update relative to msgs*/
char QRfloor; /* Which floor this room is on */
+ time_t QRmtime; /* Date/time of last post */
};
*
****************************************************************************/
-struct fullroom {
- long FRnum[MSGSPERRM]; /* Message NUMBERS */
- long FRpos[MSGSPERRM]; /* Message POSITIONS in master file */
- };
-
-/* This structure is not 'circular'. When scrolling, each message moves
- * down a slot, and the oldest one falls off the bottom. A null message is
- * represented by the value 0L in both fields.
+/*
+ * Events which might show up in the Citadel Log
*/
-
-struct calllog {
- char CLfullname[30]; /* Name of user */
- long CLtime; /* Date/time of record */
- unsigned CLflags; /* Info on record */
- };
-
#define CL_CONNECT 8 /* Connect to server */
#define CL_LOGIN 16 /* CLfullname logged in */
#define CL_NEWUSER 32 /* CLfullname is a new user */
unsigned short f_flags; /* flags */
char f_name[256]; /* name of floor */
int f_ref_count; /* reference count */
- int f_reserved; /* for future use */
};
#define F_INUSE 1 /* floor is in use */
#define MT_CITADEL 0 /* Citadel proprietary */
#define MT_RFC822 2 /* RFC822 */
#define MT_RAW 3 /* IGnet raw format */
+
+
+
+#define BASEROOM "Lobby"
+#define MAILROOM "Mail"
+#define AIDEROOM "Aide"
+