diff --git a/trunk/ripnews/encode/uuencode.rb b/trunk/ripnews/encode/uuencode.rb index ed659db..e1143a8 100644 --- a/trunk/ripnews/encode/uuencode.rb +++ b/trunk/ripnews/encode/uuencode.rb @@ -1,13 +1,21 @@ -################################# -# -# $Dwarf: uuencode.rb,v 1.4 2003/04/20 18:02:51 ward Exp $ +# $Dwarf: uuencode.rb,v 1.5 2003/04/20 20:15:34 ward Exp $ # $Source$ + # -# article.rb +# Copyright (c) 2002, 2003 Ward Wouts # -# (C) 2002, Ward Wouts +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # -################################# require 'tempfile' diff --git a/trunk/ripnews/encode/yenc.rb b/trunk/ripnews/encode/yenc.rb index e331623..c47fdcc 100644 --- a/trunk/ripnews/encode/yenc.rb +++ b/trunk/ripnews/encode/yenc.rb @@ -1,13 +1,21 @@ -################################# -# -# $Dwarf: yenc.rb,v 1.7 2003/04/22 19:11:15 ward Exp $ +# $Dwarf: yenc.rb,v 1.8 2003/04/22 19:25:57 ward Exp $ # $Source$ + # -# article.rb +# Copyright (c) 2002, 2003 Ward Wouts # -# (C) 2002, Ward Wouts +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # -################################# require 'tempfile' diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index 69d0ffa..2801faf 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -1,13 +1,21 @@ -################################# -# -# $Dwarf: article.rb,v 1.73 2003/07/13 11:28:32 ward Exp $ +# $Dwarf: article.rb,v 1.74 2003/07/14 22:12:18 ward Exp $ # $Source$ + # -# article.rb +# Copyright (c) 2002, 2003 Ward Wouts # -# (C) 2002, Ward Wouts +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # -################################# require 'set/intspan' require 'net/nntp' diff --git a/trunk/ripnews/news/newsrc.rb b/trunk/ripnews/news/newsrc.rb index 2993b74..a164c04 100644 --- a/trunk/ripnews/news/newsrc.rb +++ b/trunk/ripnews/news/newsrc.rb @@ -1,14 +1,21 @@ -################################# -# -# $Dwarf: newsrc.rb,v 1.10 2002/08/01 11:50:09 ward Exp $ +# $Dwarf: newsrc.rb,v 1.11 2002/11/05 09:33:41 ward Exp $ # $Source$ + # -# newsrc.rb -# ported from Perl code by Ward Wouts +# Copyright (c) 2002, 2003 Ward Wouts # -# (C) 2001, Ward Wouts +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # -################################# require "set/intspan" @@ -78,6 +85,7 @@ def save save_as(@newsrc["file"]) end +# this is not thread safe! def save_as(file) if FileTest.exists?("#{file}") begin @@ -100,6 +108,46 @@ def save_as(file) newsrc.close end +def save_group(group) + unless @newsrc.has_key?("file") + @newsrc["file"] = "#{$ENV['HOME']}/.newsrc" + end + save_as(@newsrc["file"], group) +end + +# this should be thread safe +def save_group_as(file, group) + if FileTest.exists?("#{file}") + if ( ! File.copy(file, "#{file}.bak") ) + print "Can't copy #{file} to #{file}.bak: #{$!}\n" + end + end + begin + newsrc = File.new(file, "r+").flock(File::LOCK_EX) + rescue + print "Can't open ${file}: #{$!}\n" + exit + end + + # read file + lines = newsrc.readlines + + # pointer -> 0 + newsrc.rewind + + # write read stuff & replace group + for line in lines + if line =~ /^#{group}(:|!)/ + newsrc.print line + else + newsrc.print format(group) + end + end + + newsrc.flock(File::LOCK_UN) # what's the right order here? + newsrc.close +end + def format(group) name = group["name"] sub = group["subscribed"] ? ':' : '!' @@ -383,6 +431,8 @@ end # module # [x] parse # parses a single line from a newsrc file # [x] save # [x] save_as +# [ ] save_group +# [ ] save_group_as # [x] format # [x] export_rc # [ ] _dump # Formats a Newsrc object to a string. Used for testing diff --git a/trunk/ripnews/ripnews.rb b/trunk/ripnews/ripnews.rb index c1bbd96..be7b4bc 100755 --- a/trunk/ripnews/ripnews.rb +++ b/trunk/ripnews/ripnews.rb @@ -1,8 +1,24 @@ #!/usr/local/bin/ruby -w -# $Dwarf: ripnews.rb,v 1.74 2003/07/03 14:30:00 ward Exp $ +# $Dwarf: ripnews.rb,v 1.75 2003/07/13 11:18:09 ward Exp $ # $Source$ +# +# Copyright (c) 2002, 2003 Ward Wouts +# +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# + require 'date' require 'ftools' require 'time' diff --git a/trunk/ripnews/set/intspan.rb b/trunk/ripnews/set/intspan.rb index 2fe34ce..af34a32 100644 --- a/trunk/ripnews/set/intspan.rb +++ b/trunk/ripnews/set/intspan.rb @@ -1,14 +1,21 @@ -################################# -# -# $Dwarf: intspan.rb,v 1.12 2002/08/19 14:48:00 ward Exp $ +# $Dwarf: intspan.rb,v 1.13 2002/11/05 09:33:41 ward Exp $ # $Source$ + # -# intspan.rb -# ported from Perl code by Ward Wouts +# Copyright (c) 2002, 2003 Ward Wouts # -# (C) 2001, Ward Wouts +# Permission to use, copy, modify, and distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # -################################# module Set