Skip to content

Commit 0f2c060

Browse files
committed
Declare ext/imap constants in stubs
1 parent b2ed625 commit 0f2c060

File tree

3 files changed

+495
-190
lines changed

3 files changed

+495
-190
lines changed

ext/imap/php_imap.c

Lines changed: 11 additions & 182 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
#undef ERROR
4646
#endif
4747
#include "php_imap.h"
48-
#include "php_imap_arginfo.h"
4948

5049
#include <time.h>
5150
#include <stdio.h>
@@ -67,6 +66,15 @@ MAILSTREAM DEFAULTPROTO;
6766
#define SENDBUFLEN 16385
6867
#endif
6968

69+
#define PHP_IMAP_OPENTIMEOUT 1
70+
#define PHP_IMAP_READTIMEOUT 2
71+
#define PHP_IMAP_WRITETIMEOUT 3
72+
#define PHP_IMAP_CLOSETIMEOUT 4
73+
74+
#define SA_ALL SA_MESSAGES | SA_RECENT | SA_UNSEEN | SA_UIDNEXT | SA_UIDVALIDITY;
75+
76+
#include "php_imap_arginfo.h"
77+
7078
#if defined(__GNUC__) && __GNUC__ >= 4
7179
# define PHP_IMAP_EXPORT __attribute__ ((visibility("default")))
7280
#else
@@ -445,8 +453,6 @@ static PHP_GINIT_FUNCTION(imap)
445453
/* {{{ PHP_MINIT_FUNCTION */
446454
PHP_MINIT_FUNCTION(imap)
447455
{
448-
unsigned long sa_all = SA_MESSAGES | SA_RECENT | SA_UNSEEN | SA_UIDNEXT | SA_UIDVALIDITY;
449-
450456
REGISTER_INI_ENTRIES();
451457

452458
#ifndef PHP_WIN32
@@ -487,8 +493,7 @@ PHP_MINIT_FUNCTION(imap)
487493
imap_object_handlers.free_obj = imap_object_destroy;
488494
imap_object_handlers.clone_obj = NULL;
489495

490-
/* lets allow NIL */
491-
REGISTER_LONG_CONSTANT("NIL", NIL, CONST_PERSISTENT | CONST_CS | CONST_DEPRECATED);
496+
register_php_imap_symbols(module_number);
492497

493498
/* plug in our gets */
494499
mail_parameters(NIL, SET_GETS, (void *) NIL);
@@ -499,182 +504,6 @@ PHP_MINIT_FUNCTION(imap)
499504
mail_parameters(NIL, SET_WRITETIMEOUT, (void *) FG(default_socket_timeout));
500505
mail_parameters(NIL, SET_CLOSETIMEOUT, (void *) FG(default_socket_timeout));
501506

502-
/* timeout constants */
503-
REGISTER_LONG_CONSTANT("IMAP_OPENTIMEOUT", 1, CONST_PERSISTENT | CONST_CS);
504-
REGISTER_LONG_CONSTANT("IMAP_READTIMEOUT", 2, CONST_PERSISTENT | CONST_CS);
505-
REGISTER_LONG_CONSTANT("IMAP_WRITETIMEOUT", 3, CONST_PERSISTENT | CONST_CS);
506-
REGISTER_LONG_CONSTANT("IMAP_CLOSETIMEOUT", 4, CONST_PERSISTENT | CONST_CS);
507-
508-
/* Open Options */
509-
510-
REGISTER_LONG_CONSTANT("OP_DEBUG", OP_DEBUG, CONST_PERSISTENT | CONST_CS);
511-
/* debug protocol negotiations */
512-
REGISTER_LONG_CONSTANT("OP_READONLY", OP_READONLY, CONST_PERSISTENT | CONST_CS);
513-
/* read-only open */
514-
REGISTER_LONG_CONSTANT("OP_ANONYMOUS", OP_ANONYMOUS, CONST_PERSISTENT | CONST_CS);
515-
/* anonymous open of newsgroup */
516-
REGISTER_LONG_CONSTANT("OP_SHORTCACHE", OP_SHORTCACHE, CONST_PERSISTENT | CONST_CS);
517-
/* short (elt-only) caching */
518-
REGISTER_LONG_CONSTANT("OP_SILENT", OP_SILENT, CONST_PERSISTENT | CONST_CS);
519-
/* don't pass up events (internal use) */
520-
REGISTER_LONG_CONSTANT("OP_PROTOTYPE", OP_PROTOTYPE, CONST_PERSISTENT | CONST_CS);
521-
/* return driver prototype */
522-
REGISTER_LONG_CONSTANT("OP_HALFOPEN", OP_HALFOPEN, CONST_PERSISTENT | CONST_CS);
523-
/* half-open (IMAP connect but no select) */
524-
REGISTER_LONG_CONSTANT("OP_EXPUNGE", OP_EXPUNGE, CONST_PERSISTENT | CONST_CS);
525-
/* silently expunge recycle stream */
526-
REGISTER_LONG_CONSTANT("OP_SECURE", OP_SECURE, CONST_PERSISTENT | CONST_CS);
527-
/* don't do non-secure authentication */
528-
529-
/*
530-
PHP re-assigns CL_EXPUNGE a custom value that can be used as part of the imap_open() bitfield
531-
because it seems like a good idea to be able to indicate that the mailbox should be
532-
automatically expunged during imap_open in case the script get interrupted and it doesn't get
533-
to the imap_close() where this option is normally placed. If the c-client library adds other
534-
options and the value for this one conflicts, simply make PHP_EXPUNGE higher at the top of
535-
this file
536-
*/
537-
REGISTER_LONG_CONSTANT("CL_EXPUNGE", PHP_EXPUNGE, CONST_PERSISTENT | CONST_CS);
538-
/* expunge silently */
539-
540-
/* Fetch options */
541-
542-
REGISTER_LONG_CONSTANT("FT_UID", FT_UID, CONST_PERSISTENT | CONST_CS);
543-
/* argument is a UID */
544-
REGISTER_LONG_CONSTANT("FT_PEEK", FT_PEEK, CONST_PERSISTENT | CONST_CS);
545-
/* peek at data */
546-
REGISTER_LONG_CONSTANT("FT_NOT", FT_NOT, CONST_PERSISTENT | CONST_CS);
547-
/* NOT flag for header lines fetch */
548-
REGISTER_LONG_CONSTANT("FT_INTERNAL", FT_INTERNAL, CONST_PERSISTENT | CONST_CS);
549-
/* text can be internal strings */
550-
REGISTER_LONG_CONSTANT("FT_PREFETCHTEXT", FT_PREFETCHTEXT, CONST_PERSISTENT | CONST_CS);
551-
/* IMAP prefetch text when fetching header */
552-
553-
/* Flagging options */
554-
555-
REGISTER_LONG_CONSTANT("ST_UID", ST_UID, CONST_PERSISTENT | CONST_CS);
556-
/* argument is a UID sequence */
557-
REGISTER_LONG_CONSTANT("ST_SILENT", ST_SILENT, CONST_PERSISTENT | CONST_CS);
558-
/* don't return results */
559-
REGISTER_LONG_CONSTANT("ST_SET", ST_SET, CONST_PERSISTENT | CONST_CS);
560-
/* set vs. clear */
561-
562-
/* Copy options */
563-
564-
REGISTER_LONG_CONSTANT("CP_UID", CP_UID, CONST_PERSISTENT | CONST_CS);
565-
/* argument is a UID sequence */
566-
REGISTER_LONG_CONSTANT("CP_MOVE", CP_MOVE, CONST_PERSISTENT | CONST_CS);
567-
/* delete from source after copying */
568-
569-
/* Search/sort options */
570-
571-
REGISTER_LONG_CONSTANT("SE_UID", SE_UID, CONST_PERSISTENT | CONST_CS);
572-
/* return UID */
573-
REGISTER_LONG_CONSTANT("SE_FREE", SE_FREE, CONST_PERSISTENT | CONST_CS);
574-
/* free search program after finished */
575-
REGISTER_LONG_CONSTANT("SE_NOPREFETCH", SE_NOPREFETCH, CONST_PERSISTENT | CONST_CS);
576-
/* no search prefetching */
577-
REGISTER_LONG_CONSTANT("SO_FREE", SO_FREE, CONST_PERSISTENT | CONST_CS);
578-
/* free sort program after finished */
579-
REGISTER_LONG_CONSTANT("SO_NOSERVER", SO_NOSERVER, CONST_PERSISTENT | CONST_CS);
580-
/* don't do server-based sort */
581-
582-
/* Status options */
583-
584-
REGISTER_LONG_CONSTANT("SA_MESSAGES", SA_MESSAGES , CONST_PERSISTENT | CONST_CS);
585-
/* number of messages */
586-
REGISTER_LONG_CONSTANT("SA_RECENT", SA_RECENT, CONST_PERSISTENT | CONST_CS);
587-
/* number of recent messages */
588-
REGISTER_LONG_CONSTANT("SA_UNSEEN", SA_UNSEEN , CONST_PERSISTENT | CONST_CS);
589-
/* number of unseen messages */
590-
REGISTER_LONG_CONSTANT("SA_UIDNEXT", SA_UIDNEXT, CONST_PERSISTENT | CONST_CS);
591-
/* next UID to be assigned */
592-
REGISTER_LONG_CONSTANT("SA_UIDVALIDITY", SA_UIDVALIDITY , CONST_PERSISTENT | CONST_CS);
593-
/* UID validity value */
594-
REGISTER_LONG_CONSTANT("SA_ALL", sa_all, CONST_PERSISTENT | CONST_CS);
595-
/* get all status information */
596-
597-
/* Bits for mm_list() and mm_lsub() */
598-
599-
REGISTER_LONG_CONSTANT("LATT_NOINFERIORS", LATT_NOINFERIORS , CONST_PERSISTENT | CONST_CS);
600-
REGISTER_LONG_CONSTANT("LATT_NOSELECT", LATT_NOSELECT, CONST_PERSISTENT | CONST_CS);
601-
REGISTER_LONG_CONSTANT("LATT_MARKED", LATT_MARKED, CONST_PERSISTENT | CONST_CS);
602-
REGISTER_LONG_CONSTANT("LATT_UNMARKED", LATT_UNMARKED , CONST_PERSISTENT | CONST_CS);
603-
604-
#ifdef LATT_REFERRAL
605-
REGISTER_LONG_CONSTANT("LATT_REFERRAL", LATT_REFERRAL, CONST_PERSISTENT | CONST_CS);
606-
#endif
607-
608-
#ifdef LATT_HASCHILDREN
609-
REGISTER_LONG_CONSTANT("LATT_HASCHILDREN", LATT_HASCHILDREN, CONST_PERSISTENT | CONST_CS);
610-
#endif
611-
612-
#ifdef LATT_HASNOCHILDREN
613-
REGISTER_LONG_CONSTANT("LATT_HASNOCHILDREN", LATT_HASNOCHILDREN, CONST_PERSISTENT | CONST_CS);
614-
#endif
615-
616-
/* Sort functions */
617-
618-
REGISTER_LONG_CONSTANT("SORTDATE", SORTDATE , CONST_PERSISTENT | CONST_CS);
619-
/* date */
620-
REGISTER_LONG_CONSTANT("SORTARRIVAL", SORTARRIVAL , CONST_PERSISTENT | CONST_CS);
621-
/* arrival date */
622-
REGISTER_LONG_CONSTANT("SORTFROM", SORTFROM , CONST_PERSISTENT | CONST_CS);
623-
/* from */
624-
REGISTER_LONG_CONSTANT("SORTSUBJECT", SORTSUBJECT , CONST_PERSISTENT | CONST_CS);
625-
/* subject */
626-
REGISTER_LONG_CONSTANT("SORTTO", SORTTO , CONST_PERSISTENT | CONST_CS);
627-
/* to */
628-
REGISTER_LONG_CONSTANT("SORTCC", SORTCC , CONST_PERSISTENT | CONST_CS);
629-
/* cc */
630-
REGISTER_LONG_CONSTANT("SORTSIZE", SORTSIZE , CONST_PERSISTENT | CONST_CS);
631-
/* size */
632-
633-
REGISTER_LONG_CONSTANT("TYPETEXT", TYPETEXT , CONST_PERSISTENT | CONST_CS);
634-
REGISTER_LONG_CONSTANT("TYPEMULTIPART", TYPEMULTIPART , CONST_PERSISTENT | CONST_CS);
635-
REGISTER_LONG_CONSTANT("TYPEMESSAGE", TYPEMESSAGE , CONST_PERSISTENT | CONST_CS);
636-
REGISTER_LONG_CONSTANT("TYPEAPPLICATION", TYPEAPPLICATION , CONST_PERSISTENT | CONST_CS);
637-
REGISTER_LONG_CONSTANT("TYPEAUDIO", TYPEAUDIO , CONST_PERSISTENT | CONST_CS);
638-
REGISTER_LONG_CONSTANT("TYPEIMAGE", TYPEIMAGE , CONST_PERSISTENT | CONST_CS);
639-
REGISTER_LONG_CONSTANT("TYPEVIDEO", TYPEVIDEO , CONST_PERSISTENT | CONST_CS);
640-
REGISTER_LONG_CONSTANT("TYPEMODEL", TYPEMODEL , CONST_PERSISTENT | CONST_CS);
641-
REGISTER_LONG_CONSTANT("TYPEOTHER", TYPEOTHER , CONST_PERSISTENT | CONST_CS);
642-
/*
643-
TYPETEXT unformatted text
644-
TYPEMULTIPART multiple part
645-
TYPEMESSAGE encapsulated message
646-
TYPEAPPLICATION application data
647-
TYPEAUDIO audio
648-
TYPEIMAGE static image (GIF, JPEG, etc.)
649-
TYPEVIDEO video
650-
TYPEMODEL model
651-
TYPEOTHER unknown
652-
*/
653-
654-
REGISTER_LONG_CONSTANT("ENC7BIT", ENC7BIT , CONST_PERSISTENT | CONST_CS);
655-
REGISTER_LONG_CONSTANT("ENC8BIT", ENC8BIT , CONST_PERSISTENT | CONST_CS);
656-
REGISTER_LONG_CONSTANT("ENCBINARY", ENCBINARY , CONST_PERSISTENT | CONST_CS);
657-
REGISTER_LONG_CONSTANT("ENCBASE64", ENCBASE64, CONST_PERSISTENT | CONST_CS);
658-
REGISTER_LONG_CONSTANT("ENCQUOTEDPRINTABLE", ENCQUOTEDPRINTABLE , CONST_PERSISTENT | CONST_CS);
659-
REGISTER_LONG_CONSTANT("ENCOTHER", ENCOTHER , CONST_PERSISTENT | CONST_CS);
660-
/*
661-
ENC7BIT 7 bit SMTP semantic data
662-
ENC8BIT 8 bit SMTP semantic data
663-
ENCBINARY 8 bit binary data
664-
ENCBASE64 base-64 encoded data
665-
ENCQUOTEDPRINTABLE human-readable 8-as-7 bit data
666-
ENCOTHER unknown
667-
*/
668-
669-
REGISTER_LONG_CONSTANT("IMAP_GC_ELT", GC_ELT , CONST_PERSISTENT | CONST_CS);
670-
REGISTER_LONG_CONSTANT("IMAP_GC_ENV", GC_ENV , CONST_PERSISTENT | CONST_CS);
671-
REGISTER_LONG_CONSTANT("IMAP_GC_TEXTS", GC_TEXTS , CONST_PERSISTENT | CONST_CS);
672-
/*
673-
GC_ELT message cache elements
674-
GC_ENV ENVELOPEs and BODYs
675-
GC_TEXTS texts
676-
*/
677-
678507
if (!IMAPG(enable_rsh)) {
679508
/* disable SSH and RSH, see https://bugs.php.net/bug.php?id=77153 */
680509
mail_parameters (NIL, SET_RSHTIMEOUT, 0);
@@ -2808,7 +2637,7 @@ PHP_FUNCTION(imap_status)
28082637

28092638
GET_IMAP_STREAM(imap_conn_struct, imap_conn_obj);
28102639

2811-
if (flags && ((flags & ~(SA_MESSAGES | SA_RECENT | SA_UNSEEN | SA_UIDNEXT | SA_UIDVALIDITY /*| SA_ALL*/)) != 0)) {
2640+
if (flags && ((flags & ~(SA_ALL)) != 0)) {
28122641
zend_argument_value_error(3, "must be a bitmask of SA_* constants");
28132642
RETURN_THROWS();
28142643
}

0 commit comments

Comments
 (0)