sup 0.22.1 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
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)