Back to index

citadel  8.12
Defines | Functions
serv_newuser.c File Reference
#include "sysdep.h"
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
#include <pwd.h>
#include <errno.h>
#include <sys/types.h>
#include <time.h>
#include <sys/wait.h>
#include <string.h>
#include <limits.h>
#include "ctdl_module.h"
#include "citadel.h"
#include "server.h"
#include "citserver.h"
#include "support.h"
#include "config.h"
#include "user_ops.h"
#include "database.h"
#include "msgbase.h"

Go to the source code of this file.


#define NEWUSERGREETINGS   "New User Greetings"


void CopyNewUserGreetings (void)

Define Documentation

#define NEWUSERGREETINGS   "New User Greetings"

Definition at line 25 of file serv_newuser.c.

Function Documentation

void CopyNewUserGreetings ( void  )

Definition at line 72 of file serv_newuser.c.

       struct cdbdata *cdbfr;
       long *msglist = NULL;
       int num_msgs = 0;
       char mailboxname[ROOMNAMELEN];

       /* Only do this for new users. */
       if (CC->user.timescalled != 1) return;

       /* This user's mailbox. */
       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.
       if (CtdlGetRoom(&CC->room, NEWUSERGREETINGS) != 0) return;
       if ((CC->room.QRflags & QR_PRIVATE) == 0) return;

       cdbfr = cdb_fetch(CDB_MSGLISTS, &CC->room.QRnumber, sizeof(long));

       if (cdbfr != NULL) {
              msglist = malloc(cdbfr->len);
              memcpy(msglist, cdbfr->ptr, cdbfr->len);
              num_msgs = cdbfr->len / sizeof(long);

       if (num_msgs > 0) {
              CtdlSaveMsgPointersInRoom(mailboxname, msglist, num_msgs, 1, NULL, 0);

       /* Now free the memory we used, and go away. */
       if (msglist != NULL) free(msglist);

Here is the call graph for this function:

Here is the caller graph for this function:

CTDL_MODULE_INIT ( newuser  )

Definition at line 109 of file serv_newuser.c.

       if (!threading)
              CtdlRegisterSessionHook(CopyNewUserGreetings, EVT_LOGIN, PRIO_LOGIN + 1);
       /* return our module name for the log */
       return "newuser";

Here is the call graph for this function: