0000: 3c 48 45 41 44 3e 0a 3c 54 49 54 4c 45 3e 20 43 <HEAD>.<TITLE> C
0010: 41 4c 4c 42 41 43 4b 20 6d 61 6e 75 61 6c 20 70 ALLBACK manual p
0020: 61 67 65 20 3c 2f 54 49 54 4c 45 3e 0a 3c 2f 48 age </TITLE>.</H
0030: 45 41 44 3e 0a 3c 42 4f 44 59 3e 0a 3c 48 31 3e EAD>.<BODY>.<H1>
0040: 43 41 4c 4c 42 41 43 4b 20 6d 61 6e 75 61 6c 20 CALLBACK manual
0050: 70 61 67 65 3c 2f 48 31 3e 0a 0a 3c 55 4c 3e 0a page</H1>..<UL>.
0060: 3c 4c 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 4e <LI> <A HREF="#N
0070: 61 6d 65 22 3e 4e 61 6d 65 3c 2f 41 3e 0a 3c 4c ame">Name</A>.<L
0080: 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 53 79 6e I> <A HREF="#Syn
0090: 6f 70 73 69 73 22 3e 53 79 6e 6f 70 73 69 73 3c opsis">Synopsis<
00a0: 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20 48 52 45 46 /A>.<LI> <A HREF
00b0: 3d 22 23 44 65 73 63 72 69 70 74 69 6f 6e 22 3e ="#Description">
00c0: 44 65 73 63 72 69 70 74 69 6f 6e 3c 2f 41 3e 0a Description</A>.
00d0: 3c 4c 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 56 <LI> <A HREF="#V
00e0: 41 43 41 4c 4c 20 6d 61 63 72 6f 73 22 3e 56 41 ACALL macros">VA
00f0: 43 41 4c 4c 20 6d 61 63 72 6f 73 3c 2f 41 3e 0a CALL macros</A>.
0100: 3c 4c 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 4e <LI> <A HREF="#N
0110: 6f 74 65 73 22 3e 4e 6f 74 65 73 3c 2f 41 3e 0a otes">Notes</A>.
0120: 3c 4c 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 53 <LI> <A HREF="#S
0130: 65 65 20 61 6c 73 6f 22 3e 53 65 65 20 61 6c 73 ee also">See als
0140: 6f 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20 48 52 o</A>.<LI> <A HR
0150: 45 46 3d 22 23 42 75 67 73 22 3e 42 75 67 73 3c EF="#Bugs">Bugs<
0160: 2f 41 3e 0a 3c 4c 49 3e 20 3c 41 20 48 52 45 46 /A>.<LI> <A HREF
0170: 3d 22 23 4e 6f 6e 2d 42 75 67 73 22 3e 4e 6f 6e ="#Non-Bugs">Non
0180: 2d 42 75 67 73 3c 2f 41 3e 0a 3c 4c 49 3e 20 3c -Bugs</A>.<LI> <
0190: 41 20 48 52 45 46 3d 22 23 50 6f 72 74 69 6e 67 A HREF="#Porting
01a0: 22 3e 50 6f 72 74 69 6e 67 3c 2f 41 3e 0a 3c 4c ">Porting</A>.<L
01b0: 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 41 75 74 I> <A HREF="#Aut
01c0: 68 6f 72 22 3e 41 75 74 68 6f 72 3c 2f 41 3e 0a hor">Author</A>.
01d0: 3c 4c 49 3e 20 3c 41 20 48 52 45 46 3d 22 23 41 <LI> <A HREF="#A
01e0: 63 6b 6e 6f 77 6c 65 64 67 65 6d 65 6e 74 73 22 cknowledgements"
01f0: 3e 41 63 6b 6e 6f 77 6c 65 64 67 65 6d 65 6e 74 >Acknowledgement
0200: 73 3c 2f 41 3e 0a 3c 2f 55 4c 3e 0a 3c 50 3e 0a s</A>.</UL>.<P>.
0210: 0a 3c 48 52 3e 0a 0a 3c 41 20 4e 41 4d 45 3d 22 .<HR>..<A NAME="
0220: 4e 61 6d 65 22 3e 0a 3c 48 32 3e 4e 61 6d 65 3c Name">.<H2>Name<
0230: 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 63 61 6c 6c 62 /H2>.</A>..callb
0240: 61 63 6b 20 2d 20 63 6c 6f 73 75 72 65 73 20 77 ack - closures w
0250: 69 74 68 20 76 61 72 69 61 62 6c 65 20 61 72 67 ith variable arg
0260: 75 6d 65 6e 74 73 20 61 73 20 66 69 72 73 74 2d uments as first-
0270: 63 6c 61 73 73 0a 43 20 66 75 6e 63 74 69 6f 6e class.C function
0280: 73 0a 0a 3c 41 20 4e 41 4d 45 3d 22 53 79 6e 6f s..<A NAME="Syno
0290: 70 73 69 73 22 3e 0a 3c 48 32 3e 53 79 6e 6f 70 psis">.<H2>Synop
02a0: 73 69 73 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 3c sis</H2>.</A>..<
02b0: 50 52 45 3e 0a 3c 43 4f 44 45 3e 23 69 6e 63 6c PRE>.<CODE>#incl
02c0: 75 64 65 20 26 6c 74 3b 63 61 6c 6c 62 61 63 6b ude <callback
02d0: 2e 68 26 67 74 3b 3c 2f 43 4f 44 45 3e 0a 3c 2f .h></CODE>.</
02e0: 50 52 45 3e 0a 3c 50 3e 0a 3c 50 52 45 3e 0a 3c PRE>.<P>.<PRE>.<
02f0: 43 4f 44 45 3e 76 6f 69 64 20 3c 56 41 52 3e 66 CODE>void <VAR>f
0300: 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 3e 20 28 3c unction</VAR> (<
0310: 56 41 52 3e 64 61 74 61 3c 2f 56 41 52 3e 2c 20 VAR>data</VAR>,
0320: 3c 56 41 52 3e 61 6c 69 73 74 3c 2f 56 41 52 3e <VAR>alist</VAR>
0330: 29 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 20 )</CODE>.<CODE>
0340: 20 76 6f 69 64 2a 20 3c 56 41 52 3e 64 61 74 61 void* <VAR>data
0350: 3c 2f 56 41 52 3e 3b 3c 2f 43 4f 44 45 3e 0a 3c </VAR>;</CODE>.<
0360: 43 4f 44 45 3e 20 20 76 61 5f 61 6c 69 73 74 20 CODE> va_alist
0370: 3c 56 41 52 3e 61 6c 69 73 74 3c 2f 56 41 52 3e <VAR>alist</VAR>
0380: 3b 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 7b ;</CODE>.<CODE>{
0390: 3c 2f 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 20 20 </CODE>.<CODE>
03a0: 76 61 5f 73 74 61 72 74 5f 3c 56 41 52 3e 74 79 va_start_<VAR>ty
03b0: 70 65 3c 2f 56 41 52 3e 28 3c 56 41 52 3e 61 6c pe</VAR>(<VAR>al
03c0: 69 73 74 3c 2f 56 41 52 3e 5b 2c 20 3c 56 41 52 ist</VAR>[, <VAR
03d0: 3e 72 65 74 75 72 6e 5f 74 79 70 65 3c 2f 56 41 >return_type</VA
03e0: 52 3e 5d 29 3b 3c 2f 43 4f 44 45 3e 0a 3c 43 4f R>]);</CODE>.<CO
03f0: 44 45 3e 20 20 61 72 67 20 3d 20 76 61 5f 61 72 DE> arg = va_ar
0400: 67 5f 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 g_<VAR>type</VAR
0410: 3e 28 3c 56 41 52 3e 61 6c 69 73 74 3c 2f 56 41 >(<VAR>alist</VA
0420: 52 3e 5b 2c 20 3c 56 41 52 3e 61 72 67 5f 74 79 R>[, <VAR>arg_ty
0430: 70 65 3c 2f 56 41 52 3e 5d 29 3b 3c 2f 43 4f 44 pe</VAR>]);</COD
0440: 45 3e 0a 3c 43 4f 44 45 3e 20 20 76 61 5f 72 65 E>.<CODE> va_re
0450: 74 75 72 6e 5f 3c 56 41 52 3e 74 79 70 65 3c 2f turn_<VAR>type</
0460: 56 41 52 3e 28 3c 56 41 52 3e 61 6c 69 73 74 3c VAR>(<VAR>alist<
0470: 2f 56 41 52 3e 5b 5b 2c 20 3c 56 41 52 3e 72 65 /VAR>[[, <VAR>re
0480: 74 75 72 6e 5f 74 79 70 65 3c 2f 56 41 52 3e 5d turn_type</VAR>]
0490: 2c 20 3c 56 41 52 3e 72 65 74 75 72 6e 5f 76 61 , <VAR>return_va
04a0: 6c 75 65 3c 2f 56 41 52 3e 5d 29 3b 3c 2f 43 4f lue</VAR>]);</CO
04b0: 44 45 3e 0a 3c 43 4f 44 45 3e 7d 3c 2f 43 4f 44 DE>.<CODE>}</COD
04c0: 45 3e 0a 3c 2f 50 52 45 3e 0a 3c 50 3e 0a 3c 50 E>.</PRE>.<P>.<P
04d0: 52 45 3e 0a 3c 43 4f 44 45 3e 3c 56 41 52 3e 63 RE>.<CODE><VAR>c
04e0: 61 6c 6c 62 61 63 6b 3c 2f 56 41 52 3e 20 3d 20 allback</VAR> =
04f0: 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 3c alloc_callback(<
0500: 56 41 52 3e 26 66 75 6e 63 74 69 6f 6e 3c 2f 56 VAR>&function</V
0510: 41 52 3e 2c 20 3c 56 41 52 3e 64 61 74 61 3c 2f AR>, <VAR>data</
0520: 56 41 52 3e 29 3b 3c 2f 43 4f 44 45 3e 0a 3c 2f VAR>);</CODE>.</
0530: 50 52 45 3e 0a 3c 50 3e 0a 3c 50 52 45 3e 0a 3c PRE>.<P>.<PRE>.<
0540: 43 4f 44 45 3e 66 72 65 65 5f 63 61 6c 6c 62 61 CODE>free_callba
0550: 63 6b 28 3c 56 41 52 3e 63 61 6c 6c 62 61 63 6b ck(<VAR>callback
0560: 3c 2f 56 41 52 3e 29 3b 3c 2f 43 4f 44 45 3e 0a </VAR>);</CODE>.
0570: 3c 2f 50 52 45 3e 0a 3c 50 3e 0a 3c 50 52 45 3e </PRE>.<P>.<PRE>
0580: 0a 3c 43 4f 44 45 3e 69 73 5f 63 61 6c 6c 62 61 .<CODE>is_callba
0590: 63 6b 28 3c 56 41 52 3e 63 61 6c 6c 62 61 63 6b ck(<VAR>callback
05a0: 3c 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 0a 3c </VAR>)</CODE>.<
05b0: 43 4f 44 45 3e 63 61 6c 6c 62 61 63 6b 5f 61 64 CODE>callback_ad
05c0: 64 72 65 73 73 28 3c 56 41 52 3e 63 61 6c 6c 62 dress(<VAR>callb
05d0: 61 63 6b 3c 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 ack</VAR>)</CODE
05e0: 3e 0a 3c 43 4f 44 45 3e 63 61 6c 6c 62 61 63 6b >.<CODE>callback
05f0: 5f 64 61 74 61 28 3c 56 41 52 3e 63 61 6c 6c 62 _data(<VAR>callb
0600: 61 63 6b 3c 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 ack</VAR>)</CODE
0610: 3e 0a 3c 2f 50 52 45 3e 0a 0a 3c 41 20 4e 41 4d >.</PRE>..<A NAM
0620: 45 3d 22 44 65 73 63 72 69 70 74 69 6f 6e 22 3e E="Description">
0630: 0a 3c 48 32 3e 44 65 73 63 72 69 70 74 69 6f 6e .<H2>Description
0640: 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 54 68 65 73 </H2>.</A>..Thes
0650: 65 20 66 75 6e 63 74 69 6f 6e 73 20 69 6d 70 6c e functions impl
0660: 65 6d 65 6e 74 20 3c 45 4d 3e 63 6c 6f 73 75 72 ement <EM>closur
0670: 65 73 3c 2f 45 4d 3e 20 77 69 74 68 20 76 61 72 es</EM> with var
0680: 69 61 62 6c 65 20 61 72 67 75 6d 65 6e 74 73 0a iable arguments.
0690: 61 73 20 66 69 72 73 74 2d 63 6c 61 73 73 20 43 as first-class C
06a0: 20 66 75 6e 63 74 69 6f 6e 73 2e 0a 3c 50 3e 0a functions..<P>.
06b0: 43 6c 6f 73 75 72 65 73 20 20 61 73 20 20 3c 45 Closures as <E
06c0: 4d 3e 66 69 72 73 74 2d 63 6c 61 73 73 20 20 43 M>first-class C
06d0: 20 66 75 6e 63 74 69 6f 6e 73 3c 2f 45 4d 3e 20 functions</EM>
06e0: 6d 65 61 6e 73 20 74 68 61 74 20 74 68 65 79 20 means that they
06f0: 66 69 74 0a 69 6e 74 6f 20 61 20 66 75 6e 63 74 fit.into a funct
0700: 69 6f 6e 20 70 6f 69 6e 74 65 72 20 61 6e 64 20 ion pointer and
0710: 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 65 78 can be called ex
0720: 61 63 74 6c 79 20 6c 69 6b 65 20 61 6e 79 0a 6f actly like any.o
0730: 74 68 65 72 20 20 43 20 66 75 6e 63 74 69 6f 6e ther C function
0740: 2e 20 4d 6f 72 65 6f 76 65 72 2c 20 74 68 65 79 . Moreover, they
0750: 20 63 61 6e 20 62 65 20 63 61 6c 6c 65 64 20 77 can be called w
0760: 69 74 68 20 76 61 72 69 61 62 6c 65 0a 61 72 67 ith variable.arg
0770: 75 6d 65 6e 74 73 20 61 6e 64 20 63 61 6e 20 72 uments and can r
0780: 65 74 75 72 6e 20 76 61 72 69 61 62 6c 65 20 72 eturn variable r
0790: 65 74 75 72 6e 20 76 61 6c 75 65 73 2e 0a 3c 50 eturn values..<P
07a0: 3e 0a 3c 43 4f 44 45 3e 3c 56 41 52 3e 63 61 6c >.<CODE><VAR>cal
07b0: 6c 62 61 63 6b 3c 2f 56 41 52 3e 20 3d 20 61 6c lback</VAR> = al
07c0: 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 3c 56 41 loc_callback(<VA
07d0: 52 3e 26 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 R>&function</VAR
07e0: 3e 2c 20 3c 56 41 52 3e 64 61 74 61 3c 2f 56 41 >, <VAR>data</VA
07f0: 52 3e 29 3c 2f 43 4f 44 45 3e 0a 61 6c 6c 6f 63 R>)</CODE>.alloc
0800: 61 74 65 73 20 20 61 0a 63 61 6c 6c 62 61 63 6b ates a.callback
0810: 2e 20 20 57 68 65 6e 20 20 3c 56 41 52 3e 63 61 . When <VAR>ca
0820: 6c 6c 62 61 63 6b 3c 2f 56 41 52 3e 20 67 65 74 llback</VAR> get
0830: 73 20 63 61 6c 6c 65 64 2c 20 69 74 20 61 72 72 s called, it arr
0840: 61 6e 67 65 73 20 74 6f 20 63 61 6c 6c 0a 3c 56 anges to call.<V
0850: 41 52 3e 66 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 AR>function</VAR
0860: 3e 2c 20 70 61 73 73 69 6e 67 20 3c 56 41 52 3e >, passing <VAR>
0870: 64 61 74 61 3c 2f 56 41 52 3e 20 61 73 20 66 69 data</VAR> as fi
0880: 72 73 74 20 61 72 67 75 6d 65 6e 74 20 20 61 6e rst argument an
0890: 64 2c 20 20 61 73 20 20 73 65 63 6f 6e 64 0a 61 d, as second.a
08a0: 72 67 75 6d 65 6e 74 2c 20 74 68 65 20 65 6e 74 rgument, the ent
08b0: 69 72 65 20 73 65 71 75 65 6e 63 65 20 6f 66 20 ire sequence of
08c0: 61 72 67 75 6d 65 6e 74 73 20 70 61 73 73 65 64 arguments passed
08d0: 20 74 6f 20 3c 56 41 52 3e 63 61 6c 6c 62 61 63 to <VAR>callbac
08e0: 6b 3c 2f 56 41 52 3e 2e 0a 3c 50 3e 0a 46 75 6e k</VAR>..<P>.Fun
08f0: 63 74 69 6f 6e 20 63 61 6c 6c 69 6e 67 20 63 6f ction calling co
0900: 6e 76 65 6e 74 69 6f 6e 73 20 64 69 66 66 65 72 nventions differ
0910: 20 63 6f 6e 73 69 64 65 72 61 62 6c 79 20 20 6f considerably o
0920: 6e 20 20 64 69 66 66 65 72 65 6e 74 0a 6d 61 63 n different.mac
0930: 68 69 6e 65 73 2c 20 74 68 65 72 65 66 6f 72 65 hines, therefore
0940: 20 74 68 65 20 61 72 67 75 6d 65 6e 74 73 20 61 the arguments a
0950: 72 65 20 61 63 63 65 73 73 65 64 20 61 6e 64 0a re accessed and.
0960: 74 68 65 20 72 65 73 75 6c 74 20 76 61 6c 75 65 the result value
0970: 20 69 73 20 73 74 6f 72 65 64 20 74 68 72 6f 75 is stored throu
0980: 67 68 20 74 68 65 20 73 61 6d 65 20 6d 61 63 72 gh the same macr
0990: 6f 73 20 61 73 20 75 73 65 64 0a 62 79 20 74 68 os as used.by th
09a0: 65 20 3c 45 4d 3e 76 61 63 61 6c 6c 3c 2f 45 4d e <EM>vacall</EM
09b0: 3e 20 70 61 63 6b 61 67 65 2c 20 73 65 65 20 62 > package, see b
09c0: 65 6c 6f 77 2e 0a 3c 50 3e 0a 54 68 65 20 20 63 elow..<P>.The c
09d0: 61 6c 6c 62 61 63 6b 73 20 61 72 65 20 66 75 6e allbacks are fun
09e0: 63 74 69 6f 6e 73 20 77 69 74 68 20 69 6e 64 65 ctions with inde
09f0: 66 69 6e 69 74 65 20 65 78 74 65 6e 74 3a 20 3c finite extent: <
0a00: 43 4f 44 45 3e 3c 56 41 52 3e 63 61 6c 6c 62 61 CODE><VAR>callba
0a10: 63 6b 3c 2f 56 41 52 3e 3c 2f 43 4f 44 45 3e 0a ck</VAR></CODE>.
0a20: 69 73 20 6f 6e 6c 79 20 64 65 61 6c 6c 6f 63 61 is only dealloca
0a30: 74 65 64 20 77 68 65 6e 20 20 3c 43 4f 44 45 3e ted when <CODE>
0a40: 66 72 65 65 5f 63 61 6c 6c 62 61 63 6b 28 3c 56 free_callback(<V
0a50: 41 52 3e 63 61 6c 6c 62 61 63 6b 3c 2f 56 41 52 AR>callback</VAR
0a60: 3e 29 3c 2f 43 4f 44 45 3e 20 20 69 73 0a 63 61 >)</CODE> is.ca
0a70: 6c 6c 65 64 2e 0a 3c 50 3e 0a 3c 43 4f 44 45 3e lled..<P>.<CODE>
0a80: 69 73 5f 63 61 6c 6c 62 61 63 6b 28 3c 56 41 52 is_callback(<VAR
0a90: 3e 63 61 6c 6c 62 61 63 6b 3c 2f 56 41 52 3e 29 >callback</VAR>)
0aa0: 3c 2f 43 4f 44 45 3e 0a 63 68 65 63 6b 73 20 77 </CODE>.checks w
0ab0: 68 65 74 68 65 72 20 74 68 65 20 43 20 66 75 6e hether the C fun
0ac0: 63 74 69 6f 6e 20 3c 43 4f 44 45 3e 3c 56 41 52 ction <CODE><VAR
0ad0: 3e 63 61 6c 6c 62 61 63 6b 3c 2f 56 41 52 3e 3c >callback</VAR><
0ae0: 2f 43 4f 44 45 3e 0a 77 61 73 20 70 72 6f 64 75 /CODE>.was produ
0af0: 63 65 64 20 62 79 20 61 20 63 61 6c 6c 20 74 6f ced by a call to
0b00: 20 20 3c 43 4f 44 45 3e 61 6c 6c 6f 63 5f 63 61 <CODE>alloc_ca
0b10: 6c 6c 62 61 63 6b 3c 2f 43 4f 44 45 3e 2e 20 20 llback</CODE>.
0b20: 20 49 66 20 20 74 68 69 73 0a 72 65 74 75 72 6e If this.return
0b30: 73 20 74 72 75 65 2c 20 74 68 65 20 61 72 67 75 s true, the argu
0b40: 6d 65 6e 74 73 20 67 69 76 65 6e 20 74 6f 20 3c ments given to <
0b50: 43 4f 44 45 3e 61 6c 6c 6f 63 5f 63 61 6c 6c 62 CODE>alloc_callb
0b60: 61 63 6b 3c 2f 43 4f 44 45 3e 20 63 61 6e 20 62 ack</CODE> can b
0b70: 65 0a 72 65 74 72 69 65 76 65 64 3a 0a 3c 55 4c e.retrieved:.<UL
0b80: 3e 0a 3c 4c 49 3e 20 3c 43 4f 44 45 3e 63 61 6c >.<LI> <CODE>cal
0b90: 6c 62 61 63 6b 5f 61 64 64 72 65 73 73 28 3c 56 lback_address(<V
0ba0: 41 52 3e 63 61 6c 6c 62 61 63 6b 3c 2f 56 41 52 AR>callback</VAR
0bb0: 3e 29 3c 2f 43 4f 44 45 3e 20 72 65 74 75 72 6e >)</CODE> return
0bc0: 73 20 3c 56 41 52 3e 26 66 75 6e 63 74 69 6f 6e s <VAR>&function
0bd0: 3c 2f 56 41 52 3e 2c 0a 3c 4c 49 3e 20 3c 43 4f </VAR>,.<LI> <CO
0be0: 44 45 3e 63 61 6c 6c 62 61 63 6b 5f 64 61 74 61 DE>callback_data
0bf0: 28 3c 56 41 52 3e 63 61 6c 6c 62 61 63 6b 3c 2f (<VAR>callback</
0c00: 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 20 72 65 74 VAR>)</CODE> ret
0c10: 75 72 6e 73 20 3c 56 41 52 3e 64 61 74 61 3c 2f urns <VAR>data</
0c20: 56 41 52 3e 2e 0a 3c 2f 55 4c 3e 0a 0a 3c 41 20 VAR>..</UL>..<A
0c30: 4e 41 4d 45 3d 22 56 41 43 41 4c 4c 20 6d 61 63 NAME="VACALL mac
0c40: 72 6f 73 22 3e 0a 3c 48 32 3e 56 41 43 41 4c 4c ros">.<H2>VACALL
0c50: 20 6d 61 63 72 6f 73 3c 2f 48 32 3e 0a 3c 2f 41 macros</H2>.</A
0c60: 3e 0a 0a 57 69 74 68 69 6e 20 3c 56 41 52 3e 66 >..Within <VAR>f
0c70: 75 6e 63 74 69 6f 6e 3c 2f 56 41 52 3e 2c 20 74 unction</VAR>, t
0c80: 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6d 61 63 he following mac
0c90: 72 6f 73 20 63 61 6e 20 62 65 20 75 73 65 64 20 ros can be used
0ca0: 74 6f 20 77 61 6c 6b 0a 74 68 72 6f 75 67 68 20 to walk.through
0cb0: 74 68 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 the argument lis
0cc0: 74 20 61 6e 64 20 73 70 65 63 69 66 79 20 61 20 t and specify a
0cd0: 72 65 74 75 72 6e 20 76 61 6c 75 65 3a 0a 3c 50 return value:.<P
0ce0: 3e 0a 3c 50 52 45 3e 0a 3c 43 4f 44 45 3e 76 61 >.<PRE>.<CODE>va
0cf0: 5f 73 74 61 72 74 5f 3c 56 41 52 3e 74 79 70 65 _start_<VAR>type
0d00: 3c 2f 56 41 52 3e 28 3c 56 41 52 3e 61 6c 69 73 </VAR>(<VAR>alis
0d10: 74 3c 2f 56 41 52 3e 5b 2c 20 3c 56 41 52 3e 72 t</VAR>[, <VAR>r
0d20: 65 74 75 72 6e 5f 74 79 70 65 3c 2f 56 41 52 3e eturn_type</VAR>
0d30: 5d 29 3b 3c 2f 43 4f 44 45 3e 0a 3c 2f 50 52 45 ]);</CODE>.</PRE
0d40: 3e 0a 73 74 61 72 74 73 20 74 68 65 20 77 61 6c >.starts the wal
0d50: 6b 20 74 68 72 6f 75 67 68 20 74 68 65 20 61 72 k through the ar
0d60: 67 75 6d 65 6e 74 20 6c 69 73 74 20 61 6e 64 20 gument list and
0d70: 73 70 65 63 69 66 69 65 73 20 74 68 65 20 72 65 specifies the re
0d80: 74 75 72 6e 20 74 79 70 65 2e 0a 3c 50 3e 0a 3c turn type..<P>.<
0d90: 50 52 45 3e 0a 3c 43 4f 44 45 3e 61 72 67 20 3d PRE>.<CODE>arg =
0da0: 20 76 61 5f 61 72 67 5f 3c 56 41 52 3e 74 79 70 va_arg_<VAR>typ
0db0: 65 3c 2f 56 41 52 3e 28 3c 56 41 52 3e 61 6c 69 e</VAR>(<VAR>ali
0dc0: 73 74 3c 2f 56 41 52 3e 5b 2c 20 3c 56 41 52 3e st</VAR>[, <VAR>
0dd0: 61 72 67 5f 74 79 70 65 3c 2f 56 41 52 3e 5d 29 arg_type</VAR>])
0de0: 3b 3c 2f 43 4f 44 45 3e 0a 3c 2f 50 52 45 3e 0a ;</CODE>.</PRE>.
0df0: 66 65 74 63 68 65 73 20 74 68 65 20 6e 65 78 74 fetches the next
0e00: 20 61 72 67 75 6d 65 6e 74 20 66 72 6f 6d 20 74 argument from t
0e10: 68 65 20 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 he argument list
0e20: 2e 0a 3c 50 3e 0a 3c 50 52 45 3e 0a 3c 43 4f 44 ..<P>.<PRE>.<COD
0e30: 45 3e 76 61 5f 72 65 74 75 72 6e 5f 3c 56 41 52 E>va_return_<VAR
0e40: 3e 74 79 70 65 3c 2f 56 41 52 3e 28 3c 56 41 52 >type</VAR>(<VAR
0e50: 3e 61 6c 69 73 74 3c 2f 56 41 52 3e 5b 5b 2c 20 >alist</VAR>[[,
0e60: 3c 56 41 52 3e 72 65 74 75 72 6e 5f 74 79 70 65 <VAR>return_type
0e70: 3c 2f 56 41 52 3e 5d 2c 20 3c 56 41 52 3e 72 65 </VAR>], <VAR>re
0e80: 74 75 72 6e 5f 76 61 6c 75 65 3c 2f 56 41 52 3e turn_value</VAR>
0e90: 5d 29 3b 3c 2f 43 4f 44 45 3e 0a 3c 2f 50 52 45 ]);</CODE>.</PRE
0ea0: 3e 0a 65 6e 64 73 20 20 74 68 65 20 77 61 6c 6b >.ends the walk
0eb0: 20 74 68 72 6f 75 67 68 20 74 68 65 20 61 72 67 through the arg
0ec0: 75 6d 65 6e 74 20 6c 69 73 74 20 61 6e 64 20 73 ument list and s
0ed0: 70 65 63 69 66 69 65 73 20 74 68 65 20 72 65 74 pecifies the ret
0ee0: 75 72 6e 20 76 61 6c 75 65 2e 0a 3c 50 3e 0a 54 urn value..<P>.T
0ef0: 68 65 20 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 he <VAR>type</VA
0f00: 52 3e 20 69 6e 20 3c 43 4f 44 45 3e 76 61 5f 73 R> in <CODE>va_s
0f10: 74 61 72 74 5f 3c 56 41 52 3e 74 79 70 65 3c 2f tart_<VAR>type</
0f20: 56 41 52 3e 3c 2f 43 4f 44 45 3e 0a 20 61 6e 64 VAR></CODE>. and
0f30: 20 3c 43 4f 44 45 3e 76 61 5f 72 65 74 75 72 6e <CODE>va_return
0f40: 5f 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e _<VAR>type</VAR>
0f50: 3c 2f 43 4f 44 45 3e 20 73 68 61 6c 6c 20 62 65 </CODE> shall be
0f60: 20 20 6f 6e 65 0a 6f 66 20 3c 43 4f 44 45 3e 76 one.of <CODE>v
0f70: 6f 69 64 3c 2f 43 4f 44 45 3e 2c 20 20 3c 43 4f oid</CODE>, <CO
0f80: 44 45 3e 69 6e 74 3c 2f 43 4f 44 45 3e 2c 20 20 DE>int</CODE>,
0f90: 3c 43 4f 44 45 3e 75 69 6e 74 3c 2f 43 4f 44 45 <CODE>uint</CODE
0fa0: 3e 2c 20 3c 43 4f 44 45 3e 6c 6f 6e 67 3c 2f 43 >, <CODE>long</C
0fb0: 4f 44 45 3e 2c 0a 3c 43 4f 44 45 3e 75 6c 6f 6e ODE>,.<CODE>ulon
0fc0: 67 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e g</CODE>, <CODE>
0fd0: 6c 6f 6e 67 6c 6f 6e 67 3c 2f 43 4f 44 45 3e 2c longlong</CODE>,
0fe0: 20 3c 43 4f 44 45 3e 75 6c 6f 6e 67 6c 6f 6e 67 <CODE>ulonglong
0ff0: 3c 2f 43 4f 44 45 3e 2c 0a 3c 43 4f 44 45 3e 64 </CODE>,.<CODE>d
1000: 6f 75 62 6c 65 3c 2f 43 4f 44 45 3e 2c 20 3c 43 ouble</CODE>, <C
1010: 4f 44 45 3e 73 74 72 75 63 74 3c 2f 43 4f 44 45 ODE>struct</CODE
1020: 3e 2c 20 3c 43 4f 44 45 3e 70 74 72 3c 2f 43 4f >, <CODE>ptr</CO
1030: 44 45 3e 0a 6f 72 0a 28 66 6f 72 20 41 4e 53 49 DE>.or.(for ANSI
1040: 20 43 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 C calling conve
1050: 6e 74 69 6f 6e 73 20 6f 6e 6c 79 29 0a 3c 43 4f ntions only).<CO
1060: 44 45 3e 63 68 61 72 3c 2f 43 4f 44 45 3e 2c 20 DE>char</CODE>,
1070: 3c 43 4f 44 45 3e 73 63 68 61 72 3c 2f 43 4f 44 <CODE>schar</COD
1080: 45 3e 2c 20 20 3c 43 4f 44 45 3e 75 63 68 61 72 E>, <CODE>uchar
1090: 3c 2f 43 4f 44 45 3e 2c 0a 3c 43 4f 44 45 3e 73 </CODE>,.<CODE>s
10a0: 68 6f 72 74 3c 2f 43 4f 44 45 3e 2c 20 20 20 3c hort</CODE>, <
10b0: 43 4f 44 45 3e 75 73 68 6f 72 74 3c 2f 43 4f 44 CODE>ushort</COD
10c0: 45 3e 2c 20 20 20 3c 43 4f 44 45 3e 66 6c 6f 61 E>, <CODE>floa
10d0: 74 3c 2f 43 4f 44 45 3e 2c 0a 64 65 70 65 6e 64 t</CODE>,.depend
10e0: 69 6e 67 20 20 20 6f 6e 20 20 74 68 65 20 20 63 ing on the c
10f0: 6c 61 73 73 20 20 6f 66 20 3c 56 41 52 3e 72 65 lass of <VAR>re
1100: 74 75 72 6e 5f 74 79 70 65 3c 2f 56 41 52 3e 2e turn_type</VAR>.
1110: 0a 3c 50 3e 0a 54 68 65 20 3c 56 41 52 3e 74 79 .<P>.The <VAR>ty
1120: 70 65 3c 2f 56 41 52 3e 20 73 70 65 63 69 66 69 pe</VAR> specifi
1130: 65 72 73 20 69 6e 0a 3c 43 4f 44 45 3e 76 61 5f ers in.<CODE>va_
1140: 73 74 61 72 74 5f 3c 56 41 52 3e 74 79 70 65 3c start_<VAR>type<
1150: 2f 56 41 52 3e 3c 2f 43 4f 44 45 3e 20 61 6e 64 /VAR></CODE> and
1160: 20 3c 43 4f 44 45 3e 76 61 5f 72 65 74 75 72 6e <CODE>va_return
1170: 5f 3c 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e _<VAR>type</VAR>
1180: 3c 2f 43 4f 44 45 3e 0a 20 6d 75 73 74 20 62 65 </CODE>. must be
1190: 20 74 68 65 20 73 61 6d 65 2e 0a 54 68 65 20 3c the same..The <
11a0: 56 41 52 3e 72 65 74 75 72 6e 5f 74 79 70 65 3c VAR>return_type<
11b0: 2f 56 41 52 3e 20 73 70 65 63 69 66 69 65 72 73 /VAR> specifiers
11c0: 20 20 20 70 61 73 73 65 64 20 20 20 20 74 6f 0a passed to.
11d0: 3c 43 4f 44 45 3e 76 61 5f 73 74 61 72 74 5f 3c <CODE>va_start_<
11e0: 56 41 52 3e 74 79 70 65 3c 2f 56 41 52 3e 3c 2f VAR>type</VAR></
11f0: 43 4f 44 45 3e 20 61 6e 64 20 3c 43 4f 44 45 3e CODE> and <CODE>
1200: 76 61 5f 72 65 74 75 72 6e 5f 3c 56 41 52 3e 74 va_return_<VAR>t
1210: 79 70 65 3c 2f 56 41 52 3e 3c 2f 43 4f 44 45 3e ype</VAR></CODE>
1220: 0a 20 6d 75 73 74 20 62 65 20 74 68 65 20 73 61 . must be the sa
1230: 6d 65 2e 0a 3c 50 3e 0a 54 68 65 20 3c 56 41 52 me..<P>.The <VAR
1240: 3e 74 79 70 65 3c 2f 56 41 52 3e 20 69 6e 20 3c >type</VAR> in <
1250: 43 4f 44 45 3e 76 61 5f 61 72 67 5f 3c 56 41 52 CODE>va_arg_<VAR
1260: 3e 74 79 70 65 3c 2f 56 41 52 3e 3c 2f 43 4f 44 >type</VAR></COD
1270: 45 3e 0a 73 68 61 6c 6c 20 62 65 20 6f 6e 65 20 E>.shall be one
1280: 6f 66 20 3c 43 4f 44 45 3e 69 6e 74 3c 2f 43 4f of <CODE>int</CO
1290: 44 45 3e 2c 20 20 3c 43 4f 44 45 3e 75 69 6e 74 DE>, <CODE>uint
12a0: 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 6c </CODE>, <CODE>l
12b0: 6f 6e 67 3c 2f 43 4f 44 45 3e 2c 0a 3c 43 4f 44 ong</CODE>,.<COD
12c0: 45 3e 75 6c 6f 6e 67 3c 2f 43 4f 44 45 3e 2c 20 E>ulong</CODE>,
12d0: 3c 43 4f 44 45 3e 6c 6f 6e 67 6c 6f 6e 67 3c 2f <CODE>longlong</
12e0: 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 75 6c 6f CODE>, <CODE>ulo
12f0: 6e 67 6c 6f 6e 67 3c 2f 43 4f 44 45 3e 2c 0a 3c nglong</CODE>,.<
1300: 43 4f 44 45 3e 64 6f 75 62 6c 65 3c 2f 43 4f 44 CODE>double</COD
1310: 45 3e 2c 20 3c 43 4f 44 45 3e 73 74 72 75 63 74 E>, <CODE>struct
1320: 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 70 </CODE>, <CODE>p
1330: 74 72 3c 2f 43 4f 44 45 3e 0a 6f 72 20 28 66 6f tr</CODE>.or (fo
1340: 72 20 41 4e 53 49 20 43 20 63 61 6c 6c 69 6e 67 r ANSI C calling
1350: 20 20 63 6f 6e 76 65 6e 74 69 6f 6e 73 20 20 6f conventions o
1360: 6e 6c 79 29 0a 3c 43 4f 44 45 3e 63 68 61 72 3c nly).<CODE>char<
1370: 2f 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 73 63 /CODE>, <CODE>sc
1380: 68 61 72 3c 2f 43 4f 44 45 3e 2c 20 20 3c 43 4f har</CODE>, <CO
1390: 44 45 3e 75 63 68 61 72 3c 2f 43 4f 44 45 3e 2c DE>uchar</CODE>,
13a0: 0a 3c 43 4f 44 45 3e 73 68 6f 72 74 3c 2f 43 4f .<CODE>short</CO
13b0: 44 45 3e 2c 20 20 20 3c 43 4f 44 45 3e 75 73 68 DE>, <CODE>ush
13c0: 6f 72 74 3c 2f 43 4f 44 45 3e 2c 20 20 20 3c 43 ort</CODE>, <C
13d0: 4f 44 45 3e 66 6c 6f 61 74 3c 2f 43 4f 44 45 3e ODE>float</CODE>
13e0: 2c 0a 64 65 70 65 6e 64 69 6e 67 20 20 20 6f 6e ,.depending on
13f0: 20 20 74 68 65 20 20 63 6c 61 73 73 20 20 6f 66 the class of
1400: 20 3c 56 41 52 3e 61 72 67 5f 74 79 70 65 3c 2f <VAR>arg_type</
1410: 56 41 52 3e 2e 0a 3c 50 3e 0a 49 6e 20 3c 43 4f VAR>..<P>.In <CO
1420: 44 45 3e 76 61 5f 73 74 61 72 74 5f 73 74 72 75 DE>va_start_stru
1430: 63 74 28 3c 56 41 52 3e 61 6c 69 73 74 3c 2f 56 ct(<VAR>alist</V
1440: 41 52 3e 2c 20 3c 56 41 52 3e 72 65 74 75 72 6e AR>, <VAR>return
1450: 5f 74 79 70 65 3c 2f 56 41 52 3e 2c 20 3c 56 41 _type</VAR>, <VA
1460: 52 3e 73 70 6c 69 74 74 61 62 6c 65 3c 2f 56 41 R>splittable</VA
1470: 52 3e 29 3b 3c 2f 43 4f 44 45 3e 20 74 68 65 0a R>);</CODE> the.
1480: 3c 56 41 52 3e 73 70 6c 69 74 74 61 62 6c 65 3c <VAR>splittable<
1490: 2f 56 41 52 3e 20 66 6c 61 67 20 73 70 65 63 69 /VAR> flag speci
14a0: 66 69 65 73 20 77 68 65 74 68 65 72 20 74 68 65 fies whether the
14b0: 20 73 74 72 75 63 74 20 3c 56 41 52 3e 72 65 74 struct <VAR>ret
14c0: 75 72 6e 5f 74 79 70 65 3c 2f 56 41 52 3e 20 63 urn_type</VAR> c
14d0: 61 6e 0a 62 65 20 72 65 74 75 72 6e 65 64 20 69 an.be returned i
14e0: 6e 20 72 65 67 69 73 74 65 72 73 20 73 75 63 68 n registers such
14f0: 20 74 68 61 74 20 65 76 65 72 79 20 73 74 72 75 that every stru
1500: 63 74 20 66 69 65 6c 64 20 66 69 74 73 0a 65 6e ct field fits.en
1510: 74 69 72 65 6c 79 20 20 69 6e 20 61 20 73 69 6e tirely in a sin
1520: 67 6c 65 20 72 65 67 69 73 74 65 72 2e 20 54 68 gle register. Th
1530: 69 73 20 6e 65 65 64 73 20 74 6f 20 62 65 20 73 is needs to be s
1540: 70 65 63 69 66 69 65 64 0a 66 6f 72 20 73 74 72 pecified.for str
1550: 75 63 74 73 20 6f 66 20 73 69 7a 65 20 3c 53 41 ucts of size <SA
1560: 4d 50 3e 32 2a 73 69 7a 65 6f 66 28 6c 6f 6e 67 MP>2*sizeof(long
1570: 29 3c 2f 53 41 4d 50 3e 2e 20 46 6f 72 20 73 74 )</SAMP>. For st
1580: 72 75 63 74 73 20 6f 66 20 73 69 7a 65 0a 26 6c ructs of size.&l
1590: 74 3b 3d 20 3c 53 41 4d 50 3e 73 69 7a 65 6f 66 t;= <SAMP>sizeof
15a0: 28 6c 6f 6e 67 29 3c 2f 53 41 4d 50 3e 2c 20 20 (long)</SAMP>,
15b0: 73 70 6c 69 74 74 61 62 6c 65 20 20 69 73 20 69 splittable is i
15c0: 67 6e 6f 72 65 64 20 61 6e 64 20 61 73 73 75 6d gnored and assum
15d0: 65 64 20 74 6f 20 62 65 20 31 2e 0a 46 6f 72 20 ed to be 1..For
15e0: 20 73 74 72 75 63 74 73 20 20 6f 66 20 20 73 69 structs of si
15f0: 7a 65 20 20 26 67 74 3b 20 3c 53 41 4d 50 3e 32 ze > <SAMP>2
1600: 2a 73 69 7a 65 6f 66 28 6c 6f 6e 67 29 3c 2f 53 *sizeof(long)</S
1610: 41 4d 50 3e 2c 20 20 73 70 6c 69 74 74 61 62 6c AMP>, splittabl
1620: 65 20 20 69 73 0a 69 67 6e 6f 72 65 64 20 20 61 e is.ignored a
1630: 6e 64 20 20 61 73 73 75 6d 65 64 20 74 6f 20 62 nd assumed to b
1640: 65 20 30 2e 20 54 68 65 72 65 20 61 72 65 20 73 e 0. There are s
1650: 6f 6d 65 20 68 61 6e 64 79 20 6d 61 63 72 6f 73 ome handy macros
1660: 0a 66 6f 72 20 74 68 69 73 3a 0a 3c 50 52 45 3e .for this:.<PRE>
1670: 0a 3c 43 4f 44 45 3e 76 61 5f 77 6f 72 64 5f 73 .<CODE>va_word_s
1680: 70 6c 69 74 74 61 62 6c 65 5f 31 20 28 3c 56 41 plittable_1 (<VA
1690: 52 3e 74 79 70 65 31 3c 2f 56 41 52 3e 29 3c 2f R>type1</VAR>)</
16a0: 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 76 61 5f 77 CODE>.<CODE>va_w
16b0: 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 32 ord_splittable_2
16c0: 20 28 3c 56 41 52 3e 74 79 70 65 31 3c 2f 56 41 (<VAR>type1</VA
16d0: 52 3e 2c 20 3c 56 41 52 3e 74 79 70 65 32 3c 2f R>, <VAR>type2</
16e0: 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 0a 3c 43 4f VAR>)</CODE>.<CO
16f0: 44 45 3e 76 61 5f 77 6f 72 64 5f 73 70 6c 69 74 DE>va_word_split
1700: 74 61 62 6c 65 5f 33 20 28 3c 56 41 52 3e 74 79 table_3 (<VAR>ty
1710: 70 65 31 3c 2f 56 41 52 3e 2c 20 3c 56 41 52 3e pe1</VAR>, <VAR>
1720: 74 79 70 65 32 3c 2f 56 41 52 3e 2c 20 3c 56 41 type2</VAR>, <VA
1730: 52 3e 74 79 70 65 33 3c 2f 56 41 52 3e 29 3c 2f R>type3</VAR>)</
1740: 43 4f 44 45 3e 0a 3c 43 4f 44 45 3e 76 61 5f 77 CODE>.<CODE>va_w
1750: 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 34 ord_splittable_4
1760: 20 28 3c 56 41 52 3e 74 79 70 65 31 3c 2f 56 41 (<VAR>type1</VA
1770: 52 3e 2c 20 3c 56 41 52 3e 74 79 70 65 32 3c 2f R>, <VAR>type2</
1780: 56 41 52 3e 2c 20 3c 56 41 52 3e 74 79 70 65 33 VAR>, <VAR>type3
1790: 3c 2f 56 41 52 3e 2c 20 3c 56 41 52 3e 74 79 70 </VAR>, <VAR>typ
17a0: 65 34 3c 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 3e e4</VAR>)</CODE>
17b0: 0a 3c 2f 50 52 45 3e 0a 46 6f 72 20 61 20 73 74 .</PRE>.For a st
17c0: 72 75 63 74 20 77 69 74 68 20 74 68 72 65 65 20 ruct with three
17d0: 73 6c 6f 74 73 0a 3c 50 52 45 3e 0a 3c 43 4f 44 slots.<PRE>.<COD
17e0: 45 3e 73 74 72 75 63 74 20 7b 20 3c 56 41 52 3e E>struct { <VAR>
17f0: 74 79 70 65 31 20 69 64 31 3c 2f 56 41 52 3e 3b type1 id1</VAR>;
1800: 20 3c 56 41 52 3e 74 79 70 65 32 20 69 64 32 3c <VAR>type2 id2<
1810: 2f 56 41 52 3e 3b 20 3c 56 41 52 3e 74 79 70 65 /VAR>; <VAR>type
1820: 33 20 69 64 33 3c 2f 56 41 52 3e 3b 20 7d 3c 2f 3 id3</VAR>; }</
1830: 43 4f 44 45 3e 0a 3c 2f 50 52 45 3e 0a 79 6f 75 CODE>.</PRE>.you
1840: 20 63 61 6e 20 73 70 65 63 69 66 79 20 3c 56 41 can specify <VA
1850: 52 3e 73 70 6c 69 74 74 61 62 6c 65 3c 2f 56 41 R>splittable</VA
1860: 52 3e 20 61 73 0a 3c 43 4f 44 45 3e 76 61 5f 77 R> as.<CODE>va_w
1870: 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 33 ord_splittable_3
1880: 20 28 3c 56 41 52 3e 74 79 70 65 31 3c 2f 56 41 (<VAR>type1</VA
1890: 52 3e 2c 20 3c 56 41 52 3e 74 79 70 65 32 3c 2f R>, <VAR>type2</
18a0: 56 41 52 3e 2c 20 3c 56 41 52 3e 74 79 70 65 33 VAR>, <VAR>type3
18b0: 3c 2f 56 41 52 3e 29 3c 2f 43 4f 44 45 3e 2e 0a </VAR>)</CODE>..
18c0: 0a 3c 41 20 4e 41 4d 45 3d 22 4e 6f 74 65 73 22 .<A NAME="Notes"
18d0: 3e 0a 3c 48 32 3e 4e 6f 74 65 73 3c 2f 48 32 3e >.<H2>Notes</H2>
18e0: 0a 3c 2f 41 3e 0a 0a 3c 4f 4c 3e 0a 3c 4c 49 3e .</A>..<OL>.<LI>
18f0: 20 46 75 6e 63 74 69 6f 6e 73 20 77 68 69 63 68 Functions which
1900: 20 77 61 6e 74 20 74 6f 20 65 6d 75 6c 61 74 65 want to emulate
1910: 20 4b 65 72 6e 69 67 68 61 6e 20 26 61 6d 70 3b Kernighan &
1920: 20 52 69 74 63 68 69 65 20 20 73 74 79 6c 65 0a Ritchie style.
1930: 66 75 6e 63 74 69 6f 6e 73 20 20 28 69 2e 65 2e functions (i.e.
1940: 2c 20 20 69 6e 20 20 41 4e 53 49 20 20 43 2c 20 , in ANSI C,
1950: 20 66 75 6e 63 74 69 6f 6e 73 20 77 69 74 68 6f functions witho
1960: 75 74 20 61 20 74 79 70 65 64 0a 61 72 67 75 6d ut a typed.argum
1970: 65 6e 74 20 6c 69 73 74 29 20 63 61 6e 6e 6f 74 ent list) cannot
1980: 20 75 73 65 20 74 68 65 20 3c 56 41 52 3e 74 79 use the <VAR>ty
1990: 70 65 3c 2f 56 41 52 3e 20 20 76 61 6c 75 65 73 pe</VAR> values
19a0: 0a 3c 43 4f 44 45 3e 63 68 61 72 3c 2f 43 4f 44 .<CODE>char</COD
19b0: 45 3e 2c 20 3c 43 4f 44 45 3e 73 63 68 61 72 3c E>, <CODE>schar<
19c0: 2f 43 4f 44 45 3e 2c 20 20 3c 43 4f 44 45 3e 75 /CODE>, <CODE>u
19d0: 63 68 61 72 3c 2f 43 4f 44 45 3e 2c 0a 3c 43 4f char</CODE>,.<CO
19e0: 44 45 3e 73 68 6f 72 74 3c 2f 43 4f 44 45 3e 2c DE>short</CODE>,
19f0: 20 20 20 3c 43 4f 44 45 3e 75 73 68 6f 72 74 3c <CODE>ushort<
1a00: 2f 43 4f 44 45 3e 2c 20 20 20 3c 43 4f 44 45 3e /CODE>, <CODE>
1a10: 66 6c 6f 61 74 3c 2f 43 4f 44 45 3e 2e 0a 41 73 float</CODE>..As
1a20: 20 70 72 65 73 63 72 69 62 65 64 20 62 79 20 74 prescribed by t
1a30: 68 65 20 64 65 66 61 75 6c 74 0a 4b 26 61 6d 70 he default.K&
1a40: 3b 52 20 43 20 65 78 70 72 65 73 73 69 6f 6e 20 ;R C expression
1a50: 70 72 6f 6d 6f 74 69 6f 6e 73 2c 20 74 68 65 79 promotions, they
1a60: 20 68 61 76 65 20 74 6f 20 75 73 65 20 3c 43 4f have to use <CO
1a70: 44 45 3e 69 6e 74 3c 2f 43 4f 44 45 3e 20 20 69 DE>int</CODE> i
1a80: 6e 73 74 65 61 64 0a 6f 66 20 3c 43 4f 44 45 3e nstead.of <CODE>
1a90: 63 68 61 72 3c 2f 43 4f 44 45 3e 2c 20 3c 43 4f char</CODE>, <CO
1aa0: 44 45 3e 73 63 68 61 72 3c 2f 43 4f 44 45 3e 2c DE>schar</CODE>,
1ab0: 20 20 3c 43 4f 44 45 3e 75 63 68 61 72 3c 2f 43 <CODE>uchar</C
1ac0: 4f 44 45 3e 2c 0a 3c 43 4f 44 45 3e 73 68 6f 72 ODE>,.<CODE>shor
1ad0: 74 3c 2f 43 4f 44 45 3e 2c 20 20 20 3c 43 4f 44 t</CODE>, <COD
1ae0: 45 3e 75 73 68 6f 72 74 3c 2f 43 4f 44 45 3e 20 E>ushort</CODE>
1af0: 61 6e 64 20 3c 43 4f 44 45 3e 64 6f 75 62 6c 65 and <CODE>double
1b00: 3c 2f 43 4f 44 45 3e 20 69 6e 73 74 65 61 64 20 </CODE> instead
1b10: 6f 66 0a 3c 43 4f 44 45 3e 66 6c 6f 61 74 3c 2f of.<CODE>float</
1b20: 43 4f 44 45 3e 2e 0a 3c 50 3e 0a 3c 4c 49 3e 20 CODE>..<P>.<LI>
1b30: 54 68 65 20 6d 61 63 72 6f 73 20 3c 43 4f 44 45 The macros <CODE
1b40: 3e 76 61 5f 73 74 61 72 74 5f 6c 6f 6e 67 6c 6f >va_start_longlo
1b50: 6e 67 28 29 3c 2f 43 4f 44 45 3e 2c 0a 3c 43 4f ng()</CODE>,.<CO
1b60: 44 45 3e 76 61 5f 73 74 61 72 74 5f 75 6c 6f 6e DE>va_start_ulon
1b70: 67 6c 6f 6e 67 28 29 3c 2f 43 4f 44 45 3e 2c 20 glong()</CODE>,
1b80: 3c 43 4f 44 45 3e 76 61 5f 72 65 74 75 72 6e 5f <CODE>va_return_
1b90: 6c 6f 6e 67 6c 6f 6e 67 28 29 3c 2f 43 4f 44 45 longlong()</CODE
1ba0: 3e 2c 0a 3c 43 4f 44 45 3e 76 61 5f 72 65 74 75 >,.<CODE>va_retu
1bb0: 72 6e 5f 75 6c 6f 6e 67 6c 6f 6e 67 28 29 3c 2f rn_ulonglong()</
1bc0: 43 4f 44 45 3e 2c 20 3c 43 4f 44 45 3e 76 61 5f CODE>, <CODE>va_
1bd0: 61 72 67 5f 6c 6f 6e 67 6c 6f 6e 67 28 29 3c 2f arg_longlong()</
1be0: 43 4f 44 45 3e 20 61 6e 64 0a 3c 43 4f 44 45 3e CODE> and.<CODE>
1bf0: 76 61 5f 61 72 67 5f 75 6c 6f 6e 67 6c 6f 6e 67 va_arg_ulonglong
1c00: 28 29 3c 2f 43 4f 44 45 3e 20 77 6f 72 6b 20 6f ()</CODE> work o
1c10: 6e 6c 79 20 69 66 20 74 68 65 20 43 20 63 6f 6d nly if the C com
1c20: 70 69 6c 65 72 20 68 61 73 20 61 20 77 6f 72 6b piler has a work
1c30: 69 6e 67 0a 3c 43 4f 44 45 3e 6c 6f 6e 67 20 6c ing.<CODE>long l
1c40: 6f 6e 67 3c 2f 43 4f 44 45 3e 20 36 34 2d 62 69 ong</CODE> 64-bi
1c50: 74 20 69 6e 74 65 67 65 72 20 74 79 70 65 2e 0a t integer type..
1c60: 3c 50 3e 0a 3c 4c 49 3e 20 54 68 65 20 73 74 72 <P>.<LI> The str
1c70: 75 63 74 20 74 79 70 65 73 20 75 73 65 64 20 69 uct types used i
1c80: 6e 20 3c 43 4f 44 45 3e 76 61 5f 73 74 61 72 74 n <CODE>va_start
1c90: 5f 73 74 72 75 63 74 28 29 3c 2f 43 4f 44 45 3e _struct()</CODE>
1ca0: 20 61 6e 64 0a 3c 43 4f 44 45 3e 76 61 5f 73 74 and.<CODE>va_st
1cb0: 72 75 63 74 28 29 3c 2f 43 4f 44 45 3e 20 6d 75 ruct()</CODE> mu
1cc0: 73 74 20 6f 6e 6c 79 20 63 6f 6e 74 61 69 6e 20 st only contain
1cd0: 28 73 69 67 6e 65 64 20 6f 72 20 75 6e 73 69 67 (signed or unsig
1ce0: 6e 65 64 29 20 69 6e 74 2c 0a 6c 6f 6e 67 2c 20 ned) int,.long,
1cf0: 6c 6f 6e 67 20 6c 6f 6e 67 20 6f 72 20 70 6f 69 long long or poi
1d00: 6e 74 65 72 20 66 69 65 6c 64 73 2e 20 53 74 72 nter fields. Str
1d10: 75 63 74 20 74 79 70 65 73 20 63 6f 6e 74 61 69 uct types contai
1d20: 6e 69 6e 67 0a 28 73 69 67 6e 65 64 20 6f 72 20 ning.(signed or
1d30: 75 6e 73 69 67 6e 65 64 29 20 63 68 61 72 2c 20 unsigned) char,
1d40: 73 68 6f 72 74 2c 20 66 6c 6f 61 74 2c 20 64 6f short, float, do
1d50: 75 62 6c 65 20 6f 72 20 6f 74 68 65 72 0a 73 74 uble or other.st
1d60: 72 75 63 74 73 20 61 72 65 20 6e 6f 74 20 73 75 ructs are not su
1d70: 70 70 6f 72 74 65 64 2e 0a 3c 50 3e 0a 3c 2f 4f pported..<P>.</O
1d80: 4c 3e 0a 0a 3c 41 20 4e 41 4d 45 3d 22 53 65 65 L>..<A NAME="See
1d90: 20 61 6c 73 6f 22 3e 0a 3c 48 32 3e 53 65 65 20 also">.<H2>See
1da0: 61 6c 73 6f 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a also</H2>.</A>..
1db0: 3c 41 20 48 52 45 46 3d 22 76 61 63 61 6c 6c 28 <A HREF="vacall(
1dc0: 33 29 22 3e 3c 43 4f 44 45 3e 3c 42 3e 76 61 63 3)"><CODE><B>vac
1dd0: 61 6c 6c 3c 2f 42 3e 3c 2f 43 4f 44 45 3e 3c 2f all</B></CODE></
1de0: 41 3e 28 33 29 2c 20 3c 41 20 48 52 45 46 3d 22 A>(3), <A HREF="
1df0: 74 72 61 6d 70 6f 6c 69 6e 65 28 33 29 22 3e 3c trampoline(3)"><
1e00: 43 4f 44 45 3e 3c 42 3e 74 72 61 6d 70 6f 6c 69 CODE><B>trampoli
1e10: 6e 65 3c 2f 42 3e 3c 2f 43 4f 44 45 3e 3c 2f 41 ne</B></CODE></A
1e20: 3e 28 33 29 2e 0a 0a 3c 41 20 4e 41 4d 45 3d 22 >(3)...<A NAME="
1e30: 42 75 67 73 22 3e 0a 3c 48 32 3e 42 75 67 73 3c Bugs">.<H2>Bugs<
1e40: 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 54 68 65 20 20 /H2>.</A>..The
1e50: 63 75 72 72 65 6e 74 20 20 69 6d 70 6c 65 6d 65 current impleme
1e60: 6e 74 61 74 69 6f 6e 73 20 68 61 76 65 20 62 65 ntations have be
1e70: 65 6e 20 74 65 73 74 65 64 20 6f 6e 20 61 20 73 en tested on a s
1e80: 65 6c 65 63 74 69 6f 6e 0a 6f 66 20 63 6f 6d 6d election.of comm
1e90: 6f 6e 20 63 61 73 65 73 20 62 75 74 20 74 68 65 on cases but the
1ea0: 72 65 20 20 61 72 65 20 20 70 72 6f 62 61 62 6c re are probabl
1eb0: 79 20 20 73 74 69 6c 6c 20 20 6d 61 6e 79 0a 62 y still many.b
1ec0: 75 67 73 2e 0a 3c 50 3e 0a 54 68 65 72 65 20 20 ugs..<P>.There
1ed0: 61 72 65 20 20 74 79 70 69 63 61 6c 6c 79 20 20 are typically
1ee0: 62 75 69 6c 74 2d 69 6e 20 20 6c 69 6d 69 74 73 built-in limits
1ef0: 20 6f 6e 20 74 68 65 20 73 69 7a 65 20 6f 66 20 on the size of
1f00: 74 68 65 0a 61 72 67 75 6d 65 6e 74 2d 6c 69 73 the.argument-lis
1f10: 74 2c 20 77 68 69 63 68 20 6d 61 79 20 61 6c 73 t, which may als
1f20: 6f 20 20 69 6e 63 6c 75 64 65 20 20 74 68 65 20 o include the
1f30: 20 73 69 7a 65 20 20 6f 66 20 20 61 6e 79 0a 73 size of any.s
1f40: 74 72 75 63 74 75 72 65 20 61 72 67 75 6d 65 6e tructure argumen
1f50: 74 73 2e 0a 3c 50 3e 0a 54 68 65 20 64 65 63 69 ts..<P>.The deci
1f60: 73 69 6f 6e 20 77 68 65 74 68 65 72 20 61 20 73 sion whether a s
1f70: 74 72 75 63 74 20 69 73 20 74 6f 20 62 65 20 72 truct is to be r
1f80: 65 74 75 72 6e 65 64 20 69 6e 20 72 65 67 69 73 eturned in regis
1f90: 74 65 72 73 20 6f 72 20 69 6e 20 6d 65 6d 6f 72 ters or in memor
1fa0: 79 0a 63 6f 6e 73 69 64 65 72 73 20 6f 6e 6c 79 y.considers only
1fb0: 20 74 68 65 20 73 74 72 75 63 74 27 73 20 73 69 the struct's si
1fc0: 7a 65 20 61 6e 64 20 61 6c 69 67 6e 6d 65 6e 74 ze and alignment
1fd0: 2e 20 54 68 69 73 20 69 73 20 69 6e 61 63 63 75 . This is inaccu
1fe0: 72 61 74 65 3a 20 66 6f 72 0a 65 78 61 6d 70 6c rate: for.exampl
1ff0: 65 2c 20 67 63 63 20 6f 6e 20 6d 36 38 6b 2d 6e e, gcc on m68k-n
2000: 65 78 74 20 72 65 74 75 72 6e 73 0a 3c 43 4f 44 ext returns.<COD
2010: 45 3e 73 74 72 75 63 74 20 7b 20 63 68 61 72 20 E>struct { char
2020: 61 2c 62 2c 63 3b 20 7d 3c 2f 43 4f 44 45 3e 0a a,b,c; }</CODE>.
2030: 69 6e 20 72 65 67 69 73 74 65 72 73 20 61 6e 64 in registers and
2040: 0a 3c 43 4f 44 45 3e 73 74 72 75 63 74 20 7b 20 .<CODE>struct {
2050: 63 68 61 72 20 61 5b 33 5d 3b 20 7d 3c 2f 43 4f char a[3]; }</CO
2060: 44 45 3e 0a 69 6e 20 6d 65 6d 6f 72 79 2c 20 61 DE>.in memory, a
2070: 6c 74 68 6f 75 67 68 20 62 6f 74 68 20 74 79 70 lthough both typ
2080: 65 73 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 es have the same
2090: 20 73 69 7a 65 20 61 6e 64 20 74 68 65 20 73 61 size and the sa
20a0: 6d 65 20 61 6c 69 67 6e 6d 65 6e 74 2e 0a 3c 50 me alignment..<P
20b0: 3e 0a 3c 43 4f 44 45 3e 26 6c 74 3b 63 61 6c 6c >.<CODE><call
20c0: 62 61 63 6b 2e 68 26 67 74 3b 3c 2f 43 4f 44 45 back.h></CODE
20d0: 3e 20 63 61 6e 6e 6f 74 20 62 65 20 69 6e 63 6c > cannot be incl
20e0: 75 64 65 64 20 20 77 68 65 6e 20 3c 43 4f 44 45 uded when <CODE
20f0: 3e 26 6c 74 3b 76 61 72 61 72 67 73 2e 68 26 67 ><varargs.h&g
2100: 74 3b 3c 2f 43 4f 44 45 3e 20 20 6f 72 0a 3c 43 t;</CODE> or.<C
2110: 4f 44 45 3e 26 6c 74 3b 73 74 64 61 72 67 2e 68 ODE><stdarg.h
2120: 26 67 74 3b 3c 2f 43 4f 44 45 3e 20 69 73 20 69 ></CODE> is i
2130: 6e 63 6c 75 64 65 64 2e 20 20 28 4e 61 6d 65 20 ncluded. (Name
2140: 63 6c 61 73 68 20 66 6f 72 20 3c 43 4f 44 45 3e clash for <CODE>
2150: 76 61 5f 61 6c 69 73 74 3c 2f 43 4f 44 45 3e 2e va_alist</CODE>.
2160: 29 0a 3c 50 3e 0a 54 68 65 20 61 72 67 75 6d 65 ).<P>.The argume
2170: 6e 74 20 6c 69 73 74 20 63 61 6e 20 6f 6e 6c 79 nt list can only
2180: 20 62 65 20 77 61 6c 6b 65 64 20 6f 6e 63 65 2e be walked once.
2190: 0a 0a 3c 41 20 4e 41 4d 45 3d 22 4e 6f 6e 2d 42 ..<A NAME="Non-B
21a0: 75 67 73 22 3e 0a 3c 48 32 3e 4e 6f 6e 2d 42 75 ugs">.<H2>Non-Bu
21b0: 67 73 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 41 6c gs</H2>.</A>..Al
21c0: 6c 20 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 l information i
21d0: 73 20 70 61 73 73 65 64 20 69 6e 20 43 50 55 20 s passed in CPU
21e0: 72 65 67 69 73 74 65 72 73 20 61 6e 64 20 74 68 registers and th
21f0: 65 20 73 74 61 63 6b 2e 0a 54 68 65 20 3c 43 4f e stack..The <CO
2200: 44 45 3e 3c 42 3e 63 61 6c 6c 62 61 63 6b 3c 2f DE><B>callback</
2210: 42 3e 3c 2f 43 4f 44 45 3e 20 70 61 63 6b 61 67 B></CODE> packag
2220: 65 20 69 73 20 74 68 65 72 65 66 6f 72 65 20 6d e is therefore m
2230: 75 6c 74 69 74 68 72 65 61 64 2d 73 61 66 65 2e ultithread-safe.
2240: 0a 0a 3c 41 20 4e 41 4d 45 3d 22 50 6f 72 74 69 ..<A NAME="Porti
2250: 6e 67 22 3e 0a 3c 48 32 3e 50 6f 72 74 69 6e 67 ng">.<H2>Porting
2260: 3c 2f 48 32 3e 0a 3c 2f 41 3e 0a 0a 50 6f 72 74 </H2>.</A>..Port
2270: 69 6e 67 20 3c 43 4f 44 45 3e 3c 42 3e 63 61 6c ing <CODE><B>cal
2280: 6c 62 61 63 6b 3c 2f 42 3e 3c 2f 43 4f 44 45 3e lback</B></CODE>
2290: 20 63 6f 6e 73 69 73 74 73 20 69 6e 20 66 69 72 consists in fir
22a0: 73 74 20 70 6f 72 74 69 6e 67 20 74 68 65 20 3c st porting the <
22b0: 43 4f 44 45 3e 3c 42 3e 76 61 63 61 6c 6c 3c 2f CODE><B>vacall</
22c0: 42 3e 3c 2f 43 4f 44 45 3e 20 20 61 6e 64 0a 3c B></CODE> and.<
22d0: 43 4f 44 45 3e 3c 42 3e 74 72 61 6d 70 6f 6c 69 CODE><B>trampoli
22e0: 6e 65 3c 2f 42 3e 3c 2f 43 4f 44 45 3e 20 20 70 ne</B></CODE> p
22f0: 61 63 6b 61 67 65 73 2c 20 20 74 68 65 6e 20 20 ackages, then
2300: 63 68 6f 6f 73 69 6e 67 20 20 61 20 20 43 50 55 choosing a CPU
2310: 20 72 65 67 69 73 74 65 72 20 66 6f 72 0a 70 61 register for.pa
2320: 73 73 69 6e 67 20 74 68 65 20 63 6c 6f 73 75 72 ssing the closur
2330: 65 20 66 72 6f 6d 20 3c 45 4d 3e 74 72 61 6d 70 e from <EM>tramp
2340: 6f 6c 69 6e 65 3c 2f 45 4d 3e 20 74 6f 20 3c 45 oline</EM> to <E
2350: 4d 3e 76 61 63 61 6c 6c 3c 2f 45 4d 3e 2e 20 20 M>vacall</EM>.
2360: 54 68 69 73 0a 72 65 67 69 73 74 65 72 20 20 20 This.register
2370: 20 69 73 20 20 20 20 6e 6f 72 6d 61 6c 6c 79 20 is normally
2380: 20 20 74 68 65 20 20 20 72 65 67 69 73 74 65 72 the register
2390: 20 20 20 64 65 73 69 67 6e 61 74 65 64 20 20 20 designated
23a0: 62 79 0a 3c 43 4f 44 45 3e 53 54 41 54 49 43 5f by.<CODE>STATIC_
23b0: 43 48 41 49 4e 5f 52 45 47 4e 55 4d 3c 2f 43 4f CHAIN_REGNUM</CO
23c0: 44 45 3e 20 69 6e 20 74 68 65 20 67 63 63 20 73 DE> in the gcc s
23d0: 6f 75 72 63 65 2c 20 66 69 6c 65 0a 3c 53 41 4d ource, file.<SAM
23e0: 50 3e 67 63 63 2d 32 2e 37 2e 32 2f 63 6f 6e 66 P>gcc-2.7.2/conf
23f0: 69 67 2f 3c 56 41 52 3e 63 70 75 3c 2f 56 41 52 ig/<VAR>cpu</VAR
2400: 3e 2f 3c 56 41 52 3e 63 70 75 3c 2f 56 41 52 3e >/<VAR>cpu</VAR>
2410: 2e 68 3c 2f 53 41 4d 50 3e 2e 0a 0a 3c 41 20 4e .h</SAMP>...<A N
2420: 41 4d 45 3d 22 41 75 74 68 6f 72 22 3e 0a 3c 48 AME="Author">.<H
2430: 32 3e 41 75 74 68 6f 72 3c 2f 48 32 3e 0a 3c 2f 2>Author</H2>.</
2440: 41 3e 0a 0a 42 72 75 6e 6f 20 48 61 69 62 6c 65 A>..Bruno Haible
2450: 20 26 6c 74 3b 62 72 75 6e 6f 40 63 6c 69 73 70 <bruno@clisp
2460: 2e 6f 72 67 26 67 74 3b 0a 0a 3c 41 20 4e 41 4d .org>..<A NAM
2470: 45 3d 22 41 63 6b 6e 6f 77 6c 65 64 67 65 6d 65 E="Acknowledgeme
2480: 6e 74 73 22 3e 0a 3c 48 32 3e 41 63 6b 6e 6f 77 nts">.<H2>Acknow
2490: 6c 65 64 67 65 6d 65 6e 74 73 3c 2f 48 32 3e 0a ledgements</H2>.
24a0: 3c 2f 41 3e 0a 0a 4d 61 6e 79 20 69 64 65 61 73 </A>..Many ideas
24b0: 20 77 65 72 65 20 63 72 69 62 62 65 64 20 66 72 were cribbed fr
24c0: 6f 6d 20 74 68 65 20 67 63 63 20 73 6f 75 72 63 om the gcc sourc
24d0: 65 2e 0a 3c 50 3e 0a 0a 3c 48 52 3e 0a 0a 3c 41 e..<P>..<HR>..<A
24e0: 44 44 52 45 53 53 3e 43 41 4c 4c 42 41 43 4b 20 DDRESS>CALLBACK
24f0: 6d 61 6e 75 61 6c 20 70 61 67 65 3c 42 52 3e 0a manual page<BR>.
2500: 42 72 75 6e 6f 20 48 61 69 62 6c 65 20 26 6c 74 Bruno Haible <
2510: 3b 62 72 75 6e 6f 40 63 6c 69 73 70 2e 6f 72 67 ;bruno@clisp.org
2520: 26 67 74 3b 0a 3c 2f 41 44 44 52 45 53 53 3e 0a >.</ADDRESS>.
2530: 3c 50 3e 0a 4c 61 73 74 20 6d 6f 64 69 66 69 65 <P>.Last modifie
2540: 64 3a 20 31 34 20 4a 61 6e 75 61 72 79 20 32 30 d: 14 January 20
2550: 30 31 2e 0a 0a 3c 2f 42 4f 44 59 3e 0a 01...</BODY>.