int uploading;
/* Time the last command was sent to the server */
time_t last_command_sent;
+ /* Callback for update on whether the IPC is locked */
+ void (*network_status_cb)(int state);
} CtdlIPC;
/* C constructor */
};
+struct ctdlipcfile {
+ char remote_name[PATH_MAX]; /* Filename on server */
+ char local_name[PATH_MAX]; /* Filename on client */
+ char description[80]; /* Description on server */
+ FILE *local_fd; /* Open file on client */
+ size_t size; /* Size of file in octets */
+ int upload:1; /* uploading? 0 if downloading */
+ int complete:1; /* Transfer has finished? */
+};
+
+
struct ctdlipcmisc {
long newmail; /* Number of new Mail messages */
char needregis; /* Nonzero if user needs to register */
AllAccessibleRooms,
AllPublicRooms,
};
-
+#define AllFloors -1
+enum MessageList {
+ AllMessages,
+ OldMessages,
+ NewMessages,
+ LastMessages,
+ FirstMessages,
+ MessagesGreaterThan,
+ MessagesLessThan,
+};
+enum MessageDirection {
+ ReadReverse = -1,
+ ReadForward = 1,
+};
+
/* Shared Diffie-Hellman parameters */
#define DH_P "1A74527AEE4EE2568E85D4FB2E65E18C9394B9C80C42507D7A6A0DBE9A9A54B05A9A96800C34C7AA5297095B69C88901EEFD127F969DCA26A54C0E0B5C5473EBAEB00957D2633ECAE3835775425DE66C0DE6D024DBB17445E06E6B0C78415E589B8814F08531D02FD43778451E7685541079CFFB79EF0D26EFEEBBB69D1E80383"
#define DH_G "2"
int CtdlIPCChangePassword(CtdlIPC *ipc, const char *passwd, char *cret);
int CtdlIPCKnownRooms(CtdlIPC *ipc, enum RoomList which, int floor,
struct march **listing, char *cret);
-int CtdlIPCGetConfig(CtdlIPC *ipc, struct usersupp **uret, char *cret);
-int CtdlIPCSetConfig(CtdlIPC *ipc, struct usersupp *uret, char *cret);
+int CtdlIPCGetConfig(CtdlIPC *ipc, struct user **uret, char *cret);
+int CtdlIPCSetConfig(CtdlIPC *ipc, struct user *uret, char *cret);
int CtdlIPCGotoRoom(CtdlIPC *ipc, const char *room, const char *passwd,
struct ctdlipcroom **rret, char *cret);
-int CtdlIPCGetMessages(CtdlIPC *ipc, int which, int whicharg,
- const char *mtemplate,
- long **mret, char *cret);
+int CtdlIPCGetMessages(CtdlIPC *ipc, enum MessageList which, int whicharg,
+ const char *mtemplate, unsigned long **mret, char *cret);
int CtdlIPCGetSingleMessage(CtdlIPC *ipc, long msgnum, int headers, int as_mime,
struct ctdlipcmessage **mret, char *cret);
int CtdlIPCWhoKnowsRoom(CtdlIPC *ipc, char **listing, char *cret);
int CtdlIPCServerInfo(CtdlIPC *ipc, struct CtdlServInfo *ServInfo, char *cret);
+/* int CtdlIPCReadDirectory(CtdlIPC *ipc, struct ctdlipcfile **files, char *cret); */
int CtdlIPCReadDirectory(CtdlIPC *ipc, char **listing, char *cret);
int CtdlIPCSetLastRead(CtdlIPC *ipc, long msgnum, char *cret);
int CtdlIPCInviteUserToRoom(CtdlIPC *ipc, const char *username, char *cret);
int CtdlIPCKickoutUserFromRoom(CtdlIPC *ipc, const char *username, char *cret);
-int CtdlIPCGetRoomAttributes(CtdlIPC *ipc, struct quickroom **qret, char *cret);
-int CtdlIPCSetRoomAttributes(CtdlIPC *ipc, int forget, struct quickroom *qret,
+int CtdlIPCGetRoomAttributes(CtdlIPC *ipc, struct room **qret, char *cret);
+int CtdlIPCSetRoomAttributes(CtdlIPC *ipc, int forget, struct room *qret,
char *cret);
int CtdlIPCGetRoomAide(CtdlIPC *ipc, char *cret);
int CtdlIPCSetRoomAide(CtdlIPC *ipc, const char *username, char *cret);
int CtdlIPCChangeUsername(CtdlIPC *ipc, const char *username, char *cret);
time_t CtdlIPCServerTime(CtdlIPC *ipc, char *crert);
int CtdlIPCAideGetUserParameters(CtdlIPC *ipc, const char *who,
- struct usersupp **uret, char *cret);
-int CtdlIPCAideSetUserParameters(CtdlIPC *ipc, const struct usersupp *uret, char *cret);
+ struct user **uret, char *cret);
+int CtdlIPCAideSetUserParameters(CtdlIPC *ipc, const struct user *uret, char *cret);
int CtdlIPCGetMessageExpirationPolicy(CtdlIPC *ipc, int which,
struct ExpirePolicy **policy, char *cret);
int CtdlIPCSetMessageExpirationPolicy(CtdlIPC *ipc, int which,
struct ExpirePolicy *policy, char *cret);
-int CtdlGetSystemConfig(CtdlIPC *ipc, char **listing, char *cret);
-int CtdlSetSystemConfig(CtdlIPC *ipc, const char *listing, char *cret);
-int CtdlGetSystemConfigByType(CtdlIPC *ipc, const char *mimetype,
+int CtdlIPCGetSystemConfig(CtdlIPC *ipc, char **listing, char *cret);
+int CtdlIPCSetSystemConfig(CtdlIPC *ipc, const char *listing, char *cret);
+int CtdlIPCGetSystemConfigByType(CtdlIPC *ipc, const char *mimetype,
char **listing, char *cret);
-int CtdlSetSystemConfigByType(CtdlIPC *ipc, const char *mimetype,
+int CtdlIPCSetSystemConfigByType(CtdlIPC *ipc, const char *mimetype,
const char *listing, char *cret);
-int CtdlIPCModerateMessage(CtdlIPC *ipc, long msgnum, int level, char *cret);
int CtdlIPCRequestClientLogout(CtdlIPC *ipc, int session, char *cret);
int CtdlIPCSetMessageSeen(CtdlIPC *ipc, long msgnum, int seen, char *cret);
int CtdlIPCStartEncryption(CtdlIPC *ipc, char *cret);
int CtdlIPCDirectoryLookup(CtdlIPC *ipc, const char *address, char *cret);
int CtdlIPCSpecifyPreferredFormats(CtdlIPC *ipc, char *cret, char *formats);
int CtdlIPCInternalProgram(CtdlIPC *ipc, int secret, char *cret);
+int CtdlIPCMessageBaseCheck(CtdlIPC *ipc, char **mret, char *cret);
/* ************************************************************************** */
/* Stuff below this line is not for public consumption */
/* Internals */
int starttls(CtdlIPC *ipc);
void setCryptoStatusHook(void (*hook)(char *s));
-void setLockHook(void (*hook)(int onoff));
+void CtdlIPC_SetNetworkStatusCallback(CtdlIPC *ipc, void (*hook)(int state));
/* This is all Ford's doing. FIXME: figure out what it's doing */
extern int (*error_printf)(char *s, ...);
void setIPCDeathHook(void (*hook)(void));