#include <sys/wait.h>
#include <string.h>
+#ifdef HAVE_STRINGS_H
+#include <strings.h>
+#endif
#include <limits.h>
void CtdlPutUser(struct ctdluser *usbuf);
void CtdlPutUserLock(struct ctdluser *usbuf);
int CtdlGetUserByNumber(struct ctdluser *usbuf, long number);
+void CtdlGetRelationship(struct visit *vbuf,
+ struct ctdluser *rel_user,
+ struct ctdlroom *rel_room);
+void CtdlSetRelationship(struct visit *newvisit,
+ struct ctdluser *rel_user,
+ struct ctdlroom *rel_room);
+void CtdlMailboxName(char *buf, size_t n, const struct ctdluser *who, const char *prefix);
#endif /* CTDL_MODULE_H */
#define PRODID "-//Citadel//NONSGML Citadel Calendar//EN"
-#include "sysdep.h"
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <limits.h>
-#include <stdio.h>
-#include <string.h>
-#ifdef HAVE_STRINGS_H
-#include <strings.h>
-#endif
+#include "ctdl_module.h"
+
#include <libical/ical.h>
-#include <libcitadel.h>
-#include "citadel.h"
-#include "server.h"
-#include "citserver.h"
-#include "support.h"
-#include "config.h"
-#include "user_ops.h"
+
#include "msgbase.h"
#include "internet_addressing.h"
#include "serv_calendar.h"
#include "euidindex.h"
-#include "ctdl_module.h"
#include "ical_dezonify.h"
icalcomponent_free(original_event); /* Don't need this anymore. */
if (serialized_event == NULL) return(2);
- MailboxName(roomname, sizeof roomname, &CC->user, USERCALENDARROOM);
+ CtdlMailboxName(roomname, sizeof roomname, &CC->user, USERCALENDARROOM);
message_text = malloc(strlen(serialized_event) + SIZ);
if (message_text != NULL) {
return;
}
- MailboxName(calendar_room_name, sizeof calendar_room_name,
+ CtdlMailboxName(calendar_room_name, sizeof calendar_room_name,
&usbuf, USERCALENDARROOM);
strcpy(hold_rm, CC->room.QRname); /* save current room */
*/
/* First determine if this is our room */
- MailboxName(roomname, sizeof roomname, &CC->user, USERCALENDARROOM);
+ CtdlMailboxName(roomname, sizeof roomname, &CC->user, USERCALENDARROOM);
if (strcasecmp(roomname, CC->room.QRname)) {
return(0); /* Not the Calendar room -- don't do anything. */
}
while (cdboi = cdb_next_item(CDB_OPENID), cdboi != NULL) {
if (cdboi->len > sizeof(long)) {
memcpy(&usernum, cdboi->ptr, sizeof(long));
- if (getuserbynumber(&usbuf, usernum) != 0) {
+ if (CtdlGetUserByNumber(&usbuf, usernum) != 0) {
deleteme = strdup(cdboi->ptr + sizeof(long)),
Put(keys, deleteme, strlen(deleteme), deleteme, generic_free_handler);
}
// Get the user
CtdlGetUser(&user, username);
- MailboxName(configRoomName, sizeof configRoomName, &user, USERCONFIGROOM);
+ CtdlMailboxName(configRoomName, sizeof configRoomName, &user, USERCONFIGROOM);
// Fill qrbuf
CtdlGetRoom(&qrbuf, configRoomName);
/* Do something really, really stoopid here. Raid the room on ourselves,
/* Then try a mailbox name match */
if (c != 0) {
- MailboxName(augmented_roomname, sizeof augmented_roomname,
+ CtdlMailboxName(augmented_roomname, sizeof augmented_roomname,
&CC->user, towhere);
c = CtdlGetRoom(&QRscratch, augmented_roomname);
if (c == 0)
/* Then try a mailbox name match */
if (c != 0) {
- MailboxName(augmented_roomname, sizeof augmented_roomname,
+ CtdlMailboxName(augmented_roomname, sizeof augmented_roomname,
&CC->user, roomname);
c = CtdlGetRoom(&QRscratch, augmented_roomname);
if (c == 0)
else if (!strcasecmp(el, "u_fullname")) safestrncpy(usbuf.fullname, migr_chardata, sizeof usbuf.fullname);
else if (!strcasecmp(el, "user")) {
- putuser(&usbuf);
+ CtdlPutUser(&usbuf);
CtdlLogPrintf(CTDL_INFO, "Imported user: %s\n", usbuf.fullname);
}
if (CC->user.timescalled != 1) return;
/* This user's mailbox. */
- MailboxName(mailboxname, sizeof mailboxname, &CC->user, MAILROOM);
+ CtdlMailboxName(mailboxname, sizeof mailboxname, &CC->user, MAILROOM);
/* Go to the source room ... bail out silently if it's not there,
* or if it's not private.
while (cdboi = cdb_next_item(CDB_OPENID), cdboi != NULL) {
if (cdboi->len > sizeof(long)) {
memcpy(&usernum, cdboi->ptr, sizeof(long));
- if (getuserbynumber(&usbuf, usernum) != 0) {
+ if (CtdlGetUserByNumber(&usbuf, usernum) != 0) {
usbuf.fullname[0] = 0;
}
cprintf("%s|%ld|%s\n",
CtdlLogPrintf(CTDL_DEBUG, "The desired account name is <%s>\n", desired_name);
- if (!getuser(&CC->user, desired_name)) {
+ if (!CtdlGetUser(&CC->user, desired_name)) {
CtdlLogPrintf(CTDL_DEBUG, "<%s> is already taken by another user.\n", desired_name);
memset(&CC->user, 0, sizeof(struct ctdluser));
return(5);
memcpy(&usernum, cdboi->ptr, sizeof(long));
cdb_free(cdboi);
- if (!getuserbynumber(&CC->user, usernum)) {
+ if (!CtdlGetUserByNumber(&CC->user, usernum)) {
/* Now become the user we just created */
safestrncpy(CC->curr_user, CC->user.fullname, sizeof CC->curr_user);
do_login();
extract_token(pw, argbuf, 0, '|', sizeof pw);
- if (getuser(&CC->user, CC->curr_user))
+ if (CtdlGetUser(&CC->user, CC->curr_user))
{
cprintf("%d Unable to find user record for %s.\n", ERROR + NO_SUCH_USER, CC->curr_user);
return;
return;
}
- if (getuser(&CC->user, CC->curr_user))
+ if (CtdlGetUser(&CC->user, CC->curr_user))
{
cprintf("-ERR No such user.\r\n");
return;
/* Set last read pointer */
if (POP3->num_msgs > 0) {
- lgetuser(&CC->user, CC->curr_user);
+ CtdlGetUserLock(&CC->user, CC->curr_user);
CtdlGetRelationship(&vbuf, &CC->user, &CC->room);
snprintf(vbuf.v_seen, sizeof vbuf.v_seen, "*:%ld",
POP3->msgs[POP3->num_msgs-1].msgnum);
CtdlSetRelationship(&vbuf, &CC->user, &CC->room);
- lputuser(&CC->user);
+ CtdlPutUserLock(&CC->user);
}
}
char usernamekey[USERNAME_SIZE];
/** If we have a user called Citadel rename them to SYS_Citadel */
- if (getuser(&usbuf, "Citadel") == 0)
+ if (CtdlGetUser(&usbuf, "Citadel") == 0)
{
rename_user("Citadel", "SYS_Citadel");
}
- while (getuserbynumber(&usbuf, 0) == 0)
+ while (CtdlGetUserByNumber(&usbuf, 0) == 0)
{
/* delete user with number 0 and no name */
if (IsEmptyStr(usbuf.fullname))
else
{ /* temporarily set this user to -1 */
usbuf.usernum = -1;
- putuser(&usbuf);
+ CtdlPutUser(&usbuf);
}
}
/** Make sure user SYS_* is user 0 */
- while (getuserbynumber(&usbuf, -1) == 0)
+ while (CtdlGetUserByNumber(&usbuf, -1) == 0)
{
if (strncmp(usbuf.fullname, "SYS_", 4))
{ /** Delete any user 0 that doesn't start with SYS_ */
else
{
usbuf.usernum = 0;
- putuser(&usbuf);
+ CtdlPutUser(&usbuf);
}
}
}
while (uplist != NULL) {
- if (lgetuser(&us, uplist->user) == 0) {
+ if (CtdlGetUserLock(&us, uplist->user) == 0) {
CtdlLogPrintf(CTDL_DEBUG, "Processing <%s>...\n", uplist->user);
if (us.uid == CTDLUID) {
us.uid = (-1);
}
- lputuser(&us);
+ CtdlPutUserLock(&us);
}
ptr = uplist;
memcpy(&usbuf, &CC->user, sizeof(struct ctdluser));
}
- else if (getuserbynumber(&usbuf, what_user) == 0) {
+ else if (CtdlGetUserByNumber(&usbuf, what_user) == 0) {
/* We fetched a valid user record */
}
if ( (strlen(CC->room.QRname) >= 12) && (!strcasecmp(&CC->room.QRname[11], USERCONFIGROOM)) ) {
is_UserConf = 1; /* It's someone's config room */
}
- MailboxName(roomname, sizeof roomname, &CC->user, USERCONFIGROOM);
+ CtdlMailboxName(roomname, sizeof roomname, &CC->user, USERCONFIGROOM);
if (!strcasecmp(CC->room.QRname, roomname)) {
is_UserConf = 1;
is_MY_UserConf = 1; /* It's MY config room */
* Assume they don't need validating.
*/
if (CC->user.axlevel >= 6) {
- lgetuser(&CC->user, CC->curr_user);
+ CtdlGetUserLock(&CC->user, CC->curr_user);
CC->user.flags |= US_REGIS;
- lputuser(&CC->user);
+ CtdlPutUserLock(&CC->user);
return (0);
}
set_mm_valid();
/* ...which also means we need to flag the user */
- lgetuser(&CC->user, CC->curr_user);
+ CtdlGetUserLock(&CC->user, CC->curr_user);
CC->user.flags |= (US_REGIS|US_NEEDVALID);
- lputuser(&CC->user);
+ CtdlPutUserLock(&CC->user);
return(0);
}
long VCmsgnum;
strcpy(hold_rm, CC->room.QRname); /* save current room */
- MailboxName(config_rm, sizeof config_rm, u, USERCONFIGROOM);
+ CtdlMailboxName(config_rm, sizeof config_rm, u, USERCONFIGROOM);
if (CtdlGetRoom(&CC->room, config_rm) != 0) {
CtdlGetRoom(&CC->room, hold_rm);
return;
}
- if (getuser(&usbuf, who) != 0) {
+ if (CtdlGetUser(&usbuf, who) != 0) {
cprintf("%d '%s' not found.\n", ERROR + NO_SUCH_USER, who);
return;
}
if (CtdlGetUser(&userbuf, recipient) == 0) {
// Add a flag so the Funambol module knows its mail
msg->cm_fields['W'] = strdup(recipient);
- MailboxName(actual_rm, sizeof actual_rm, &userbuf, MAILROOM);
+ CtdlMailboxName(actual_rm, sizeof actual_rm, &userbuf, MAILROOM);
CtdlSaveMsgPointerInRoom(actual_rm, newmsgid, 0, msg);
BumpNewMailCounter(userbuf.usernum);
if (!IsEmptyStr(config.c_funambol_host) || !IsEmptyStr(config.c_pager_program)) {
if (collected_addresses != NULL) {
aptr = (struct addresses_to_be_filed *)
malloc(sizeof(struct addresses_to_be_filed));
- MailboxName(actual_rm, sizeof actual_rm,
+ CtdlMailboxName(actual_rm, sizeof actual_rm,
&CCC->user, USERCONTACTSROOM);
aptr->roomname = strdup(actual_rm);
aptr->collected_addresses = collected_addresses;
char *encoded_message = NULL;
if (is_mailbox != NULL) {
- MailboxName(roomname, sizeof roomname, is_mailbox, req_room);
+ CtdlMailboxName(roomname, sizeof roomname, is_mailbox, req_room);
}
else {
safestrncpy(roomname, req_room, sizeof(roomname));
/* Then try a mailbox name match */
if (c != 0) {
- MailboxName(augmented_roomname, sizeof augmented_roomname,
+ CtdlMailboxName(augmented_roomname, sizeof augmented_roomname,
&CC->user, towhere);
c = CtdlGetRoom(&QRscratch, augmented_roomname);
if (c == 0)
if (CtdlAccessCheck(ac_logged_in)) return;
- if (getuserbynumber(&usbuf, CC->room.QRroomaide) == 0) {
+ if (CtdlGetUserByNumber(&usbuf, CC->room.QRroomaide) == 0) {
cprintf("%d %s\n", CIT_OK, usbuf.fullname);
} else {
cprintf("%d \n", CIT_OK);
* name accordingly (prepend the user number)
*/
if (new_room_type == 4) {
- MailboxName(qrbuf.QRname, sizeof qrbuf.QRname, &CC->user, new_room_name);
+ CtdlMailboxName(qrbuf.QRname, sizeof qrbuf.QRname, &CC->user, new_room_name);
}
else {
safestrncpy(qrbuf.QRname, new_room_name, sizeof qrbuf.QRname);
}
+void CtdlMailboxName(char *buf, size_t n, const struct ctdluser *who, const char *prefix)
+{
+ snprintf(buf, n, "%010ld.%s", who->usernum, prefix);
+}
+
+
void MailboxName(char *buf, size_t n, const struct ctdluser *who, const char *prefix)
{
snprintf(buf, n, "%010ld.%s", who->usernum, prefix);
* Give the user a private mailbox and a configuration room.
* Make the latter an invisible system room.
*/
- MailboxName(mailboxname, sizeof mailboxname, &usbuf, MAILROOM);
+ CtdlMailboxName(mailboxname, sizeof mailboxname, &usbuf, MAILROOM);
CtdlCreateRoom(mailboxname, 5, "", 0, 1, 1, VIEW_MAILBOX);
- MailboxName(mailboxname, sizeof mailboxname, &usbuf, USERCONFIGROOM);
+ CtdlMailboxName(mailboxname, sizeof mailboxname, &usbuf, USERCONFIGROOM);
CtdlCreateRoom(mailboxname, 5, "", 0, 1, 1, VIEW_BBS);
if (CtdlGetRoomLock(&qrbuf, mailboxname) == 0) {
qrbuf.QRflags2 |= QR2_SYSTEM;
long *msglist = NULL;
int num_msgs = 0;
- MailboxName(mailboxname, sizeof mailboxname, &CC->user, MAILROOM);
+ CtdlMailboxName(mailboxname, sizeof mailboxname, &CC->user, MAILROOM);
if (CtdlGetRoom(&mailbox, mailboxname) != 0)
return (0);
CtdlGetRelationship(&vbuf, &CC->user, &mailbox);
int NewMailCount(void);
int InitialMailCheck(void);
void put_visit(struct visit *newvisit);
-void CtdlGetRelationship(struct visit *vbuf,
- struct ctdluser *rel_user,
- struct ctdlroom *rel_room);
-void CtdlSetRelationship(struct visit *newvisit,
- struct ctdluser *rel_user,
- struct ctdlroom *rel_room);
+/* MailboxName is deprecated us CtdlMailboxName instead */
void MailboxName(char *buf, size_t n, const struct ctdluser *who,
- const char *prefix);
+ const char *prefix) __attribute__ ((deprecated));
int GenerateRelationshipIndex( char *IndexBuf,
long RoomID,
long RoomGen,