sup 0.22.1 → 1.1

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 (99) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/checks.yml +70 -0
  3. data/.gitignore +1 -3
  4. data/.rubocop.yml +5 -0
  5. data/CONTRIBUTORS +14 -5
  6. data/Gemfile +6 -1
  7. data/History.txt +76 -0
  8. data/Manifest.txt +149 -0
  9. data/README.md +32 -5
  10. data/Rakefile +40 -1
  11. data/bin/sup +7 -5
  12. data/bin/sup-add +16 -20
  13. data/bin/sup-config +30 -44
  14. data/bin/sup-dump +2 -2
  15. data/bin/sup-import-dump +4 -4
  16. data/bin/sup-sync +3 -3
  17. data/bin/sup-sync-back-maildir +2 -2
  18. data/bin/sup-tweak-labels +5 -5
  19. data/ext/mkrf_conf_xapian.rb +10 -4
  20. data/lib/sup/colormap.rb +1 -1
  21. data/lib/sup/crypto.rb +17 -8
  22. data/lib/sup/hook.rb +9 -9
  23. data/lib/sup/index.rb +20 -7
  24. data/lib/sup/keymap.rb +1 -1
  25. data/lib/sup/logger.rb +1 -1
  26. data/lib/sup/maildir.rb +4 -4
  27. data/lib/sup/mbox.rb +4 -4
  28. data/lib/sup/message.rb +26 -15
  29. data/lib/sup/message_chunks.rb +29 -20
  30. data/lib/sup/mode.rb +1 -0
  31. data/lib/sup/modes/completion_mode.rb +0 -1
  32. data/lib/sup/modes/contact_list_mode.rb +1 -0
  33. data/lib/sup/modes/file_browser_mode.rb +2 -2
  34. data/lib/sup/modes/label_list_mode.rb +1 -1
  35. data/lib/sup/modes/reply_mode.rb +3 -1
  36. data/lib/sup/modes/search_list_mode.rb +2 -2
  37. data/lib/sup/modes/thread_index_mode.rb +1 -1
  38. data/lib/sup/modes/thread_view_mode.rb +15 -13
  39. data/lib/sup/rfc2047.rb +21 -6
  40. data/lib/sup/source.rb +9 -3
  41. data/lib/sup/textfield.rb +0 -1
  42. data/lib/sup/thread.rb +0 -1
  43. data/lib/sup/util/axe.rb +17 -0
  44. data/lib/sup/util/ncurses.rb +3 -3
  45. data/lib/sup/util.rb +42 -67
  46. data/lib/sup/version.rb +10 -1
  47. data/lib/sup.rb +13 -8
  48. data/man/sup-add.1 +34 -55
  49. data/man/sup-config.1 +23 -36
  50. data/man/sup-dump.1 +25 -35
  51. data/man/sup-import-dump.1 +33 -54
  52. data/man/sup-psych-ify-config-files.1 +25 -34
  53. data/man/sup-recover-sources.1 +34 -49
  54. data/man/sup-sync-back-maildir.1 +39 -60
  55. data/man/sup-sync.1 +49 -79
  56. data/man/sup-tweak-labels.1 +35 -58
  57. data/man/sup.1 +50 -62
  58. data/sup.gemspec +12 -9
  59. data/test/dummy_source.rb +21 -15
  60. data/test/fixtures/embedded-message.eml +34 -0
  61. data/test/fixtures/mailing-list-header.eml +80 -0
  62. data/test/fixtures/non-ascii-header-in-nested-message.eml +36 -0
  63. data/test/fixtures/non-ascii-header.eml +8 -0
  64. data/test/fixtures/rfc2047-header-encoding.eml +15 -0
  65. data/test/fixtures/text-attachments-with-charset.eml +60 -0
  66. data/test/fixtures/utf8-header.eml +17 -0
  67. data/test/fixtures/zimbra-quote-with-bottom-post.eml +27 -0
  68. data/test/gnupg_test_home/gpg.conf +2 -1
  69. data/test/gnupg_test_home/private-keys-v1.d/306D2EE90FF0014B5B9FD07E265C751791674140.key +0 -0
  70. data/test/gnupg_test_home/pubring.gpg +0 -0
  71. data/test/gnupg_test_home/receiver_pubring.gpg +0 -0
  72. data/test/gnupg_test_home/receiver_secring.gpg +0 -0
  73. data/test/gnupg_test_home/regen_keys.sh +69 -18
  74. data/test/gnupg_test_home/secring.gpg +0 -0
  75. data/test/gnupg_test_home/sup-test-2@foo.bar.asc +20 -22
  76. data/test/integration/test_mbox.rb +1 -1
  77. data/test/integration/test_sup-add.rb +83 -0
  78. data/test/test_crypto.rb +46 -0
  79. data/test/test_header_parsing.rb +9 -1
  80. data/test/test_helper.rb +7 -4
  81. data/test/test_message.rb +188 -22
  82. data/test/test_messages_dir.rb +13 -15
  83. data/test/unit/test_horizontal_selector.rb +4 -4
  84. data/test/unit/test_locale_fiddler.rb +1 -1
  85. data/test/unit/util/test_query.rb +10 -4
  86. data/test/unit/util/test_string.rb +9 -3
  87. data/test/unit/util/test_uri.rb +2 -2
  88. metadata +93 -51
  89. data/.travis.yml +0 -13
  90. data/bin/sup-psych-ify-config-files +0 -21
  91. data/test/gnupg_test_home/key1.gen +0 -15
  92. data/test/gnupg_test_home/key2.gen +0 -15
  93. data/test/gnupg_test_home/key_ecc.gen +0 -13
  94. data/test/gnupg_test_home/private-keys-v1.d/719C7455A7169C6EE8819C6E91002E4F9DD00A65.key +0 -1
  95. data/test/gnupg_test_home/private-keys-v1.d/8A130806A754AA29D59487D76BD355040D9F26C0.key +0 -0
  96. data/test/gnupg_test_home/private-keys-v1.d/B7AA46B22BD8A6AD1B4F266C19A3B124A32DDD71.key +0 -0
  97. data/test/gnupg_test_home/private-keys-v1.d/FA64ACD7CC871371BDF57285A6CDF0E618827783.key +0 -0
  98. data/test/integration/test_label_service.rb +0 -18
  99. data/test/test_yaml_migration.rb +0 -85
data/lib/sup/util.rb CHANGED
@@ -4,13 +4,15 @@ require 'thread'
4
4
  require 'lockfile'
5
5
  require 'mime/types'
6
6
  require 'pathname'
7
+ require 'rmail'
7
8
  require 'set'
8
9
  require 'enumerator'
9
10
  require 'benchmark'
10
11
  require 'unicode'
12
+ require 'unicode/display_width'
11
13
  require 'fileutils'
12
14
 
13
- class Lockfile
15
+ module ExtendedLockfile
14
16
  def gen_lock_id
15
17
  Hash[
16
18
  'host' => "#{ Socket.gethostname }",
@@ -36,6 +38,7 @@ class Lockfile
36
38
 
37
39
  def touch_yourself; touch path end
38
40
  end
41
+ Lockfile.send :prepend, ExtendedLockfile
39
42
 
40
43
  class File
41
44
  # platform safe file.link which attempts a copy if hard-linking fails
@@ -105,7 +108,7 @@ module RMail
105
108
  end
106
109
  end
107
110
 
108
- class Serialize
111
+ module CustomizedSerialize
109
112
  ## Don't add MIME-Version headers on serialization. Sup sometimes want's to serialize
110
113
  ## message parts where these headers are not needed and messing with the message on
111
114
  ## serialization breaks gpg signatures. The commented section shows the original RMail
@@ -117,48 +120,7 @@ module RMail
117
120
  # end
118
121
  end
119
122
  end
120
-
121
- class Header
122
-
123
- # Convert to ASCII before trying to match with regexp
124
- class Field
125
-
126
- class << self
127
- def parse(field)
128
- field = field.dup.to_s
129
- field = field.fix_encoding!.ascii
130
- if field =~ EXTRACT_FIELD_NAME_RE
131
- [ $1, $'.chomp ]
132
- else
133
- [ "", Field.value_strip(field) ]
134
- end
135
- end
136
- end
137
- end
138
-
139
- ## Be more cautious about invalid content-type headers
140
- ## the original RMail code calls
141
- ## value.strip.split(/\s*;\s*/)[0].downcase
142
- ## without checking if split returned an element
143
-
144
- # This returns the full content type of this message converted to
145
- # lower case.
146
- #
147
- # If there is no content type header, returns the passed block is
148
- # executed and its return value is returned. If no block is passed,
149
- # the value of the +default+ argument is returned.
150
- def content_type(default = nil)
151
- if value = self['content-type'] and ct = value.strip.split(/\s*;\s*/)[0]
152
- return ct.downcase
153
- else
154
- if block_given?
155
- yield
156
- else
157
- default
158
- end
159
- end
160
- end
161
- end
123
+ Serialize.send :prepend, CustomizedSerialize
162
124
  end
163
125
 
164
126
  class Module
@@ -239,21 +201,14 @@ end
239
201
 
240
202
  class String
241
203
  def display_length
242
- @display_length ||= Unicode.width(self.fix_encoding!, false)
243
-
244
- # if Unicode.width fails and returns -1, fall back to
245
- # regular String#length, see pull-request: #256.
246
- if @display_length < 0
247
- @display_length = self.length
248
- end
249
-
250
- @display_length
204
+ @display_length ||= Unicode::DisplayWidth.of(self)
251
205
  end
252
206
 
253
207
  def slice_by_display_length len
254
208
  each_char.each_with_object "" do |c, buffer|
255
- len -= c.display_length
256
- buffer << c if len >= 0
209
+ len -= Unicode::DisplayWidth.of(c)
210
+ return buffer if len < 0
211
+ buffer << c
257
212
  end
258
213
  end
259
214
 
@@ -341,13 +296,14 @@ class String
341
296
  ret = []
342
297
  s = self
343
298
  while s.display_length > len
344
- cut = s.slice_by_display_length(len).rindex(/\s/)
299
+ slice = s.slice_by_display_length(len)
300
+ cut = slice.rindex(/\s/)
345
301
  if cut
346
302
  ret << s[0 ... cut]
347
303
  s = s[(cut + 1) .. -1]
348
304
  else
349
- ret << s.slice_by_display_length(len)
350
- s = s[ret.last.length .. -1]
305
+ ret << slice
306
+ s = s[slice.length .. -1]
351
307
  end
352
308
  end
353
309
  ret << s
@@ -397,8 +353,23 @@ class String
397
353
  self
398
354
  end
399
355
 
356
+ ## Decodes UTF-7 and returns the resulting decoded string as UTF-8.
357
+ ##
358
+ ## Ruby doesn't supply a UTF-7 encoding natively. There is
359
+ ## Net::IMAP::decode_utf7 which only handles the IMAP "modified UTF-7"
360
+ ## encoding. This implementation is inspired by that one but handles
361
+ ## standard UTF-7 shift characters and not the IMAP-specific variation.
362
+ def decode_utf7
363
+ gsub(/\+([^-]+)?-/) {
364
+ if $1
365
+ ($1 + "===").unpack("m")[0].encode(Encoding::UTF_8, Encoding::UTF_16BE)
366
+ else
367
+ "+"
368
+ end
369
+ }
370
+ end
371
+
400
372
  def normalize_whitespace
401
- fix_encoding!
402
373
  gsub(/\t/, " ").gsub(/\r/, "")
403
374
  end
404
375
 
@@ -410,7 +381,7 @@ class String
410
381
 
411
382
  unless method_defined? :each
412
383
  def each &b
413
- each_line &b
384
+ each_line(&b)
414
385
  end
415
386
  end
416
387
 
@@ -460,18 +431,18 @@ class Numeric
460
431
 
461
432
  def to_human_size
462
433
  if self < 1024
463
- to_s + "b"
434
+ to_s + "B"
464
435
  elsif self < (1024 * 1024)
465
- (self / 1024).to_s + "k"
436
+ (self / 1024).to_s + "KiB"
466
437
  elsif self < (1024 * 1024 * 1024)
467
- (self / 1024 / 1024).to_s + "m"
438
+ (self / 1024 / 1024).to_s + "MiB"
468
439
  else
469
- (self / 1024 / 1024 / 1024).to_s + "g"
440
+ (self / 1024 / 1024 / 1024).to_s + "GiB"
470
441
  end
471
442
  end
472
443
  end
473
444
 
474
- class Fixnum
445
+ class Integer
475
446
  def to_character
476
447
  if self < 128 && self >= 0
477
448
  chr
@@ -512,7 +483,9 @@ module Enumerable
512
483
  ret
513
484
  end
514
485
 
515
- def sum; inject(0) { |x, y| x + y }; end
486
+ if not method_defined? :sum
487
+ def sum; inject(0) { |x, y| x + y }; end
488
+ end
516
489
 
517
490
  def map_to_hash
518
491
  ret = {}
@@ -568,7 +541,9 @@ class Array
568
541
  inject([]) { |a, e| a + e }
569
542
  end
570
543
 
571
- def to_h; Hash[*flatten]; end
544
+ if not method_defined? :to_h
545
+ def to_h; Hash[*flatten_one_level]; end
546
+ end
572
547
  def rest; self[1..-1]; end
573
548
 
574
549
  def to_boolean_h; Hash[*map { |x| [x, true] }.flatten]; end
data/lib/sup/version.rb CHANGED
@@ -1,3 +1,12 @@
1
+ def git_suffix
2
+ revision = `GIT_DIR=#{__dir__}/../../.git git rev-parse HEAD 2>/dev/null`
3
+ if revision.empty?
4
+ "-git-unknown"
5
+ else
6
+ "-git-#{revision[0..7]}"
7
+ end
8
+ end
9
+
1
10
  module Redwood
2
- VERSION = "0.22.1"
11
+ VERSION = "1.1"
3
12
  end
data/lib/sup.rb CHANGED
@@ -26,7 +26,7 @@ class Module
26
26
  props = props.map { |p| p.to_s }
27
27
 
28
28
  path = name.gsub(/::/, "/")
29
- yaml_tag "!#{Redwood::YAML_DOMAIN},#{Redwood::YAML_DATE}/#{path}"
29
+ yaml_tag "tag:#{Redwood::YAML_DOMAIN},#{Redwood::YAML_DATE}/#{path}"
30
30
 
31
31
  define_method :init_with do |coder|
32
32
  initialize(*coder.map.values_at(*props))
@@ -38,9 +38,6 @@ class Module
38
38
  hash
39
39
  end
40
40
  end
41
-
42
- # Legacy
43
- Psych.load_tags["!#{Redwood::LEGACY_YAML_DOMAIN},#{Redwood::YAML_DATE}/#{path}"] = self
44
41
  end
45
42
  end
46
43
 
@@ -139,10 +136,17 @@ module Redwood
139
136
 
140
137
  def load_yaml_obj fn, compress=false
141
138
  o = if File.exist? fn
142
- if compress
143
- Zlib::GzipReader.open(fn) { |f| YAML::load f }
139
+ raw_contents = if compress
140
+ Zlib::GzipReader.open(fn) { |f| f.read }
141
+ else
142
+ File::open(fn) { |f| f.read }
143
+ end
144
+ ## fix up malformed tag URIs created by earlier versions of sup
145
+ raw_contents.gsub!(/!supmua.org,2006-10-01\/(\S*)$/) { |m| "!<tag:supmua.org,2006-10-01/#{$1}>" }
146
+ if YAML.respond_to?(:unsafe_load) # Ruby 3.1+
147
+ YAML::unsafe_load raw_contents
144
148
  else
145
- YAML::load_file fn
149
+ YAML::load raw_contents
146
150
  end
147
151
  end
148
152
  if o.is_a?(Array)
@@ -331,6 +335,7 @@ EOM
331
335
  :poll_interval => 300,
332
336
  :wrap_width => 0,
333
337
  :slip_rows => 0,
338
+ :indent_spaces => 2,
334
339
  :col_jump => 2,
335
340
  :stem_language => "english",
336
341
  :sync_back_to_maildir => false,
@@ -348,7 +353,7 @@ EOM
348
353
  name ||= ENV["USER"]
349
354
  email = ENV["USER"] + "@" +
350
355
  begin
351
- Socket.gethostbyname(Socket.gethostname).first
356
+ Addrinfo.getaddrinfo(Socket.gethostname, 'smtp').first.getnameinfo.first
352
357
  rescue SocketError
353
358
  Socket.gethostname
354
359
  end
data/man/sup-add.1 CHANGED
@@ -1,10 +1,13 @@
1
- .TH "SUP\-ADD" "1" "April 9, 2012" "Sup User Manual" ""
1
+ .\" Automatically generated by Pandoc 2.9.2.1
2
+ .\"
3
+ .TH "SUP-ADD" "1" "April 9, 2012" "Sup User Manual" ""
4
+ .hy
2
5
  .SH NAME
3
6
  .PP
4
- sup\-add \- add a source to the Sup source list
7
+ sup-add - add a source to the Sup source list
5
8
  .SH SYNOPSIS
6
9
  .PP
7
- sup\-add [\f[I]options\f[]] [\f[I]source uri...\f[]]
10
+ sup-add [\f[I]options\f[R]] [\f[I]source uri\&...\f[R]]
8
11
  .SH DESCRIPTION
9
12
  .PP
10
13
  Add one ore more sources to the Sup source list
@@ -13,67 +16,51 @@ For mbox files on local disk, use the form:
13
16
  .IP
14
17
  .nf
15
18
  \f[C]
16
- mbox:<path\ to\ mbox\ file>,\ or
19
+ mbox:<path to mbox file>, or
17
20
 
18
- mbox://<path\ to\ mbox\ file>
19
- \f[]
21
+ mbox://<path to mbox file>
22
+ \f[R]
20
23
  .fi
21
24
  .PP
22
25
  For Maildir folders, use the form:
23
26
  .IP
24
27
  .nf
25
28
  \f[C]
26
- maildir:<path\ to\ Maildir\ directory>;\ or
29
+ maildir:<path to Maildir directory>; or
27
30
 
28
- maildir://<path\ to\ Maildir\ directory>
29
- \f[]
31
+ maildir://<path to Maildir directory>
32
+ \f[R]
30
33
  .fi
31
34
  .SH OPTIONS
32
35
  .TP
33
- .B \-a, \-\-archive
36
+ -a, --archive
34
37
  Automatically archive all new messages from thesesources.
35
- .RS
36
- .RE
37
38
  .TP
38
- .B \-u, \-\-unusual
39
+ -u, --unusual
39
40
  Do not automatically poll these sources for new messages.
40
- .RS
41
- .RE
42
41
  .TP
43
- .B \-l \f[I]STRING\f[], \-\-labels \f[I]STRING\f[]
44
- A comma\-separated set of labels to apply to all messages from this
42
+ -l \f[I]STRING\f[R], --labels \f[I]STRING\f[R]
43
+ A comma-separated set of labels to apply to all messages from this
45
44
  source
46
- .RS
47
- .RE
48
45
  .TP
49
- .B \-f, \-\-force\-new
46
+ -f, --force-new
50
47
  Create a new account for this source, even if one already exists
51
- .RS
52
- .RE
53
48
  .TP
54
- .B \-o \f[I]STRING\f[], \-\-force\-account \f[I]STRING\f[]
55
- Reuse previously defined account user\@hostname
56
- .RS
57
- .RE
49
+ -o \f[I]STRING\f[R], --force-account \f[I]STRING\f[R]
50
+ Reuse previously defined account user\[at]hostname
58
51
  .TP
59
- .B \-v, \-\-version
52
+ -v, --version
60
53
  Print version and exit
61
- .RS
62
- .RE
63
54
  .TP
64
- .B \-h, \-\-help
55
+ -h, --help
65
56
  Show help message
66
- .RS
67
- .RE
68
57
  .SH FILES
69
58
  .TP
70
- .B $HOME/.sup/sources.yaml
59
+ $HOME/.sup/sources.yaml
71
60
  Configuration file for Sup mail sources
72
- .RS
73
- .RE
74
61
  .SH SEE ALSO
75
62
  .PP
76
- sup(1), sup\-config(1)
63
+ sup(1), sup-config(1)
77
64
  .SH REPORTING BUGS
78
65
  .PP
79
66
  You are welcome to submit bug reports to the Sup issue tracker, located
@@ -82,39 +69,31 @@ at
82
69
  <https://github.com/sup-heliotrope/sup/issues>
83
70
  .SH CONTACT INFORMATION
84
71
  .TP
85
- .B The Sup web page:
86
- <http://supmua.org/>
87
- .RS
88
- .RE
72
+ The Sup web page:
73
+ <https://sup-heliotrope.github.io/>
89
74
  .TP
90
- .B Code repository:
75
+ Code repository:
91
76
  <https://github.com/sup-heliotrope/sup/>
92
- .RS
93
- .RE
94
77
  .TP
95
- .B Sup Wiki:
78
+ Sup Wiki:
96
79
  <https://github.com/sup-heliotrope/sup/wiki/>
97
- .RS
98
- .RE
99
80
  .TP
100
- .B Sup IRC channel:
101
- #sup \@ freenode.net
102
- .RS
103
- .RE
81
+ Sup IRC channel:
82
+ #sup \[at] freenode.net
104
83
  .TP
105
- .B Mailing list:
106
- supmua\@googlegroups.com
84
+ Mailing list:
85
+ supmua\[at]googlegroups.com
107
86
  .RS
108
87
  .PP
109
- supmua+subscribe\@googlegroups.com
88
+ supmua+subscribe\[at]googlegroups.com
110
89
  .PP
111
90
  Archives: <https://groups.google.com/d/forum/supmua/>
112
91
  .RE
113
92
  .SH COPYRIGHT
114
93
  .PP
115
- Copyright © 2006\-2009 William Morgan <mworgan-sup@masanjin.net>
94
+ Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
116
95
  .PP
117
- Copyright \@ 2013\-2014 Sup developers
96
+ Copyright \[at] 2013-2014 Sup developers
118
97
  .PP
119
98
  Permission is granted to copy and distribute this manual under the terms
120
99
  of the GNU General Public License; either version 2 or (at your option)
data/man/sup-config.1 CHANGED
@@ -1,39 +1,34 @@
1
- .TH "SUP\-CONFIG" "1" "April 9, 2012" "Sup User Manual" ""
1
+ .\" Automatically generated by Pandoc 2.9.2.1
2
+ .\"
3
+ .TH "SUP-CONFIG" "1" "April 9, 2012" "Sup User Manual" ""
4
+ .hy
2
5
  .SH NAME
3
6
  .PP
4
- sup\-config \- interactive configuration tool for Sup
7
+ sup-config - interactive configuration tool for Sup
5
8
  .SH SYNOPSIS
6
9
  .PP
7
- sup\-config [\f[I]options\f[]]
10
+ sup-config [\f[I]options\f[R]]
8
11
  .SH DESCRIPTION
9
12
  .PP
10
13
  Interactive configuration tool for Sup.
11
- Won\[aq]t destroy existing configuration.
14
+ Won\[cq]t destroy existing configuration.
12
15
  .SH OPTIONS
13
16
  .TP
14
- .B \-v, \-\-version
17
+ -v, --version
15
18
  Print versian and exit
16
- .RS
17
- .RE
18
19
  .TP
19
- .B \-h, \-\-help
20
+ -h, --help
20
21
  Show help message
21
- .RS
22
- .RE
23
22
  .SH FILES
24
23
  .TP
25
- .B $HOME/.sup/config.yaml
24
+ $HOME/.sup/config.yaml
26
25
  Configuration file for Sup
27
- .RS
28
- .RE
29
26
  .TP
30
- .B $HOME/.sup/sources.yaml
27
+ $HOME/.sup/sources.yaml
31
28
  Configuration file for Sup mail sources
32
- .RS
33
- .RE
34
29
  .SH SEE ALSO
35
30
  .PP
36
- sup(1), sup\-add(1)
31
+ sup(1), sup-add(1)
37
32
  .SH REPORTING BUGS
38
33
  .PP
39
34
  You are welcome to submit bug reports to the Sup issue tracker, located
@@ -42,39 +37,31 @@ at
42
37
  <https://github.com/sup-heliotrope/sup/issues>
43
38
  .SH CONTACT INFORMATION
44
39
  .TP
45
- .B The Sup web page:
46
- <http://supmua.org/>
47
- .RS
48
- .RE
40
+ The Sup web page:
41
+ <https://sup-heliotrope.github.io/>
49
42
  .TP
50
- .B Code repository:
43
+ Code repository:
51
44
  <https://github.com/sup-heliotrope/sup/>
52
- .RS
53
- .RE
54
45
  .TP
55
- .B Sup Wiki:
46
+ Sup Wiki:
56
47
  <https://github.com/sup-heliotrope/sup/wiki/>
57
- .RS
58
- .RE
59
48
  .TP
60
- .B Sup IRC channel:
61
- #sup \@ freenode.net
62
- .RS
63
- .RE
49
+ Sup IRC channel:
50
+ #sup \[at] freenode.net
64
51
  .TP
65
- .B Mailing list:
66
- supmua\@googlegroups.com
52
+ Mailing list:
53
+ supmua\[at]googlegroups.com
67
54
  .RS
68
55
  .PP
69
- supmua+subscribe\@googlegroups.com
56
+ supmua+subscribe\[at]googlegroups.com
70
57
  .PP
71
58
  Archives: <https://groups.google.com/d/forum/supmua/>
72
59
  .RE
73
60
  .SH COPYRIGHT
74
61
  .PP
75
- Copyright © 2006\-2009 William Morgan <mworgan-sup@masanjin.net>
62
+ Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
76
63
  .PP
77
- Copyright \@ 2013\-2014 Sup developers
64
+ Copyright \[at] 2013-2014 Sup developers
78
65
  .PP
79
66
  Permission is granted to copy and distribute this manual under the terms
80
67
  of the GNU General Public License; either version 2 or (at your option)
data/man/sup-dump.1 CHANGED
@@ -1,49 +1,47 @@
1
- .TH "SUP\-DUMP" "1" "April 9, 2012" "Sup User Manual" ""
1
+ .\" Automatically generated by Pandoc 2.9.2.1
2
+ .\"
3
+ .TH "SUP-DUMP" "1" "April 9, 2012" "Sup User Manual" ""
4
+ .hy
2
5
  .SH NAME
3
6
  .PP
4
- sup\-dump \- dumps message state from Sup index
7
+ sup-dump - dumps message state from Sup index
5
8
  .SH SYNOPSIS
6
9
  .PP
7
- sup\-dump [\f[I]options\f[]]
10
+ sup-dump [\f[I]options\f[R]]
8
11
  .SH DESCRIPTION
9
12
  .PP
10
13
  Dumps all message state from the Sup index to standard out.
11
- You can later use sup\-sync \-\-restored \-\-restore to recover the
12
- index.
14
+ You can later use sup-sync --restored --restore to recover the index.
13
15
  .PP
14
16
  This tool is primarily useful in the event that a Sup upgrade breaks
15
17
  index format compatibility.
16
18
  .SH OPTIONS
17
19
  .TP
18
- .B \-v, \-\-version
20
+ -v, --version
19
21
  Print version and exit
20
- .RS
21
- .RE
22
22
  .TP
23
- .B \-h, \-\-help
23
+ -h, --help
24
24
  Show help message
25
- .RS
26
- .RE
27
25
  .SH EXAMPLES
28
26
  .PP
29
27
  Dump message state and store in file
30
28
  .IP
31
29
  .nf
32
30
  \f[C]
33
- sup\-dump\ >\ filename
34
- \f[]
31
+ sup-dump > filename
32
+ \f[R]
35
33
  .fi
36
34
  .PP
37
35
  Dump message state and compress output to store in file
38
36
  .IP
39
37
  .nf
40
38
  \f[C]
41
- sup\-dump\ |\ bzip2\ >\ filename.bz2
42
- \f[]
39
+ sup-dump | bzip2 > filename.bz2
40
+ \f[R]
43
41
  .fi
44
42
  .SH SEE ALSO
45
43
  .PP
46
- sup(1), sup\-sync(1), sup\-import\-dump(1)
44
+ sup(1), sup-sync(1), sup-import-dump(1)
47
45
  .SH REPORTING BUGS
48
46
  .PP
49
47
  You are welcome to submit bug reports to the Sup issue tracker, located
@@ -52,39 +50,31 @@ at
52
50
  <https://github.com/sup-heliotrope/sup/issues>
53
51
  .SH CONTACT INFORMATION
54
52
  .TP
55
- .B The Sup web page:
56
- <http://supmua.org/>
57
- .RS
58
- .RE
53
+ The Sup web page:
54
+ <https://sup-heliotrope.github.io/>
59
55
  .TP
60
- .B Code repository:
56
+ Code repository:
61
57
  <https://github.com/sup-heliotrope/sup/>
62
- .RS
63
- .RE
64
58
  .TP
65
- .B Sup Wiki:
59
+ Sup Wiki:
66
60
  <https://github.com/sup-heliotrope/sup/wiki/>
67
- .RS
68
- .RE
69
61
  .TP
70
- .B Sup IRC channel:
71
- #sup \@ freenode.net
72
- .RS
73
- .RE
62
+ Sup IRC channel:
63
+ #sup \[at] freenode.net
74
64
  .TP
75
- .B Mailing list:
76
- supmua\@googlegroups.com
65
+ Mailing list:
66
+ supmua\[at]googlegroups.com
77
67
  .RS
78
68
  .PP
79
- supmua+subscribe\@googlegroups.com
69
+ supmua+subscribe\[at]googlegroups.com
80
70
  .PP
81
71
  Archives: <https://groups.google.com/d/forum/supmua/>
82
72
  .RE
83
73
  .SH COPYRIGHT
84
74
  .PP
85
- Copyright © 2006\-2009 William Morgan <mworgan-sup@masanjin.net>
75
+ Copyright \[co] 2006-2009 William Morgan <mworgan-sup@masanjin.net>
86
76
  .PP
87
- Copyright \@ 2013\-2014 Sup developers
77
+ Copyright \[at] 2013-2014 Sup developers
88
78
  .PP
89
79
  Permission is granted to copy and distribute this manual under the terms
90
80
  of the GNU General Public License; either version 2 or (at your option)