mumboe-vpim 0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. data/CHANGES +510 -0
  2. data/COPYING +58 -0
  3. data/README +185 -0
  4. data/lib/vpim/address.rb +219 -0
  5. data/lib/vpim/agent/atomize.rb +104 -0
  6. data/lib/vpim/agent/base.rb +73 -0
  7. data/lib/vpim/agent/calendars.rb +173 -0
  8. data/lib/vpim/agent/handler.rb +26 -0
  9. data/lib/vpim/agent/ics.rb +161 -0
  10. data/lib/vpim/attachment.rb +102 -0
  11. data/lib/vpim/date.rb +222 -0
  12. data/lib/vpim/dirinfo.rb +277 -0
  13. data/lib/vpim/duration.rb +119 -0
  14. data/lib/vpim/enumerator.rb +32 -0
  15. data/lib/vpim/field.rb +614 -0
  16. data/lib/vpim/icalendar.rb +384 -0
  17. data/lib/vpim/maker/vcard.rb +16 -0
  18. data/lib/vpim/property/base.rb +193 -0
  19. data/lib/vpim/property/common.rb +315 -0
  20. data/lib/vpim/property/location.rb +38 -0
  21. data/lib/vpim/property/priority.rb +43 -0
  22. data/lib/vpim/property/recurrence.rb +69 -0
  23. data/lib/vpim/property/resources.rb +24 -0
  24. data/lib/vpim/repo.rb +261 -0
  25. data/lib/vpim/rfc2425.rb +367 -0
  26. data/lib/vpim/rrule.rb +591 -0
  27. data/lib/vpim/time.rb +40 -0
  28. data/lib/vpim/vcard.rb +1456 -0
  29. data/lib/vpim/version.rb +18 -0
  30. data/lib/vpim/vevent.rb +187 -0
  31. data/lib/vpim/view.rb +90 -0
  32. data/lib/vpim/vjournal.rb +58 -0
  33. data/lib/vpim/vpim.rb +65 -0
  34. data/lib/vpim/vtodo.rb +103 -0
  35. data/lib/vpim.rb +13 -0
  36. data/samples/README.mutt +93 -0
  37. data/samples/ab-query.rb +57 -0
  38. data/samples/agent.ru +10 -0
  39. data/samples/cmd-itip.rb +156 -0
  40. data/samples/ex_cpvcard.rb +55 -0
  41. data/samples/ex_get_vcard_photo.rb +22 -0
  42. data/samples/ex_mkv21vcard.rb +34 -0
  43. data/samples/ex_mkvcard.rb +64 -0
  44. data/samples/ex_mkyourown.rb +29 -0
  45. data/samples/ics-dump.rb +210 -0
  46. data/samples/ics-to-rss.rb +84 -0
  47. data/samples/mutt-aliases-to-vcf.rb +45 -0
  48. data/samples/osx-wrappers.rb +86 -0
  49. data/samples/reminder.rb +209 -0
  50. data/samples/rrule.rb +71 -0
  51. data/samples/tabbed-file-to-vcf.rb +390 -0
  52. data/samples/vcf-dump.rb +86 -0
  53. data/samples/vcf-lines.rb +61 -0
  54. data/samples/vcf-to-ics.rb +22 -0
  55. data/samples/vcf-to-mutt.rb +121 -0
  56. data/test/test_agent_atomize.rb +84 -0
  57. data/test/test_agent_calendars.rb +128 -0
  58. data/test/test_agent_ics.rb +96 -0
  59. data/test/test_all.rb +17 -0
  60. data/test/test_date.rb +120 -0
  61. data/test/test_dur.rb +41 -0
  62. data/test/test_field.rb +156 -0
  63. data/test/test_ical.rb +437 -0
  64. data/test/test_misc.rb +13 -0
  65. data/test/test_repo.rb +129 -0
  66. data/test/test_rrule.rb +1030 -0
  67. data/test/test_vcard.rb +973 -0
  68. data/test/test_view.rb +79 -0
  69. metadata +140 -0
data/CHANGES ADDED
@@ -0,0 +1,510 @@
1
+ 0.695 - 2009-03-01
2
+
3
+ - Alpha versions of vPim agent (http://agent.octetcloud.com)
4
+ - Fixed: reminder app had drifted out of sync with API change
5
+
6
+
7
+ 0.657 - 2008-08-14
8
+
9
+ - Date#to_time renamed to Date#vpim_to_time. Apparently Rails also patches the core.
10
+
11
+ - Debian doesn't like RFCs. I think there is a problem with the DFG, not the
12
+ IETF. The value of a standard is that it can't be modified (if anybody could
13
+ publish a modified version of an RFC without restriction chaos would ensue).
14
+ Still, we lost that argument, and I'll try and help packagers out.
15
+
16
+ - View, gives various views of calendars. Experimental.
17
+
18
+ - Fixed doc comment refs to common Property module.
19
+
20
+ - Vtodo#duration and #due now work correctly (the missing one will be calculated
21
+ from the other).
22
+
23
+ - Vevent::Maker#add_rrule, #set_rrule are new, using Rrule::Maker.
24
+
25
+ - There is now (half-of) an Rrule::Maker class to help construct RRULE values.
26
+
27
+ - Vjournal can be encoded now (it was broken).
28
+
29
+ - Better code coverage by the tests.
30
+
31
+ - Recurrence#occurrences now returns an Enumerator instead of an Rrule. Both
32
+ have #each, and both yield the same thing, so that isn't an API change. However,
33
+ Rrule had an each_until, and the Enumerator doesn't. Use the dountil argument
34
+ to #occurrences to get the same effect. The asymetry of this API caused me
35
+ (non-aesthetic) trouble, now Rrule is an internal implementation detail.
36
+ Also, this would have had to change eventually, because occurrences need to
37
+ be the union of multiple RRULE and RDATE fields.
38
+
39
+ - Recurrence#rrule, returns an Rrule for the first RRULE field. Can be used
40
+ as transition.
41
+
42
+ - Icalendar#calscale was broken, and is now unit tested, along with #version
43
+ and #protocol?.
44
+
45
+ - Icalendar#{each,events,todos,journals} all yield components, or return an
46
+ enumerator.
47
+
48
+ - Icalendar is enumerable.
49
+
50
+ - Repo and Repo::Calendar are enumerable.
51
+
52
+ - #occurrences will call Rrule#each if a block is provided
53
+
54
+ - Recurrence rules with DTSTART in UTC will now sortof work (thanks to Max
55
+ Werner for providing the patch).
56
+
57
+ - Added convenience methods for setting and getting title and org fiels (thanks
58
+ to Jade Meskill for providing the patch).
59
+
60
+ - Modified Icalendar#create2 so only prodid can be supplied and cal is yielded
61
+ so events/etc. can be pushed.
62
+
63
+ - Support Highrisehq.com's broken google talk field (see test_vcard.rb for
64
+ examples, thanks to Terry Tong for reporting).
65
+
66
+
67
+ 0.619 - 2008-03-30
68
+
69
+ - Fixed some problems with rescue statements not being specific enough.
70
+
71
+ - Vcard#birthday may now return a DateTime.
72
+
73
+ - Added Vcard#urls
74
+
75
+ - Fixed a mispelled Uri in Vcard#url
76
+
77
+ - Global fix of misspellings of "occurrence"
78
+
79
+ - KAddressBook compatibility fix - allow / in field names, even though it is
80
+ illegal in vCard 3.0.
81
+
82
+
83
+ 0.604 - 2008-03-13
84
+
85
+ - Fixed a bug with lower-case UTF-16 encoded cards not being detected properly.
86
+
87
+ - Skip over invalidly encoded vCard fields when enumerating them.
88
+
89
+
90
+ 0.602 - 2008-03-12
91
+
92
+ - Updated reminder utility to work with iCal 3.
93
+
94
+ - Reworked gem to include tests, samples, and binaries.
95
+
96
+
97
+ 0.597 - 2008-03-01
98
+
99
+ - Support for BYSETPOS in recurrence rules (development supported by ZipDX.com)
100
+
101
+ - Support for FREQ=weekly in recurrence rules (development supported by ZipDX.com)
102
+
103
+ - Fixed an encode_text() bug (patch supplied by Jan Becvar)
104
+
105
+ - Fixed problem with interaction between BYMONTH and BYDAY (patch supplied by
106
+ Sam Stephenson of 32signals.com)
107
+
108
+ - Vevent::Maker - Started adding high-level iCalendar encoding APIs
109
+
110
+ - Vpim::Vcard::Maker - the vCard maker is moved here
111
+
112
+ - Vpim::Maker - deprecated
113
+
114
+ - Vcard::make, Maker::Vcard#delete_if - new
115
+
116
+ - Vcard::Maker#add_name - deprecate, see Vcard::Maker#name
117
+
118
+ - Vcard::Maker#fullname= - deprecate, see Vcard::Maker#name
119
+
120
+ - Added high-level vCard decoding API.
121
+
122
+ - Beginning to depend on ruby1.8. I'm willing to try for backwards compat if I
123
+ get feedback that this causes difficulties.
124
+
125
+ - Icalendar#components - new
126
+
127
+ - Icalendar#vevents - deprecated, see Icalendar#components
128
+
129
+ - split Vtodo and Vjournal into own files
130
+
131
+ - Added Recurrence module to Vtodo and Vjournal
132
+
133
+ - Property::Common#sequence - new
134
+
135
+ - Property::Common#attachments - new
136
+
137
+ - Icalendar::Attachment - new
138
+
139
+ - Maker::Vcard#add_url - new
140
+
141
+ - ex_mkyourown.rb - new example
142
+
143
+ - Modularized the component property accessor methods, and added lots of
144
+ Icalendar property support for Vevent, Vtodo, and Vjournal.
145
+
146
+ - Fixed support for TEXT decoding.
147
+
148
+ - Use Subversion revision as release sub-version.
149
+
150
+ - It appears that a top-level vpim.rb that requires everything else is needed
151
+ for ruby-gems, gemspec seems to work now.
152
+
153
+ - Don't package backup files (.../*.rb~).
154
+
155
+ - Icalendar decoding optimizations. Icalendar.decode is about twice as fast
156
+ now, and more optimizations are scheduled.
157
+
158
+ - Continue the move to using uppercase for all syntactic elements that can be
159
+ mixed case. The API might eventually allow only uppercase, it appears
160
+ case-insensitive comparisons still have a noticeable effect on performance.
161
+
162
+
163
+ 0.17 - 2006-03-08
164
+
165
+ - DirectoryInfo#delete - new
166
+
167
+ - Maker::Vcard#fullname - new
168
+
169
+ - Provide an example of how to create, copy, and modify version 2.1 vCards.
170
+
171
+ - Maker::Vcard.make2 - new
172
+
173
+ - Maker::Vcard.make - deprecated
174
+
175
+ - Profiled decoding of a huge iCalendar file. Performance appears to be
176
+ dominated by overhead of String#downcase (20% of time spent in Field#name?).
177
+ Keeping the field group, field name, and field's parameter's names internally
178
+ in uppercase and using ruby 1.8's String#casecmp? is a first attempt at
179
+ optimization. This is a change in the default case returned, but it aligns
180
+ with the RFC and common usage.
181
+
182
+ - Maker::Vcard.make - full_name is now optional, it will be derived from name/N:
183
+
184
+ - Maker::Vcard#add_field - better argument checking
185
+
186
+ - Maker::Vcard#copy - new
187
+
188
+ - Vcard#[] - now limits return to fields with values
189
+
190
+ - Vcard#name - new
191
+
192
+ - Vcard::Name - new
193
+
194
+ - Vcard#nicknames - new
195
+
196
+ - Field#params and Field#param - deprecated and undocumented, I could never
197
+ remember the difference
198
+
199
+ - Field#pnames - new
200
+
201
+ - Field#pvalues - new
202
+
203
+ - Methods.casecmp? - new
204
+
205
+ - Field#pref= - new
206
+
207
+ - Field#pvalue_idel - new
208
+
209
+ - Field#pvalue_iadd - new
210
+
211
+
212
+ 0.16 - 2006-02-19
213
+
214
+ - Packaged in gem format, experimental.
215
+
216
+ - Read vCards in UTF-8 or UTF-16, big or little endian, with or without a byte
217
+ order mark (BOM).
218
+
219
+ - Fixed bug with rrule occurences containing the end of the interval. Reported
220
+ with patch by Brad Ediger.
221
+
222
+ 0.15 - 2005-07-29
223
+
224
+ - Fixed bug with param values with quoted strings, particularly a quoted string
225
+ containing a : character, like
226
+ name;param="file:///":value
227
+
228
+ Thanks to Tamiji Homma for reporting this and sending me an example calendar.
229
+
230
+ - Vtodo.create - new
231
+ - Icalendar#push - allow Vtodos to be added
232
+
233
+ Thanks to Maximillian Dornseif for contributing the above two Vtodo patches.
234
+
235
+ - Vevent.duration - bug fixes so duration can be calculated from begin/end, and
236
+ end can be calculated from begin/duration
237
+
238
+ - Vcard#nickname that strips whitespace to see if there really is a nickname
239
+
240
+ - Vcard#birthday - returns birthday as a date
241
+
242
+ - Vevent#create_yearly - easy, cheesy way to create yearly recurring events
243
+
244
+ - vcf-to-ics.rb: example of how to create calendars of bdays from vcards
245
+
246
+ - Icalendar.create() like Vevent.create(), it will take arrays of Fields, or
247
+ Hashes of String => value.
248
+
249
+ - maker/vcard.rb: Added support for X-AIM, an Apple extension.
250
+
251
+ 0.14 - 2005-02-01
252
+
253
+ - Fix: if an RRULE didn't ever yield an event (a bug in the rule) dountil was never tested.
254
+
255
+ - Change: don't throw an ArgumentError with infinite events, just stop when the
256
+ Time is no longer representable
257
+
258
+ 0.13 - 2005-01-20
259
+
260
+ - Was calling to_time with an arg, fixed.
261
+
262
+ 0.12 - 2005-01-17
263
+
264
+ - Removed require of pp from the library and utilities where it wasn't needed,
265
+ it was causing problems because it doesn't exist on ruby 1.6 systems.
266
+
267
+ - Added Field#to_date, returns field value as an array of Date objects
268
+
269
+ - Changed Field#to_time - it now auto-detects format of values
270
+ (DATE/DATE-TIME), and doesn't take/require a default_kind argument.
271
+
272
+ - Added IMPP support to Vpim::Maker::Vcard.
273
+
274
+ - Makefile wasn't copying the Maker classes into the release.
275
+
276
+ - Duration value not returned unless it was negative, fixed.
277
+
278
+ - An RRULE's UNTIL was always being assumed to be a DATE-TIME, but it can be a
279
+ DATE. I fixed this, but is something of a hack, see comments and TODO.
280
+
281
+ - Use String#scan instead of String#gsub, when appropriate (I didn't know it
282
+ existed when I stated the project).
283
+
284
+ - Run tests on 3 ruby versions.
285
+
286
+ - Don't include docs in release package, it makes it way too large.
287
+
288
+ - Change: use String.unpack instead of iconv to convert UCS-2 to UTF-8,
289
+ removing dependency on iconv (it wasn't standard in ruby 1.6).
290
+
291
+ - Change: simplified mutt_ab_query.rb, and renamed to vcf-to-mutt.
292
+
293
+ - Change: reminder.rb sorts todo items by priority.
294
+
295
+ - New: Vtodo#priority - the priority of the vTodo component.
296
+
297
+ 0.11 - 2004-11-17
298
+
299
+ - Added a Vpim::Maker::Vcard class to simplify the creation of vCards, modelled
300
+ after the RSS maker from ruby's RSS library.
301
+
302
+ 0.10 - 2004-11-07
303
+
304
+ - If events don't have a recurrence rule, they occur once, but they
305
+ were being returned even if they occurred after "dountil". Fixed.
306
+
307
+ - New sample of converting tab-delimited files to a vcard file, from
308
+ Dane G. Avilla. Thanks!
309
+
310
+ 0.9a - 2004-10-31
311
+
312
+ - Made sure all events occur once in rrules.
313
+
314
+ - New sample of encoding: mutt-aliases-vcard.rb
315
+
316
+ - Added ToDo support to reminder.rb.
317
+
318
+ 0.9 - 2004-06-17
319
+
320
+ - Field now is mutable, you can change the group, value, params, etc.
321
+
322
+ - Using the Enumerator object for DirectoryInfo now, instead of all the
323
+ each_by_X, and field_by_X() APIs.
324
+
325
+ - Moved homepage and docs to Ruby Forge.
326
+
327
+ - DirectoryInfo.create: added a profile argument
328
+
329
+ - DirectoryInfo#push: now pushes to 1 before the end
330
+
331
+ - DirectoryInfo#push_end: pushes onto end, in case you really want to
332
+
333
+ - Field.create: a Date or Time object value will now be encoded as date or time
334
+
335
+ - Vpim.encode_date(): encodes an RFC2425 date
336
+
337
+ - Vpim.encode_time(): encodes an RFC2425 time
338
+
339
+ - Vpim.encode_date_time(): encodes an RFC2425 date-time
340
+
341
+ - Icalendar#encode(): encodes an Icalendar
342
+
343
+ - Icalendar#push(): pushes a calendar component onto a calendar
344
+
345
+ - Vevent#accept(): accepts an event invitation
346
+
347
+ - Vevent#create(): creates a new event
348
+
349
+ - Address#copy(): create a copy of Address. If the original Address was frozen,
350
+ this one won't be.
351
+
352
+ - Address#partstat=(): set or change the PARTSTAT.
353
+
354
+ - Field#copy(): create a copy of Field. If the original Field was frozen, this
355
+ one won't be.
356
+
357
+ 0.8 - 2004-04-01
358
+
359
+ - Moved DirectoryInfo::Field into it's own file, vpim/field.rb.
360
+
361
+ - New: Vpim::Duration - crude way of getting days/hours/mins/secs from a
362
+ duration in seconds.
363
+
364
+ - New: Icalendar#create() and Icalendar#create_reply()
365
+
366
+ - New: Icalendar#encode(), #to_s is an alias to #encode.
367
+
368
+ - New: Icalendar#protocol?()
369
+
370
+ - Change: Icalendar#version() raises an error if there is no VERSION
371
+
372
+ - Change: made all the DirectoryInfo, Vcard, and Field .new() class methods
373
+ private, and replaced with the 2 class methods:
374
+
375
+ - decode() decodes a string, returning a ruby object
376
+ - create() creates a new object
377
+
378
+ and all objects now get encoded using:
379
+
380
+ - encode() takes a ruby object, and encodes it as a string
381
+
382
+ They become more symetrical, and the overloaded meanings of .new() dissappear -
383
+ with .new() are you decoding, encoding, creating...?
384
+
385
+ - Change: Icalendar::Vevent#attendees() can return only attendees
386
+ with a particular URI.
387
+
388
+ - New: Icalendar::Address#==()
389
+
390
+ - New: Icalendar::Vevent#attendee?()
391
+
392
+ - Fixed bug: Field#encode() was adding an unexpecte NL to the line.
393
+
394
+ - Change: Field#name?() can accept a symbol.
395
+
396
+ - New: DirectoryInfo has an #each(), so I included Enumerable. Because of this
397
+ #to_a() now returns all the Fields in a DirectoryInfo.
398
+
399
+ - New: DirectoryInfo#push() and DirectoryInfo@push_uniq().
400
+
401
+ - Change: DirectoryInfo#<<() is now an alias for DirectoryInfo#push()
402
+
403
+ - Change: DirectoryInfo#each() and DirectoryInfo#each_by() now return self
404
+ instead of nil, I think this is more rubyish.
405
+
406
+ - New: Date#to_time() - converts a Date, and maybe a DateTime, to a Time
407
+
408
+ - New: Icalendar#protocol()
409
+
410
+ - New: Icalendar::Address
411
+
412
+ - New: Icalendar::Vevent#organizer()/attendees(), which return an
413
+ Icalendar::Address
414
+
415
+ - New: An array of all the values of fields named name, converted to text,
416
+ using Field.to_text().
417
+
418
+
419
+ 0.7 - 2004-03-21
420
+
421
+ - Bug fixes, not all files were requiring vpim.rb, which had the definition of
422
+ the invalid encoding error.
423
+
424
+ - Implemented much requested feature: ignore empty lines in input. This is an
425
+ invalid encoding, but I'm tired of fighting it.
426
+
427
+
428
+ 0.6 - 2004-03-20
429
+
430
+ WARNING: major API renamings!
431
+
432
+ - Replaced the Vpim::Errors::*Error exception classes with a single exception
433
+ class: Vpim::InvalidEncodingError. That, and a message, is all I really need.
434
+ I don't think people need different classes for different types of encoding
435
+ errors, either the library can decode it for them, or it can't.
436
+
437
+ - Renamed project to "vpim" (to reflect vCard and vCalendar/iCalendar support),
438
+ renamed top-level Rfc2425 module to Vpim, split vard.rb into multiple files.
439
+
440
+ - Add support for iCalendar (RFC2445), see vpim/icalendar.rb. Currently only
441
+ supports VEVENT, no VTODO or VALARM yet, but is useable to print my upcoming
442
+ iCal events.
443
+
444
+ - Implemented the iCalendar recurrence rules mini-language, which is possibly
445
+ of more general use than just for iCalendar.
446
+
447
+ - Fixed bug in time decoding where usec would be nil instead of zero when no
448
+ usec were present in the time value.
449
+
450
+ - Field#to_time now assumes that time is in local time, unless the timezone is
451
+ "Z", meaning UTC.
452
+
453
+ - Field#to_text - new method, unescapes newlines, commas, and escape
454
+ characters.
455
+
456
+ - Field#field(name) - new method, returns the first field named +name+.
457
+
458
+
459
+ 0.5 - 3003-11-23
460
+
461
+ - ab-query.rb - short option for --me was mistyped as -v, instead of -m.
462
+
463
+ - mutt_ab_query.rb - added a --pipe option, so that the output of an other
464
+ script can be directly queried.
465
+
466
+ - New method: Rfc2425.version
467
+
468
+ - Decode vCard 2.1 abbreviated parameters (ones where the name of the parameter
469
+ is missing, only the value is present, which only works for type and encoding).
470
+
471
+ - Vcard.decode() now support UCS-2 encoded vCards, by translating anything that
472
+ looks like UCS-2 to UTF-8 before decoding.
473
+
474
+ 0.4 - 2003-04-14
475
+
476
+ - More support for decoding date, time, and date-time values.
477
+
478
+ - New method Field#to_time().
479
+
480
+ - Can pass an IO object to decode APIs, its entire contents is read as a
481
+ string.
482
+
483
+ - Field#group?() now considers nil as equivalent to no group, so you can use
484
+ each_group(nil) to iterate through all fields without a group.
485
+
486
+ 0.3 -
487
+
488
+ - Added description of how to use mutt_ab_query.rb
489
+
490
+ - Added support for querying the kind of a value, and began support for
491
+ decoding date and time values.
492
+
493
+ 0.2 -
494
+
495
+ - Supports encoding.
496
+
497
+ - Supports accessing values using [].
498
+
499
+ - No longer have methods return an Array, or nil if the array is zero length, I
500
+ just return an Array.
501
+
502
+ - mutt_ab_query.rb - an example of using vcard.rb to do lookups in the OS X
503
+ Address Book from Mutt
504
+
505
+ 0.1 -
506
+
507
+ - First release.
508
+ ---
509
+
510
+ vim:expandtab:tabstop=8:softtabstop=2:shiftwidth=2
data/COPYING ADDED
@@ -0,0 +1,58 @@
1
+ vPim is copyrighted free software by Sam Roberts <sroberts@uniserve.com>.
2
+
3
+ You can redistribute it and/or modify it under either the terms of the GPL (see
4
+ the file GPL), or the conditions below:
5
+
6
+ 1. You may make and give away verbatim copies of the source form of the
7
+ software without restriction, provided that you duplicate all of the
8
+ original copyright notices and associated disclaimers.
9
+
10
+ 2. You may modify your copy of the software in any way, provided that
11
+ you do at least ONE of the following:
12
+
13
+ a) place your modifications in the Public Domain or otherwise make them
14
+ Freely Available, such as by posting said modifications to Usenet or an
15
+ equivalent medium, or by allowing the author to include your
16
+ modifications in the software.
17
+
18
+ b) use the modified software only within your corporation or
19
+ organization.
20
+
21
+ c) give non-standard binaries non-standard names, with instructions on
22
+ where to get the original software distribution.
23
+
24
+ d) make other distribution arrangements with the author.
25
+
26
+ 3. You may distribute the software in object code or binary form,
27
+ provided that you do at least ONE of the following:
28
+
29
+ a) distribute the binaries and library files of the software, together
30
+ with instructions (in the manual page or equivalent) on where to get the
31
+ original distribution.
32
+
33
+ b) accompany the distribution with the machine-readable source of the
34
+ software.
35
+
36
+ c) give non-standard binaries non-standard names, with instructions on
37
+ where to get the original software distribution.
38
+
39
+ d) make other distribution arrangements with the author.
40
+
41
+ 4. You may modify and include the part of the software into any other
42
+ software (possibly commercial). But some files in the distribution
43
+ are not written by the author, so that they are not under these terms.
44
+
45
+ For the list of those files and their copying conditions, see the
46
+ file LEGAL.
47
+
48
+ 5. The scripts and library files supplied as input to or produced as
49
+ output from the software do not automatically fall under the
50
+ copyright of the software, but belong to whomever generated them,
51
+ and may be sold commercially, and may be aggregated with this
52
+ software.
53
+
54
+ 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
55
+ IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
56
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
57
+ PURPOSE.
58
+