[#39432] require and case — Martin Stannard <martin@...>

17 messages 2002/05/02

[#39463] RE: require and case — "Berger, Daniel" <djberge@...>

> --- Erik Bagfors <erik@bagfors.nu> wrote:

32 messages 2002/05/02
[#39699] Re: require and case — "Baptiste Lepilleur" <gaiacrtn@...> 2002/05/06

I confirm this behavior. I stumbled on something similar on ruby 1.6.7

[#39700] Re: require and case — ts <decoux@...> 2002/05/06

>>>>> "B" == Baptiste Lepilleur <gaiacrtn@free.fr> writes:

[#39718] Re: require and case — Dave Thomas <Dave@...> 2002/05/06

ts <decoux@moulon.inra.fr> writes:

[#39735] Re: require and case — matz@... (Yukihiro Matsumoto) 2002/05/06

Hi,

[#39534] dynamically assigning instance variables — "Berger, Daniel" <djberge@...>

Hi all,

25 messages 2002/05/03
[#39547] Re: dynamically assigning instance variables — harryo@... (Harry Ohlsen) 2002/05/04

wconrad@yagni.com wrote in message news:<20020503220050.GA443@pluto>...

[#39565] Re: dynamically assigning instance variables — Jean-Hugues ROBERT <jean_hugues_robert@...> 2002/05/04

Hello,

[#39568] Class methods defined in a module, how-to ? — Jean-Hugues ROBERT <jean_hugues_robert@...> 2002/05/04

[#39585] Ruby vs. Java vs. Native trivia — ser@... (Sean Russell)

Hi,

18 messages 2002/05/04

[#39657] newbie Q: how to strip blank lines from file? — Stewart Midwinter <stewart@..._midwinter.ca>

Well, I've spent a few days reading about Ruby, and want to try my first

11 messages 2002/05/06

[#39723] WWW.RUBYCONF.ORG — Christine Hall <return@...>

15 messages 2002/05/06

[#39796] Result of I need your experience - classification and comparison of languages — yvan.radenac@... (Yvan Radenac)

Hi,

21 messages 2002/05/07

[#39809] 'Ultimate' FreeRIDE ? — "Euan Mee" <xlucid@...>

[Note: This is a post to the FreeRIDE developers mailing list, which I have

16 messages 2002/05/07
[#39871] Re: 'Ultimate' FreeRIDE ? — Lothar Scholz <llothar@...> 2002/05/08

On Tue, 07 May 2002 20:52:06 GMT, "Euan Mee"

[#39821] non-alphabetic character in symbol — kwatch@... (kwatch)

Hi,

14 messages 2002/05/08

[#39887] Thread#join doesn't accept a timeout? — Dossy <dossy@...>

Hi,

27 messages 2002/05/09
[#39961] RE: Thread#join doesn't accept a timeout? — "Nathaniel Talbott" <nathaniel@...> 2002/05/09

Dossy [mailto:dossy@panoptic.com] wrote:

[#39968] Re: Thread#join doesn't accept a timeout? — Dossy <dossy@...> 2002/05/09

On 2002.05.10, Nathaniel Talbott <nathaniel@talbott.ws> wrote:

[#39898] cgi params api — patrick-may@... (Patrick May)

One thing that I don't like is the way cgi forces you to treat every

93 messages 2002/05/09
[#40032] Re: cgi params api — patrick-may@... (Patrick May) 2002/05/10

patrick-may@monmouth.com (Patrick May) wrote in message news:<3b3ad3b4.0205091447.5b00ce98@posting.google.com>...

[#40037] Re: cgi params api — Jean-Hugues ROBERT <jean_hugues_robert@...> 2002/05/10

At 02:23 11/05/2002 +0900, you wrote:

[#40049] Re: cgi params api — Wakou Aoyama <wakou@...> 2002/05/10

On Sat, May 11, 2002 at 03:27:13AM +0900,

[#40052] Re: cgi params api — Jean-Hugues ROBERT <jean_hugues_robert@...> 2002/05/10

At 05:56 11/05/2002 +0900, you wrote:

[#40137] Re: cgi params api — patrick-may@... (Patrick May) 2002/05/12

Wakou Aoyama <wakou@fsinet.or.jp> wrote in message news:<20020511121152.GA29832%wakou@fsinet.or.jp>...

[#40139] Re: cgi params api — Sean Chittenden <sean@...> 2002/05/12

> > If you access reqs['key'], then you'll always get a non-array object.

[#40144] Re: cgi params api — Dossy <dossy@...> 2002/05/12

On 2002.05.12, Sean Chittenden <sean@chittenden.org> wrote:

[#40148] Re: cgi params api — David Alan Black <dblack@...> 2002/05/12

Hello --

[#40159] Re: cgi params api — Dossy <dossy@...> 2002/05/12

On 2002.05.12, David Alan Black <dblack@candle.superlink.net> wrote:

[#40162] Re: cgi params api — Wakou Aoyama <wakou@...> 2002/05/12

On Mon, May 13, 2002 at 01:37:40AM +0900,

[#40191] Re: cgi params api — Dossy <dossy@...> 2002/05/13

On 2002.05.13, Wakou Aoyama <wakou@fsinet.or.jp> wrote:

[#40194] Re: cgi params api — David Alan Black <dblack@...> 2002/05/13

Hello --

[#40197] Re: cgi params api — Dossy <dossy@...> 2002/05/13

On 2002.05.13, David Alan Black <dblack@candle.superlink.net> wrote:

[#40198] Re: cgi params api — David Alan Black <dblack@...> 2002/05/13

Hi --

[#40203] Re: cgi params api — Dossy <dossy@...> 2002/05/13

On 2002.05.13, David Alan Black <dblack@candle.superlink.net> wrote:

[#40209] Re: cgi params api — Dave Thomas <Dave@...> 2002/05/13

Dossy <dossy@panoptic.com> writes:

[#40222] Re: cgi params api — Dossy <dossy@...> 2002/05/13

On 2002.05.13, Dave Thomas <Dave@PragmaticProgrammer.com> wrote:

[#40228] Re: cgi params api — Wakou Aoyama <wakou@...> 2002/05/13

On Tue, May 14, 2002 at 12:59:37AM +0900,

[#40229] Re: cgi params api — Dossy <dossy@...> 2002/05/13

On 2002.05.14, Wakou Aoyama <wakou@fsinet.or.jp> wrote:

[#40250] Re: cgi params api — Wakou Aoyama <wakou@...> 2002/05/13

Hi,

[#40291] Re: cgi params api — Dossy <dossy@...> 2002/05/14

On 2002.05.14, Wakou Aoyama <wakou@fsinet.or.jp> wrote:

[#40322] Re: cgi params api — Wakou Aoyama <wakou@...> 2002/05/14

Hi,

[#40377] Re: cgi params api — patrick-may@... (Patrick May) 2002/05/15

Dossy <dossy@panoptic.com> wrote in message news:<20020514172939.GL14145@panoptic.com>...

[#40387] Re: cgi params api — Dossy <dossy@...> 2002/05/15

On 2002.05.15, Patrick May <patrick-may@monmouth.com> wrote:

[#40389] Re: cgi params api — David Alan Black <dblack@...> 2002/05/15

Hello --

[#40390] Re: cgi params api — Dossy <dossy@...> 2002/05/15

On 2002.05.15, David Alan Black <dblack@candle.superlink.net> wrote:

[#40394] Re: cgi params api — David Alan Black <dblack@...> 2002/05/15

Hello --

[#40004] Ruby Conference 2002: Call for Presenters — David Alan Black <dblack@...>

Ruby Conference 2002: Call for Presenters

25 messages 2002/05/10
[#40009] Re: Ruby Conference 2002: Call for Presenters — Jim Menard <jimm@...> 2002/05/10

David Alan Black <dblack@candle.superlink.net> writes:

[#40043] Premature end of script headers — ccos <ccos@...> 2002/05/10

hello,

[#40015] BUG! Platform independent? sockets and select — "Kontra, Gergely" <kgergely@...>

Hi!

12 messages 2002/05/10

[#40099] OT:is software eng an art? — ptkwt@...1.aracnet.com (Phil Tomson)

I signed up for a free seminar that's being held at a grad school nearby

34 messages 2002/05/11

[#40105] Re: OT:is software eng an art? — "Radu M. Obad磚 <whizkid@...>

Mind me... but I feel like stating my oppinions regarding this issue. I

30 messages 2002/05/11

[#40180] What is Ruby for? — "Steve Merrick" <Steve.Merrick@...>

Or even 'Why <insert scripting language of your choice>'? I know it's me

35 messages 2002/05/13

[#40346] ANN: REXML 2.3.3 — Sean Russell <ser@...>

Getting tired of the upgrades yet?

50 messages 2002/05/14
[#40407] Re: ANN: REXML 2.3.3 — Sean Russell <ser@...> 2002/05/15

<posted & mailed>

[#40412] RE: ANN: REXML 2.3.3 — "Rich Kilmer" <rich@...> 2002/05/15

I'll weigh in here...

[#40418] RE: ANN: REXML 2.3.3 — David Alan Black <dblack@...> 2002/05/15

Hi --

[#40426] Re: ANN: REXML 2.3.3 — Bob Hutchison <hutch@...> 2002/05/15

On 5/15/02 12:53 PM, "David Alan Black" <dblack@candle.superlink.net> wrote:

[#40440] Re: ANN: REXML 2.3.3 — Tobias Reif <tobiasreif@...> 2002/05/15

Bob Hutchison schrieb:

[#40397] ANN: Programmierung in Ruby — juergen.katins@... (Juergen Katins)

The translation of *Programming Ruby* by Dave Thomas and Andy Hunt is

31 messages 2002/05/15

[#40525] Metaclasses... — "Hal E. Fulton" <hal9000@...>

Hello, all...

15 messages 2002/05/16

[#40559] what's the calling method name? — Yohanes Santoso <ruby-talk@...>

Hello all,

27 messages 2002/05/17
[#40566] Re: what's the calling method name? — John Carter <john.carter@...> 2002/05/17

On Fri, 17 May 2002, Yohanes Santoso wrote:

[#40577] Re: what's the calling method name? — Yohanes Santoso <ruby-talk@...> 2002/05/17

John Carter <john.carter@tait.co.nz> writes:

[#40647] Re: what's the calling method name? — Yohanes Santoso <ruby-talk@...> 2002/05/18

Yohanes Santoso <ruby-talk@jenny-gnome.dyndns.org> writes:

[#40735] Re: what's the calling method name? — wconrad@... 2002/05/19

On Sat, May 18, 2002 at 06:16:29PM +0900, Yohanes Santoso wrote:

[#40782] Re: what's the calling method name? — nobu.nokada@... 2002/05/20

Hi,

[#40571] Shifting array element & regex on array element — Yohanes Santoso <freeride-devel@...>

In implementing a buffer gap mechanism, I was wondering if there is

10 messages 2002/05/17

[#40635] Ruby regex question — Dossy <dossy@...>

Maybe this is Perl envy, maybe I'm just doing something wrong.

28 messages 2002/05/18
[#40664] Re: Ruby regex question — Mike Stok <mike@...> 2002/05/18

In article <20020518152610.GJ9684@panoptic.com>, Dossy wrote:

[#40673] Re: Ruby regex question — Dossy <dossy@...> 2002/05/18

On 2002.05.19, Mike Stok <mike@stok.co.uk> wrote:

[#40687] RubyEclipse released — "Adam Williams" <awilliams@...>

First release of the highly anticipated (maybe just by me) Ruby IDE. Get it

32 messages 2002/05/19
[#40720] Re: [ANN] RubyEclipse released — Han Holl <han@...> 2002/05/19

Adam Williams wrote:

[#40741] RE: [ANN] RubyEclipse released — "Adam Williams" <awilliams@...> 2002/05/19

Okay. So I probably need to work on some documentation.

[#40723] are there unit tests for cgi.rb? — patrick-may@... (Patrick May)

if so, where could I find them?

27 messages 2002/05/19
[#40806] Re: are there unit tests for cgi.rb? — Tobias Reif <tobiasreif@...> 2002/05/20

Wakou Aoyama wrote:

[#40812] Re: are there unit tests for cgi.rb? — Wakou Aoyama <wakou@...> 2002/05/20

On Tue, May 21, 2002 at 12:27:46AM +0900,

[#40902] method_missing is cool (was: are there unit tests for cgi.rb?) — Ian Macdonald <ian@...> 2002/05/21

On Tue 21 May 2002 at 01:00:22 +0900, Wakou Aoyama wrote:

[#40778] automatic documentation: using tests in addition to / instead of comments — Tobias Reif <tobiasreif@...>

Hi,

40 messages 2002/05/20
[#40788] Re: [RDoc etc] automatic documentation: using tests in addition to / instead of comments — Dave Thomas <Dave@...> 2002/05/20

Tobias Reif <tobiasreif@pinkjuice.com> writes:

[#40826] DBI access to mysql auto_increment record numbers? — Brad Cox <bcox@...> 2002/05/20

How do you get the auto_increment record number for mysql in

[#40887] Re: [RDoc etc] automatic documentation: using tests in addition to / instead of comments — Sean Russell <ser@...> 2002/05/21

Man, how did I miss this thread?

[#40889] Re: [RDoc etc] automatic documentation: using tests in addition to / instead of comments — Paul Brannan <pbrannan@...> 2002/05/21

On Wed, May 22, 2002 at 12:14:05AM +0900, Sean Russell wrote:

[#40875] Memory consumption. — Erik Terpstra <erik@...>

Is there some method that tells me how much memory a certain object

14 messages 2002/05/21

[#40978] Re: Stymied by Ruby's garbage collector — Art Taylor <ataylor@...>

Is there a particular kind or kinds of object being created in huge numbers?

25 messages 2002/05/22
[#40986] Re: Stymied by Ruby's garbage collector — Bob Hutchison <hutch@...> 2002/05/22

On 5/22/02 4:07 PM, "Art Taylor" <ataylor@fortpoint.com> wrote:

[#41085] OS independent scripts, system calls on Windows and Linux — Tobias Reif <tobiasreif@...>

Hi,

19 messages 2002/05/24

[#41102] RE: OS independent scripts, system calls on Windows and Linux — "Morris, Chris" <chris.morris@...>

> All these incompatibility issues are why I want to talk about an RCR.

29 messages 2002/05/24
[#41105] Re: OS independent scripts, system calls on Windows and Linux — Tobias Reif <tobiasreif@...> 2002/05/24

Morris, Chris wrote:

[#41266] Re: OS independent scripts, system calls on Windows and Linux — Dennis Newbold <dennisn@...> 2002/05/28

On Fri, 24 May 2002, Tobias Reif wrote:

[#41352] Infinity (?!) — ptkwt@...1.aracnet.com (Phil Tomson)

I didn't know there was an Infinity value in Ruby, just found it today:

34 messages 2002/05/30

[#41434] Ruby jobs — Tobias Reif <tobiasreif@...>

Hi,

23 messages 2002/05/31
[#41475] RE: Ruby jobs — <james@...> 2002/05/31

>

[#41510] Finding all applications — Chris Gehlker <gehlker@...>

In trying to add drag and drop scripting to RubyStudio and the first task is

40 messages 2002/05/31
[#41561] Re: Finding all applications — Sean Russell <ser@...> 2002/06/01

Jim Menard wrote:

[#41564] Re: Finding all applications — nobu.nokada@... 2002/06/01

Hi,

[#41575] Re: Finding all applications — Chris Gehlker <gehlker@...> 2002/06/02

On 6/1/02 11:33 AM, "nobu.nokada@softhome.net" <nobu.nokada@softhome.net>

[#41576] RE: Finding all applications — "Mike Campbell" <michael_s_campbell@...> 2002/06/02

>> ruby -r find -e 'Find.find("/"){|f| puts f if f[/\.app$/]}'

[#41578] Re: Finding all applications — Chris Gehlker <gehlker@...> 2002/06/02

On 6/1/02 5:20 PM, "Mike Campbell" <michael_s_campbell@yahoo.com> wrote:

[#41579] Re: Finding all applications — Dossy <dossy@...> 2002/06/02

On 2002.06.02, Chris Gehlker <gehlker@fastq.com> wrote:

[#41586] Re: Finding all applications — Chris Gehlker <gehlker@...> 2002/06/02

On 6/1/02 7:44 PM, "Dossy" <dossy@panoptic.com> wrote:

Re: NNTP library for Ruby?

From: Yohanes Santoso <ruby-talk@...>
Date: 2002-05-07 09:16:04 UTC
List: ruby-talk #39757

nosuzuki@postcard.st (Norio Suzuki) writes:

> Hi Usano!
> 
> > From: Usano <usano@nospam.earthlink.net>
> > Date: Tue, 7 May 2002 04:34:24 +0900
> >> Message-ID: <v24ddu8fmum09qc2i6bia4o7ugluv7v5uu@4ax.com>
> 
> > Is it easy to use Ruby to access Usenet?
> 
> There is one library to access NNTP server on the RAA. Have you tried
> this?  http://www.ruby-lang.org/en/raa-list.rhtml?name=net%2Fnntp
> 
> I am not using this but it looks easy to use. Please try it.

I evaluated that package before, but it _WAS_ (6 months ago):
1. not very ruby-ish
2. somewhat slower than the other nntp package at 
http://www02.so-net.ne.jp/~greentea/ruby/nntp/.

In the end I used the one from greentea. I made a few modification
both for performance and protocol update reasons: faster, simpler line
get, and auth and xover supports.

The documentation of the package is admitedly lacking, but that was
not a significant problem.

Here is my patch for the package if you decide to use it:



Hope this helps.


YS.

Attachments (1)

ruby-nntp.patch.gz (11.5 KB, text/x-diff)
diff -Naur ruby-nntp.orig/nntp.rb ruby-nntp/nntp.rb
--- ruby-nntp.orig/nntp.rb	Tue May  7 08:58:37 2002
+++ ruby-nntp/nntp.rb	Tue May  7 09:13:00 2002
@@ -1,9 +1,10 @@
-# $Id: nntp.rb,v 2.14 2000/02/26 17:28:53 rgt Exp $
+# $Id: ruby_nntp.rb,v 1.2 2001/12/23 14:53:44 ysantoso Exp $
 
-require 'nntp/nntp_h'
-require 'nntp/nntptime'
+#modified from http://www02.so-net.ne.jp/~greentea/ruby/nntp/
+
+require 'nntp_h'
+require 'nntptime'
 require 'socket'
-require 'tsdreader'
 
 module NNTP
   class NNTPIO
@@ -17,9 +18,9 @@
   #raise NNTPError (when error in NNTP) or StandardError (when error in methods
     of TCPSocket)
 =end
-    def NNTPIO.session(host, port=WELL_KNOWN_PORT, &block)
+    def NNTPIO.session(host, port=WELL_KNOWN_PORT, user = nil, pass = nil, &block)
       nntp = NNTPIO.new(host, port)
-      nntp.connect
+      nntp.connect(user, pass)
       begin
 	block.call nntp
       ensure
@@ -27,6 +28,7 @@
       end
     end
     
+
     def initialize(host, port=WELL_KNOWN_PORT)
       ## host.is_a? String and port.is_a? Integer
       @host = host
@@ -35,6 +37,7 @@
       @response = nil
       @socket = nil
       @postable = false
+      puts "inited"
     end
     attr_reader :response, :postable
 
@@ -43,20 +46,93 @@
   #raise NNTPError (when error in NNTP) or StandardError (when error in methods
     of TCPSocket)
 =end
-    def connect
+    def connect(user=nil, pass=nil)
+      puts "entring connect"
       if not closed?
 	return
       end
+      puts "host=#{@host}, port=#{@port}"
       @socket = open_socket(@host, @port)
       resp = get_response
       if resp[0..2] == OK_READY
+	authenticate(user, pass) if user
 	return (@postable = true)
       elsif resp[0..2] == OK_READY_NO_POST
+	authenticate(user, pass) if user
 	return (@postable = false)
       else
 	raise NNTPError.new(resp)
       end
     end
+    
+=begin
+  #added by YS (2001-Nov-24)
+  #raise NNTPError if fails
+=end
+    def authenticate(user, pass)
+      req = AUTHINFO_USER+" #{user}"
+      resp = send_command req
+      if resp[0..2] == PASS_REQUIRED
+	resp = send_command AUTHINFO_PASS+" #{pass}"
+	if resp[0..2] == OK_READY
+	  return
+	end
+      else
+	raise NNTPError.new(resp)
+      end
+    end
+
+=begin
+ # added by YS (2001-Nov-25)
+ #raise NNTPError if fails
+=end
+    def mode_reader
+      resp = send_command MODE_READER
+      if resp[0..2] == OK_READY
+	return
+      else
+	raise NNTPError.new(resp)
+      end
+    end
+    
+=begin
+ #added by YS (2001-Nov-25)
+ #raise NNTPError if fails
+ #similar to get_newgroups
+=end
+    def get_xover(artRange)
+      resp = send_command XOVER+" #{artRange.first}-#{artRange.last}"
+      if resp[0..2] != OK_OVERVIEW
+	raise NNTPError(resp)
+      end
+      while (line = @socket.gets(CRLF))
+	if eom? line
+	  break
+	else
+	  yield make_xover_info(line)
+	end
+      end
+    end
+    
+=begin
+  # added by YS (2001 Nov 25)
+  # similar to make_group_info
+  #return [artnum, subject, author, date, msgId, 
+  #        references, bytes, lines, other junks that may or may not present]
+  #raise NNTPError (when error in NNTP) or StandardError (when error in methods
+    of TCPSocket)
+=end
+    def make_xover_info(line)
+      ## line.is_a? String
+      arry = line.chomp(CRLF).split("\t", 9)
+      if arry.size >= 8 
+	return arry
+      else
+	return nil
+      end
+    end
+
+
 
 =begin
   #return boolean
@@ -65,6 +141,7 @@
       @socket.nil? or @socket.closed?
     end
 
+
 =begin
   #return TCPSocket
   #raise StandardError when error in TCPSocket#new
@@ -91,7 +168,7 @@
       if resp[0..2] != OK_ARTICLE
 	raise NNTPError.new(resp)
       end
-      while (line = TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
+      while (line = @socket.gets(CRLF)) #TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
 	if eom?(line)
 	  break
 	else
@@ -119,7 +196,7 @@
       if resp[0..2] != OK_BODY
 	raise NNTPError.new(resp)
       end
-      while (line = TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
+      while (line = @socket.gets(CRLF)) #TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
 	if eom?(line)
 	  break
 	else
@@ -148,7 +225,7 @@
 	raise NNTPError.new(resp)
       end
       line = nil
-      while (line = TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
+      while (line = @socket.gets(CRLF)) #TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
 	if eom?(line)
 	  break
 	else
@@ -241,7 +318,7 @@
       if resp[0..2] != INFO_HELP
 	raise NNTPError, resp
       end
-      while (line = TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
+      while (line = @socket.gets(CRLF)) #TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
 	if eom? line
 	  break
 	else
@@ -269,12 +346,17 @@
   #raise NNTPError (when error in NNTP) or StandardError (when error in methods
     of TCPSocket)
 =end
-    def get_list(&block)
+    ## YS 2001-12-23: added option group_pattern.
+    def get_list(group_pattern = nil, &block)
       ## block != null
-      if send_command(LIST)[0..2] != OK_LIST
+      req = LIST
+      if group_pattern
+	req += " active #{group_pattern}"
+      end
+      if send_command(req)[0..2] != OK_LIST
 	raise NNTPError, resp
       end
-      while (line = TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
+      while (line = @socket.gets(CRLF)) #TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
 	if eom? line
 	  break
 	else
@@ -300,7 +382,7 @@
       if (resp = send_command(req))[0..2] != OK_NEWGROUPS
 	raise NNTPError.new(resp)
       end
-      while (line = TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
+      while (line = @socket.gets(CRLF)) #TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
 	if eom? line
 	  break
 	else
@@ -310,7 +392,7 @@
     end
 
 =begin
-  #return [group_name, last_article_number, first_article_number, post_allowed]
+  #return [group_name, last_article_number, first_article_number, post_allowed]
   #raise NNTPError (when error in NNTP) or StandardError (when error in methods
     of TCPSocket)
 =end
@@ -362,7 +444,7 @@
       if resp[0..2] != OK_NEWNEWS
 	raise NNTPError.new(resp)
       end
-      while (line = TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
+      while (line = @socket.gets(CRLF)) #TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF))
 	if eom? line
 	  break
 	else
@@ -496,7 +578,7 @@
     of TCPSocket)
 =end
     def get_response
-      resp = TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF)
+      resp = @socket.gets(CRLF) #TSDReader.read_line(@socket, TSDReader::BUFSIZ, CRLF)
       
       if resp[0] == ?5 or resp[0..2] == FAIL_SERVICE
 	raise NNTPError.new(resp)
@@ -507,5 +589,5 @@
 
   class NNTPError < StandardError
   end
-
+  
 end
diff -Naur ruby-nntp.orig/nntp_h.rb ruby-nntp/nntp_h.rb
--- ruby-nntp.orig/nntp_h.rb	Tue May  7 08:58:52 2002
+++ ruby-nntp/nntp_h.rb	Tue May  7 09:00:28 2002
@@ -15,7 +15,16 @@
   POST      = 'POST'.freeze
   QUIT      = 'QUIT'.freeze
   SLAVE     = 'SLAVE'.freeze
-  
+
+  AUTHINFO_USER  = 'AUTHINFO USER'.freeze
+  AUTHINFO_PASS  = 'AUTHINFO PASS'.freeze
+  MODE_READER    = 'MODE READER'.freeze
+  LIST_OVER      = 'LIST OVERVIEW.FMT'.freeze
+  XOVER          = 'XOVER'.freeze
+  OK_OVERVIEW    = '224'.freeze # overview command succeed
+  OK_LISTOVER    = '215'.freeze # list overview command succeed.
+
+
   # NNTP responses
   INFO_HELP = '100'.freeze # help text follows
   INFO_DEBUG = '199'.freeze # debug output
@@ -35,6 +44,7 @@
   OK_IHAVE = '235'.freeze # article transferred ok
   OK_POST = '240'.freeze # article posted ok
 
+  PASS_REQUIRED = '381'.freeze # want to have pass.
   SEND_IHAVE = '335'.freeze # send article to be transferred.
   SEND_POST = '340'.freeze # send article to be posted.
 
@@ -54,6 +64,6 @@
 
   NOT_RECOGNIZED = '500'.freeze # command not recognized
   SYNTAX_ERROR = '501'.freeze # command syntax error
-  PERMISSION_DENINED = '502'.freeze # access restriction or permission denied
+  PERMISSION_DENIED = '502'.freeze # access restriction or permission denied
   FAULT = '503'.freeze #  program fault - command not performed
 end
diff -Naur ruby-nntp.orig/nntptime.rb ruby-nntp/nntptime.rb
--- ruby-nntp.orig/nntptime.rb	Tue May  7 08:58:45 2002
+++ ruby-nntp/nntptime.rb	Tue May  7 09:00:28 2002
@@ -1,12 +1,13 @@
 module NNTP
   module NNTPTime
 =begin
+  ## modified by YS. Year should be a 4-digit string (new standard).
   ##pre time.is_a? Time or time.is_a? SlowTime
   ##post const time
   ##return Time#to_s
 =end
     def NNTPTime.time2str(time)
-      time.dup.gmtime.strftime '%y%m%d %H%M%S GMT'
+      time.dup.gmtime.strftime '%Y%m%d %H%M%S GMT'
     end
 
 =begin
diff -Naur ruby-nntp.orig/test-nntp.rb ruby-nntp/test-nntp.rb
--- ruby-nntp.orig/test-nntp.rb	Tue May  7 08:58:59 2002
+++ ruby-nntp/test-nntp.rb	Tue May  7 09:11:22 2002
@@ -3,7 +3,8 @@
 include NNTP
 
 now = Time.now.gmtime
-yest = Time.at(now.to_i - 60 * 60 * 24)
+yest = Time.at(now.to_i - 60 * 60 * 24 * 30*12*10)
+puts yest
 
 nntp = NNTPIO.new(ARGV[0])
 
@@ -27,10 +28,11 @@
 puts 'done get_list'
 =end
 print 'distro: '
-dists = $stdin.gets.chomp.split
-if dists.empty?
-  dists = nil
-end
+#dists = $stdin.gets.chomp.split
+#if dists.empty?
+#  dists = nil
+#end
+dists=nil
 
 # NEWGROUPS
 puts 'do get_newgroups'
@@ -42,8 +44,9 @@
 puts 'done get_newgroups'
 
 # GROUP, NEWNEWS
-print 'group: '
-grp = $stdin.gets.chomp
+#print 'group: '
+#grp = $stdin.gets.chomp
+grp = nil
 
 p nntp.set_group(grp)
 puts 'done set_group'
@@ -56,8 +59,9 @@
 end
 puts 'done get_newnews'
 
-print 'article number: '
-an = $stdin.gets.chomp
+#print 'article number: '
+#an = $stdin.gets.chomp
+grp=nil
 
 # STAT, LAST, NEXT
 puts 'do set_stat, set_last, set_next'
diff -Naur ruby-nntp.orig/tsdreader.rb ruby-nntp/tsdreader.rb
--- ruby-nntp.orig/tsdreader.rb	Tue May  7 08:59:05 2002
+++ ruby-nntp/tsdreader.rb	Thu Jan  1 00:00:00 1970
@@ -1,60 +0,0 @@
-module TSDReader
-  BUFSIZ = 8192
-  TSD_COUNT = :_read_char_count
-  TSD_BUFF = :_read_char_buff
-
-  ## mostly private
-  def TSDReader.read_char(io)
-    str = result = nil
-    if not Thread.current[TSD_COUNT] or
-        Thread.current[TSD_COUNT] == 0
-      begin
-        str = io.sysread(BUFSIZ)
-      rescue Errno::EINTR
-        retry
-      rescue EOFError
-        if str.nil? or str.size == 0
-          Thread.current[TSD_BUFF] = nil
-          Thread.current[TSD_COUNT] = 0
-          return -1
-        end
-      end
-      Thread.current[TSD_BUFF] = str
-      Thread.current[TSD_COUNT] = str.size
-    end
-    result = Thread.current[TSD_BUFF][Thread.current[TSD_BUFF].size -
-      Thread.current[TSD_COUNT]]
-    Thread.current[TSD_COUNT] -= 1
-    result
-  end
-
-  ##pre io.is_a? IO and maxlen.is_a? Integer and rs.is_a? String
-  def TSDReader.read_line(io, maxlen=BUFSIZ, rs=$/)
-    line = ''
-    for i in 1..maxlen
-      c = read_char(io)
-      if c < 0
-        if line.size == 0
-          return nil
-        else
-          break
-        end
-      end
-      line << c.chr
-      if line.index(rs, -(rs.size))
-	break
-      end
-    end
-    if i == maxlen and not line.index(rs, -(rs.size))
-      raise IOError, 'too long line'
-    end
-    line
-  end
-end
-
-if $0 == __FILE__
-  io = File.open(ARGV[0])
-  while (line = TSDReader.read_line(io, 1024))
-    puts line
-  end
-end

In This Thread

Prev Next