doc/
[gpgme.git] / doc / ChangeLog
1 2004-05-21  Marcus Brinkmann  <marcus@g10code.de>
2
3         * gpgme.texi (Key Management): Add note about new field
4         keylist_mode of gpgme_key_t.
5
6 2004-04-29  Marcus Brinkmann  <marcus@g10code.de>
7
8         * gpgme.texi (Verify): Correct type of member wrong_key_usage.
9
10 2004-03-29  Moritz Schulte  <moritz@duesseldorf.ccc.de>
11
12         * gpgme.texi (Verify): Fix type of gpgme_op_verify_result.
13         * gpgme.texi (Key Listing Mode): Typo fix.
14
15 2004-03-23  Marcus Brinkmann  <marcus@g10code.de>
16
17         * gpgme.texi (Library Version Check): Fix the instruction when to
18         set the locale.
19
20 2004-03-03  Marcus Brinkmann  <marcus@g10code.de>
21
22         * gpgme.texi (I/O Callback Example Qt): New section by Marc Mutz.
23
24 2004-02-24  Marcus Brinkmann  <marcus@g10code.de>
25
26         * gpgme.texi (cancellation): New section.
27
28 2004-02-17  Werner Koch  <wk@gnupg.org>
29
30         * gpgme.texi (Key Listing Mode): Doc KEYLIST_MODE_VALIDATE.
31
32 2004-02-06  Moritz Schulte  <mo@g10code.com>
33
34         * gpgme.texi: A couple of small fixes regarding the Largfile
35         Support section.
36
37 2004-02-01  Marcus Brinkmann  <marcus@g10code.de>
38
39         * gpgme.texi (Largefile Support): New section.
40
41 2004-01-13  Marcus Brinkmann  <marcus@g10code.de>
42
43         * gpgme.texi (Key Management): Fix exportable field.
44
45 2003-12-25  Marcus Brinkmann  <marcus@g10code.de>
46
47         * gpgme.texi (Key Management): Rename member class in
48         gpgme_key_sig_t to sig_class.
49         (Creating a Signature): Likewise for gpgme_signature_t.
50
51 2003-12-23  Moritz Schulte  <mo@g10code.com>
52
53         * gpgme.texi (Listing Keys): Minor clarification for
54         gpgme_get_key.
55
56 2003-10-06  Marcus Brinkmann  <marcus@g10code.de>
57
58         * gpgme.texi (Signal Handling): New section.
59
60 2003-09-14  Marcus Brinkmann  <marcus@g10code.de>
61
62         * gpgme.texi (Multi Threading): Correct documentation on memory
63         synchronization requirement.
64
65         * gpgme.texi (Locale): New section.
66         (Multi Threading): Set locale in example.
67
68 2003-09-13  Marcus Brinkmann  <marcus@g10code.de>
69
70         * gpgme.texi (Error Strings): Add gpgme_strerror_r.
71
72 2003-09-13  Marcus Brinkmann  <marcus@g10code.de>
73
74         * gpgme.texi (Multi Threading): Update documentation.
75
76 2003-09-03  Marcus Brinkmann  <marcus@g10code.de>
77
78         * gpgme.texi (Header): We don't use the assuan namespace anymore.
79         Document new thread options.
80
81 2003-08-14  Marcus Brinkmann  <marcus@g10code.de>
82
83         * gpgme.texi (Creating a Signature): Change type of member class
84         to unsigned int.
85
86 2003-08-04  Marcus Brinkmann  <marcus@g10code.de>
87
88         * gpgme.texi (Verify): Get error code from SIG->status in the code
89         for gpgme_get_sig_status.
90
91 2003-07-31  Marcus Brinkmann  <marcus@g10code.de>
92
93         * gpgme.texi (Key Management): Add can_authenticate flag.
94
95         * gpgme.texi (Listing Keys): Document GPG_ERR_AMBIGUOUS_NAME for
96         gpgme_get_key.
97
98 2003-07-29  Marcus Brinkmann  <marcus@g10code.de>
99
100         * Makefile.am (EXTRA_DIST): Remove variable.
101
102         * gpgme.texi (Encrypting a Plaintext): Bad passphrase is only
103         possible with symmetric encryption, change the wording to reflect
104         that.
105
106         * gpgme.texi (Creating a Signature): Document
107         GPG_ERR_UNUSABLE_SECKEY.
108
109         * gpgme.texi (Encrypting a Plaintext): Mention encrypt and sign
110         operations in result function.
111         (Creating a Signature): Likewise.
112
113 2003-07-23  Marcus Brinkmann  <marcus@g10code.de>
114
115         * gpgme.texi (Key Listing Mode): Remove word duplication.
116         (Listing Keys): Remove mentioning of force argument.
117         (Verify): Don't mention r_stat.  Fix some typos.
118         (Decrypt and Verify): Correct info how to get the result.  Don't
119         mention r_stat.
120         (Manipulating Data Buffers): Fix documentation of return value.
121         (Listing Keys): Update examples.
122         (Decrypt): Result might also be available when operation failed.
123         (Verify): Result might also be available when operation failed.
124         All spotted by St├ęphane Corth├ęsy.
125
126 2003-07-22  Marcus Brinkmann  <marcus@g10code.de>
127
128         * gpgme.texi (Error Sources): Fix cut and paste error.
129
130 2003-07-09  Marcus Brinkmann  <marcus@g10code.de>
131
132         * gpgme.texi (Key Management): Clarify difference between can_sign
133         and can_certify.
134         (Information About Keys): Likewise for GPGME_ATTR_CAN_SIGN and
135         GPGME_ATTR_CAN_CERTIFY.
136
137 2003-07-08  Marcus Brinkmann  <marcus@g10code.de>
138
139         * gpgme.texi (Progress Meter Callback): Change return type of
140         gpgme_progress_cb_t to void.
141
142 2003-06-22  Marcus Brinkmann  <marcus@g10code.de>
143
144         * gpgme.texi: Add 2003 to copyright notice.
145
146         * gpgme.texi (Header): Fix name space documentation on
147         libgpg-error.
148
149 2003-06-22  Marcus Brinkmann  <marcus@g10code.de>
150
151         * gpgme.texi (Multi Threading): Remove reference to
152         gpgme_recipients_t.
153
154 2003-06-06  Marcus Brinkmann  <marcus@g10code.de>
155
156         * gpgme.texi (Crypto Operations): Rename gpgme_invalid_user_id_t
157         to gpgme_invalid_key_t.
158
159 2003-06-06  Marcus Brinkmann  <marcus@g10code.de>
160
161         * gpgme.texi: Change error codes to GPG_ERR_* variants.
162         (Error Handling): Rewritten.
163
164 2003-05-29  Marcus Brinkmann  <marcus@g10code.de>
165
166         * gpgme.texi (Exporting Keys): Change and document prototypes.
167         Add new gpgme_op_export_ext and gpgme_op_export_ext_start
168         variants.
169         (Selecting Recipients): Section removed.
170         (Encrypting a Plaintext): Change prototypes and document the
171         changes.
172
173 2003-05-28  Marcus Brinkmann  <marcus@g10code.de>
174
175         * gpgme.texi (Exporting Keys): Change argument type from
176         gpgme_recipient_t to gpgme_user_id_t.
177         (Encrypting a Plaintext): Likewise.
178         (Selecting Recipients): Rewritten.
179
180 2003-05-27  Marcus Brinkmann  <marcus@g10code.de>
181
182         * gpgme.texi (Protocol Selection): Do not use @acronym in @node
183         because that breaks texi2dvi.
184
185         * gpgme.texi (Passphrase Callback): Document new prototype.
186
187 2003-05-18  Marcus Brinkmann  <marcus@g10code.de>
188
189         * gpgme.texi (Header): Remove Gpgme as namespace prefix.  Add
190         _GPGME to namespace prefix.
191         * gpgme.texi (Multi Threading): Add note about link order.
192
193 2003-05-04  Marcus Brinkmann  <marcus@g10code.de>
194
195         * gpgme.texi (Listing Keys): Document what happens if key is not
196         found.
197
198         * gpgme.texi (Importing Keys): Fix cut and paste error.
199
200 2003-04-30  Marcus Brinkmann  <marcus@g10code.de>
201
202         * gpgme.texi (Encrypting a Plaintext): Remove reference to
203         gpgme_get_op_info.
204         (Detailed Results): Subsection removed.
205
206         * gpgme.texi (Key Listing Mode): Add GPGME_KEYLIST_MODE_SIGS.
207         (Manipulating Keys): Add obsoleteness note.
208         (Key Signatures): Likewise.
209         (Information About Keys): Likewise.
210         (Key Management): Add new data types GpgmeSubkey, GpgmeKeySig,
211         GpgmeUserID, and all the information about GpgmeKey.
212
213 2003-04-29  Marcus Brinkmann  <marcus@g10code.de>
214
215         * gpgme.texi (Listing Keys): Remove force_update argument from
216         gpgme_get_key.
217
218         * gpgme.texi (Trust Item Management): Add data members of
219         GpgmeTrustItem type.
220         (Information About Trust Items): Add note about obsoleteness.
221         (Manipulating Trust Items): Add gpgme_trust_item_ref and
222         gpgme_trust_item_unref.
223
224 2003-04-28  Marcus Brinkmann  <marcus@g10code.de>
225
226         * gpgme.texi (Verify): Rewritten to take into account new and
227         deprecated functions and data types.
228
229         * gpgme.texi (Decrypt): Descript gpgme_op_decrypt_result and
230         GpgmeDecryptResult.
231
232 2003-04-27  Marcus Brinkmann  <marcus@g10code.de>
233
234         * gpgme.texi (Encrypting a Plaintext): Add info about
235         GpgmeEncryptResult and gpgme_op_encrypt_result.
236
237         * gpgme.texi (Creating a Signature): Add info about
238         GpgmeNewSignature, GpgmeSignResult and gpgme_op_sign_result.
239         (Crypto Operations): Add GpgmeInvalidUserID.
240         (Algorithms): New chapter.
241
242         * gpgme.texi (Deleting Keys): Document
243         GPGME_Ambiguous_Specification.
244         (Error Values): Remove GPGME_Invalid_Type and GPGME_Invalid_Mode.
245         Add GPGME_Unknown_Reason, GPGME_Not_Found,
246         GPGME_Ambiguous_Specification, GPGME_Wrong_Key_Usage,
247         GPGME_Key_Revoked, GPGME_Key_Expired, GPGME_No_CRL_Known,
248         GPGME_CRL_Too_Old, GPGME_Policy_Mismatch, GPGME_No_Secret_Key,
249         GPGME_Key_Not_Trusted, GPGME_Issuer_Missing, GPGME_Chain_Too_Long,
250         GPGME_Unsupported_Algorithm, GPGME_Sig_Expired,
251         GPGME_Bad_Signature, GPGME_No_Public_Key.
252
253 2003-04-25  Marcus Brinkmann  <marcus@g10code.de>
254
255         * gpgme.texi (Importing Keys): Change GPGME_IMPORT_PRIVATE to
256         GPGME_IMPORT_SECRET.
257
258         * gpgme.texi (Importing Keys): Remove note about gpgme_get_op_info.
259         (Detailed Results): Remove note about import.
260
261         * gpgme.texi (Importing Keys): Add documentation for
262         GpgmeImportStatus, GpgmeImportResult and gpgme_op_import_result.
263
264         * gpgme.texi (Generating Keys): Fix documentation of public and
265         secret arguments.
266
267 2003-04-24  Marcus Brinkmann  <marcus@g10code.de>
268
269         * gpgme.texi (Generating Keys): Document changed gpgme_op_genkey
270         and new gpgme_op_genkey_result function.  Document
271         GpgmeGenKeyResult data type.
272
273         * gpgme.texi (Error Values): Rename GPGME_No_Passphrase to
274         GPGME_Bad_Passphrase.
275         * gpgme.texi (Decrypt): Likewise.
276         (Decrypt and Verify): Likewise.
277         (Creating a Signature): Likewise.
278         (Encrypting a Plaintext): Likewise.
279
280         * gpgme.texi (Error Values): Rename GPGME_No_Recipients to
281         GPGME_No_UserID and GPGME_Invalid_Recipient to
282         GPGME_Invalid_UserID.
283         (Encrypting a Plaintext): Likewise.
284
285         * gpgme.texi (Error Values): Remove GPGME_Busy and GPGME_No_Request.
286         (Listing Keys): Likewise.
287         (Listing Trust Items): Likewise.
288
289 2003-02-06  Marcus Brinkmann  <marcus@g10code.de>
290
291         * gpgme.texi (Cancelling an Operation): Removed.
292         (Passphrase Callback): Document new type for GpgmePassphraseCb.
293
294 2003-01-30  Marcus Brinkmann  <marcus@g10code.de>
295
296         * gpgme.texi (Engine Information): Rename member part to
297         file_name.
298
299         * gpgme.texi (Protocols and Engines): Document
300         gpgme_get_protocol_name.
301
302         * gpgme.texi (Engine Information): Rewritten.
303
304 2003-01-29  Marcus Brinkmann  <marcus@g10code.de>
305
306         * gpgme.texi (I/O Callback Interface): Document new even
307         GPGME_EVENT_START.
308         (Waiting For Completion): Document new possible return values.
309         (I/O Callback Interface): Document return type of GpgmeIOCb.
310
311 2003-01-29  Marcus Brinkmann  <marcus@g10code.de>
312
313         * gpgme.texi (Hooking Up Into Idle Time): Section removed.
314
315 2002-12-24  Marcus Brinkmann  <marcus@g10code.de>
316
317         * gpgme.texi (Verify): Drop R_STAT argument in gpgme_op_verify.
318         * gpgme.texi (Decrypt and Verify): Likewise for
319         gpgme_op_decrypt_verify.
320
321 2002-12-23  Marcus Brinkmann  <marcus@g10code.de>
322
323         * gpgme.texi (Information About Keys): Document that
324         GPGME_ATTR_IS_SECRET is not representable as a string anymore.
325
326 2002-12-22  Marcus Brinkmann  <marcus@g10code.de>
327
328         * gpgme.texi (Key Signatures): New section.
329         (Listing Keys): Add gpgme_get_key.
330
331 2002-12-06  Marcus Brinkmann  <marcus@g10code.de>
332
333         * gpgme.texi (Memory Based Data Buffers): New subsection.
334         (File Based Data Buffers): Likewise.
335         (Callback Based Data Buffers): Likewise.
336         (Manipulating Data Buffers): Update interfaces.  Add
337         gpgme_data_seek.
338         * gpgme.texi (Engine Version Check): Remove gpgme_check_engine.
339         
340 2002-11-21  Marcus Brinkmann  <marcus@g10code.de>
341
342         * gpgme.texi (Verify): Document the new interface.
343
344 2002-11-19  Marcus Brinkmann  <marcus@g10code.de>
345
346         * gpgme.texi (Generating Keys): Document new argument to
347         gpgme_op_genkey.
348
349 2002-11-05  Marcus Brinkmann  <marcus@g10code.de>
350
351         * gpgme.texi (Verify): Fix prototype of gpgme_get_sig_key.
352         Reported by Miguel Coca <e970095@zipi.fi.upm.es>.
353
354 2002-08-30  Marcus Brinkmann  <marcus@g10code.de>
355
356         * gpgme.texi (Selecting Signers): Fix reference count.
357
358 2002-08-21  Marcus Brinkmann  <marcus@g10code.de>
359
360         * gpgme.texi (Header): Document name space.
361
362 2002-08-20  Marcus Brinkmann  <marcus@g10code.de>
363
364         * gpgme.texi (Importing Keys): Document gpgme_op_import_ext.
365
366         * gpgme.texi (Importing Keys): Undocument EOF.
367
368 2002-08-14  Werner Koch  <wk@gnupg.org>
369
370         * gpgme.texi (Information About Keys): Changed GPGME_ATTR_TYPE.
371
372 2002-07-25  Marcus Brinkmann  <marcus@g10code.de>
373
374         * gpgme.texi (Deleting Keys): Say that secret keys might not be
375         deleted.
376
377 2002-07-25  Marcus Brinkmann  <marcus@g10code.de>
378
379         * gpgme.texi (Information About Keys): Document (badly) the new
380         key attributes.
381
382         * gpgme.texi (Manipulating Data Buffers): Mention that backend
383         tries to detect encoding automatically.
384
385 2002-07-03  Marcus Brinkmann  <marcus@g10code.de>
386
387         * gpgme.texi (Run Control): Update this section.
388         (Waiting For Completion): Likewise for this subsection.
389         (Cancelling an Operation): Likewise for this subsection.
390         (Using External Event Loops): New subsection with several
391         subsubsections.
392
393 2002-06-28  Marcus Brinkmann  <marcus@g10code.de>
394
395         * gpgme.texi (Multi Threading): Remove item about the need to
396         synchronize anything against gpgme_wait (except gpgme_wait
397         itself).
398
399 2002-06-27  Marcus Brinkmann  <marcus@g10code.de>
400
401         * gpgme.texi (Information About Keys): Fix documentation for IDX.
402         (Information About Trust Items): Likewise.
403
404 2002-06-26  Werner Koch  <wk@gnupg.org>
405
406         * gpgme.texi (Importing Keys): Document the return value -1 of
407         gpgme_op_import.
408
409 2002-06-20  Werner Koch  <wk@gnupg.org>
410
411         * gpgme.texi (Verify): Explain the new whatidx variable.
412
413 2002-06-10  Werner Koch  <wk@gnupg.org>
414
415         * gpgme.texi (Verify): Document attribute GPGME_ATTR_ERRTOK.
416
417 2002-06-04  Marcus Brinkmann  <marcus@g10code.de>
418
419         * gpgme.texi (Multi Threading): Document new autodetection.
420
421 2002-06-04  Marcus Brinkmann  <marcus@g10code.de>
422
423         * Makefile.am (DISTCLEANFILES): New variable.
424
425 2002-05-26  Marcus Brinkmann  <marcus@g10code.de>
426
427         * gpgme.texi: Some typographical correctons throughout.
428
429 2002-05-09  Marcus Brinkmann  <marcus@g10code.de>
430
431         * gpgme.texi (Using Automake): New section.
432
433 2002-05-09  Marcus Brinkmann  <marcus@g10code.de>
434
435         * gpgme.texi (Multi Threading): Escape { and }.
436
437 2002-05-09  Marcus Brinkmann  <marcus@g10code.de>
438
439         * gpgme.texi (Overview): Replace note about thread-safeness.
440         (Multi Threading): New section.
441
442 2002-05-03  Werner Koch  <wk@gnupg.org>
443
444         * gpgme.texi (Manipulating Data Buffers): Changed some data types
445         to void*.
446         (Protocol Selection): Added gpgme_get_protocol.
447         (Verify): Updated to include the new attribute fucntions and
448         status codes.
449
450 2002-04-27  Werner Koch  <wk@gnupg.org>
451
452         * gpgme.texi (Manipulating Data Buffers): New type GpgmeDataEncoding.
453
454 2002-04-23  Marcus Brinkmann  <marcus@g10code.de>
455
456         * gpgme.texi (Passphrase Callback): Document that either return
457         argument can be NULL.
458         (Progress Meter Callback): Likewise.
459
460 2002-04-22  Marcus Brinkmann  <marcus@g10code.de>
461
462         * gpgme.texi (Passphrase Callback): Fix small typo.  Document the
463         new function gpgme_get_passphrase_cb.
464         (Progress Meter Callback): Document the new function
465         gpgme_get_progress_cb.
466
467 2002-04-16  Marcus Brinkmann  <marcus@g10code.de>
468
469         * gpgme.texi (Creating a Signature): Fix function name.  Reported
470         by Wichert Ackerman <wichert@debian.org>.
471
472 2002-03-29  Marcus Brinkmann  <marcus@g10code.de>
473
474         * gpgme.texi (direntry): End index entry with a full stop.
475         Patch submitted by Jose Carlos Garcia Sogo <jsogo@debian.org>.
476         
477 2002-03-17  Marcus Brinkmann  <marcus@g10code.de>
478
479         * gpgme.texi (Detailed Results): Fix syntax error in last change.
480
481 2002-03-08  Werner Koch  <wk@gnupg.org>
482
483         * gpgme.texi (Detailed Results): Import does also return info.
484
485 2002-03-06  Marcus Brinkmann  <marcus@g10code.de>
486
487         * gpgme.texi (Encrypting a Plaintext): Document symmetric
488         encryption.
489
490 2002-03-06  Marcus Brinkmann  <marcus@g10code.de>
491
492         * gpgme.texi (Error Strings): Add example.
493         * gpgme.texi (Listing Keys): Likewise.
494
495 2002-03-03  Marcus Brinkmann  <marcus@g10code.de>
496
497         * gpgme.texi (Information About Keys): Document GPGME_ATTR_EXPIRE.
498
499 2002-03-03  Marcus Brinkmann  <marcus@g10code.de>
500
501         * gpgme.texi (Verify): Document verification of normal and
502         cleartext signatures.
503
504 2002-02-27  Marcus Brinkmann  <marcus@g10code.de>
505
506         * gpgme.texi (Listing Keys): Document gpgme_op_keylist_ext_start.
507
508 2002-02-27  Marcus Brinkmann  <marcus@g10code.de>
509
510         * gpgme.texi (Encrypting a Plaintext): Document
511         GPGME_Invalid_Recipients.
512         (Error Values): Likewise.
513
514 2002-02-26  Marcus Brinkmann  <marcus@g10code.de>
515
516         * gpgme.texi (Encrypting a Plaintext): Document
517         gpgme_op_encrypt_sign and gpgme_op_encrypt_sign_start.
518
519 2002-02-25  Marcus Brinkmann  <marcus@g10code.de>
520
521         * gpgme.texi (Creating a Signature): Add a note about
522         certificates to include.
523         (Included Certificates): New section.
524
525 2002-02-09  Marcus Brinkmann  <marcus@g10code.de>
526
527         * gpgme.texi (Detailed Results): Remove literal tags.
528         (Generating Keys): Update documentation.
529
530         * gpgme.texi (Generating Keys): Fix syntax error.
531
532 2002-02-06  Marcus Brinkmann  <marcus@g10code.de>
533
534         * gpgme.texi (Waiting For Completion): Adjust doc to changes in
535         the code.
536
537 2002-02-06  Marcus Brinkmann  <marcus@g10code.de>
538
539         * gpgme.texi (Key Listing Mode): Update documentation.
540
541 2002-01-31  Marcus Brinkmann  <marcus@g10code.de>
542
543         * gpgme.texi (Generating Keys): Document error at creation
544         failure.
545
546 2002-01-30  Marcus Brinkmann  <marcus@g10code.de>
547
548         * gpgme.texi (Deleting Keys): Document new error values.
549
550 2002-01-30  Marcus Brinkmann  <marcus@g10code.de>
551
552         * gpgme.texi (Importing Keys): Add reference to gpgme_get_op_info.
553
554 2002-01-30  Marcus Brinkmann  <marcus@g10code.de>
555
556         * gpgme.texi: Some spell checking.
557
558 2002-01-30  Marcus Brinkmann  <marcus@g10code.de>
559
560         * gpgme.texi: Add all the gpgme_op_*_start functions.
561         Fill the concept index with many, many entries.
562
563 2002-01-29  Marcus Brinkmann  <marcus@g10code.de>
564
565         * gpgme.texi (Run Control): New section.
566         (Verify): Docuent gpgme_get_notation.
567         (More Information): New section describing gpgme_get_op_info.
568
569 2002-01-22  Marcus Brinkmann  <marcus@g10code.de>
570
571         * gpgme.texi (Passphrase callback): Change GpgmePassphraseCb's
572         R_HD type from void* to void**.
573
574 2002-01-22  Marcus Brinkmann  <marcus@g10code.de>
575
576         * gpgme.texi (Creating data buffers): Change
577         gpgme_data_new_from_filepart's LENGTH type from off_t to size_t.
578
579 2002-01-22  Marcus Brinkmann  <marcus@g10code.de>
580
581         * gpgme.texi (Generating keys): New subsection.
582         (Exporting keys): Likewise.
583         (Importing keys): Likewise.
584         (Deleting keys): Likewise.
585
586 2002-01-16  Marcus Brinkmann  <marcus@g10code.de>
587
588         * gpgme.texi: g10Code -> g10 Code
589
590         * gpgme.texi (Top): Complete detailmenu.
591         
592         * gpgme.texi: Convert embarassing cruft to the real thing.
593
594 2002-01-16  Marcus Brinkmann  <marcus@g10code.de>
595
596         * ChangeLog: New file.
597         * gpgme.texi: Likewise.
598         * gpl.texi: Likewise.
599         * fdl.texi: Likewise.
600         * Makefile.am (info_TEXINFOS): New variable.
601         (gpgme_TEXINFOS): Likewise.
602
603  Copyright 2002, 2003, 2004 g10 Code GmbH
604
605  This file is free software; as a special exception the author gives
606  unlimited permission to copy and/or distribute it, with or without
607  modifications, as long as this notice is preserved.
608
609  This file is distributed in the hope that it will be useful, but
610  WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
611  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.