This repository has been archived on 2023-08-20. You can view files and clone it, but cannot push or open issues or pull requests.
yap-6.3/packages/clib/maildrop/rfc2045/rfc2045_fromfd.c

47 lines
846 B
C
Raw Normal View History

2010-06-17 00:40:25 +01:00
/*
** Copyright 1998 - 1999 Double Precision, Inc. See COPYING for
** distribution information.
*/
/*
** $Id$
*/
#if HAVE_CONFIG_H
#include "config.h"
#endif
#include <sys/types.h>
#include "rfc2045.h"
#if HAVE_UNISTD_H
#include <unistd.h>
#endif
#ifdef __WINDOWS__
#include <io.h>
#define read _read
#define lseek _lseek
#endif
/* Convert a message to the RFC2045 structure */
struct rfc2045 *rfc2045_fromfd(int fd)
{
struct rfc2045 *rfc;
char buf[BUFSIZ];
int n;
off_t orig_pos;
if ((orig_pos=lseek(fd, 0L, SEEK_CUR)) == (off_t)-1) return (NULL);
if (lseek(fd, (off_t)0, SEEK_SET) == (off_t)-1) return (NULL);
if ((rfc=rfc2045_alloc()) == 0) return (NULL);
while ((n=read(fd, buf, sizeof(buf))) > 0)
rfc2045_parse(rfc, buf, n);
if (lseek(fd, orig_pos, SEEK_SET) == (off_t)-1)
{
rfc2045_free(rfc);
rfc=0;
}
return (rfc);
}