sup 1.1 → 1.3
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.
- checksums.yaml +4 -4
- data/.github/workflows/checks.yml +40 -38
- data/.gitmodules +1 -0
- data/CONTRIBUTORS +3 -1
- data/History.txt +32 -3
- data/Manifest.txt +34 -1
- data/README.md +0 -1
- data/bin/sup-sync-back-maildir +1 -1
- data/contrib/nix/Gemfile +24 -0
- data/contrib/nix/Gemfile.lock +101 -0
- data/contrib/nix/README +7 -0
- data/contrib/nix/gem-install-shell.nix +14 -0
- data/contrib/nix/gemset.nix +391 -0
- data/contrib/nix/ruby2.4-Gemfile.lock +85 -0
- data/contrib/nix/ruby2.4-gemset.nix +329 -0
- data/contrib/nix/ruby2.4-shell.nix +26 -0
- data/contrib/nix/ruby2.5-Gemfile.lock +85 -0
- data/contrib/nix/ruby2.5-gemset.nix +329 -0
- data/contrib/nix/ruby2.5-shell.nix +26 -0
- data/contrib/nix/ruby2.6-Gemfile.lock +87 -0
- data/contrib/nix/ruby2.6-gemset.nix +339 -0
- data/contrib/nix/ruby2.6-shell.nix +26 -0
- data/contrib/nix/ruby2.7-Gemfile.lock +91 -0
- data/contrib/nix/ruby2.7-gemset.nix +359 -0
- data/contrib/nix/ruby2.7-shell.nix +14 -0
- data/contrib/nix/ruby3.0-Gemfile.lock +91 -0
- data/contrib/nix/ruby3.0-gemset.nix +359 -0
- data/contrib/nix/ruby3.0-shell.nix +14 -0
- data/contrib/nix/ruby3.1-shell.nix +25 -0
- data/contrib/nix/ruby3.2-shell.nix +25 -0
- data/contrib/nix/ruby3.3-shell.nix +25 -0
- data/contrib/nix/ruby3.4-shell.nix +36 -0
- data/contrib/nix/test-all-rubies.sh +6 -0
- data/doc/Hooks.txt +1 -1
- data/ext/mkrf_conf_xapian.rb +2 -2
- data/lib/sup/crypto.rb +8 -6
- data/lib/sup/index.rb +2 -2
- data/lib/sup/maildir.rb +5 -1
- data/lib/sup/mbox.rb +26 -8
- data/lib/sup/message.rb +15 -12
- data/lib/sup/modes/console_mode.rb +1 -1
- data/lib/sup/modes/edit_message_mode.rb +5 -5
- data/lib/sup/thread.rb +20 -20
- data/lib/sup/util.rb +12 -7
- data/lib/sup/version.rb +1 -1
- data/man/sup-add.1 +40 -40
- data/man/sup-config.1 +30 -26
- data/man/sup-dump.1 +38 -38
- data/man/sup-import-dump.1 +41 -37
- data/man/sup-psych-ify-config-files.1 +32 -28
- data/man/sup-recover-sources.1 +39 -35
- data/man/sup-sync-back-maildir.1 +39 -34
- data/man/sup-sync.1 +50 -46
- data/man/sup-tweak-labels.1 +43 -38
- data/man/sup.1 +42 -38
- data/shell.nix +1 -0
- data/sup.gemspec +2 -0
- data/test/dummy_source.rb +6 -0
- data/test/fixtures/embedded-message-rfc6532.eml +33 -0
- data/test/fixtures/invalid-date.eml +8 -0
- data/test/gnupg_test_home/private-keys-v1.d/26C05E44706A8E230B3255BB9532B34DC9420232.key +42 -0
- data/test/gnupg_test_home/private-keys-v1.d/D187ADC90EC4DEB7047678EAA37E33A53A465D47.key +5 -0
- data/test/gnupg_test_home/private-keys-v1.d/FB2D9BD3B1BE90B5BCF697781F8404224B0FCF5B.key +5 -0
- data/test/gnupg_test_home/pubring.gpg +0 -0
- data/test/gnupg_test_home/receiver_pubring.gpg +0 -0
- data/test/gnupg_test_home/receiver_secring.gpg +0 -0
- data/test/gnupg_test_home/regen_keys.sh +11 -2
- data/test/gnupg_test_home/secring.gpg +0 -0
- data/test/gnupg_test_home/sup-test-2@foo.bar.asc +20 -20
- data/test/integration/test_maildir.rb +18 -1
- data/test/integration/test_mbox.rb +13 -0
- data/test/integration/test_sup-sync-back-maildir.rb +40 -0
- data/test/test_crypto.rb +108 -71
- data/test/test_header_parsing.rb +2 -2
- data/test/test_message.rb +42 -0
- data/test/unit/test_contact.rb +1 -1
- data/test/unit/test_edit_message_mode.rb +94 -0
- data/test/unit/test_person.rb +3 -3
- data/test/unit/test_rmail_message.rb +36 -0
- data/test/unit/util/test_string.rb +3 -3
- metadata +73 -5
- data/test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key +0 -0
data/lib/sup/message.rb
CHANGED
@@ -103,16 +103,10 @@ class Message
|
|
103
103
|
when Time
|
104
104
|
date
|
105
105
|
when String
|
106
|
-
|
107
|
-
Time.parse date
|
108
|
-
rescue ArgumentError
|
109
|
-
#debug "faking mangled date header for #{@id} (orig #{header['date'].inspect} gave error: #{e.message})"
|
110
|
-
Time.now
|
111
|
-
end
|
112
|
-
else
|
113
|
-
#debug "faking non-existent date header for #{@id}"
|
114
|
-
Time.now
|
106
|
+
Time.rfc2822 date rescue nil
|
115
107
|
end
|
108
|
+
@date = location.fallback_date if @date.nil?
|
109
|
+
@date = Time.utc 1970, 1, 1 if @date.nil?
|
116
110
|
|
117
111
|
subj = header["subject"]
|
118
112
|
subj = subj ? subj.fix_encoding! : nil
|
@@ -271,7 +265,7 @@ class Message
|
|
271
265
|
message_to_chunks rmsg
|
272
266
|
rescue SourceError, SocketError, RMail::EncodingUnsupportedError => e
|
273
267
|
warn_with_location "problem reading message #{id}"
|
274
|
-
debug "could not load message
|
268
|
+
debug "could not load message, exception: #{e.inspect}"
|
275
269
|
|
276
270
|
[Chunk::Text.new(error_message.split("\n"))]
|
277
271
|
|
@@ -466,6 +460,11 @@ private
|
|
466
460
|
end
|
467
461
|
end
|
468
462
|
|
463
|
+
def has_embedded_message? m
|
464
|
+
return false unless m.header.content_type
|
465
|
+
%w(message/rfc822 message/global).include? m.header.content_type.downcase
|
466
|
+
end
|
467
|
+
|
469
468
|
## takes a RMail::Message, breaks it into Chunk:: classes.
|
470
469
|
def message_to_chunks m, encrypted=false, sibling_types=[]
|
471
470
|
if m.multipart?
|
@@ -483,7 +482,7 @@ private
|
|
483
482
|
end
|
484
483
|
|
485
484
|
chunks
|
486
|
-
elsif
|
485
|
+
elsif has_embedded_message? m
|
487
486
|
encoding = m.header["Content-Transfer-Encoding"]
|
488
487
|
if m.body
|
489
488
|
body =
|
@@ -760,7 +759,7 @@ private
|
|
760
759
|
|
761
760
|
def warn_with_location msg
|
762
761
|
warn msg
|
763
|
-
warn "Message is in #{
|
762
|
+
warn "Message is in #{@locations}"
|
764
763
|
end
|
765
764
|
end
|
766
765
|
|
@@ -808,6 +807,10 @@ class Location
|
|
808
807
|
source.load_message info
|
809
808
|
end
|
810
809
|
|
810
|
+
def fallback_date
|
811
|
+
source.fallback_date_for_message info
|
812
|
+
end
|
813
|
+
|
811
814
|
def valid?
|
812
815
|
source.valid? info
|
813
816
|
end
|
@@ -563,7 +563,7 @@ protected
|
|
563
563
|
## there are attachments, so wrap body in an attachment of its own
|
564
564
|
unless @attachments.empty?
|
565
565
|
body_m = m
|
566
|
-
body_m.header["Content-Disposition"] = "inline"
|
566
|
+
body_m.header["Content-Disposition"] = +"inline"
|
567
567
|
m = RMail::Message.new
|
568
568
|
|
569
569
|
m.add_part body_m
|
@@ -601,8 +601,8 @@ protected
|
|
601
601
|
m.header["Date"] = date.rfc2822
|
602
602
|
m.header["Message-Id"] = @message_id
|
603
603
|
m.header["User-Agent"] = "Sup/#{Redwood::VERSION}"
|
604
|
-
m.header["Content-Transfer-Encoding"] ||=
|
605
|
-
m.header["MIME-Version"] = "1.0" if m.multipart?
|
604
|
+
m.header["Content-Transfer-Encoding"] ||= +"8bit"
|
605
|
+
m.header["MIME-Version"] = +"1.0" if m.multipart?
|
606
606
|
m
|
607
607
|
end
|
608
608
|
|
@@ -716,10 +716,10 @@ private
|
|
716
716
|
## encode to quoted-printable for all text/* MIME types,
|
717
717
|
## use base64 otherwise
|
718
718
|
if msg_part.header["Content-Type"] =~ /text\/.*/
|
719
|
-
msg_part.header
|
719
|
+
msg_part.header.set "Content-Transfer-Encoding", +"quoted-printable"
|
720
720
|
msg_part.body = [msg_part.body].pack('M')
|
721
721
|
else
|
722
|
-
msg_part.header
|
722
|
+
msg_part.header.set "Content-Transfer-Encoding", +"base64"
|
723
723
|
msg_part.body = [msg_part.body].pack('m')
|
724
724
|
end
|
725
725
|
msg_part
|
data/lib/sup/thread.rb
CHANGED
@@ -86,22 +86,22 @@ class Thread
|
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
89
|
-
def first; each { |m,
|
90
|
-
def has_message?; any? { |m,
|
91
|
-
def dirty?; any? { |m,
|
92
|
-
def date; map { |m,
|
89
|
+
def first; each { |m, *| return m if m }; nil; end
|
90
|
+
def has_message?; any? { |m, *| m.is_a? Message }; end
|
91
|
+
def dirty?; any? { |m, *| m && m.dirty? }; end
|
92
|
+
def date; map { |m, *| m.date if m }.compact.max; end
|
93
93
|
def snippet
|
94
|
-
with_snippets = select { |m,
|
95
|
-
first_unread, * = with_snippets.select { |m,
|
94
|
+
with_snippets = select { |m, *| m && m.snippet && !m.snippet.empty? }
|
95
|
+
first_unread, * = with_snippets.select { |m, *| m.has_label?(:unread) }.sort_by { |m, *| m.date }.first
|
96
96
|
return first_unread.snippet if first_unread
|
97
|
-
last_read, * = with_snippets.sort_by { |m,
|
97
|
+
last_read, * = with_snippets.sort_by { |m, *| m.date }.last
|
98
98
|
return last_read.snippet if last_read
|
99
99
|
""
|
100
100
|
end
|
101
|
-
def authors; map { |m,
|
101
|
+
def authors; map { |m, *| m.from if m }.compact.uniq; end
|
102
102
|
|
103
|
-
def apply_label t; each { |m,
|
104
|
-
def remove_label t; each { |m,
|
103
|
+
def apply_label t; each { |m, *| m && m.add_label(t) }; end
|
104
|
+
def remove_label t; each { |m, *| m && m.remove_label(t) }; end
|
105
105
|
|
106
106
|
def toggle_label label
|
107
107
|
if has_label? label
|
@@ -113,24 +113,24 @@ class Thread
|
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
|
-
def set_labels l; each { |m,
|
117
|
-
def has_label? t; any? { |m,
|
118
|
-
def each_dirty_message; each { |m,
|
116
|
+
def set_labels l; each { |m, *| m && m.labels = l }; end
|
117
|
+
def has_label? t; any? { |m, *| m && m.has_label?(t) }; end
|
118
|
+
def each_dirty_message; each { |m, *| m && m.dirty? && yield(m) }; end
|
119
119
|
|
120
120
|
def direct_participants
|
121
|
-
map { |m,
|
121
|
+
map { |m, *| [m.from] + m.to if m }.flatten.compact.uniq
|
122
122
|
end
|
123
123
|
|
124
124
|
def participants
|
125
|
-
map { |m,
|
125
|
+
map { |m, *| [m.from] + m.to + m.cc + m.bcc if m }.flatten.compact.uniq
|
126
126
|
end
|
127
127
|
|
128
|
-
def size; map { |m,
|
129
|
-
def subj; argfind { |m,
|
130
|
-
def labels; inject(Set.new) { |s, (m, *
|
128
|
+
def size; map { |m, *| m ? 1 : 0 }.sum; end
|
129
|
+
def subj; argfind { |m, *| m && m.subj }; end
|
130
|
+
def labels; inject(Set.new) { |s, (m, *)| m ? s | m.labels : s } end
|
131
131
|
def labels= l
|
132
132
|
raise ArgumentError, "not a set" unless l.is_a?(Set)
|
133
|
-
each { |m,
|
133
|
+
each { |m, *| m && m.labels = l.dup }
|
134
134
|
end
|
135
135
|
|
136
136
|
def latest_message
|
@@ -360,7 +360,7 @@ class ThreadSet
|
|
360
360
|
## merges in a pre-loaded thread
|
361
361
|
def add_thread t
|
362
362
|
raise "duplicate" if @threads.values.member? t
|
363
|
-
t.each { |m,
|
363
|
+
t.each { |m, *| add_message m }
|
364
364
|
end
|
365
365
|
|
366
366
|
## merges two threads together. both must be members of this threadset.
|
data/lib/sup/util.rb
CHANGED
@@ -11,6 +11,7 @@ require 'benchmark'
|
|
11
11
|
require 'unicode'
|
12
12
|
require 'unicode/display_width'
|
13
13
|
require 'fileutils'
|
14
|
+
require 'string-scrub' if /^2\.0\./ =~ RUBY_VERSION
|
14
15
|
|
15
16
|
module ExtendedLockfile
|
16
17
|
def gen_lock_id
|
@@ -79,7 +80,14 @@ module RMail
|
|
79
80
|
def self.make_file_attachment fn
|
80
81
|
bfn = File.basename fn
|
81
82
|
t = MIME::Types.type_for(bfn).first || MIME::Types.type_for("exe").first
|
82
|
-
|
83
|
+
payload = IO.read fn
|
84
|
+
## Need to encode as base64 or quoted-printable if any lines are longer than 998 chars.
|
85
|
+
encoding = if t.encoding != t.default_encoding and payload.each_line.any? { |l| l.length > 998 }
|
86
|
+
t.default_encoding
|
87
|
+
else
|
88
|
+
t.encoding
|
89
|
+
end
|
90
|
+
make_attachment payload, t.content_type, encoding, bfn.to_s
|
83
91
|
end
|
84
92
|
|
85
93
|
def charset
|
@@ -205,7 +213,7 @@ class String
|
|
205
213
|
end
|
206
214
|
|
207
215
|
def slice_by_display_length len
|
208
|
-
each_char.each_with_object "" do |c, buffer|
|
216
|
+
each_char.each_with_object (+"") do |c, buffer|
|
209
217
|
len -= Unicode::DisplayWidth.of(c)
|
210
218
|
return buffer if len < 0
|
211
219
|
buffer << c
|
@@ -315,11 +323,8 @@ class String
|
|
315
323
|
# first try to encode to utf-8 from whatever current encoding
|
316
324
|
encode!('UTF-8', :invalid => :replace, :undef => :replace)
|
317
325
|
|
318
|
-
#
|
319
|
-
|
320
|
-
# ensures invalid chars are replaced.
|
321
|
-
encode!('UTF-16', 'UTF-8', :invalid => :replace, :undef => :replace)
|
322
|
-
encode!('UTF-8', 'UTF-16', :invalid => :replace, :undef => :replace)
|
326
|
+
# ensure invalid chars are replaced
|
327
|
+
scrub!
|
323
328
|
|
324
329
|
fail "Could not create valid UTF-8 string out of: '#{self.to_s}'." unless valid_encoding?
|
325
330
|
|
data/lib/sup/version.rb
CHANGED
data/man/sup-add.1
CHANGED
@@ -1,85 +1,80 @@
|
|
1
|
-
.\" Automatically generated by Pandoc
|
1
|
+
.\" Automatically generated by Pandoc 3.1.11.1
|
2
2
|
.\"
|
3
|
-
.TH "SUP
|
4
|
-
.hy
|
3
|
+
.TH "SUP\-ADD" "1" "April 9, 2012" "Sup User Manual" ""
|
5
4
|
.SH NAME
|
6
|
-
|
7
|
-
sup-add - add a source to the Sup source list
|
5
|
+
sup\-add \- add a source to the Sup source list
|
8
6
|
.SH SYNOPSIS
|
9
|
-
|
10
|
-
sup-add [\f[I]options\f[R]] [\f[I]source uri\&...\f[R]]
|
7
|
+
sup\-add [\f[I]options\f[R]] [\f[I]source uri\&...\f[R]]
|
11
8
|
.SH DESCRIPTION
|
12
|
-
.PP
|
13
9
|
Add one ore more sources to the Sup source list
|
14
10
|
.PP
|
15
11
|
For mbox files on local disk, use the form:
|
16
12
|
.IP
|
17
|
-
.
|
18
|
-
\f[C]
|
13
|
+
.EX
|
19
14
|
mbox:<path to mbox file>, or
|
20
15
|
|
21
16
|
mbox://<path to mbox file>
|
22
|
-
|
23
|
-
.fi
|
17
|
+
.EE
|
24
18
|
.PP
|
25
19
|
For Maildir folders, use the form:
|
26
20
|
.IP
|
27
|
-
.
|
28
|
-
\f[C]
|
21
|
+
.EX
|
29
22
|
maildir:<path to Maildir directory>; or
|
30
23
|
|
31
24
|
maildir://<path to Maildir directory>
|
32
|
-
|
33
|
-
.fi
|
25
|
+
.EE
|
34
26
|
.SH OPTIONS
|
35
27
|
.TP
|
36
|
-
|
28
|
+
\-a, \-\-archive
|
37
29
|
Automatically archive all new messages from thesesources.
|
38
30
|
.TP
|
39
|
-
|
31
|
+
\-u, \-\-unusual
|
40
32
|
Do not automatically poll these sources for new messages.
|
41
33
|
.TP
|
42
|
-
|
43
|
-
A comma
|
34
|
+
\-l \f[I]STRING\f[R], \-\-labels \f[I]STRING\f[R]
|
35
|
+
A comma\-separated set of labels to apply to all messages from this
|
44
36
|
source
|
45
37
|
.TP
|
46
|
-
|
38
|
+
\-f, \-\-force\-new
|
47
39
|
Create a new account for this source, even if one already exists
|
48
40
|
.TP
|
49
|
-
|
41
|
+
\-o \f[I]STRING\f[R], \-\-force\-account \f[I]STRING\f[R]
|
50
42
|
Reuse previously defined account user\[at]hostname
|
51
43
|
.TP
|
52
|
-
|
44
|
+
\-v, \-\-version
|
53
45
|
Print version and exit
|
54
46
|
.TP
|
55
|
-
|
47
|
+
\-h, \-\-help
|
56
48
|
Show help message
|
57
49
|
.SH FILES
|
58
50
|
.TP
|
59
51
|
$HOME/.sup/sources.yaml
|
60
52
|
Configuration file for Sup mail sources
|
61
53
|
.SH SEE ALSO
|
62
|
-
|
63
|
-
sup(1), sup-config(1)
|
54
|
+
sup(1), sup\-config(1)
|
64
55
|
.SH REPORTING BUGS
|
65
|
-
.PP
|
66
56
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
67
57
|
at
|
68
58
|
.PP
|
69
|
-
|
59
|
+
\c
|
60
|
+
.UR https://github.com/sup-heliotrope/sup/issues
|
61
|
+
.UE \c
|
70
62
|
.SH CONTACT INFORMATION
|
71
63
|
.TP
|
72
64
|
The Sup web page:
|
73
|
-
|
65
|
+
\c
|
66
|
+
.UR https://sup-heliotrope.github.io/
|
67
|
+
.UE \c
|
74
68
|
.TP
|
75
69
|
Code repository:
|
76
|
-
|
70
|
+
\c
|
71
|
+
.UR https://github.com/sup-heliotrope/sup/
|
72
|
+
.UE \c
|
77
73
|
.TP
|
78
74
|
Sup Wiki:
|
79
|
-
|
80
|
-
.
|
81
|
-
|
82
|
-
#sup \[at] freenode.net
|
75
|
+
\c
|
76
|
+
.UR https://github.com/sup-heliotrope/sup/wiki/
|
77
|
+
.UE \c
|
83
78
|
.TP
|
84
79
|
Mailing list:
|
85
80
|
supmua\[at]googlegroups.com
|
@@ -87,17 +82,22 @@ supmua\[at]googlegroups.com
|
|
87
82
|
.PP
|
88
83
|
supmua+subscribe\[at]googlegroups.com
|
89
84
|
.PP
|
90
|
-
Archives:
|
85
|
+
Archives: \c
|
86
|
+
.UR https://groups.google.com/d/forum/supmua/
|
87
|
+
.UE \c
|
91
88
|
.RE
|
92
89
|
.SH COPYRIGHT
|
90
|
+
Copyright © 2006\-2009 William Morgan \c
|
91
|
+
.MT mworgan-sup@masanjin.net
|
92
|
+
.ME \c
|
93
93
|
.PP
|
94
|
-
Copyright \[
|
95
|
-
.PP
|
96
|
-
Copyright \[at] 2013-2014 Sup developers
|
94
|
+
Copyright \[at] 2013\-2014 Sup developers
|
97
95
|
.PP
|
98
96
|
Permission is granted to copy and distribute this manual under the terms
|
99
97
|
of the GNU General Public License; either version 2 or (at your option)
|
100
98
|
any later version.
|
101
99
|
.SH AUTHORS
|
102
|
-
Sup was originally written by William Morgan
|
103
|
-
|
100
|
+
Sup was originally written by William Morgan \c
|
101
|
+
.MT wmorgan-sup@masanjin.net
|
102
|
+
.ME \c
|
103
|
+
\ and is now developed and maintained by the Sup developers.
|
data/man/sup-config.1
CHANGED
@@ -1,23 +1,19 @@
|
|
1
|
-
.\" Automatically generated by Pandoc
|
1
|
+
.\" Automatically generated by Pandoc 3.1.11.1
|
2
2
|
.\"
|
3
|
-
.TH "SUP
|
4
|
-
.hy
|
3
|
+
.TH "SUP\-CONFIG" "1" "April 9, 2012" "Sup User Manual" ""
|
5
4
|
.SH NAME
|
6
|
-
|
7
|
-
sup-config - interactive configuration tool for Sup
|
5
|
+
sup\-config \- interactive configuration tool for Sup
|
8
6
|
.SH SYNOPSIS
|
9
|
-
|
10
|
-
sup-config [\f[I]options\f[R]]
|
7
|
+
sup\-config [\f[I]options\f[R]]
|
11
8
|
.SH DESCRIPTION
|
12
|
-
.PP
|
13
9
|
Interactive configuration tool for Sup.
|
14
10
|
Won\[cq]t destroy existing configuration.
|
15
11
|
.SH OPTIONS
|
16
12
|
.TP
|
17
|
-
|
13
|
+
\-v, \-\-version
|
18
14
|
Print versian and exit
|
19
15
|
.TP
|
20
|
-
|
16
|
+
\-h, \-\-help
|
21
17
|
Show help message
|
22
18
|
.SH FILES
|
23
19
|
.TP
|
@@ -27,27 +23,30 @@ Configuration file for Sup
|
|
27
23
|
$HOME/.sup/sources.yaml
|
28
24
|
Configuration file for Sup mail sources
|
29
25
|
.SH SEE ALSO
|
30
|
-
|
31
|
-
sup(1), sup-add(1)
|
26
|
+
sup(1), sup\-add(1)
|
32
27
|
.SH REPORTING BUGS
|
33
|
-
.PP
|
34
28
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
35
29
|
at
|
36
30
|
.PP
|
37
|
-
|
31
|
+
\c
|
32
|
+
.UR https://github.com/sup-heliotrope/sup/issues
|
33
|
+
.UE \c
|
38
34
|
.SH CONTACT INFORMATION
|
39
35
|
.TP
|
40
36
|
The Sup web page:
|
41
|
-
|
37
|
+
\c
|
38
|
+
.UR https://sup-heliotrope.github.io/
|
39
|
+
.UE \c
|
42
40
|
.TP
|
43
41
|
Code repository:
|
44
|
-
|
42
|
+
\c
|
43
|
+
.UR https://github.com/sup-heliotrope/sup/
|
44
|
+
.UE \c
|
45
45
|
.TP
|
46
46
|
Sup Wiki:
|
47
|
-
|
48
|
-
.
|
49
|
-
|
50
|
-
#sup \[at] freenode.net
|
47
|
+
\c
|
48
|
+
.UR https://github.com/sup-heliotrope/sup/wiki/
|
49
|
+
.UE \c
|
51
50
|
.TP
|
52
51
|
Mailing list:
|
53
52
|
supmua\[at]googlegroups.com
|
@@ -55,17 +54,22 @@ supmua\[at]googlegroups.com
|
|
55
54
|
.PP
|
56
55
|
supmua+subscribe\[at]googlegroups.com
|
57
56
|
.PP
|
58
|
-
Archives:
|
57
|
+
Archives: \c
|
58
|
+
.UR https://groups.google.com/d/forum/supmua/
|
59
|
+
.UE \c
|
59
60
|
.RE
|
60
61
|
.SH COPYRIGHT
|
62
|
+
Copyright © 2006\-2009 William Morgan \c
|
63
|
+
.MT mworgan-sup@masanjin.net
|
64
|
+
.ME \c
|
61
65
|
.PP
|
62
|
-
Copyright \[
|
63
|
-
.PP
|
64
|
-
Copyright \[at] 2013-2014 Sup developers
|
66
|
+
Copyright \[at] 2013\-2014 Sup developers
|
65
67
|
.PP
|
66
68
|
Permission is granted to copy and distribute this manual under the terms
|
67
69
|
of the GNU General Public License; either version 2 or (at your option)
|
68
70
|
any later version.
|
69
71
|
.SH AUTHORS
|
70
|
-
Sup was originally written by William Morgan
|
71
|
-
|
72
|
+
Sup was originally written by William Morgan \c
|
73
|
+
.MT wmorgan-sup@masanjin.net
|
74
|
+
.ME \c
|
75
|
+
\ and is now developed and maintained by the Sup developers.
|
data/man/sup-dump.1
CHANGED
@@ -1,66 +1,61 @@
|
|
1
|
-
.\" Automatically generated by Pandoc
|
1
|
+
.\" Automatically generated by Pandoc 3.1.11.1
|
2
2
|
.\"
|
3
|
-
.TH "SUP
|
4
|
-
.hy
|
3
|
+
.TH "SUP\-DUMP" "1" "April 9, 2012" "Sup User Manual" ""
|
5
4
|
.SH NAME
|
6
|
-
|
7
|
-
sup-dump - dumps message state from Sup index
|
5
|
+
sup\-dump \- dumps message state from Sup index
|
8
6
|
.SH SYNOPSIS
|
9
|
-
|
10
|
-
sup-dump [\f[I]options\f[R]]
|
7
|
+
sup\-dump [\f[I]options\f[R]]
|
11
8
|
.SH DESCRIPTION
|
12
|
-
.PP
|
13
9
|
Dumps all message state from the Sup index to standard out.
|
14
|
-
You can later use sup
|
10
|
+
You can later use sup\-sync \-\-restored \-\-restore to recover the
|
11
|
+
index.
|
15
12
|
.PP
|
16
13
|
This tool is primarily useful in the event that a Sup upgrade breaks
|
17
14
|
index format compatibility.
|
18
15
|
.SH OPTIONS
|
19
16
|
.TP
|
20
|
-
|
17
|
+
\-v, \-\-version
|
21
18
|
Print version and exit
|
22
19
|
.TP
|
23
|
-
|
20
|
+
\-h, \-\-help
|
24
21
|
Show help message
|
25
22
|
.SH EXAMPLES
|
26
|
-
.PP
|
27
23
|
Dump message state and store in file
|
28
24
|
.IP
|
29
|
-
.
|
30
|
-
|
31
|
-
|
32
|
-
\f[R]
|
33
|
-
.fi
|
25
|
+
.EX
|
26
|
+
sup\-dump > filename
|
27
|
+
.EE
|
34
28
|
.PP
|
35
29
|
Dump message state and compress output to store in file
|
36
30
|
.IP
|
37
|
-
.
|
38
|
-
|
39
|
-
|
40
|
-
\f[R]
|
41
|
-
.fi
|
31
|
+
.EX
|
32
|
+
sup\-dump | bzip2 > filename.bz2
|
33
|
+
.EE
|
42
34
|
.SH SEE ALSO
|
43
|
-
|
44
|
-
sup(1), sup-sync(1), sup-import-dump(1)
|
35
|
+
sup(1), sup\-sync(1), sup\-import\-dump(1)
|
45
36
|
.SH REPORTING BUGS
|
46
|
-
.PP
|
47
37
|
You are welcome to submit bug reports to the Sup issue tracker, located
|
48
38
|
at
|
49
39
|
.PP
|
50
|
-
|
40
|
+
\c
|
41
|
+
.UR https://github.com/sup-heliotrope/sup/issues
|
42
|
+
.UE \c
|
51
43
|
.SH CONTACT INFORMATION
|
52
44
|
.TP
|
53
45
|
The Sup web page:
|
54
|
-
|
46
|
+
\c
|
47
|
+
.UR https://sup-heliotrope.github.io/
|
48
|
+
.UE \c
|
55
49
|
.TP
|
56
50
|
Code repository:
|
57
|
-
|
51
|
+
\c
|
52
|
+
.UR https://github.com/sup-heliotrope/sup/
|
53
|
+
.UE \c
|
58
54
|
.TP
|
59
55
|
Sup Wiki:
|
60
|
-
|
61
|
-
.
|
62
|
-
|
63
|
-
#sup \[at] freenode.net
|
56
|
+
\c
|
57
|
+
.UR https://github.com/sup-heliotrope/sup/wiki/
|
58
|
+
.UE \c
|
64
59
|
.TP
|
65
60
|
Mailing list:
|
66
61
|
supmua\[at]googlegroups.com
|
@@ -68,17 +63,22 @@ supmua\[at]googlegroups.com
|
|
68
63
|
.PP
|
69
64
|
supmua+subscribe\[at]googlegroups.com
|
70
65
|
.PP
|
71
|
-
Archives:
|
66
|
+
Archives: \c
|
67
|
+
.UR https://groups.google.com/d/forum/supmua/
|
68
|
+
.UE \c
|
72
69
|
.RE
|
73
70
|
.SH COPYRIGHT
|
71
|
+
Copyright © 2006\-2009 William Morgan \c
|
72
|
+
.MT mworgan-sup@masanjin.net
|
73
|
+
.ME \c
|
74
74
|
.PP
|
75
|
-
Copyright \[
|
76
|
-
.PP
|
77
|
-
Copyright \[at] 2013-2014 Sup developers
|
75
|
+
Copyright \[at] 2013\-2014 Sup developers
|
78
76
|
.PP
|
79
77
|
Permission is granted to copy and distribute this manual under the terms
|
80
78
|
of the GNU General Public License; either version 2 or (at your option)
|
81
79
|
any later version.
|
82
80
|
.SH AUTHORS
|
83
|
-
Sup was originally written by William Morgan
|
84
|
-
|
81
|
+
Sup was originally written by William Morgan \c
|
82
|
+
.MT wmorgan-sup@masanjin.net
|
83
|
+
.ME \c
|
84
|
+
\ and is now developed and maintained by the Sup developers.
|