annotate lib-src/pop.h @ 4792:95b04754ea8c

Make #'equalp more compatible with CL; add a compiler macro, test & doc it. lisp/ChangeLog addition: 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * cl-extra.el (cl-string-vector-equalp) (cl-bit-vector-vector-equalp, cl-vector-array-equalp) (cl-hash-table-contents-equalp): New functions, to implement equalp treating arrays with identical contents as equivalent, as specified by Common Lisp. (equalp): Revise this function to implement array equivalence, and the hash-table equalp behaviour specified by CL. * cl-macs.el (equalp): Add a compiler macro for this function, used when one of the arguments is constant, and as such, its type is known at compile time. man/ChangeLog addition: 2009-11-08 Aidan Kehoe <kehoea@parhasard.net> * lispref/objects.texi (Equality Predicates): Document #'equalp here, as well as #'equal and #'eq. tests/ChangeLog addition: 2009-12-31 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: Test much of the functionality of equalp; add a pointer to Paul Dietz' ANSI test suite for this function, converted to Emacs Lisp. Not including the tests themselves in XEmacs because who owns the copyright on the files is unclear and the GCL people didn't respond to my queries.
author Aidan Kehoe <kehoea@parhasard.net>
date Thu, 31 Dec 2009 15:09:41 +0000
parents bdfcf05f635b
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
1 /* pop.h: Header file for the "pop.c" client POP3 protocol.
3650
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
2 Copyright (C) 1991, 1993, 2002, 2003, 2004,
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
3 2005, 2006 Free Software Foundation, Inc.
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
4 Written by Jonathan Kamens, jik@security.ov.com.
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
5
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 54
diff changeset
6 This file is part of XEmacs.
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
7
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 54
diff changeset
8 XEmacs is free software; you can redistribute it and/or modify
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
9 it under the terms of the GNU General Public License as published by
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
10 the Free Software Foundation; either version 2, or (at your option)
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
11 any later version.
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
12
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 54
diff changeset
13 XEmacs is distributed in the hope that it will be useful,
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
16 GNU General Public License for more details.
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
17
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
613
023b83f4e54b [xemacs-hg @ 2001-06-10 10:42:16 by ben]
ben
parents: 54
diff changeset
19 along with XEmacs; see the file COPYING. If not, write to
3650
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
20 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
21 Boston, MA 02110-1301, USA. */
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
22
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
23 /* Synched up with: FSF 22.0.50. */
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
24
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
25 #include <stdio.h>
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
26
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
27 #define GETLINE_MIN 1024 /* the getline buffer starts out this */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
28 /* size */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
29 #define GETLINE_INCR 1024 /* the getline buffer is grown by this */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
30 /* size when it needs to grow */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
31
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
32 extern char pop_error[];
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
33 extern int pop_debug;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
34
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
35 struct _popserver
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
36 {
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
37 int file, data;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
38 char *buffer;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
39 int buffer_size, buffer_index;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
40 int in_multi;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
41 int trash_started;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
42 };
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
43
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
44 typedef struct _popserver *popserver;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
45
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
46 /*
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
47 * Valid flags for the pop_open function.
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
48 */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
49
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
50 #define POP_NO_KERBEROS (1<<0)
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
51 #define POP_NO_HESIOD (1<<1)
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
52 #define POP_NO_GETPASS (1<<2)
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
53
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
54 #ifdef __STDC__
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
55 #define _ARGS(a) a
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
56 #else
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
57 #define _ARGS(a) ()
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
58 #endif
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
59
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
60 extern popserver pop_open _ARGS((char *host, char *username, char *password,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
61 int flags));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
62 extern int pop_stat _ARGS((popserver server, int *count, int *size));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
63 extern int pop_list _ARGS((popserver server, int message, int **IDs,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
64 int **size));
3650
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
65 extern int pop_retrieve _ARGS((popserver server, int message, int markfrom,
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
66 char **));
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
67 extern int pop_retrieve_first _ARGS((popserver server, int message,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
68 char **response));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
69 extern int pop_retrieve_next _ARGS((popserver server, char **line));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
70 extern int pop_retrieve_flush _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
71 extern int pop_top_first _ARGS((popserver server, int message, int lines,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
72 char **response));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
73 extern int pop_top_next _ARGS((popserver server, char **line));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
74 extern int pop_top_flush _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
75 extern int pop_multi_first _ARGS((popserver server, char *command,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
76 char **response));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
77 extern int pop_multi_next _ARGS((popserver server, char **line));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
78 extern int pop_multi_flush _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
79 extern int pop_delete _ARGS((popserver server, int message));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
80 extern int pop_noop _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
81 extern int pop_last _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
82 extern int pop_reset _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
83 extern int pop_quit _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
84 extern void pop_close _ARGS((popserver));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
85
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
86 #undef _ARGS