diff --git a/encode/uuencode.rb b/encode/uuencode.rb index 6058f65..77c4f67 100644 --- a/encode/uuencode.rb +++ b/encode/uuencode.rb @@ -90,7 +90,8 @@ def _uudecode_file(file, outfile) next if line =~ /[a-z]/ next if line == nil next unless ((((line[0].ord - 32) & 077) + 2) / 3).to_i == (line.length/4).to_i - line.unpack("u").each{|x| outfile.print x} + #line.unpack("u").each{|x| outfile.print x} + line.unpack("u").each{|x| outfile.write x} end puts "No \"end\" found!!!" diff --git a/news/article.rb b/news/article.rb index baded62..8118343 100644 --- a/news/article.rb +++ b/news/article.rb @@ -1,6 +1,3 @@ -# $Dwarf: article.rb,v 1.114 2005/05/12 07:39:53 ward Exp $ -# $Source$ - # # Copyright (c) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Ward Wouts # @@ -23,7 +20,7 @@ require Pathname.new(__FILE__).dirname + '../news/newsrc' require 'tempfile' require 'timeout' #require 'yaml' -require 'profiler' +#require 'profiler' # removed from ruby? class ArticleError < RuntimeError; end class TempError < ArticleError; end @@ -152,7 +149,7 @@ def initialize(nntpservers, groupname, newsrc="~/.newsrc", maxage=0) # p server # p Time.now begin - timeout(60) do + Timeout.timeout(60) do #p "connecting" @connections[server]["nntp"] = Net::KANNTP.new(server, 119, @serverpasses[server]['user'], @serverpasses[server]['pass']) end @@ -180,7 +177,7 @@ def reconnect(server) retries = 0 begin puts "Trying to kill old connection #{Time.now}" - timeout(10) do + Timeout.timeout(10) do @connections[server]["nntp"].quit end puts "Killed old connection #{Time.now}" @@ -192,7 +189,7 @@ def reconnect(server) puts "Trying to reconnect #{Time.now}" sleep 3 #timeout(180) do - timeout(60) do + Timeout.timeout(60) do @connections[server]["nntp"] = Net::KANNTP.new(server, 119, @serverpasses[server]['user'], @serverpasses[server]['pass']) end resp = @connections[server]["nntp"].mode_reader @@ -391,7 +388,7 @@ def get_group_info(server) first = "" last = "" begin - timeout(30) do + Timeout.timeout(30) do begin resp, count, first, last, name = @connections[server]["nntp"].group(@group) rescue Net::NNTPReplyError @@ -425,7 +422,7 @@ def get_xhdr(server, range, header) resp = "" lines = [] begin - timeout(180) do + Timeout.timeout(180) do begin p Time.now if Debuglevel > 1 puts "getting headers: #{header}, #{range}" if Debuglevel > 1 @@ -481,7 +478,7 @@ def get_xover(server, range) ed = start end begin - timeout(180) do + Timeout.timeout(180) do begin p Time.now if Debuglevel > 1 puts "getting headers: #{range}" if Debuglevel > 1 @@ -539,7 +536,7 @@ def get_body(server, message) messid = "" list = [] begin - timeout(180) do + Timeout.timeout(180) do begin list = [] resp, id, messid, list = @connections[server]["nntp"].body(message) diff --git a/ripnews.rb b/ripnews.rb index 035ba55..2af18c7 100755 --- a/ripnews.rb +++ b/ripnews.rb @@ -50,20 +50,20 @@ def aprofile_mem(group) groups = {} ObjectSpace.each_object { |x| if not [Array,Hash].include? x.class - e = nil - begin - e = MEntry.new( x.class, Marshal::dump(x).size ) - rescue TypeError # undumpable - e = MEntry.new( x.class, 0 ) + e = nil + begin + e = MEntry.new( x.class, Marshal::dump(x).size ) + rescue TypeError # undumpable + e = MEntry.new( x.class, 0 ) + end + if groups.has_key? e.c + groups[e.c].mem += e.mem + groups[e.c].total += 1 + else + groups[e.c] = GroupEntry.new( e.c, e.mem, 1 ) + end end - if groups.has_key? e.c - groups[e.c].mem += e.mem - groups[e.c].total += 1 - else - groups[e.c] = GroupEntry.new( e.c, e.mem, 1 ) - end - end - } + } File.open( "mem_log", "a+" ) { |file| file << "Group #{group}\n" total = 0 @@ -547,11 +547,17 @@ def get_multi(subj, group) # puts "inside thread post pass\n" if UUEncode.is_uuencoded(tbody) puts " UUDecoding..." - if tfile - tmode, tfilename, tbody = UUEncode.uudecode(tfile, tfileout) - else - tmode, tfilename, tbody = UUEncode.uudecode(tbody) - end + begin + if tfile + tmode, tfilename, tbody = UUEncode.uudecode(tfile, tfileout) + else + tmode, tfilename, tbody = UUEncode.uudecode(tbody) + end + rescue Encoding::UndefinedConversionError + puts "#{$!}" + puts " Skipping article..." + Thread.current.exit + end elsif YEnc.is_yencoded(tbody) puts " YDecoding..." begin @@ -683,7 +689,7 @@ def get_max_file_length(tempdir=".") name = "a"*500 name = "#$$#{name}" begin - file = File.new("#{tempdir}/#{name}", "w", 0644).close + File.new("#{tempdir}/#{name}", "w", 0644).close FileUtils.rm("#{tempdir}/#{name}") rescue Errno::ENAMETOOLONG name = name[0...-1]