// Main Citadel header file
//
-// Copyright (c) 1987-2021 by the citadel.org team
+// Copyright (c) 1987-2022 by the citadel.org team
//
-// This program is open source software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License version 3.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-/* system customizations are in sysconfig.h */
+// This program is open source software. Use, duplication, or disclosure
+// is subject to the terms of the GNU General Public License, version 3.
+// The program is distributed without any warranty, expressed or implied.
#ifndef CITADEL_H
#define CITADEL_H
-/* #include <dmalloc.h> uncomment if using dmalloc */
+
+// Suppress these compiler warnings
+#pragma GCC diagnostic ignored "-Wcast-qual"
+#pragma GCC diagnostic ignored "-Wdiscarded-qualifiers"
+#pragma GCC diagnostic ignored "-Wformat-truncation"
#include "sysdep.h"
#include <limits.h>
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?)
- */
+// Text description of this software
+// (We used to define this ourselves, but why bother when the build tools do it for us?)
#define CITADEL PACKAGE_STRING
#define REV_LEVEL 951 // This version
#define REV_MIN 591 // Oldest compatible database
#define EXPORT_REV_MIN 931 // Oldest compatible export files
-#define LIBCITADEL_MIN 931 // Minimum required version of libcitadel
+#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
#ifdef LIBCITADEL_VERSION_NUMBER
#endif
#endif
-/*
- * This is the user name and password for the default administrator account
- * that is created when Citadel Server is started with an empty database.
- */
+// This is the user name and password for the default administrator account
+// that is created when Citadel Server is started with an empty database.
#define DEFAULT_ADMIN_USERNAME "admin"
#define DEFAULT_ADMIN_PASSWORD "citadel"
-/* Various length constants */
-
-#define ROOMNAMELEN 128 /* The size of a roomname string */
-#define USERNAME_SIZE 64 /* The size of a username string */
-#define MAX_EDITORS 5 /* number of external editors supported ; must be at least 1 */
+// Various length constants
+#define ROOMNAMELEN 128 // The size of a roomname string
+#define USERNAME_SIZE 64 // The size of a username string
+#define MAX_EDITORS 5 // number of external editors supported ; must be at least 1
-/*
- * Message expiration policy stuff
- */
+// Message expiration policy stuff
typedef struct ExpirePolicy ExpirePolicy;
struct ExpirePolicy {
int expire_mode;
#define EXPIRE_NUMMSGS 2 // Keep only latest n messages
#define EXPIRE_AGE 3 // Expire messages after n days
-
-/*
- * User records.
- */
+// User records.
typedef struct ctdluser ctdluser;
struct ctdluser { // User record
int version; // Citadel version which created this record
long lastproc_inboxrules; // msgnum of last message filtered
};
-
-/* Bits which may appear in MMflags.
- */
+// Bits which may appear in MMflags.
#define MM_VALID 4 // New users need validating
-/*
- * Room records.
- */
+// Room records.
typedef struct ctdlroom ctdlroom;
struct ctdlroom {
char QRname[ROOMNAMELEN]; // Name of room
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.
- */
+// 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
- */
+// 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.
- */
+// Floor record. The floor number is implicit in its location in the file.
typedef struct floor floor;
struct floor {
unsigned short f_flags; // flags
#define F_INUSE 1 // floor is in use
-
-/*
- * Values used internally for function call returns, etc.
- */
+// Values used internally for function call returns, etc.
#define NEWREGISTER 0 // new user to register
#define REREGISTER 1 // existing user reregistering
-/* number of items which may be handled by the CONF command */
+// number of items which may be handled by the CONF command
#define NUM_CONFIGS 71
#define TRACE syslog(LOG_DEBUG, "\033[7m Checkpoint: %s : %d \033[0m", __FILE__, __LINE__)
#define LONG_MAX 2147483647L
#endif
-/*
- * Authentication modes
- */
+// Authentication modes
#define AUTHMODE_NATIVE 0 // Native (self-contained or "black box")
#define AUTHMODE_HOST 1 // Authenticate against the host OS user database
-#define AUTHMODE_LDAP 2 // Authenticate using LDAP server with RFC 2307 schema
+#define AUTHMODE_LDAP 2 // Authenticate using LDAP server with POSIX schema
#define AUTHMODE_LDAP_AD 3 // Authenticate using LDAP server with Active Directory schema
#ifdef __cplusplus
}
#endif
-#if __GNUC__ >= 8
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wformat-truncation"
-#endif
-
-#endif /* CITADEL_H */
+#endif // CITADEL_H