annotate lib-src/pop.h @ 5574:d4f334808463

Support inlining labels, bytecomp.el. lisp/ChangeLog addition: 2011-10-02 Aidan Kehoe <kehoea@parhasard.net> * bytecomp.el (byte-compile-initial-macro-environment): Add #'declare to this, so it doesn't need to rely on #'cl-compiling file to determine when we're byte-compiling. Update #'labels to support declaring labels inline, as Common Lisp requires. * bytecomp.el (byte-compile-function-form): Don't error if FUNCTION is quoting a non-lambda, non-symbol, just return it. * cl-extra.el (cl-macroexpand-all): If a label name has been quoted, expand to the label placeholder quoted with 'function. This allows the byte compiler to distinguish between uses of the placeholder as data and uses in contexts where it should be inlined. * cl-macs.el: * cl-macs.el (cl-do-proclaim): When proclaming something as inline, if it is bound as a label, don't modify the symbol's plist; instead, treat the first element of its placeholder constant vector as a place to store compile information. * cl-macs.el (declare): Leave processing declarations while compiling to the implementation of #'declare in byte-compile-initial-macro-environment. tests/ChangeLog addition: 2011-10-02 Aidan Kehoe <kehoea@parhasard.net> * automated/lisp-tests.el: * automated/lisp-tests.el (+): Test #'labels and inlining.
author Aidan Kehoe <kehoea@parhasard.net>
date Sun, 02 Oct 2011 15:32:16 +0100
parents 308d34e9f07d
children
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
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
8 XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
9 under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
10 Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
11 option) any later version.
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
12
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
16 for more details.
54
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
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 3650
diff changeset
19 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
3650
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
20
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
21 /* Synched up with: FSF 22.0.50. */
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
22
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
23 #include <stdio.h>
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 #define GETLINE_MIN 1024 /* the getline buffer starts out this */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
26 /* size */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
27 #define GETLINE_INCR 1024 /* the getline buffer is grown by this */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
28 /* size when it needs to grow */
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
29
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
30 extern char pop_error[];
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
31 extern int pop_debug;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
32
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
33 struct _popserver
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 int file, data;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
36 char *buffer;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
37 int buffer_size, buffer_index;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
38 int in_multi;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
39 int trash_started;
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
40 };
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
41
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
42 typedef struct _popserver *popserver;
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 /*
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
45 * Valid flags for the pop_open function.
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
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
48 #define POP_NO_KERBEROS (1<<0)
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
49 #define POP_NO_HESIOD (1<<1)
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
50 #define POP_NO_GETPASS (1<<2)
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
51
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
52 #ifdef __STDC__
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
53 #define _ARGS(a) a
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
54 #else
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
55 #define _ARGS(a) ()
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
56 #endif
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
57
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
58 extern popserver pop_open _ARGS((char *host, char *username, char *password,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
59 int flags));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
60 extern int pop_stat _ARGS((popserver server, int *count, int *size));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
61 extern int pop_list _ARGS((popserver server, int message, int **IDs,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
62 int **size));
3650
bdfcf05f635b [xemacs-hg @ 2006-11-01 20:55:09 by adrian]
adrian
parents: 613
diff changeset
63 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
64 char **));
54
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
65 extern int pop_retrieve_first _ARGS((popserver server, int message,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
66 char **response));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
67 extern int pop_retrieve_next _ARGS((popserver server, char **line));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
68 extern int pop_retrieve_flush _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
69 extern int pop_top_first _ARGS((popserver server, int message, int lines,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
70 char **response));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
71 extern int pop_top_next _ARGS((popserver server, char **line));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
72 extern int pop_top_flush _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
73 extern int pop_multi_first _ARGS((popserver server, char *command,
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
74 char **response));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
75 extern int pop_multi_next _ARGS((popserver server, char **line));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
76 extern int pop_multi_flush _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
77 extern int pop_delete _ARGS((popserver server, int message));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
78 extern int pop_noop _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
79 extern int pop_last _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
80 extern int pop_reset _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
81 extern int pop_quit _ARGS((popserver server));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
82 extern void pop_close _ARGS((popserver));
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
83
05472e90ae02 Import from CVS: tag r19-16-pre2
cvs
parents:
diff changeset
84 #undef _ARGS