sup 1.0 → 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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/checks.yml +70 -0
  3. data/.rubocop.yml +5 -0
  4. data/CONTRIBUTORS +3 -2
  5. data/Gemfile +5 -1
  6. data/History.txt +20 -0
  7. data/Manifest.txt +149 -0
  8. data/README.md +9 -3
  9. data/Rakefile +40 -1
  10. data/bin/sup-add +4 -8
  11. data/ext/mkrf_conf_xapian.rb +10 -4
  12. data/lib/sup/colormap.rb +1 -1
  13. data/lib/sup/hook.rb +1 -1
  14. data/lib/sup/index.rb +2 -2
  15. data/lib/sup/keymap.rb +1 -1
  16. data/lib/sup/maildir.rb +4 -4
  17. data/lib/sup/mbox.rb +4 -4
  18. data/lib/sup/message.rb +6 -5
  19. data/lib/sup/message_chunks.rb +27 -19
  20. data/lib/sup/modes/completion_mode.rb +0 -1
  21. data/lib/sup/modes/file_browser_mode.rb +2 -2
  22. data/lib/sup/modes/label_list_mode.rb +1 -1
  23. data/lib/sup/modes/search_list_mode.rb +2 -2
  24. data/lib/sup/modes/thread_view_mode.rb +1 -2
  25. data/lib/sup/rfc2047.rb +21 -6
  26. data/lib/sup/source.rb +8 -2
  27. data/lib/sup/textfield.rb +0 -1
  28. data/lib/sup/thread.rb +0 -1
  29. data/lib/sup/util.rb +28 -48
  30. data/lib/sup/version.rb +1 -1
  31. data/lib/sup.rb +12 -8
  32. data/man/sup-add.1 +15 -15
  33. data/man/sup-config.1 +11 -11
  34. data/man/sup-dump.1 +9 -9
  35. data/man/sup-import-dump.1 +15 -15
  36. data/man/sup-psych-ify-config-files.1 +9 -9
  37. data/man/sup-recover-sources.1 +12 -12
  38. data/man/sup-sync-back-maildir.1 +14 -14
  39. data/man/sup-sync.1 +20 -20
  40. data/man/sup-tweak-labels.1 +16 -16
  41. data/man/sup.1 +21 -21
  42. data/sup.gemspec +6 -4
  43. data/test/dummy_source.rb +21 -15
  44. data/test/fixtures/embedded-message.eml +34 -0
  45. data/test/fixtures/non-ascii-header-in-nested-message.eml +36 -0
  46. data/test/fixtures/non-ascii-header.eml +8 -0
  47. data/test/fixtures/rfc2047-header-encoding.eml +15 -0
  48. data/test/fixtures/text-attachments-with-charset.eml +15 -1
  49. data/test/fixtures/utf8-header.eml +17 -0
  50. data/test/integration/test_mbox.rb +1 -1
  51. data/test/integration/test_sup-add.rb +83 -0
  52. data/test/test_crypto.rb +44 -0
  53. data/test/test_header_parsing.rb +9 -1
  54. data/test/test_helper.rb +7 -4
  55. data/test/test_message.rb +124 -32
  56. data/test/test_messages_dir.rb +13 -15
  57. data/test/unit/test_horizontal_selector.rb +4 -4
  58. data/test/unit/test_locale_fiddler.rb +1 -1
  59. data/test/unit/util/test_query.rb +1 -1
  60. data/test/unit/util/test_string.rb +3 -3
  61. data/test/unit/util/test_uri.rb +2 -2
  62. metadata +46 -18
  63. data/.travis.yml +0 -18
  64. data/bin/sup-psych-ify-config-files +0 -21
  65. data/test/integration/test_label_service.rb +0 -18
  66. data/test/test_yaml_migration.rb +0 -85
@@ -43,7 +43,7 @@ protected
43
43
  end
44
44
 
45
45
  def view
46
- name, f = @files[curpos - RESERVED_ROWS]
46
+ _name, f = @files[curpos - RESERVED_ROWS]
47
47
  return unless f && f.file?
48
48
 
49
49
  begin
@@ -54,7 +54,7 @@ protected
54
54
  end
55
55
 
56
56
  def select_file_or_follow_directory
57
- name, f = @files[curpos - RESERVED_ROWS]
57
+ _name, f = @files[curpos - RESERVED_ROWS]
58
58
  return unless f
59
59
 
60
60
  if f.directory? && f.to_s != "."
@@ -129,7 +129,7 @@ protected
129
129
  end
130
130
 
131
131
  def select_label
132
- label, num_unread = @labels[curpos]
132
+ label, _num_unread = @labels[curpos]
133
133
  return unless label
134
134
  LabelSearchResultsMode.spawn_nicely label
135
135
  end
@@ -131,13 +131,13 @@ protected
131
131
  end
132
132
 
133
133
  def select_search
134
- name, num_unread = @searches[curpos]
134
+ name, _num_unread = @searches[curpos]
135
135
  return unless name
136
136
  SearchResultsMode.spawn_from_query SearchManager.search_string_for(name)
137
137
  end
138
138
 
139
139
  def delete_selected_search
140
- name, num_unread = @searches[curpos]
140
+ name, _num_unread = @searches[curpos]
141
141
  return unless name
142
142
  reload if SearchManager.delete name
143
143
  end
@@ -241,7 +241,7 @@ EOS
241
241
 
242
242
  begin
243
243
  u = URI.parse($1)
244
- rescue URI::InvalidURIError => e
244
+ rescue URI::InvalidURIError
245
245
  BufferManager.flash("Invalid unsubscribe link")
246
246
  return
247
247
  end
@@ -868,7 +868,6 @@ private
868
868
  (0 ... text.length).each do |i|
869
869
  @chunk_lines[@text.length + i] = m
870
870
  @message_lines[@text.length + i] = m
871
- lw = text[i].flatten.select { |x| x.is_a? String }.map { |x| x.display_length }.sum
872
871
  end
873
872
 
874
873
  @text += text
data/lib/sup/rfc2047.rb CHANGED
@@ -17,7 +17,7 @@
17
17
  # This file is distributed under the same terms as Ruby.
18
18
 
19
19
  module Rfc2047
20
- WORD = %r{=\?([!\#$%&'*+-/0-9A-Z\\^\`a-z{|}~]+)\?([BbQq])\?([!->@-~]+)\?=} # :nodoc: 'stupid ruby-mode
20
+ WORD = %r{=\?([!\#$%&'*+-/0-9A-Z\\^\`a-z{|}~]+)\?([BbQq])\?([!->@-~ ]+)\?=} # :nodoc: 'stupid ruby-mode
21
21
  WORDSEQ = %r{(#{WORD.source})\s+(?=#{WORD.source})}
22
22
 
23
23
  def Rfc2047.is_encoded? s; s =~ WORD end
@@ -28,16 +28,17 @@ module Rfc2047
28
28
  # converted to the target encoding, it is left in its encoded form.
29
29
  def Rfc2047.decode_to(target, from)
30
30
  from = from.gsub(WORDSEQ, '\1')
31
- out = from.gsub(WORD) do
31
+ from.gsub(WORD) do
32
32
  |word|
33
33
  charset, encoding, text = $1, $2, $3
34
34
 
35
35
  # B64 or QP decode, as necessary:
36
36
  case encoding
37
37
  when 'b', 'B'
38
- #puts text
39
- text = text.unpack('m*')[0]
40
- #puts text.dump
38
+ ## Padding is optional in RFC 2047 words. Add some extra padding
39
+ ## before decoding the base64, otherwise on Ruby 2.0 the final byte
40
+ ## might be discarded.
41
+ text = (text + '===').unpack('m*')[0]
41
42
 
42
43
  when 'q', 'Q'
43
44
  # RFC 2047 has a variant of quoted printable where a ' ' character
@@ -50,7 +51,21 @@ module Rfc2047
50
51
  # WORD.
51
52
  end
52
53
 
53
- text.transcode(target, charset)
54
+ # Handle UTF-7 specially because Ruby doesn't actually support it as
55
+ # a normal character encoding.
56
+ if charset == 'UTF-7'
57
+ begin
58
+ next text.decode_utf7.encode(target)
59
+ rescue ArgumentError, EncodingError
60
+ next word
61
+ end
62
+ end
63
+
64
+ begin
65
+ text.force_encoding(charset).encode(target)
66
+ rescue ArgumentError, EncodingError
67
+ word
68
+ end
54
69
  end
55
70
  end
56
71
  end
data/lib/sup/source.rb CHANGED
@@ -102,7 +102,7 @@ class Source
102
102
  end
103
103
 
104
104
  def synchronize &block
105
- @poll_lock.synchronize &block
105
+ @poll_lock.synchronize(&block)
106
106
  end
107
107
 
108
108
  def try_lock
@@ -153,7 +153,7 @@ class Source
153
153
  next unless Rfc2047.is_encoded? v
154
154
  header[k] = begin
155
155
  Rfc2047.decode_to $encoding, v
156
- rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::IllegalSequence => e
156
+ rescue Errno::EINVAL, Iconv::InvalidEncoding, Iconv::IllegalSequence
157
157
  #debug "warning: error decoding RFC 2047 header (#{e.class.name}): #{e.message}"
158
158
  v
159
159
  end
@@ -169,6 +169,12 @@ protected
169
169
  def Source.expand_filesystem_uri uri
170
170
  uri.gsub "~", File.expand_path("~")
171
171
  end
172
+
173
+ def Source.encode_path_for_uri path
174
+ path.gsub(Regexp.new("[#{Regexp.quote(URI_ENCODE_CHARS)}]")) { |c|
175
+ c.each_byte.map { |x| sprintf("%%%02X", x) }.join
176
+ }
177
+ end
172
178
  end
173
179
 
174
180
  ## if you have a @labels instance variable, include this
data/lib/sup/textfield.rb CHANGED
@@ -119,7 +119,6 @@ class TextField
119
119
  Ncurses::Form::REQ_END_FIELD
120
120
  when Ncurses::KEY_UP, Ncurses::KEY_DOWN
121
121
  unless !@i || @history.empty?
122
- value = get_cursed_value
123
122
  #debug "history before #{@history.inspect}"
124
123
  @i = @i + (c.is_keycode?(Ncurses::KEY_UP) ? -1 : 1)
125
124
  @i = 0 if @i < 0
data/lib/sup/thread.rb CHANGED
@@ -407,7 +407,6 @@ class ThreadSet
407
407
  #puts "adding: #{message.id}, refs #{message.refs.inspect}"
408
408
 
409
409
  el.message = message
410
- oldroot = el.root
411
410
 
412
411
  ## link via references:
413
412
  (message.refs + [el.id]).inject(nil) do |prev, ref_id|
data/lib/sup/util.rb CHANGED
@@ -4,6 +4,7 @@ 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'
@@ -11,7 +12,7 @@ require 'unicode'
11
12
  require 'unicode/display_width'
12
13
  require 'fileutils'
13
14
 
14
- class Lockfile
15
+ module ExtendedLockfile
15
16
  def gen_lock_id
16
17
  Hash[
17
18
  'host' => "#{ Socket.gethostname }",
@@ -37,6 +38,7 @@ class Lockfile
37
38
 
38
39
  def touch_yourself; touch path end
39
40
  end
41
+ Lockfile.send :prepend, ExtendedLockfile
40
42
 
41
43
  class File
42
44
  # platform safe file.link which attempts a copy if hard-linking fails
@@ -106,7 +108,7 @@ module RMail
106
108
  end
107
109
  end
108
110
 
109
- class Serialize
111
+ module CustomizedSerialize
110
112
  ## Don't add MIME-Version headers on serialization. Sup sometimes want's to serialize
111
113
  ## message parts where these headers are not needed and messing with the message on
112
114
  ## serialization breaks gpg signatures. The commented section shows the original RMail
@@ -118,48 +120,7 @@ module RMail
118
120
  # end
119
121
  end
120
122
  end
121
-
122
- class Header
123
-
124
- # Convert to ASCII before trying to match with regexp
125
- class Field
126
-
127
- class << self
128
- def parse(field)
129
- field = field.dup.to_s
130
- field = field.fix_encoding!.ascii
131
- if field =~ EXTRACT_FIELD_NAME_RE
132
- [ $1, $'.chomp ]
133
- else
134
- [ "", Field.value_strip(field) ]
135
- end
136
- end
137
- end
138
- end
139
-
140
- ## Be more cautious about invalid content-type headers
141
- ## the original RMail code calls
142
- ## value.strip.split(/\s*;\s*/)[0].downcase
143
- ## without checking if split returned an element
144
-
145
- # This returns the full content type of this message converted to
146
- # lower case.
147
- #
148
- # If there is no content type header, returns the passed block is
149
- # executed and its return value is returned. If no block is passed,
150
- # the value of the +default+ argument is returned.
151
- def content_type(default = nil)
152
- if value = self['content-type'] and ct = value.strip.split(/\s*;\s*/)[0]
153
- return ct.downcase
154
- else
155
- if block_given?
156
- yield
157
- else
158
- default
159
- end
160
- end
161
- end
162
- end
123
+ Serialize.send :prepend, CustomizedSerialize
163
124
  end
164
125
 
165
126
  class Module
@@ -392,8 +353,23 @@ class String
392
353
  self
393
354
  end
394
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
+
395
372
  def normalize_whitespace
396
- fix_encoding!
397
373
  gsub(/\t/, " ").gsub(/\r/, "")
398
374
  end
399
375
 
@@ -405,7 +381,7 @@ class String
405
381
 
406
382
  unless method_defined? :each
407
383
  def each &b
408
- each_line &b
384
+ each_line(&b)
409
385
  end
410
386
  end
411
387
 
@@ -507,7 +483,9 @@ module Enumerable
507
483
  ret
508
484
  end
509
485
 
510
- 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
511
489
 
512
490
  def map_to_hash
513
491
  ret = {}
@@ -563,7 +541,9 @@ class Array
563
541
  inject([]) { |a, e| a + e }
564
542
  end
565
543
 
566
- def to_h; Hash[*flatten]; end
544
+ if not method_defined? :to_h
545
+ def to_h; Hash[*flatten_one_level]; end
546
+ end
567
547
  def rest; self[1..-1]; end
568
548
 
569
549
  def to_boolean_h; Hash[*map { |x| [x, true] }.flatten]; end
data/lib/sup/version.rb CHANGED
@@ -8,5 +8,5 @@ def git_suffix
8
8
  end
9
9
 
10
10
  module Redwood
11
- VERSION = "1.0"
11
+ VERSION = "1.1"
12
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)
@@ -349,7 +353,7 @@ EOM
349
353
  name ||= ENV["USER"]
350
354
  email = ENV["USER"] + "@" +
351
355
  begin
352
- Socket.gethostbyname(Socket.gethostname).first
356
+ Addrinfo.getaddrinfo(Socket.gethostname, 'smtp').first.getnameinfo.first
353
357
  rescue SocketError
354
358
  Socket.gethostname
355
359
  end
data/man/sup-add.1 CHANGED
@@ -1,4 +1,4 @@
1
- .\" Automatically generated by Pandoc 2.7.3
1
+ .\" Automatically generated by Pandoc 2.9.2.1
2
2
  .\"
3
3
  .TH "SUP-ADD" "1" "April 9, 2012" "Sup User Manual" ""
4
4
  .hy
@@ -33,30 +33,30 @@ maildir://<path to Maildir directory>
33
33
  .fi
34
34
  .SH OPTIONS
35
35
  .TP
36
- .B -a, --archive
36
+ -a, --archive
37
37
  Automatically archive all new messages from thesesources.
38
38
  .TP
39
- .B -u, --unusual
39
+ -u, --unusual
40
40
  Do not automatically poll these sources for new messages.
41
41
  .TP
42
- .B -l \f[I]STRING\f[R], --labels \f[I]STRING\f[R]
42
+ -l \f[I]STRING\f[R], --labels \f[I]STRING\f[R]
43
43
  A comma-separated set of labels to apply to all messages from this
44
44
  source
45
45
  .TP
46
- .B -f, --force-new
46
+ -f, --force-new
47
47
  Create a new account for this source, even if one already exists
48
48
  .TP
49
- .B -o \f[I]STRING\f[R], --force-account \f[I]STRING\f[R]
49
+ -o \f[I]STRING\f[R], --force-account \f[I]STRING\f[R]
50
50
  Reuse previously defined account user\[at]hostname
51
51
  .TP
52
- .B -v, --version
52
+ -v, --version
53
53
  Print version and exit
54
54
  .TP
55
- .B -h, --help
55
+ -h, --help
56
56
  Show help message
57
57
  .SH FILES
58
58
  .TP
59
- .B $HOME/.sup/sources.yaml
59
+ $HOME/.sup/sources.yaml
60
60
  Configuration file for Sup mail sources
61
61
  .SH SEE ALSO
62
62
  .PP
@@ -69,19 +69,19 @@ at
69
69
  <https://github.com/sup-heliotrope/sup/issues>
70
70
  .SH CONTACT INFORMATION
71
71
  .TP
72
- .B The Sup web page:
73
- <http://supmua.org/>
72
+ The Sup web page:
73
+ <https://sup-heliotrope.github.io/>
74
74
  .TP
75
- .B Code repository:
75
+ Code repository:
76
76
  <https://github.com/sup-heliotrope/sup/>
77
77
  .TP
78
- .B Sup Wiki:
78
+ Sup Wiki:
79
79
  <https://github.com/sup-heliotrope/sup/wiki/>
80
80
  .TP
81
- .B Sup IRC channel:
81
+ Sup IRC channel:
82
82
  #sup \[at] freenode.net
83
83
  .TP
84
- .B Mailing list:
84
+ Mailing list:
85
85
  supmua\[at]googlegroups.com
86
86
  .RS
87
87
  .PP
data/man/sup-config.1 CHANGED
@@ -1,4 +1,4 @@
1
- .\" Automatically generated by Pandoc 2.7.3
1
+ .\" Automatically generated by Pandoc 2.9.2.1
2
2
  .\"
3
3
  .TH "SUP-CONFIG" "1" "April 9, 2012" "Sup User Manual" ""
4
4
  .hy
@@ -14,17 +14,17 @@ Interactive configuration tool for Sup.
14
14
  Won\[cq]t destroy existing configuration.
15
15
  .SH OPTIONS
16
16
  .TP
17
- .B -v, --version
17
+ -v, --version
18
18
  Print versian and exit
19
19
  .TP
20
- .B -h, --help
20
+ -h, --help
21
21
  Show help message
22
22
  .SH FILES
23
23
  .TP
24
- .B $HOME/.sup/config.yaml
24
+ $HOME/.sup/config.yaml
25
25
  Configuration file for Sup
26
26
  .TP
27
- .B $HOME/.sup/sources.yaml
27
+ $HOME/.sup/sources.yaml
28
28
  Configuration file for Sup mail sources
29
29
  .SH SEE ALSO
30
30
  .PP
@@ -37,19 +37,19 @@ at
37
37
  <https://github.com/sup-heliotrope/sup/issues>
38
38
  .SH CONTACT INFORMATION
39
39
  .TP
40
- .B The Sup web page:
41
- <http://supmua.org/>
40
+ The Sup web page:
41
+ <https://sup-heliotrope.github.io/>
42
42
  .TP
43
- .B Code repository:
43
+ Code repository:
44
44
  <https://github.com/sup-heliotrope/sup/>
45
45
  .TP
46
- .B Sup Wiki:
46
+ Sup Wiki:
47
47
  <https://github.com/sup-heliotrope/sup/wiki/>
48
48
  .TP
49
- .B Sup IRC channel:
49
+ Sup IRC channel:
50
50
  #sup \[at] freenode.net
51
51
  .TP
52
- .B Mailing list:
52
+ Mailing list:
53
53
  supmua\[at]googlegroups.com
54
54
  .RS
55
55
  .PP
data/man/sup-dump.1 CHANGED
@@ -1,4 +1,4 @@
1
- .\" Automatically generated by Pandoc 2.7.3
1
+ .\" Automatically generated by Pandoc 2.9.2.1
2
2
  .\"
3
3
  .TH "SUP-DUMP" "1" "April 9, 2012" "Sup User Manual" ""
4
4
  .hy
@@ -17,10 +17,10 @@ This tool is primarily useful in the event that a Sup upgrade breaks
17
17
  index format compatibility.
18
18
  .SH OPTIONS
19
19
  .TP
20
- .B -v, --version
20
+ -v, --version
21
21
  Print version and exit
22
22
  .TP
23
- .B -h, --help
23
+ -h, --help
24
24
  Show help message
25
25
  .SH EXAMPLES
26
26
  .PP
@@ -50,19 +50,19 @@ at
50
50
  <https://github.com/sup-heliotrope/sup/issues>
51
51
  .SH CONTACT INFORMATION
52
52
  .TP
53
- .B The Sup web page:
54
- <http://supmua.org/>
53
+ The Sup web page:
54
+ <https://sup-heliotrope.github.io/>
55
55
  .TP
56
- .B Code repository:
56
+ Code repository:
57
57
  <https://github.com/sup-heliotrope/sup/>
58
58
  .TP
59
- .B Sup Wiki:
59
+ Sup Wiki:
60
60
  <https://github.com/sup-heliotrope/sup/wiki/>
61
61
  .TP
62
- .B Sup IRC channel:
62
+ Sup IRC channel:
63
63
  #sup \[at] freenode.net
64
64
  .TP
65
- .B Mailing list:
65
+ Mailing list:
66
66
  supmua\[at]googlegroups.com
67
67
  .RS
68
68
  .PP
@@ -1,4 +1,4 @@
1
- .\" Automatically generated by Pandoc 2.7.3
1
+ .\" Automatically generated by Pandoc 2.9.2.1
2
2
  .\"
3
3
  .TH "SUP-IMPORT-DUMP" "1" "April 9, 2012" "Sup User Manual" ""
4
4
  .hy
@@ -18,29 +18,29 @@ If you need to recreate the index, see sup-sync --restore instead.
18
18
  Messages not mentioned in the dump file will not be modified.
19
19
  .SH OPTIONS
20
20
  .TP
21
- .B -v, --verbose
21
+ -v, --verbose
22
22
  Print message ids as they\[cq]re processed
23
23
  .TP
24
- .B -i, --ignore-missing
24
+ -i, --ignore-missing
25
25
  Silently skip over messages that are not in the index
26
26
  .TP
27
- .B -w, --warn-missing
27
+ -w, --warn-missing
28
28
  Warn about messages that are not in the index, but continue
29
29
  .TP
30
- .B -a, --abort-missing
30
+ -a, --abort-missing
31
31
  Abort on encountering messages that are not in the index (default)
32
32
  .TP
33
- .B -t, --atomic
33
+ -t, --atomic
34
34
  Use transaction to apply all changes atomically
35
35
  .TP
36
- .B -n, --dry-run
36
+ -n, --dry-run
37
37
  Don\[cq]t actually modify the index.
38
38
  Probably only useful with --verbose
39
39
  .TP
40
- .B --version
40
+ --version
41
41
  Show version information
42
42
  .TP
43
- .B -h, --help
43
+ -h, --help
44
44
  Show help message
45
45
  .SH SEE ALSO
46
46
  .PP
@@ -53,19 +53,19 @@ at
53
53
  <https://github.com/sup-heliotrope/sup/issues>
54
54
  .SH CONTACT INFORMATION
55
55
  .TP
56
- .B The Sup web page:
57
- <http://supmua.org/>
56
+ The Sup web page:
57
+ <https://sup-heliotrope.github.io/>
58
58
  .TP
59
- .B Code repository:
59
+ Code repository:
60
60
  <https://github.com/sup-heliotrope/sup/>
61
61
  .TP
62
- .B Sup Wiki:
62
+ Sup Wiki:
63
63
  <https://github.com/sup-heliotrope/sup/wiki/>
64
64
  .TP
65
- .B Sup IRC channel:
65
+ Sup IRC channel:
66
66
  #sup \[at] freenode.net
67
67
  .TP
68
- .B Mailing list:
68
+ Mailing list:
69
69
  supmua\[at]googlegroups.com
70
70
  .RS
71
71
  .PP
@@ -1,4 +1,4 @@
1
- .\" Automatically generated by Pandoc 2.7.3
1
+ .\" Automatically generated by Pandoc 2.9.2.1
2
2
  .\"
3
3
  .TH "SUP-SYNC" "1" "September 3, 2014" "Sup User Manual" ""
4
4
  .hy
@@ -22,10 +22,10 @@ Read more on the Sup wiki
22
22
  https://github.com/sup-heliotrope/sup/wiki/Migration-0.13-to-0.14
23
23
  .SH FILES
24
24
  .TP
25
- .B $HOME/.sup/config.yaml
25
+ $HOME/.sup/config.yaml
26
26
  Sup configuration file
27
27
  .TP
28
- .B $HOME/.sup/sources.yaml
28
+ $HOME/.sup/sources.yaml
29
29
  Configuration file for Sup mail sources
30
30
  .SH SEE ALSO
31
31
  .PP
@@ -38,19 +38,19 @@ at
38
38
  <https://github.com/sup-heliotrope/sup/issues>
39
39
  .SH CONTACT INFORMATION
40
40
  .TP
41
- .B The Sup web page:
42
- <http://supmua.org/>
41
+ The Sup web page:
42
+ <https://sup-heliotrope.github.io/>
43
43
  .TP
44
- .B Code repository:
44
+ Code repository:
45
45
  <https://github.com/sup-heliotrope/sup/>
46
46
  .TP
47
- .B Sup Wiki:
47
+ Sup Wiki:
48
48
  <https://github.com/sup-heliotrope/sup/wiki/>
49
49
  .TP
50
- .B Sup IRC channel:
50
+ Sup IRC channel:
51
51
  #sup \[at] freenode.net
52
52
  .TP
53
- .B Mailing list:
53
+ Mailing list:
54
54
  supmua\[at]googlegroups.com
55
55
  .RS
56
56
  .PP