Pth tweaks and improved estream.c
[gnupg.git] / keyserver / ChangeLog
1 2006-10-17  Werner Koch  <wk@g10code.com>
2
3         * Makefile.am: Removed W32LIBS as they are included in NETLIBS.
4         Removed PTH_LIBS.
5
6 2006-09-26  Werner Koch  <wk@g10code.com>
7
8         * curl-shim.c: Adjusted for changes in http.c.
9         (curl_easy_perform): Changed LINE from unsigned char* to char*.
10
11         * Makefile.am (gpg2keys_curl_LDADD, gpg2keys_hkp_LDADD)
12         [FAKE_CURL]: Need to link against common_libs and pth.
13
14         * curl-shim.h, curl-shim.c: Removed license exception as not
15         needed here.
16
17 2006-09-22  Werner Koch  <wk@g10code.com>
18
19         * gpgkeys_curl.c, gpgkeys_hkp.c, gpgkeys_ldap.c, curl-shim.c:
20         * curl-shim.h, ksutil.c, ksutil.h: Add special license exception
21         for OpenSSL.  This helps to avoid license conflicts if OpenLDAP or
22         cURL is linked against OpenSSL and we would thus indirectly link
23         to OpenSSL.  This is considered a bug fix and forgives all
24         possible violations, pertaining to this issue, possibly occured in
25         the past.
26         
27         * no-libgcrypt.c: Changed license to a simple all permissive one.
28
29         * Makefile.am (gpg2keys_ldap_LDADD): For license reasons do not
30         link against common_libs.
31         (gpg2keys_curl_LDADD, gpg2keys_hkp_LDADD): Ditto.
32         * ksutil.c (ks_hextobyte, ks_toupper, ks_strcasecmp): New.
33         Identical to the ascii_foo versions from jnlib.
34         * gpgkeys_ldap.c: Include assert.h.
35         (main): Replace BUG by assert.
36         (build_attrs): Use ks_hextobyte and ks_strcasecmp.
37
38         * gpgkeys_finger.c (get_key): Resolved signed/unisgned char
39         mismatch.
40
41 2006-09-19  Werner Koch  <wk@g10code.com>
42         
43         * no-libgcrypt.c: New. Taken from ../tools.
44         * Makefile.am: Add no-libgcrypt to all sources.
45
46 2006-09-06  Marcus Brinkmann  <marcus@g10code.de>
47
48         * Makefile.am (AM_CFLAGS): Add $(GPG_ERROR_CFLAGS).
49
50 2006-08-16  Werner Koch  <wk@g10code.com>
51
52         * Makefile.am: Renamed all binaries to gpg2keys_*.
53         (gpg2keys_ldap_CPPFLAGS): Add AM_CPPFLAGS.
54
55 2006-08-15  Werner Koch  <wk@g10code.com>
56
57         * Makefile.am: Adjusted to the gnupg2 framework.
58
59 2006-08-14  Werner Koch  <wk@g10code.com>
60
61         * curl-shil.c, curl-shim.h: Changed to make use of the new http.c
62         API.
63
64         * curl-shim.c (curl_easy_perform): Add missing http_close to the
65         POST case.
66
67 2006-07-24  David Shaw  <dshaw@jabberwocky.com>  (wk)
68
69         * curl-shim.c (curl_easy_perform): Minor cleanup of proxy code.
70
71         * gpgkeys_hkp.c (send_key)
72         * gpgkeys_ldap.c (send_key, send_key_keyserver): Fix string
73         matching problem when the ascii armored form of the key happens to
74         match "KEY" at the beginning of the line.
75
76 2006-04-26  David Shaw  <dshaw@jabberwocky.com>
77
78         * gpgkeys_http.c, gpgkeys_oldhkp.c: Removed.
79
80         * Makefile.am: Don't build gpgkeys_http or gpgkeys_(old)hkp any
81         longer as this is done via curl or fake-curl.
82
83         * ksutil.h, ksutil.c, gpgkeys_hkp.c, gpgkeys_curl.c: Minor
84         #include tweaks as FAKE_CURL is no longer meaningful.
85
86 2006-04-10  David Shaw  <dshaw@jabberwocky.com>
87
88         * gpgkeys_ldap.c (ldap_quote, get_name, search_key): LDAP-quote
89         directly into place rather than mallocing temporary buffers.
90
91         * gpgkeys_ldap.c (get_name): Build strings with strcat rather than
92         using sprintf which is harder to read and modify.
93
94         * ksutil.h, ksutil.c (classify_ks_search): Add
95         KS_SEARCH_KEYID_SHORT and KS_SEARCH_KEYID_LONG to search for a key
96         ID.
97
98         * gpgkeys_ldap.c (search_key): Use it here to flip from pgpUserID
99         searches to pgpKeyID or pgpCertID.
100
101 2006-03-27  David Shaw  <dshaw@jabberwocky.com>
102
103         * gpgkeys_ldap.c: #define LDAP_DEPRECATED for newer OpenLDAPs so
104         they use the regular old API that is compatible with other LDAP
105         libraries.
106
107 2006-03-03  David Shaw  <dshaw@jabberwocky.com>
108
109         * gpgkeys_ldap.c (main): Fix build problem with non-OpenLDAP LDAP
110         libraries that have TLS.
111
112 2006-02-23  David Shaw  <dshaw@jabberwocky.com>
113
114         * ksutil.c (init_ks_options): Default include-revoked and
115         include-subkeys to on, as gpg isn't doing this any longer.
116
117 2006-02-22  David Shaw  <dshaw@jabberwocky.com>
118
119         * gpgkeys_hkp.c (get_name): A GETNAME query turns exact=on to cut
120         down on odd matches.
121
122 2006-02-21  David Shaw  <dshaw@jabberwocky.com>
123
124         * gpgkeys_ldap.c (make_one_attr, build_attrs, send_key): Don't
125         allow duplicate attributes as OpenLDAP is now enforcing this.
126
127         * gpgkeys_ldap.c (main): Add binddn and bindpw so users can pass
128         credentials to a remote LDAP server.
129
130         * curl-shim.h, curl-shim.c (curl_easy_init, curl_easy_setopt,
131         curl_easy_perform): Mingw has 'stderr' as a macro?
132
133         * curl-shim.h, curl-shim.c (curl_easy_init, curl_easy_setopt,
134         curl_easy_perform): Add CURLOPT_VERBOSE and CURLOPT_STDERR for
135         easier debugging.
136
137 2006-01-16  David Shaw  <dshaw@jabberwocky.com>
138
139         * gpgkeys_hkp.c (send_key): Do not escape the '=' in the HTTP POST
140         when uploading a key.
141
142 2005-12-23  David Shaw  <dshaw@jabberwocky.com>
143
144         * ksutil.h, ksutil.c (parse_ks_options): New keyserver command
145         "getname".
146
147         * gpgkeys_hkp.c (main, get_name), gpgkeys_ldap.c (main, get_name):
148         Use it here to do direct name (rather than key ID) fetches.
149
150 2005-12-19  David Shaw  <dshaw@jabberwocky.com>
151
152         * ksutil.h, ksutil.c (curl_armor_writer, curl_writer,
153         curl_writer_finalize): New functionality to handle binary format
154         keys by armoring them for input to GPG.
155
156         * gpgkeys_curl.c (get_key), gpgkeys_hkp.c (get_key): Call it here.
157
158 2005-12-07  David Shaw  <dshaw@jabberwocky.com>
159
160         * gpgkeys_finger.c (get_key), gpgkeys_curl.c (get_key): Better
161         language for the key-not-found error.
162
163         * ksutil.c (curl_err_to_gpg_err): Add CURLE_OK and
164         CURLE_COULDNT_CONNECT.
165
166         * gpgkeys_curl.c (get_key): Give key-not-found error if no data is
167         found (or file itself is not found) during a fetch.
168
169 2005-12-06  David Shaw  <dshaw@jabberwocky.com>
170
171         * curl-shim.c (curl_easy_perform): Fix build warning (code before
172         declaration).
173
174 2005-11-02  David Shaw  <dshaw@jabberwocky.com>
175
176         * gpgkeys_hkp.c (search_key): Fix warning with typecast (though
177         curl should really have defined that char * as const).
178
179 2005-08-25  David Shaw  <dshaw@jabberwocky.com>
180
181         * ksutil.h, ksutil.c (parse_ks_options): Remove exact-name and
182         exact-email.
183         (classify_ks_search): Mimic the gpg search modes instead with *,
184         =, <, and @.
185
186         * gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Call
187         them here.  Suggested by Jason Harris.
188
189 2005-08-18  David Shaw  <dshaw@jabberwocky.com>
190
191         * ksutil.h, ksutil.c (parse_ks_options): New keyserver-option
192         exact-name.  The last of exact-name and exact-email overrides the
193         earlier.
194
195         * gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Use it
196         here to do a name-only search.
197
198         * gpgkeys_ldap.c (ldap_quote): \-quote a string for LDAP.
199
200         * gpgkeys_ldap.c (search_key): Use it here to escape reserved
201         characters in searches.
202
203 2005-08-17  David Shaw  <dshaw@jabberwocky.com>
204
205         * ksutil.h, ksutil.c (parse_ks_options): New keyserver-option
206         exact-email.
207
208         * gpgkeys_ldap.c (search_key), gpgkeys_hkp.c (search_key): Use it
209         here to do an email-only search.
210
211 2005-08-08  David Shaw  <dshaw@jabberwocky.com>
212
213         * Makefile.am: Include LDAP_CPPFLAGS when building LDAP.
214
215 2005-08-03  David Shaw  <dshaw@jabberwocky.com>
216
217         * gpgkeys_hkp.c (main), gpgkeys_curl.c (main), curl-shim.h: Show
218         version of curl (or curl-shim) when debug is set.
219
220 2005-07-20  David Shaw  <dshaw@jabberwocky.com>
221
222         * gpgkeys_curl.c (get_key, main): Don't try and be smart about
223         what protocols we handle.  Directly pass them to curl or fake-curl
224         and see if an error comes back.
225
226         * curl-shim.h, curl-shim.c (handle_error), ksutil.c
227         (curl_err_to_gpg_err): Add support for CURLE_UNSUPPORTED_PROTOCOL
228         in fake curl.
229
230         * Makefile.am: Don't need -DFAKE_CURL any longer since it's in
231         config.h.
232
233 2005-06-23  David Shaw  <dshaw@jabberwocky.com>
234
235         * gpgkeys_mailto.in, gpgkeys_test.in: Use @VERSION@ so version
236         string stays up to date.
237
238         * gpgkeys_http.c: Don't need to define HTTP_PROXY_ENV here since
239         it's in ksutil.h.
240
241         * gpgkeys_curl.c (get_key, main), gpgkeys_hkp.c (main): Pass AUTH
242         values to curl or curl-shim.
243
244         * curl-shim.c (curl_easy_perform), gpgkeys_curl.c (main),
245         gpgkeys_hkp.c (main): Use curl-style proxy semantics.
246
247         * curl-shim.h, curl-shim.c (curl_easy_setopt, curl_easy_perform):
248         Add CURLOPT_USERPWD option for HTTP auth.
249
250         * gpgkeys_http.c (get_key), gpgkeys_oldhkp (send_key, get_key,
251         search_key): No longer need to pass a proxyauth.
252
253         * gpgkeys_http.c (get_key): Pass auth outside of the URL.
254
255 2005-06-21  David Shaw  <dshaw@jabberwocky.com>
256
257         * gpgkeys_http.c (get_key), gpgkeys_oldhkp.c (send_key, get_key,
258         search_key): Fix http_open/http_open_document calls to pass NULL
259         for auth and proxyauth since these programs pass them in the URL.
260
261 2005-06-20  David Shaw  <dshaw@jabberwocky.com>
262
263         * gpgkeys_hkp.c (append_path, send_key, get_key, search_key,
264         main), gpgkeys_oldhkp.c (main): Properly handle double slashes in
265         paths.
266
267 2005-06-05  David Shaw  <dshaw@jabberwocky.com>
268
269         * ksutil.c (init_ks_options, parse_ks_options): Provide a default
270         "/" path unless overridden by the config.  Allow config to specify
271         items multiple times and take the last specified item.
272
273 2005-06-04  David Shaw  <dshaw@jabberwocky.com>
274
275         * gpgkeys_hkp.c, gpgkeys_oldhkp.c: Add support for HKP servers
276         that aren't at the root path.  Suggested by Jack Bates.
277
278 2005-06-01  David Shaw  <dshaw@jabberwocky.com>
279
280         * ksutil.c [HAVE_DOSISH_SYSTEM]: Fix warnings on mingw32.  Noted
281         by Joe Vender.
282
283 2005-05-04  David Shaw  <dshaw@jabberwocky.com>
284
285         * ksutil.h, ksutil.c: #ifdef so we can build without libcurl or
286         fake-curl.
287
288 2005-05-03  David Shaw  <dshaw@jabberwocky.com>
289
290         * gpgkeys_http.c: Need GET defined.
291
292 2005-05-01  David Shaw  <dshaw@jabberwocky.com>
293
294         * gpgkeys_hkp.c, gpgkeys_oldhkp.c, ksutil.h: Some minor cleanup
295         and comments as to the size of MAX_LINE and MAX_URL.
296
297 2005-04-16  David Shaw  <dshaw@jabberwocky.com>
298
299         * gpgkeys_hkp.c: New hkp handler that uses curl or curl-shim.
300
301         * Makefile.am: Build new gpgkeys_hkp.
302
303         * curl-shim.c (curl_easy_perform): Cleanup.
304
305         * ksutil.h, ksutil.c (curl_writer), gpgkeys_curl.c (get_key): Pass
306         a context to curl_writer so we can support multiple fetches in a
307         single session.
308
309         * curl-shim.h, curl-shim.c (handle_error, curl_easy_setopt,
310         curl_easy_perform): Add POST functionality to the curl shim.
311
312         * curl-shim.h, curl-shim.c (curl_escape, curl_free): Emulate
313         curl_escape and curl_free.
314
315         * gpgkeys_curl.c (main): If the http-proxy option is given without
316         any arguments, try to get the proxy from the environment.
317
318         * ksutil.h, ksutil.c (curl_err_to_gpg_err, curl_writer): Copy from
319         gpgkeys_curl.c.
320
321         * gpgkeys_oldhkp.c: Copy from gpgkeys_hkp.c.
322
323 2005-03-22  David Shaw  <dshaw@jabberwocky.com>
324
325         * gpgkeys_ldap.c, ksutil.h, ksutil.c (print_nocr): Moved from
326         gpgkeys_ldap.c.  Print a string, but strip out any CRs.
327
328         * gpgkeys_finger.c (get_key), gpgkeys_hkp.c (get_key),
329         gpgkeys_http.c (get_key): Use it here when outputting key material
330         to canonicalize line endings.
331
332 2005-03-19  David Shaw  <dshaw@jabberwocky.com>
333
334         * gpgkeys_ldap.c (main): Fix three wrong calls to fail_all().
335         Noted by Stefan Bellon.
336
337 2005-03-17  David Shaw  <dshaw@jabberwocky.com>
338
339         * ksutil.c (parse_ks_options): Handle verbose=nnn.
340
341         * Makefile.am: Calculate GNUPG_LIBEXECDIR directly.  Do not
342         redefine $libexecdir.
343
344         * gpgkeys_curl.c, gpgkeys_finger.c, gpgkeys_ldap.c: Start using
345         parse_ks_options and remove a lot of common code.
346
347         * ksutil.h, ksutil.c (parse_ks_options): Parse OPAQUE, and default
348         debug with no arguments to 1.
349
350 2005-03-16  David Shaw  <dshaw@jabberwocky.com>
351
352         * gpgkeys_ldap.c: Include lber.h if configure determines we need
353         it.
354
355         * ksutil.h, ksutil.c (ks_action_to_string): New.
356         (free_ks_options): Only free if options exist.
357
358         * ksutil.h, ksutil.c (init_ks_options, free_ks_options,
359         parse_ks_options): Pull a lot of duplicated code into a single
360         options parser for all keyserver helpers.
361
362 2005-02-11  David Shaw  <dshaw@jabberwocky.com>
363
364         * curl-shim.c (curl_easy_perform): Fix compile warning.
365
366         * curl-shim.h, gpgkeys_curl.c (main), gpgkeys_ldap.c (main): Add
367         ca-cert-file option, to pass in the SSL cert.
368
369         * curl-shim.h, curl-shim.c: New.  This is code to fake the curl
370         API in terms of the current HTTP iobuf API.
371
372         * gpgkeys_curl.c [FAKE_CURL], Makefile.am: If FAKE_CURL is set,
373         link with the iobuf code rather than libcurl.
374
375 2005-02-05  David Shaw  <dshaw@jabberwocky.com>
376
377         * gpgkeys_finger.c (main), gpgkeys_hkp.c (main): Fix --version
378         output.
379
380         * gpgkeys_curl.c (main): Make sure the curl handle is cleaned up
381         on failure.
382
383 2005-02-01  David Shaw  <dshaw@jabberwocky.com>
384
385         * gpgkeys_hkp.c (get_key), gpgkeys_http.c (get_key): Fix missing
386         http_close() calls.  Noted by Phil Pennock.
387
388         * ksutil.h: Up the default timeout to two minutes.
389
390 2005-01-24  David Shaw  <dshaw@jabberwocky.com>
391
392         * gpgkeys_ldap.c (print_nocr): New.
393         (get_key): Call it here to canonicalize line endings.
394
395         * gpgkeys_curl.c (writer): Discard everything outside the BEGIN
396         and END lines when retrieving keys.  Canonicalize line endings.
397         (main): Accept FTPS.
398
399 2005-01-21  David Shaw  <dshaw@jabberwocky.com>
400
401         * gpgkeys_ldap.c (main): Add "check-cert" option to disable SSL
402         certificate checking (which is on by default).
403
404         * gpgkeys_curl.c (main): Add "debug" option to match the LDAP
405         helper.  Add "check-cert" option to disable SSL certificate
406         checking (which is on by default).
407
408 2005-01-18  David Shaw  <dshaw@jabberwocky.com>
409
410         * gpgkeys_curl.c: Fix typo.
411
412 2005-01-18  Werner Koch  <wk@g10code.com>
413
414         * gpgkeys_curl.c: s/MAX_PATH/URLMAX_PATH/g to avoid a clash with
415         the W32 defined macro.  Removed unneeded initialization of static
416         variables.
417         * gpgkeys_http.c: Ditto.
418         * ksutil.h: s/MAX_PATH/URLMAX_PATH/.
419
420 2005-01-17  David Shaw  <dshaw@jabberwocky.com>
421
422         * gpgkeys_curl.c (main): Only allow specified protocols to use the
423         curl handler.
424
425         * Makefile.am: Use LIBCURL_CPPFLAGS instead of LIBCURL_INCLUDES.
426
427 2005-01-13  David Shaw  <dshaw@jabberwocky.com>
428
429         * ksutil.h, gpgkeys_curl.c, gpgkeys_hkp.c, gpgkeys_ldap.c,
430         gpgkeys_finger.c, gpgkeys_http.c: Part 2 of the cleanup.  Move all
431         the various defines to ksutil.h.
432
433         * gpgkeys_finger.c, gpgkeys_hkp.c, gpgkeys_http.c, gpgkeys_ldap.c:
434         Part 1 of a minor cleanup to use #defines instead of hard-coded
435         sizes.
436
437         * gpgkeys_finger.c (connect_server): Use INADDR_NONE instead of
438         SOCKET_ERROR.  Noted by Timo.
439
440 2005-01-09  David Shaw  <dshaw@jabberwocky.com>
441
442         * gpgkeys_curl.c (get_key): Newer versions of libcurl don't define
443         TRUE.
444
445 2004-12-24  David Shaw  <dshaw@jabberwocky.com>
446
447         * gpgkeys_curl.c (main): Use new defines for opting out of certain
448         transfer protocols.  Allow setting HTTP proxy via "http-proxy=foo"
449         option (there is natural support in libcurl for the http_proxy
450         environment variable).
451
452         * Makefile.am: Remove the conditional since this is all handled in
453         autoconf now.
454
455 2004-12-22  David Shaw  <dshaw@jabberwocky.com>
456
457         * gpgkeys_curl.c (main): New "follow-redirects" option.  Takes an
458         optional numeric value for the maximum number of redirects to
459         allow.  Defaults to 5.
460
461         * gpgkeys_curl.c (main), gpgkeys_finger.c (main), gpgkeys_hkp.c
462         (main), gpgkeys_http.c (main), gpgkeys_ldap.c (main): Make sure
463         that a "timeout" option passed with no arguments is properly
464         handled.
465
466         * gpgkeys_curl.c (get_key, writer): New function to wrap around
467         fwrite to avoid DLL access problem on win32.
468
469         * gpgkeys_http.c (main, get_key): Properly pass authentication
470         info through to the http library.
471
472         * Makefile.am: Build gpgkeys_http or gpgkeys_curl as needed.
473
474         * gpgkeys_curl.c (main, get_key): Minor tweaks to work with either
475         FTP or HTTP.
476
477         * gpgkeys_ftp.c: renamed to gpgkeys_curl.c.
478
479         * gpgkeys_ftp.c (main, get_key): Use auth data as passed by gpg.
480         Use CURLOPT_FILE instead of CURLOPT_WRITEDATA (same option, but
481         backwards compatible).
482
483 2004-12-21  David Shaw  <dshaw@jabberwocky.com>
484
485         * gpgkeys_ftp.c: New.
486
487         * Makefile.am: Build it if requested.
488
489 2004-12-14  Werner Koch  <wk@g10code.com>
490
491         * Makefile.am (install-exec-hook, uninstall-hook): Removed.  For
492         Windows reasons we can't use the symlink trick.
493
494 2004-12-03  David Shaw  <dshaw@jabberwocky.com>
495
496         * Makefile.am: The harmless "ignored error" on gpgkeys_ldap
497         install on top of an existing install is bound to confuse people.
498         Use ln -s -f to force the overwrite.
499
500 2004-10-28  David Shaw  <dshaw@jabberwocky.com>
501
502         * gpgkeys_finger.c [_WIN32] (connect_server): Fix typo.
503
504 2004-10-28  Werner Koch  <wk@g10code.com>
505
506         * Makefile.am (other_libs): New.  Also include LIBICONV.  Noted by
507         Tim Mooney.
508
509 2004-10-28  Werner Koch  <wk@g10code.com>
510
511         * Makefile.am (other_libs): 
512
513 2004-10-18  David Shaw  <dshaw@jabberwocky.com>
514
515         * gpgkeys_hkp.c (send_key, get_key, search_key): Use "hkp" instead
516         of "x-hkp" so it can be used as a SRV tag.
517
518 2004-10-16  David Shaw  <dshaw@jabberwocky.com>
519
520         * gpgkeys_finger.c [_WIN32] (connect_server): Fix typo.
521
522 2004-10-15  Werner Koch  <wk@g10code.com>
523
524         * gpgkeys_ldap.c (main, show_help): Kludge to implement standard
525         GNU options. Factored help printing out.
526         * gpgkeys_finger.c (main, show_help): Ditto.
527         * gpgkeys_hkp.c (main, show_help): Ditto.
528         * gpgkeys_http.c (main, show_help): Ditto.
529         * gpgkeys_test.in, gpgkeys_mailto.in: Implement --version and --help.
530
531         * Makefile.am: Add ksutil.h.
532
533 2004-10-14  David Shaw  <dshaw@jabberwocky.com>
534
535         * gpgkeys_finger.c (main): We do not support relay fingering
536         (i.e. "finger://relayhost/user@example.com"), but finger URLs are
537         occasionally miswritten that way.  Give an error in this case.
538
539 2004-10-14  Werner Koch  <wk@g10code.com>
540
541         * gpgkeys_finger.c (get_key): s/unsigned char/byte/ due
542         to a strange typedef for RISC OS.  Noted by Stefan.
543
544 2004-10-13  David Shaw  <dshaw@jabberwocky.com>
545
546         * gpgkeys_ldap.c (main), gpgkeys_hkp.c (main), gpgkeys_http.c
547         (main), gpgkeys_finger.c (main): Call timeout functions before
548         performing an action that could block for a long time.
549
550         * ksutil.h, ksutil.c: New.  Right now just contains timeout
551         functions.
552
553 2004-10-11  David Shaw  <dshaw@jabberwocky.com>
554
555         * gpgkeys_finger.c, gpgkeys_hkp.c, gpgkeys_http.c, gpgkeys_ldap.c:
556         Fix a few occurances of "filename" to `filename'.
557
558 2004-10-11  Werner Koch  <wk@g10code.com>
559
560         * gpgkeys_finger.c: New.
561
562 2004-08-27  Stefan Bellon  <sbellon@sbellon.de>
563
564         * gpgkeys_hkp.c (search_key): Fix the prior faulty fix by
565         introducing a cast but leaving skey unsigned.
566
567         * gpgkeys_hkp.c (search_key): Change type of variable skey from
568         unsigned char* to char* to fix type incompatibility.
569
570 2004-08-23  David Shaw  <dshaw@jabberwocky.com>
571
572         * gpgkeys_ldap.c (get_key, search_key), gpgkeys_hkp.c (get_key,
573         search_key), gpgkeys_http.c (get_key): Do not give informational
574         logs since this is now done inside gpg.
575
576         * gpgkeys_hkp.c (dehtmlize): Understand the quote character
577         (i.e. "&quot;") in HTML responses.
578         (search_key): Search key must be unsigned for url encoder to work
579         properly for 8-bit values.
580
581         * gpgkeys_ldap.c (get_key): Factor out informational display into
582         new function build_info().
583
584         * gpgkeys_ldap.c (build_attrs): Properly terminate user ID strings
585         that got shrunk due to encoding.
586
587 2004-08-22  David Shaw  <dshaw@jabberwocky.com>
588
589         * gpgkeys_ldap.c (find_basekeyspacedn): Use LDAP_SCOPE_BASE along
590         with a full DN rather than LDAP_SCOPE_ONELEVEL plus a filter to
591         find the pgpServerInfo object.  Some LDAP setups don't like the
592         search.
593         (main): Stop binding to the server since it seems no server really
594         requires it, and some require it not be there.
595
596 2004-07-29  David Shaw  <dshaw@jabberwocky.com>
597
598         * gpgkeys_ldap.c (main): Add "debug" option.  This is only really
599         useful with OpenLDAP, but it's practically vital to debug SSL and
600         TLS setups.  Add "basedn" option.  This allows users to override
601         the autodetection for base DN.  SSL overrides TLS, so TLS will not
602         be started on SSL connections (starting an already started car).
603
604 2004-07-28  David Shaw  <dshaw@jabberwocky.com>
605
606         * gpgkeys_ldap.c (build_attrs): Add "pgpKeySize" and "pgpSubKeyID"
607         attributes so we can do subkey searches.
608
609         * gpgkeys_ldap.c (main): Under certain error conditions, we might
610         try and unbind twice.  Don't.
611
612         * gpgkeys_ldap.c (join_two_modlists): New.
613         (send_key): Use new function so we can try a modify operation
614         first, and fail over to an add if that fails.  Add cannot cope
615         with the NULLs at the head of the modify request, so we jump into
616         the list in the middle.
617
618 2004-07-27  David Shaw  <dshaw@jabberwocky.com>
619
620         * gpgkeys_ldap.c (main): Don't try and error out before making a
621         ldaps connection to the NAI keyserver since we cannot tell if it
622         is a NAI keyserver until we connect.  Fail if we cannot find a
623         base keyspace DN.  Fix a false success message for TLS being
624         enabled.
625
626 2004-07-20  Werner Koch  <wk@gnupg.org>
627
628         * gpgkeys_ldap.c [_WIN32]: Include Windows specific header files.
629         Suggested by Brian Gladman.
630
631 2004-05-26  David Shaw  <dshaw@jabberwocky.com>
632
633         * gpgkeys_http.c: General polish and removal of leftover stuff
634         from gpgkeys_hkp.c.
635
636 2004-05-21  David Shaw  <dshaw@jabberwocky.com>
637
638         * gpgkeys_http.c (get_key): Cosmetic fix - make sure that URLs
639         with no path use a path of "/".
640
641         * gpgkeys_ldap.c (ldap2epochtime): We can always rely on timegm()
642         being available now, since it's a replacement function.
643
644 2004-05-20  David Shaw  <dshaw@jabberwocky.com>
645
646         * gpgkeys_http.c: New program to do a simple HTTP file fetch using
647         the keyserver interface.
648
649         * Makefile.am: Build it.
650
651 2004-02-28  David Shaw  <dshaw@jabberwocky.com>
652
653         * Makefile.am: Don't split LDADD across two lines since some make
654         programs can't handle blank lines after a \ continuation.  Noted
655         by Christoph Moench-Tegeder.
656
657 2004-02-25  David Shaw  <dshaw@jabberwocky.com>
658
659         * gpgkeys_ldap.c (send_key): List pgpCertID as one of the deleted
660         attributes.  This guarantees that if something goes wrong, we
661         won't be able to complete the transaction, thus leaving any key
662         already existing on the server intact.
663
664 2004-02-23  David Shaw  <dshaw@jabberwocky.com>
665
666         * gpgkeys_ldap.c (delete_one_attr): Removed.
667         (make_one_attr): Delete functionality added.  Optional deduping
668         functionality added (currently only used for pgpSignerID).
669         (build_attrs): Translate sig entries into pgpSignerID.  Properly
670         build the timestamp for pgpKeyCreateTime and pgpKeyExpireTime.
671
672 2004-02-22  David Shaw  <dshaw@jabberwocky.com>
673
674         * gpgkeys_ldap.c (delete_one_attr): New function to replace
675         attributes with NULL (a "delete" that works even for nonexistant
676         attributes).
677         (send_key): Use it here to remove attributes so a modify operation
678         starts with a clean playing field.  Bias sends to modify before
679         add, since (I suspect) people update their existing keys more
680         often than they make and send new keys to the server.
681
682 2004-02-21  David Shaw  <dshaw@jabberwocky.com>
683
684         * gpgkeys_ldap.c (epoch2ldaptime): New.  Converse of
685         ldap2epochtime.
686         (make_one_attr): New. Build a modification list in memory to send
687         to the LDAP server.
688         (build_attrs): New. Parse INFO lines sent over by gpg.
689         (free_mod_values): New.  Unwinds a modification list.
690         (send_key_keyserver): Renamed from old send_key().
691         (send_key): New function to send a key to a LDAP server.
692         (main): Use send_key() for real LDAP servers, send_key_keyserver()
693         otherwise.
694
695 2004-02-20  David Shaw  <dshaw@jabberwocky.com>
696
697         * gpgkeys_ldap.c: Replacement prototypes for setenv and unsetenv.
698         (search_key): Catch a SIZELIMIT_EXCEEDED error and show the user
699         whatever the server did give us.
700         (find_basekeyspacedn): There is no guarantee that namingContexts
701         will be readable.
702
703         * Makefile.am: Link gpgkeys_ldap with libutil.a to get the
704         replacement functions (and eventually translations, etc).
705
706 2004-02-19  David Shaw  <dshaw@jabberwocky.com>
707
708         * gpgkeys_ldap.c (ldap2epochtime): LDAP timestamps are UTC, so do
709         not correct for timezones.
710         (main): Find the basekeyspacedn before we try to start TLS, so we
711         can give a better error message when a user tries to use TLS with
712         a LDAP keyserver.
713
714         * Makefile.am: Add automake conditionals to symlink gpgkeys_ldaps
715         to gpgkeys_ldap when needed.
716
717         * gpgkeys_ldap.c (main): Add support for LDAPS and TLS
718         connections.  These are only useful and usable when talking to
719         real LDAP keyservers.  Add new "tls" option to tune TLS use from
720         off, to try quietly, to try loudly, or to require TLS.
721
722         * gpgkeys_ldap.c (find_basekeyspacedn): New function to figure out
723         what kind of LDAP server we're talking to (either real LDAP or the
724         LDAP keyserver), and return the baseKeySpaceDN to find keys under.
725         (main): Call it from here, and remove the old code that only
726         handled the LDAP keyserver.
727
728 2004-02-18  David Shaw  <dshaw@jabberwocky.com>
729
730         * gpgkeys_ldap.c (ldap_to_gpg_err): Make sure that
731         LDAP_OPT_ERROR_NUMBER is defined before we use it.
732
733         * gpgkeys_mailto.in: Fix VERSION number.
734
735 2004-01-13  Werner Koch  <wk@gnupg.org>
736
737         * gpgkeys_hkp.c (send_key): Add a content type.
738
739 2004-01-11  David Shaw  <dshaw@jabberwocky.com>
740
741         * gpgkeys_hkp.c (search_key): Catch a mangled input file (useful
742         if something other than GnuPG is calling the program).
743         (main): Avoid possible pre-string write.  Noted by Christian
744         Biere.
745
746         * gpgkeys_ldap.c (main): Avoid possible pre-string write.
747
748 2003-12-28  David Shaw  <dshaw@jabberwocky.com>
749
750         * gpgkeys_hkp.c (send_key, get_key, main): Work with new HTTP code
751         that passes the proxy in from the outside.  If the command file
752         sends a proxy, use it.  If it sends "http-proxy" with no
753         arguments, use $http_proxy from the environment.  Suggested by
754         Christian Biere.
755
756 2003-12-28  Stefan Bellon  <sbellon@sbellon.de>
757
758         * gpgkeys_hkp.c, gpgkeys_ldap.c [__riscos__]: Removal of
759         unnecessary #ifdef __riscos__ sections.
760
761 2003-11-27  Werner Koch  <wk@gnupg.org>
762
763         * gpgkeys_hkp.c (get_key): Fixed invalid use of fprintf without
764         format string.
765
766 2003-10-25  Werner Koch  <wk@gnupg.org>
767
768         * Makefile.am (gpgkeys_hkp_LDADD): Replaced INTLLIBS by LIBINTL.
769
770 2003-07-10  David Shaw  <dshaw@jabberwocky.com>
771
772         * Makefile.am: Use W32LIBS where appropriate.
773
774 2003-05-30  David Shaw  <dshaw@jabberwocky.com>
775
776         * gpgkeys_hkp.c, gpgkeys_ldap.c: #include <getopt.h> if it is
777         available.  Also include extern references for optarg and optind
778         since there is no guarantee that any header file will include
779         them.  Standards?  We don't need no stinkin' standards.
780
781         * Makefile.am: Use @GETOPT@ to pull in libiberty on those
782         platforms that need it.
783
784 2003-04-08  David Shaw  <dshaw@jabberwocky.com>
785
786         * gpgkeys_hkp.c (dehtmlize, parse_hkp_index): Fix memory
787         corruption bug on some platforms.
788
789 2003-03-11  David Shaw  <dshaw@jabberwocky.com>
790
791         * gpgkeys_hkp.c (get_key): Properly handle CRLF line endings in
792         the armored key.
793         (main): Accept "try-dns-srv" option.
794
795         * Makefile.am: Use @CAPLIBS@ to link in -lcap if we are using
796         capabilities.  Use @SRVLIBS@ to link in the resolver if we are
797         using DNS SRV.
798
799 2003-02-11  David Shaw  <dshaw@jabberwocky.com>
800
801         * Makefile.am: Use a local copy of libexecdir along with @PACKAGE@
802         so it can be easily overridden at make time.
803
804 2003-01-29  David Shaw  <dshaw@jabberwocky.com>
805
806         * gpgkeys_mailto.in: Fix regexp to work properly if the "keyid" is
807         not a keyid, but rather a text string from the user ID.
808
809 2003-01-06  David Shaw  <dshaw@jabberwocky.com>
810
811         * gpgkeys_hkp.c (get_key): Use options=mr when getting a key so
812         keyserver doesn't attach the HTML header which we will just have
813         to discard.
814
815 2002-11-17  David Shaw  <dshaw@jabberwocky.com>
816
817         * gpgkeys_ldap.c (main), gpgkeys_hkp.c (main): Use new keyserver
818         protocol version.
819
820 2002-11-14  David Shaw  <dshaw@jabberwocky.com>
821
822         * gpgkeys_ldap.c (get_key): The deduping code requires
823         "pgpcertid", but that was not available when running without
824         verbose on.  Noted by Stefan.
825
826 2002-11-10  David Shaw  <dshaw@jabberwocky.com>
827
828         * gpgkeys_ldap.c (get_key): Fix typo in deduping code.
829
830 2002-11-05  David Shaw  <dshaw@jabberwocky.com>
831
832         * gpgkeys_ldap.c (key_in_keylist, add_key_to_keylist,
833         free_keylist, get_key, search_key): The LDAP keyserver doesn't
834         remove duplicates, so remove them locally.  Do not include the key
835         modification time in the search response.
836
837 2002-11-04  David Shaw  <dshaw@jabberwocky.com>
838
839         * gpgkeys_hkp.c (send_key), gpgkeys_ldap.c (send_key): Properly
840         handle an input file that does not include any key data at all.
841
842 2002-10-24  David Shaw  <dshaw@jabberwocky.com>
843
844         * gpgkeys_hkp.c (main), gpgkeys_ldap.c (main): Add -V flag to
845         output protocol and program version.
846
847 2002-10-21  David Shaw  <dshaw@jabberwocky.com>
848
849         * Makefile.am: Anything linking with libutil.a needs INTLLIBS as
850         well on platforms where INTLLIBS is set.
851
852 2002-10-14  David Shaw  <dshaw@jabberwocky.com>
853
854         * gpgkeys_hkp.c (write_quoted): Use %-encoding instead of
855         \-encoding.
856         (parse_hkp_index): Use new keyserver key listing format, and add
857         support for disabled keys via include-disabled.
858
859         * gpgkeys_ldap.c (get_key): Don't print keysize unless it's >0.
860         (printquoted): Use %-encoding instead of \-encoding.
861         (search_key): Use new keyserver key listing format.
862
863 2002-10-08  David Shaw  <dshaw@jabberwocky.com>
864
865         * gpgkeys_ldap.c (search_key, main): Make sure LDAP values are
866         freed in case of error.
867
868         * gpgkeys_ldap.c (fail_all): New function to unwind a keylist and
869         error each item.
870         (main): Call fail_all from here, as needed.  Also add a NO_MEMORY
871         error in an appropriate place and fix error return code.
872         (ldap_err_to_gpg_err): Add KEYSERVER_UNREACHABLE.
873
874         * gpgkeys_hkp.c (fail_all): New function to unwind a keylist and
875         error each item.
876         (main): Call fail_all from here.  Also add a NO_MEMORY error in an
877         appropriate place.
878         (get_key): Use new UNREACHABLE error for network errors.
879
880 2002-09-26  Werner Koch  <wk@gnupg.org>
881
882         * gpgkeys_ldap.c (send_key): Removed non-constant initializers.
883
884 2002-09-24  David Shaw  <dshaw@jabberwocky.com>
885
886         * gpgkeys_ldap.c (ldap_err_to_gpg_err, ldap_to_gpg_err, send_key,
887         get_key, search_key, main): Some minor error reporting
888         enhancements for use with GPA (show reasons for KEY FAILED).
889
890         * gpgkeys_hkp.c (send_key, get_key, search_key, main): Some minor
891         error reporting enhancements for use with GPA (show reasons for
892         KEY FAILED).
893
894 2002-09-20  Werner Koch  <wk@gnupg.org>
895
896         * gpgkeys_hkp.c (handle_old_hkp_index): s/input/inp/ to avoid
897         shadowing warning.
898
899 2002-09-19  David Shaw  <dshaw@jabberwocky.com>
900
901         * gpgkeys_hkp.c (get_key, handle_old_hkp_index, search_key):
902         Properly handle line truncation.
903
904 2002-09-16  David Shaw  <dshaw@jabberwocky.com>
905
906         * gpgkeys_mailto.in: Add quasi-RFC-2368 mailto:email@addr?from=
907         syntax so people can set their own email address to respond to.
908
909         * gpgkeys_hkp.c (get_key): Properly respond with KEY FAILED (to
910         gpg) and "key not found" (to user) on failure.
911
912 2002-09-13  David Shaw  <dshaw@jabberwocky.com>
913
914         * gpgkeys_hkp.c: (search_key, handle_old_hkp_index): Try and
915         request a machine-readable key index.  If the server supports
916         this, pass it through.  If the server does not support it, parse
917         the "index" page.
918
919 2002-09-12  Stefan Bellon  <sbellon@sbellon.de>
920
921         * gpgkeys_hkp.c: Tidied up RISC OS initializations.
922
923 2002-09-12  David Shaw  <dshaw@jabberwocky.com>
924
925         * gpgkeys_hkp.c (main): Remove warning - this is no longer
926         experimental code.
927
928 2002-09-09  Werner Koch  <wk@gnupg.org>
929
930         * gpgkeys_hkp.c (send_key, get_key, search_key): Check return
931         value of malloc.
932         (dehtmlize): Use ascii_tolower to protect against weird locales.
933         Cast the argument for isspace for the sake of broken HP/UXes.
934         (search_key): Check return value of realloc.
935
936 2002-09-09  David Shaw  <dshaw@jabberwocky.com>
937
938         * gpgkeys_ldap.c (get_key): Some compilers (RISC OS, HPUX c89)
939         don't like using variables as array initializers.
940
941         * gpgkeys_hkp.c (send_key): Use CRLF in headers.
942
943 2002-08-28  David Shaw  <dshaw@jabberwocky.com>
944
945         * gpgkeys_hkp.c (parse_hkp_index): Use same types on all
946         platforms.  This was probably leftover from earlier code where the
947         typing mattered.
948
949         * gpgkeys_hkp.c: Overall cleanup from iobuf conversion.  Be
950         consistent in m_alloc and malloc usage.  Remove include-disabled
951         (meaningless on HKP).  RISC OS tweak.
952
953 2002-08-27  David Shaw  <dshaw@jabberwocky.com>
954
955         * gpgkeys_hkp.c, Makefile.am: Convert over to using iobufs.
956
957         * gpgkeys_hkp.c (http_get, http_post): Use CRLF for line endings.
958
959         * gpgkeys_hkp.c: Include util.h on RISC OS as per Stefan.  Include
960         a replacement for hstrerror() for those platforms (such as RISC
961         OS) that don't have it.
962
963 2002-08-26  David Shaw  <dshaw@jabberwocky.com>
964
965         * Makefile.am: May as well include gpgkeys_hkp.c in the
966         distribution now.  It works well enough without proxies, and isn't
967         built by default.  It would be good to get some test experience
968         with it.
969
970         * gpgkeys_hkp.c (main): Don't warn about include-subkeys - it
971         isn't unsupported, it's actually non-meaningful in the context of
972         HKP (yet).
973
974         * gpgkeys_hkp.c (parse_hkp_index, dehtmlize): Move HTML
975         functionality into new "dehtmlize" function.  Remove HTML before
976         trying to parse each line from the keyserver.  If the keyserver
977         provides key type information in the listing, use it.  (Copy over
978         from g10/hkp.c).
979
980 2002-08-19  David Shaw  <dshaw@jabberwocky.com>
981
982         * gpgkeys_hkp.c (get_key, parse_hkp_index): Bring over latest code
983         from g10/hkp.c.
984
985         * gpgkeys_ldap.c (get_key): Fix cosmetic URL display problem
986         (extra ":" at the end).
987
988 2002-08-03  Stefan Bellon  <sbellon@sbellon.de>
989
990         * gpgkeys_ldap.c: Tidied up RISC OS initializations.
991
992 2002-07-25  David Shaw  <dshaw@jabberwocky.com>
993
994         * gpgkeys_hkp.c: "Warning" -> "WARNING"
995
996 2002-07-24  David Shaw  <dshaw@jabberwocky.com>
997
998         * Makefile.am: Install keyserver helpers in @GNUPG_LIBEXECDIR@
999
1000 2002-07-15  David Shaw  <dshaw@jabberwocky.com>
1001
1002         * gpgkeys_ldap.c (send_key, get_key, main): Consult the server
1003         version string to determine whether to use pgpKey or pgpKeyV2.
1004
1005 2002-07-09  David Shaw  <dshaw@jabberwocky.com>
1006
1007         * gpgkeys_mailto.in: Use new OPAQUE tag for non net-path URIs.
1008         Fail more elegantly if there is no email address to send to.  Show
1009         the GnuPG version in the message body.
1010
1011 2002-07-04  David Shaw  <dshaw@jabberwocky.com>
1012
1013         * gpgkeys_ldap.c (get_key), gpgkeys_hkp.c (get_key): Display
1014         keyserver URI as a URI, but only if verbose.
1015
1016 2002-07-01  David Shaw  <dshaw@jabberwocky.com>
1017
1018         * gpgkeys_hkp.c (parse_hkp_index): Error if the keyserver returns
1019         an unparseable HKP response.
1020
1021         * gpgkeys_hkp.c (main): Warn on honor-http-proxy,
1022         broken-http-proxy, and include-subkeys (not supported yet).
1023
1024         * gpgkeys_ldap.c (main), gpgkeys_hkp.c (http_connect, main): Fix
1025         some shadowing warnings.
1026
1027 2002-06-11  David Shaw  <dshaw@jabberwocky.com>
1028
1029         * Makefile.am: Don't hard-code the LDAP libraries - get them from
1030         LDAPLIBS via configure.  Also, gpgkeys_hkp is a program, not a
1031         script.
1032
1033 2002-06-10  David Shaw  <dshaw@jabberwocky.com>
1034
1035         * gpgkeys_ldap.c (include_subkeys): Default "include-subkeys" to
1036         off, since GnuPG now defaults it to on.
1037
1038 2002-06-06  David Shaw  <dshaw@jabberwocky.com>
1039
1040         * gpgkeys_hkp.c (parse_hkp_index): Type tweaks.
1041
1042         * gpgkeys_hkp.c (main): Add experimental code warning.
1043
1044 2002-06-05  David Shaw  <dshaw@jabberwocky.com>
1045
1046         * Makefile.am, gpgkeys_hkp.c (new): Experimental HKP keyserver
1047         interface.
1048
1049 2002-05-08  David Shaw  <dshaw@jabberwocky.com>
1050
1051         * gpgkeys_ldap.c: Include <lber.h> if we absolutely must.  This
1052         helps when compiling against a very old OpenLDAP.
1053
1054 2002-04-29  David Shaw  <dshaw@jabberwocky.com>
1055
1056         * gpgkeys_mailto.in: Properly handle key requests in full
1057         fingerprint form.
1058
1059 2002-03-29  David Shaw  <dshaw@jabberwocky.com>
1060
1061         * gpgkeys_ldap.c (printquoted): Quote backslashes within keyserver
1062         search responses.
1063
1064 2002-02-25  David Shaw  <dshaw@jabberwocky.com>
1065
1066         * gpgkeys_ldap (get_key): LDAP keyservers do not support v3
1067         fingerprints, so error out if someone tries.  Actually, they don't
1068         support any fingerprints, but at least we can calculate a keyid
1069         from a v4 fingerprint.
1070
1071 2002-02-23  David Shaw  <dshaw@jabberwocky.com>
1072
1073         * gpgkeys_ldap: Clarify the notion of a partial failure.  This is
1074         possible if more than one key is being handled in a batch, and one
1075         fails while the other succeeds.  Note that a search that comes up
1076         with no results is not a failure - that is a valid response of "no
1077         answer".
1078
1079         * gpgkeys_ldap.c (get_key): Allow GnuPG to send us full v4
1080         fingerprints, long key ids, or short key ids while fetching.
1081         Since the LDAP server doesn't actually handle fingerprints, chop
1082         them down to long key ids for actual use.
1083
1084         * gpgkeys_ldap.c (main, get_key): When searching for a keyid,
1085         search for subkeys as well as primary keys.  This is mostly
1086         significant when automatically fetching the key based on the id in
1087         a header (i.e. "signature made by....").  "no-include-subkeys"
1088         disables.
1089
1090 2002-02-14  David Shaw  <dshaw@jabberwocky.com>
1091
1092         * gpgkeys_ldap.c: Fix compiler warning.
1093
1094         * gpgkeys_ldap.c: Be much more robust with mangled input files.
1095
1096 2001-12-28  David Shaw  <dshaw@jabberwocky.com>
1097
1098         * gpgkeys_mailto.in: Use the new OUTOFBAND indicator so gpg knows
1099         not to try and import anything.  Also turn on perl -w for
1100         warnings.
1101
1102         * gpgkeys_ldap.c (main): If we're using temp files (rather than
1103         stdin/stdout), make sure the file is closed when we're done.
1104
1105 2001-12-20  David Shaw  <dshaw@jabberwocky.com>
1106
1107         * Properly free the LDAP response when we're done with it.
1108
1109         * Now that we handle multiple keys, we must remove duplicates as
1110         the LDAP keyserver returns keys with multiple user IDs multiple
1111         times.
1112
1113         * Properly handle multiple keys with the same key ID (it's really
1114         rare, so fetch "0xDEADBEEF" to test this).
1115
1116 2001-12-17  David Shaw  <dshaw@jabberwocky.com>
1117
1118         * gpgkeys_ldap.c, gpgkeys_mailto.in: Fix GNU capitalization
1119         issues.  Prefix log messages with "gpgkeys" to clarify which
1120         program is generating them.
1121
1122 2001-12-14  David Shaw  <dshaw@jabberwocky.com>
1123
1124         * gpgkeys_ldap.c (search_key): Use unsigned int rather than uint
1125         for portability.
1126
1127 2001-12-04  David Shaw  <dshaw@jabberwocky.com>
1128
1129         * Initial version of gpgkeys_ldap (LDAP keyserver helper) and
1130         gpgkeys_mailto (email keyserver helper)
1131
1132
1133  Copyright 1998, 1999, 2000, 2001, 2002, 2003,
1134            2004 Free Software Foundation, Inc.
1135
1136  This file is free software; as a special exception the author gives
1137  unlimited permission to copy and/or distribute it, with or without
1138  modifications, as long as this notice is preserved.
1139
1140  This file is distributed in the hope that it will be useful, but
1141  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
1142  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.