/* * Copyright (c) 2004 David Parsons. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgement: * * This product includes software developed by David Parsons * (orc@pell.chi.il.us) * * 4. My name may not be used to endorse or promote products derived * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY DAVID PARSONS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DAVID * PARSONS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF * THE POSSIBILITY OF SUCH DAMAGE. * * The licence and distribution terms for any publically available * version or derivative of this code cannot be changed. i.e. this * code cannot simply be copied and put under another distribution * licence [including the GNU Public Licence.] */ #ifndef __SMTP_H #define __SMTP_H /* This is Larry McVoy's fault */ #define unless(x) if (!(x)) /* Magic smtp connection structure */ typedef struct { int fd; char *host; int port; int flags; #define SMTP_DBG 0x01 #define SMTP_EOF 0x02 #define SMTP_VERBOSE 0x04 } SMTP; #define neof(x) ((x)->flags & SMTP_EOF) #define ndbg(x) ((x)->flags & SMTP_DBG) #define nverbose(x) ((x)->flags & SMTP_VERBOSE) #define setndbg(x) ((x)->flags |= SMTP_DBG) #define setnverbose(x) ((x)->flags |= SMTP_VERBOSE) #define clearneof(x) ((x)->flags &= ~SMTP_EOF) SMTP* smtp(char*); char* readline(int, int*); char* nreadline(SMTP*); void nwriteline(SMTP*,char*); int nreply(SMTP*); void nfree(SMTP*); #endif/*__SMTP_H*/