Date: 05/15/01
- Next message: sniper <email protected>: "[PHP-DEV] Bug #10866 Updated: PHP config problem with IBM AIX 4.3 and oracle 8.1.6"
- Previous message: clayton collie: "[PHP-DEV] Recursive calls on &EG(regular_list) ?"
- In reply to: Mattias Segerdahl: "[PHP-DEV] Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
UID's will be unique for IMAP, not POP servers. At least, as far as I
remember, c-client will return a numer (a long, if I am not mistaken);
that is the UID you get. 3afffb5300000001 is not gonna fit in there. I
do not think you can get much more. If there is a capability in POP3
part of c-client to return the unique numbers you want, please point me
to that part, and I'll implement it.
Vlad
Mattias Segerdahl wrote:
> Hi Mark,
>
> I was doing some php coding the other day and did something simular as,
>
> The following code should echo out the Unique ID's generated by UIDL on the
> IMAP/POP Server, but echo's out a sequencial number starting with 1
> instead... It should probably produce ID's like, 3afffb5300000001,
> 3afffb5300000002, etc. etc.
>
> $mbox = imap_open ("{your.pop3.host:143}", "username", "password");
> $headers = imap_headers ($mbox);
>
> if ($headers == true) {
> while (list ($key,$val) = each ($headers)) {
> echo imap_uid($mbox, $key);
> }
> } else {
> echo "No messages in inbox";
> }
>
>
>
> Since this was producing a sequencual number ("1,2,3,4,5"), same as the
> message number, I though there was a bug in php, so I checked the
> ext/imap/php_imap.c and found the following code,
>
> /* {{{ proto int imap_uid(int stream_id, int msg_no)
> Get the unique message id associated with a standard sequential message
> number */
> PHP_FUNCTION(imap_uid)
> {
> zval **streamind, **msgno;
> int ind, ind_type, msgindex;
> pils *imap_le_struct;
>
> if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &streamind,
> &msgno) == FAILURE) {
> ZEND_WRONG_PARAM_COUNT();
> }
>
> convert_to_long_ex(streamind);
> convert_to_long_ex(msgno);
>
> ind = Z_LVAL_PP(streamind);
>
> imap_le_struct = (pils *) zend_list_find(ind, &ind_type);
>
> if (!imap_le_struct || !IS_STREAM(ind_type)) {
> php_error(E_WARNING, "Unable to find stream pointer");
> RETURN_FALSE;
> }
>
> msgindex = Z_LVAL_PP(msgno);
> if ((msgindex < 1) || ((unsigned) msgindex >
> imap_le_struct->imap_stream->nmsgs)) {
> php_error(E_WARNING, "Bad message number");
> RETURN_FALSE;
> }
>
> RETURN_LONG(mail_uid(imap_le_struct->imap_stream,
> Z_LVAL_PP(msgno)));
> }
> /* }}} */
>
>
> When reading this code, it still baffles me that I don't get the correct
> UID's, the UIDL produces, I came to the fact that it must be the c-client..
>
> The bug seems to be in src/c-client/mail.h line 1364 ... mail_uid returns an
> unsigned long
>
> // Mattias
>
>
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, e-mail: php-dev-unsubscribe <email protected> For additional commands, e-mail: php-dev-help <email protected> To contact the list administrators, e-mail: php-list-admin <email protected>
- Next message: sniper <email protected>: "[PHP-DEV] Bug #10866 Updated: PHP config problem with IBM AIX 4.3 and oracle 8.1.6"
- Previous message: clayton collie: "[PHP-DEV] Recursive calls on &EG(regular_list) ?"
- In reply to: Mattias Segerdahl: "[PHP-DEV] Bug #10850 imap_uid() does not produce an Unique ID Number from POP Servers"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

