match on extensions, introduces -S (OPT_S), -M (OPT_M) and EXTENSIONS options
This commit is contained in:
parent
f16a41ce2e
commit
fd2066948a
1 changed files with 40 additions and 5 deletions
|
|
@ -182,37 +182,51 @@ def check_config
|
||||||
unless @config[i].has_key?("PERMISSION")
|
unless @config[i].has_key?("PERMISSION")
|
||||||
@config[i]["PERMISSION"] = "0755"
|
@config[i]["PERMISSION"] = "0755"
|
||||||
end
|
end
|
||||||
|
if @config[i].has_key?("EXTENSIONS")
|
||||||
|
@config[i]["-S"] = @config[i]["EXTENSIONS"]
|
||||||
|
@config[i]["-M"] = @config[i]["EXTENSIONS"]
|
||||||
|
end
|
||||||
|
if @config[i].has_key?("-S") and ! @config[i].has_key?("-M")
|
||||||
|
@config[i]["-M"] = "(?!.*)"
|
||||||
|
end
|
||||||
|
if @config[i].has_key?("-M") and ! @config[i].has_key?("-S")
|
||||||
|
@config[i]["-S"] = "(?!.*)"
|
||||||
|
end
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_single(subj)
|
def get_single(subj)
|
||||||
print " Singlepart!\n"
|
print " Fetching singlepart article: #{subj}\n"
|
||||||
body = @articles.get_group_body(subj)
|
body = @articles.get_group_body(subj)
|
||||||
if @articles.is_uuencoded(body)
|
if @articles.is_uuencoded(body)
|
||||||
mode, filename, body = @articles.uudecode(body)
|
mode, filename, body = @articles.uudecode(body)
|
||||||
|
return false unless check_ext(filename, "s")
|
||||||
return mode, filename, body
|
return mode, filename, body
|
||||||
end
|
end
|
||||||
if @articles.is_yencoded(body)
|
if @articles.is_yencoded(body)
|
||||||
mode, filename, body = @articles.ydecode(body)
|
mode, filename, body = @articles.ydecode(body)
|
||||||
|
return false unless check_ext(filename, "s")
|
||||||
return mode, filename, body
|
return mode, filename, body
|
||||||
end
|
end
|
||||||
print "unknown encoding (not UU, not yEnc), skipping...\n"
|
print " Unknown encoding (not UU, not yEnc), skipping...\n"
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_multi(subj, group)
|
def get_multi(subj, group)
|
||||||
print " Multipart!\n"
|
print " Fetching multipart article: #{subj}\n"
|
||||||
if @config[group]["TEMPDIR"] == nil or @config[group]["TEMPDIR"] == ""
|
if @config[group]["TEMPDIR"] == nil or @config[group]["TEMPDIR"] == ""
|
||||||
body = @articles.get_group_body(subj)
|
body = @articles.get_group_body(subj)
|
||||||
if @articles.is_uuencoded(body)
|
if @articles.is_uuencoded(body)
|
||||||
mode, filename, body = @articles.uudecode(body)
|
mode, filename, body = @articles.uudecode(body)
|
||||||
|
return false unless check_ext(filename, "m")
|
||||||
return mode, filename, body
|
return mode, filename, body
|
||||||
end
|
end
|
||||||
if @articles.is_yencoded(body)
|
if @articles.is_yencoded(body)
|
||||||
mode, filename, body = @articles.ydecode(body)
|
mode, filename, body = @articles.ydecode(body)
|
||||||
|
return false unless check_ext(filename, "m")
|
||||||
return mode, filename, body
|
return mode, filename, body
|
||||||
end
|
end
|
||||||
print "unknown encoding (not UU, not yEnc), skipping...\n"
|
print " Unknown encoding (not UU, not yEnc), skipping...\n"
|
||||||
return false
|
return false
|
||||||
else
|
else
|
||||||
body = @articles.get_group_body_first(subj)
|
body = @articles.get_group_body_first(subj)
|
||||||
|
|
@ -223,6 +237,7 @@ def get_multi(subj, group)
|
||||||
return false unless @articles.get_group_body_rest(subj, file)
|
return false unless @articles.get_group_body_rest(subj, file)
|
||||||
fileout = Tempfile.new("riptmp", @config[group]["TEMPDIR"])
|
fileout = Tempfile.new("riptmp", @config[group]["TEMPDIR"])
|
||||||
mode, filename, body = @articles.uudecode(file, fileout)
|
mode, filename, body = @articles.uudecode(file, fileout)
|
||||||
|
return false unless check_ext(filename, "m")
|
||||||
body = fileout.path
|
body = fileout.path
|
||||||
file.close
|
file.close
|
||||||
fileout.close
|
fileout.close
|
||||||
|
|
@ -234,6 +249,7 @@ def get_multi(subj, group)
|
||||||
return false unless @articles.get_group_body_rest(subj, file)
|
return false unless @articles.get_group_body_rest(subj, file)
|
||||||
fileout = Tempfile.new("riptmp", @config[group]["TEMPDIR"])
|
fileout = Tempfile.new("riptmp", @config[group]["TEMPDIR"])
|
||||||
mode, filename, body = @articles.ydecode(file, fileout)
|
mode, filename, body = @articles.ydecode(file, fileout)
|
||||||
|
return false unless check_ext(filename, "m")
|
||||||
body = fileout.path
|
body = fileout.path
|
||||||
file.close
|
file.close
|
||||||
fileout.close
|
fileout.close
|
||||||
|
|
@ -268,6 +284,26 @@ def output_data(subject, mode, filename="", body="")
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def check_ext(filename, mode)
|
||||||
|
case mode
|
||||||
|
when "s"
|
||||||
|
if @config.has_key?("-S")
|
||||||
|
return filename =~ /\.(#{@config["-S"]})$/
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
when "m"
|
||||||
|
if @config.has_key?("-M")
|
||||||
|
return filename =~ /\.(#{@config["-M"]})$/
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
else
|
||||||
|
print "Illegal mode \"#{mode}\" in check_ext\n"
|
||||||
|
exit
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
#############################################################################################
|
#############################################################################################
|
||||||
|
|
||||||
defaults = {'-c' => "#{ENV['HOME']}/.ripnewsrc"}
|
defaults = {'-c' => "#{ENV['HOME']}/.ripnewsrc"}
|
||||||
|
|
@ -300,7 +336,6 @@ for group in @config.keys.sort
|
||||||
i =~ /#{@config[group]["-I"]}/
|
i =~ /#{@config[group]["-I"]}/
|
||||||
print "Match: #{i}\n" if Debuglevel > 0
|
print "Match: #{i}\n" if Debuglevel > 0
|
||||||
if @articles.group_is_complete(i)
|
if @articles.group_is_complete(i)
|
||||||
print " Fetching: #{i}\n"
|
|
||||||
if @articles.group_is_singlepart(i)
|
if @articles.group_is_singlepart(i)
|
||||||
mode, filename, body = get_single(i)
|
mode, filename, body = get_single(i)
|
||||||
elsif @articles.group_is_multipart(i)
|
elsif @articles.group_is_multipart(i)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue