This is popper.h in view mode; [Download] [Up]
/* * Copyright (c) 1989 Regents of the University of California. * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * */ /* * Copyright (c) 1997 by Qualcomm Incorporated. */ /* LINTLIBRARY */ /* * Header file for the POP programs */ #define BINMAIL_IS_SETGID 1 #ifdef POPSCO # include <sys/syslog.h> #else # include <syslog.h> #endif #include <sys/socket.h> #include "version.h" #ifdef ISC # include <sys/types.h> # include <sys/fcntl.h> # include <net/errno.h> #endif #ifdef HAVE_SYS_PARAM_H #include <sys/param.h> # if (defined(BSD) && (BSD >= 199103)) # define HAVE_UNISTD_H # define HAVE_VPRINTF # define BIND43 # endif #endif #ifdef BSDI #define BSD44_DBM #endif #ifdef BULLDB # undef DBM /* used by mts.c and ndbm.h */ # ifdef GDBM # include <gdbm.h> # else # include <ndbm.h> # endif #endif #define NULLCP ((char *) 0) #define SPACE 32 #define TAB 9 #define TRUE 1 #define FALSE 0 #define NEWLINE '\n' #define MAXUSERNAMELEN 65 #define MAXDROPLEN 64 #define MAXLINELEN 1024 #define MAXMSGLINELEN MAXLINELEN #define MAXCMDLEN 4 #define MAXPARMCOUNT 5 #define MAXPARMLEN 10 #define ALLOC_MSGS 20 #ifndef OSF1 # define POP_FACILITY LOG_LOCAL0 #else # define POP_FACILITY LOG_MAIL #endif #define POP_PRIORITY LOG_NOTICE #define POP_DEBUG LOG_DEBUG #define POP_LOGOPTS LOG_PID #ifdef POPSCO # define L_SET 0 # define L_XTND 2 #endif /* ^A */ #define MMDF_SEP_CHAR '\001' /* For performance reasons large sites should change the pop tempdrop * location to another directory other than the mail spool location. * The more files referenced in a directory, the slower the access is */ /* * The default string for HOMEDIRMAIL is "%s/.mail". You need to change * the value in pop_dropcopy.h in routine genpath() if you wish to modify * the mail drop location. */ /* Define his path to default the bulletin dir. * -DBULLDIR= "/usr/mail/bulletins" * in the make file works well or you can define BULLDIR before the #ifdef. */ #ifndef BULLDIR #define BULLDIR NULL #endif /* Defines the minimum number of bulletins a new user receives */ #define NEWBULLCNT 1 #ifndef CONTENT_LENGTH #define CONTENT_LENGTH 0 #endif /* POP_TMPSIZE needs to be big enough to hold the string * defined by POP_TMPDROP. POP_DROP and POP_TMPDROP * must be in the same filesystem. */ #define POP_TMPSIZE 256 #define POP_OK "+OK" #define POP_ERR "-ERR" #define POP_SUCCESS 1 #define POP_FAILURE 0 #define POP_TERMINATE '.' #define POP_TIMEOUT 120 /* timeout connection after this many secs */ /* UID's <= this value are not allowed to access email */ #define BLOCK_UID 10 #define DIG_SIZE 16 /* Set these to the types your OS returns if they are not already typedefed for you */ #define OFF_T off_t #define PID_T pid_t #define UID_T uid_t #define GID_T gid_t #define TIME_T time_t #define SIZE_T size_t #ifdef NeXT #undef PID_T #define PID_T int #endif #ifdef CHECK_SHELL #define WILDCARD_SHELL "/POPPER/ANY/SHELL/" #endif extern int errno; #if !(defined(BSD) && (BSD >= 199306)) extern int sys_nerr; extern char * sys_errlist[]; #ifndef __linux__ extern char * sys_siglist[]; #endif #endif extern int pop_timeout; extern int hangup; #define pop_command pop_parm[0] /* POP command is first token */ #define pop_subcommand pop_parm[1] /* POP XTND subcommand is the second token */ typedef enum { /* POP processing states */ auth1, /* Authorization: waiting for USER command */ auth2, /* Authorization: waiting for PASS command */ trans, /* Transaction */ update, /* Update: session ended, process maildrop changes */ halt, /* (Halt): stop processing and exit */ error /* (Error): something really bad happened */ } state; typedef struct { /* State information for each POP command */ state ValidCurrentState; /* The operating state of the command */ char * command; /* The POP command */ int min_parms; /* Minimum number of parms for the command */ int max_parms; /* Maximum number of parms for the command */ int (*function) (); /* The function that process the command */ state result[2]; /* The resulting state after command processing */ #define success_state result[0] /* State when a command succeeds */ } state_table; typedef struct { /* Table of extensions */ char * subcommand; /* The POP XTND subcommand */ int min_parms; /* Minimum number of parms for the subcommand */ int max_parms; /* Maximum number of parms for the subcommand */ int (*function) (); /* The function that processes the subcommand */ } xtnd_table; typedef struct { /* Message information */ int number; /* Message number relative to the beginning of list */ long length; /* Length of message in bytes */ int lines; /* Number of (null-terminated) lines in the message */ int body_lines; /* Number of (null-terminated) lines in the body */ long offset; /* Offset from beginning of file */ int del_flag; /* Flag indicating if message is marked for deletion */ int retr_flag; /* Flag indicating if message was retrieved */ int orig_retr_state; /* What was the state at the start of this session. Used for RSET cmd. */ char *uidl_str; /* Cache of the UIDL str for faster access */ } MsgInfoList; typedef struct { /* POP parameter block */ int debug; /* Debugging requested */ int xmitting; /* =1 xtnd xmit started */ int stats; /* Stats requested */ int dirty; /* Any mailbox changes? */ int kerberos; /* Flag to enable kerberos authentication */ int server_mode; /* Default at compile time */ char * myname; /* The name of this POP daemon program */ char * myhost; /* The name of our host computer */ char * client; /* Canonical name of client computer */ char * ipaddr; /* Dotted-notation format of client IP address */ unsigned short ipport; /* Client port for privileged operations */ char user[MAXUSERNAMELEN]; /* Name of the POP user */ state CurrentState; /* The current POP operational state */ MsgInfoList * mlp; /* Message information list */ int msg_count; /* Number of messages in the maildrop */ int msgs_deleted; /* Number of messages flagged for deletion */ int last_msg; /* Last message touched by the user */ long bytes_deleted; /* Number of maildrop bytes flagged for deletion */ char drop_name[MAXDROPLEN]; /* The name of the user's maildrop */ char temp_drop[MAXDROPLEN]; /* The name of the user's temporary maildrop */ long drop_size; /* Size of the maildrop in bytes */ long spool_end; /* Offset of the end of the mailspool */ FILE * drop; /* (Temporary) mail drop */ FILE * input; /* Input TCP/IP communication stream */ FILE * output; /* Output TCP/IP communication stream */ FILE * trace; /* Debugging trace file */ FILE * hold; /* In SERVER_MODE, this value holds the drop FILE */ char * pop_parm[MAXPARMCOUNT]; /* Parse POP parameter list */ int parm_count; /* Number of parameters in parsed list */ char * bulldir; /* Bulletin directory */ #ifdef BULLDB #ifdef GDBM GDBM_FILE bull_db; #else DBM * bull_db; /* Central Bulletin Database */ #endif #endif char * mmdf_separator; /* string between messages */ char md5str[BUFSIZ]; /* String used with the shared secret to create the md5 digest */ } POP; #ifdef KERBEROS #ifndef KERBEROS_SERVICE # define KERBEROS_SERVICE "rcmd" #endif #ifdef SOLARIS2 # include <kerberos/krb.h> #else # ifdef BSDI # include <kerberosIV/des.h> # include <kerberosIV/krb.h> # else # include <krb.h> # endif #endif extern AUTH_DAT kdata; #endif /* KERBEROS */ #if defined(AUTHFILE) extern int checkauthfile(); #endif #if defined(NONAUTHFILE) extern int checknonauthfile(); #endif extern int pop_dele(); extern int pop_last(); extern int pop_list(); extern int pop_pass(); extern int pop_rpop(); extern int pop_apop(); extern int pop_auth(); extern int pop_quit(); extern int pop_rset(); extern int pop_send(); extern int pop_stat(); extern int pop_updt(); extern int pop_user(); extern int pop_xtnd(); extern int pop_xmit(); extern int pop_xmit_recv(); extern int pop_xmit_exec(); extern int pop_xlst(); extern int pop_uidl(); extern int pop_euidl(); extern int isfromline(); extern int genpath(); extern char *pwerrmsg; #define pop_auth_fail pop_msg /* extern int pop_auth_fail(); */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.