Moved from citadel.h to server.h
[citadel.git] / citadel / server / citadel.h
index 62dbf52f545ec0afbc9a6eff25287871b8f39c1c..b96435c9e4cf876efaa18080443a1e4e9866bde6 100644 (file)
 extern "C" {
 #endif
 
-// Text description of this software
-// (We used to define this ourselves, but why bother when the build tools do it for us?)
-#define CITADEL        "Citadel" PACKAGE_VERSION
 
-#define REV_LEVEL 956          // This version
+#define REV_LEVEL 972          // This version
 #define REV_MIN                591             // Oldest compatible database
 #define EXPORT_REV_MIN 931             // Oldest compatible export files
 #define LIBCITADEL_MIN 951             // Minimum required version of libcitadel
 #define SERVER_TYPE    0               // zero for stock Citadel; other developers please obtain SERVER_TYPE codes for your implementations
 
+// hats off to https://stackoverflow.com/questions/5459868/concatenate-int-to-string-using-c-preprocessor
+#define STR_HELPER(x) #x
+#define STR(x) STR_HELPER(x)
+#define CITADEL        "Citadel Server " STR(REV_LEVEL)
+
 #ifdef LIBCITADEL_VERSION_NUMBER
 #if LIBCITADEL_VERSION_NUMBER < LIBCITADEL_MIN
 #error libcitadel is too old.  Please upgrade it before continuing.
@@ -62,63 +64,15 @@ struct ExpirePolicy {
 #define EXPIRE_NUMMSGS         2       // Keep only latest n messages
 #define EXPIRE_AGE             3       // Expire messages after n days
 
-// User records.
-typedef struct ctdluser ctdluser;
-struct ctdluser {                      // User record
-       int version;                    // Citadel version which created this record
-       uid_t uid;                      // Associate with a unix account?
-       char password[32];              // password
-       unsigned flags;                 // See US_ flags below
-       long timescalled;               // Total number of logins
-       long posted;                    // Number of messages ever submitted
-       cit_uint8_t axlevel;            // Access level
-       long usernum;                   // User number (never recycled)
-       time_t lastcall;                // Date/time of most recent login
-       int USuserpurge;                // Purge time (in days) for user
-       char fullname[64];              // Display name (primary identifier)
-       long msgnum_bio;                // msgnum of user's profile (bio)
-       long msgnum_pic;                // msgnum of user's avatar (photo)
-       char emailaddrs[512];           // Internet email addresses
-       long msgnum_inboxrules;         // msgnum of user's inbox filtering rules
-       long lastproc_inboxrules;       // msgnum of last message filtered
-};
-
 // Bits which may appear in MMflags.
 #define MM_VALID       4               // New users need validating
 
-// Room records.
-typedef struct ctdlroom ctdlroom;
-struct ctdlroom {
-       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
-       time_t QRgen;                   // Generation number of room
-       unsigned QRflags;               // See flag values below
-       char QRdirname[15];             // Directory name, if applicable
-       long msgnum_info;               // msgnum of room banner (info file)
-       char QRfloor;                   // Which floor this room is on
-       time_t QRmtime;                 // Date/time of last post
-       struct ExpirePolicy QRep;       // Message expiration policy
-       long QRnumber;                  // Globally unique room number
-       char QRorder;                   // Sort key for room listing order
-       unsigned QRflags2;              // Additional flags
-       int QRdefaultview;              // How to display the contents
-       long msgnum_pic;                // msgnum of room picture or icon
-};
-
-// Private rooms are always flagged with QR_PRIVATE.  If neither QR_PASSWORDED
-// or QR_GUESSNAME is set, then it is invitation-only.  Passworded rooms are
-// flagged with both QR_PRIVATE and QR_PASSWORDED while guess-name rooms are
-// flagged with both QR_PRIVATE and QR_GUESSNAME.  NEVER set all three flags.
-
 // Miscellaneous
 #define MES_NORMAL     65              // Normal message
 #define MES_ANONONLY   66              // "****" header
 #define MES_ANONOPT    67              // "Anonymous" header
 
 // Floor record.  The floor number is implicit in its location in the file.
-typedef struct floor floor;
 struct floor {
        unsigned short f_flags;         // flags
        char f_name[256];               // name of floor