Mail-Cclient

 view release on metacpan or  search on metacpan

Cclient.xs  view on Meta::CPAN

mailstream_sequence(stream)
	Mail::Cclient stream

unsigned int
mailstream_rdonly(stream)
	Mail::Cclient stream

unsigned int
mailstream_anonymous(stream)
	Mail::Cclient stream

unsigned int
mailstream_halfopen(stream)
	Mail::Cclient stream

unsigned int
mailstream_perm_seen(stream)
	Mail::Cclient stream

unsigned int
mailstream_perm_deleted(stream)
	Mail::Cclient stream

unsigned int
mailstream_perm_flagged(stream)
	Mail::Cclient stream

unsigned int
mailstream_perm_answered(stream)
	Mail::Cclient stream

unsigned int
mailstream_perm_draft(stream)
	Mail::Cclient stream

unsigned int
mailstream_kwd_create(stream)
	Mail::Cclient stream

unsigned long
mailstream_nmsgs(stream)
	Mail::Cclient stream

unsigned long
mailstream_recent(stream)
	Mail::Cclient stream

unsigned long
mailstream_uid_validity(stream)
	Mail::Cclient stream

unsigned long
mailstream_uid_last(stream)
	Mail::Cclient stream

void
mailstream_perm_user_flags(stream)
	Mail::Cclient stream
    PREINIT:
	int i;
    PPCODE:
	for (i = 0; i < NUSERFLAGS; i++)
	    if (stream->perm_user_flags & (1 << i))
		XPUSHs(sv_2mortal(newSVpv(stream->user_flags[i], 0)));

MODULE = Mail::Cclient	PACKAGE = Mail::Cclient	PREFIX = mail_

 #
 # Message Data Fetching Functions
 #

void
mail_fetchfast(stream, sequence, ...)
	Mail::Cclient	stream
	char *		sequence
    PREINIT:
	int i;
	long flags = 0;
    PPCODE:
	for (i = 2; i < items; i++) {
	    char *flag = SvPV(ST(i), na);
	    if (strEQ(flag, "uid"))
		flags |= FT_UID;
	    else {
		croak("unknown flag \"%s\" passed to Mail::Cclient::fetchfast",
		      flag);
	    }
	}
	mail_fetchfast_full(stream, sequence, flags);
	ST(0) = &sv_yes;

void
mail_fetchflags(stream, sequence, ...)
	Mail::Cclient	stream
	char *		sequence
    PREINIT:
	int i;
	long flags = 0;
    PPCODE:
	for (i = 2; i < items; i++) {
	    char *flag = SvPV(ST(i), na);
	    if (strEQ(flag, "uid"))
		flags |= FT_UID;
	    else {
		croak("unknown flag \"%s\" passed to"
		      " Mail::Cclient::fetchflags", flag);
	    }
	}
	mail_fetchflags_full(stream, sequence, flags);
	ST(0) = &sv_yes;

void
mail_fetchstructure(stream, msgno, ...)
	Mail::Cclient	stream
	unsigned long	msgno
    PREINIT:
	int i;
	long flags = 0;
	ENVELOPE *e;
	BODY **bodyp = 0;
	BODY *body = 0;
    PPCODE:
	for (i = 2; i < items; i++) {
	    char *flag = SvPV(ST(i), na);
	    if (strEQ(flag, "uid"))
		flags |= FT_UID;
	    else {
		croak("unknown flag \"%s\" passed to"
		      " Mail::Cclient::fetchstructure", flag);
	    }
	}
	if (GIMME == G_ARRAY)
	    bodyp = &body;
	e = mail_fetchstructure_full(stream, msgno, bodyp, flags);
	XPUSHs(sv_2mortal(make_envelope(e)));
	if (GIMME == G_ARRAY)
	    XPUSHs(sv_2mortal(make_body(body)));

void
mail_fetchheader(stream, msgno, ...)
	Mail::Cclient	stream
	unsigned long	msgno
    PREINIT:
	int i;
	long flags = 0;
	STRINGLIST *lines = 0;
	unsigned long len;
	char *hdr;
    PPCODE:
	for (i = 2; i < items; i++) {
	    SV *sv = ST(i);
	    if (SvROK(sv)) {
		sv = (SV*)SvRV(sv);
		if (SvTYPE(sv) != SVt_PVAV) {
		    croak("reference to non-list passed to"
			  " Mail::Cclient::fetchheader");
		}
		lines = av_to_stringlist((AV*)sv);
	    }
	    else {
		char *flag = SvPV(sv, na);
		if (strEQ(flag, "uid"))
		    flags |= FT_UID;
		else if (strEQ(flag, "not"))
		    flags |= FT_NOT;
		else if (strEQ(flag, "internal"))
		    flags |= FT_INTERNAL;
		else if (strEQ(flag, "prefetchtext"))
		    flags |= FT_PREFETCHTEXT;
		else {
		    croak("unknown flag \"%s\" passed to"
			  " Mail::Cclient::fetchheader", flag);
		}
	    }
	}
	hdr = mail_fetchheader_full(stream, msgno, lines, &len, flags);
	XPUSHs(sv_2mortal(newSVpv(hdr, len)));
	if (lines)
	    mail_free_stringlist(&lines);

void
mail_fetchtext(stream, msgno, ...)
	Mail::Cclient	stream
	unsigned long	msgno
    PREINIT:
	int i;
	long flags = 0;
	unsigned long len;
	char *text;
    PPCODE:
	for (i = 2; i < items; i++) {
	    char *flag = SvPV(ST(i), na);
	    if (strEQ(flag, "uid"))
		flags |= FT_UID;
	    else if (strEQ(flag, "peek"))
		flags |= FT_NOT;
	    else if (strEQ(flag, "internal"))
		flags |= FT_INTERNAL;
	    else {
		croak("unknown flag \"%s\" passed to"
		      " Mail::Cclient::fetchtext", flag);
	    }
	}
	text = mail_fetchtext_full(stream, msgno, &len, flags);
	XPUSHs(sv_2mortal(newSVpv(text, len)));

void
mail_fetchbody(stream, msgno, section, ...)
	Mail::Cclient	stream
	unsigned long	msgno
	char *		section
    PREINIT:
	int i;
	long flags = 0;
	unsigned long len;
	char *body;
    PPCODE:
	for (i = 3; i < items; i++) {
	    char *flag = SvPV(ST(i), na);
	    if (strEQ(flag, "uid"))
		flags |= FT_UID;
	    else if (strEQ(flag, "peek"))
		flags |= FT_NOT;
	    else if (strEQ(flag, "internal"))
		flags |= FT_INTERNAL;
	    else {
		croak("unknown flag \"%s\" passed to Mail::Cclient::fetchbody",
		      flag);
	    }
	}
	body = mail_fetchbody_full(stream, msgno, section, &len, flags);
	XPUSHs(sv_2mortal(newSVpv(body, len)));

unsigned long
mail_uid(stream, msgno)
	Mail::Cclient	stream
	unsigned long	msgno

void
mail_elt(stream, msgno)
	Mail::Cclient	stream
	unsigned long	msgno
    PREINIT:
	MESSAGECACHE *elt;
    PPCODE:
	elt = mail_elt(stream, msgno);
	XPUSHs(elt ? sv_2mortal(make_elt(stream, elt)) : &sv_undef);

 #
 # Message Status Manipulation Functions
 #

void
mail_setflag(stream, sequence, flag, ...)
	Mail::Cclient	stream
	char *		sequence
	char *		flag
    PREINIT:
	int i;
	long flags = 0;
    ALIAS:
	clearflag = 1
    CODE:
	for (i = 3; i < items; i++) {
	    char *fl = SvPV(ST(i), na);
	    if (strEQ(fl, "uid"))
		flags |= ST_UID;
	    else if (strEQ(fl, "silent"))
		flags |= ST_SILENT;
	    else {
		croak("unknown flag \"%s\" passed to Mail::Cclient::%s",
		      fl, ix == 1 ? "setflag" : "clearflag");
	    }
	}
	if (ix == 1)
	    mail_clearflag_full(stream, sequence, flag, flags);
	else
	    mail_setflag_full(stream, sequence, flag, flags);


 #
 # Miscellaneous Mailbox and Message Functions
 #

long
mail_ping(stream)
	Mail::Cclient	stream

void
mail_check(stream)
	Mail::Cclient	stream

void
mail_expunge(stream)
	Mail::Cclient	stream

long
mail_copy(stream, sequence, mailbox, ...)
	Mail::Cclient	stream
	char *		sequence
	char *		mailbox
    ALIAS:
	move = 1
    PREINIT:
	int i;

Cclient.xs  view on Meta::CPAN

	    if (sv)
		mail_parameters(stream, SET_LOCKEACCESERROR, (void*)SvIV(sv));
	    else
		res_int = (int) mail_parameters(stream, GET_LOCKEACCESERROR, 0);
	} else if (strEQ(param, "LISTMAXLEVEL")) {
	    if (sv)
		mail_parameters(stream, SET_LISTMAXLEVEL, (void*)SvIV(sv));
	    else
		res_int = (int) mail_parameters(stream, GET_LISTMAXLEVEL, 0);
	} else {
	    croak("no such parameter name: %s", param);
	}
	if (sv)
	    ST(0) = &sv_yes;
	else {
	    if (res_str)
		XPUSHs(sv_2mortal(newSVpv(res_str, 0)));
	    else
		XPUSHs(sv_2mortal(newSViv(res_int)));
	}

 #
 # Utility Functions
 #

void
mail_debug(stream)
	Mail::Cclient	stream

void
mail_nodebug(stream)
	Mail::Cclient	stream

#define mail_set_sequence(stream, seq) mail_sequence(stream, seq)

long
mail_set_sequence(stream, sequence)
	Mail::Cclient	stream
	char *		sequence

#define mail_uid_set_sequence(stream, seq) mail_uid_sequence(stream, seq)

long
mail_uid_set_sequence(stream, sequence)
	Mail::Cclient	stream
	char *		sequence

MODULE = Mail::Cclient	PACKAGE = Mail::Cclient

 #
 # MIME type conversion functions
 #

void
rfc822_base64(source)
	SV *	source
    PREINIT:
	STRLEN srcl;
	unsigned long len;
	unsigned char *s;
    PPCODE:
	s = (unsigned char*)SvPV(source, srcl);
	s = rfc822_base64(s, (unsigned long)srcl, &len);
	XPUSHs(sv_2mortal(newSVpv((char*)s, (STRLEN)len)));

void
rfc822_qprint(source)
	SV *	source
    PREINIT:
	STRLEN srcl;
	unsigned long len;
	unsigned char *s;
    PPCODE:
	s = (unsigned char*)SvPV(source, srcl);
	s = rfc822_qprint(s, (unsigned long)srcl, &len);
	XPUSHs(sv_2mortal(newSVpv((char*)s, (STRLEN)len)));


 #
 # Utility functions
 #

#define DATE_BUFF_SIZE 64

char *
rfc822_date()
    PREINIT:
	static char date[DATE_BUFF_SIZE];
    CODE:
	rfc822_date(date);
	RETVAL = date;
    OUTPUT:
	RETVAL

BOOT:
#include "linkage.c"
	mailstream2sv = newHV();
	stash_Cclient = gv_stashpv("Mail::Cclient", TRUE);
	stash_Address = gv_stashpv("Mail::Cclient::Address", TRUE);
	stash_Envelope = gv_stashpv("Mail::Cclient::Envelope", TRUE);
	stash_Body = gv_stashpv("Mail::Cclient::Body", TRUE);
	stash_Elt = gv_stashpv("Mail::Cclient::Elt", TRUE);
	callback = perl_get_hv("Mail::Cclient::_callback", TRUE);
	address_fields = newRV((SV*)perl_get_hv("Mail::Cclient::"
						"Address::FIELDS", TRUE));
	envelope_fields = newRV((SV*)perl_get_hv("Mail::Cclient::"
						 "Envelope::FIELDS", TRUE));
	body_fields = newRV((SV*)perl_get_hv("Mail::Cclient::Body::FIELDS",
					     TRUE));
	elt_fields = newRV((SV*)perl_get_hv("Mail::Cclient::Elt::FIELDS",
					    TRUE));



( run in 0.819 second using v1.01-cache-2.11-cpan-71847e10f99 )