[#4834] Fwd: Re: Whats so different about a Hash? — Andrew Walrond <andrew@...>
>>>>> "A" == Andrew Walrond <andrew@walrond.org> writes:
On Thursday 05 May 2005 13:48, ts wrote:
>>>>> "A" == Andrew Walrond <andrew@walrond.org> writes:
On Thursday 05 May 2005 13:57, ts wrote:
[#4844] Getting rid of Object#equal?()? — =?ISO-8859-15?Q?Florian_Gro=DF?= <florgro@...>
Moin.
[#4848] No way to change socket timeout on opened URI — noreply@...
Bugs item #1878, was opened at 2005-05-05 17:55
[#4855] Method hooks in singleton classes — Pit Capitain <pit@...>
Hello Ruby-maintainers,
[#4858] Build fails on OSX Tiger 10.4 — noreply@...
Bugs item #1883, was opened at 2005-05-06 14:55
Hi,
Hi,
Hi,
On 5/19/05, Shugo Maeda <shugo@ruby-lang.org> wrote:
Hi,
Hi,
[#4869] Infinite loop on YAML.dump (Re: ruby-list:40801) — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Hello.
[#4874] - Need to reduce Ruby Sources to the Minimal — Ilias Lazaridis <ilias@...>
Hello all,
Ilias Lazaridis schrieb:
Pit Capitain wrote:
Ryan Davis wrote:
ES wrote:
On May 12, 2005, at 3:13 PM, Ilias Lazaridis wrote:
Mathieu Bouchard wrote:
On Thursday 12 May 2005 22:09, Ilias Lazaridis wrote:
Francois GORET wrote:
Hi,
nobu.nokada@softhome.net wrote:
Hi,
nobu.nokada@softhome.net wrote:
[#4881] Encoding Pragma — Bertram Scharpf <lists@...>
Hi,
[#4886] ruby 1.8.3 preview1 — Yukihiro Matsumoto <matz@...>
Hi,
Yukihiro Matsumoto <matz@ruby-lang.org> [2005-05-12 17:49]:
>What about [ruby-core:4296]?
[#4911] Pointless argc check in Array#select — noreply@...
Patches item #1900, was opened at 2005-05-12 09:33
noreply@rubyforge.org wrote:
>>>>> "D" == Daniel Berger <djberge@qwest.com> writes:
ts wrote:
>>>>> "D" == Daniel Berger <djberge@qwest.com> writes:
On 5/12/05, ts <decoux@moulon.inra.fr> wrote:
Austin Ziegler wrote:
[#4919] - Hierarchical/Modular Directory Structure — Ilias Lazaridis <ilias@...>
The source-code structure should be simplified, lowering barriers for
Hi,
Nakada, Nobuyoshi wrote:
Ilias Lazaridis wrote:
On 5/14/05, Ilias Lazaridis <ilias@lazaridis.com> wrote:
Austin Ziegler wrote:
Hi,
nobu.nokada@softhome.net wrote:
[#4932] ruby-1.8.3 preview1 - failure: cygwin. — Hugh Sasse <hgs@...>
I've just tried to build the preview and got:
[#4992] Pathname#unlink fails on a symlink which points to a directory. — noreply@...
Bugs item #1917, was opened at 2005-05-14 21:33
In article <200505142133.j4ELXEaM011256@rubyforge.org>,
Hello.
In article <20050515153530.0D9F30E0.ocean@m2.ccsnet.ne.jp>,
[#5006] Suggestion for avoiding incivilities — Gavin Sinclair <gsinclair@...>
Hi all,
[#5010] - Function Argument Conventions — Ilias Lazaridis <ilias@...>
As a general rule, the first argument to a function should be the
[#5020] Problems with the "outer scope" operator — Lothar Scholz <mailinglists@...>
Hello,
[#5039] CGI::escapeHTML escapes the ampersand in an existing escape command — noreply@...
Bugs item #1930, was opened at 2005-05-19 11:45
Hi,
Thu, 19 May 2005 13:09:45 +0900, nobuyoshi nakada
Hi,
[#5040] Suggestion to add alias for underscore style method names to camel case named class methods in CGI — noreply@...
Bugs item #1931, was opened at 2005-05-19 11:46
On Thu, 19 May 2005 noreply@rubyforge.org wrote:
On Thu, 19 May 2005 21:22:46 +0900, David A. Black <dblack@wobblini.net>
[#5068] Re: [ ruby-Patches-1939 ] Pathname, totally revamped — Daniel Berger <djberg96@...>
--- nobu.nokada@softhome.net wrote:
Hi,
On 5/22/05, nobu.nokada@softhome.net <nobu.nokada@softhome.net>
Hi,
[#5070] Re: [ ruby-Patches-1939 ] Pathname, totally revamped — Daniel Berger <djberg96@...>
--- daz <dooby@d10.karoo.co.uk> wrote:
[#5075] Re: [ ruby-Patches-1939 ] Pathname, totally revamped — "Berger, Daniel" <Daniel.Berger@...>
> -----Original Message-----
Quoting Daniel.Berger@qwest.com, on Mon, May 23, 2005 at 11:06:58PM +0900:
[#5107] Re: will callable objects be more general in Ruby 1.9? — Eric Mahurin <eric_mahurin@...>
Re: select() on non-sockets in eval.c
Hi,
At Fri, 27 May 2005 22:49:50 +0900,
BG - Ben Armstrong wrote in [ruby-core:05113]:
> Nobu, if I understand this code correctly, I think I see a problem:
Correct.
> Later, once we have ruled out the socket-only & non-socket-only cases
> which are trivial, we go on to just select against the socket fds:
>
> > + ret = select(maxsock, rp, wp, ep, &z);
I forgot to initialize rp, wp and ep.
> If an error was returned, we just ignore it and return nsocks, the # of
> non-socket fds, and return the non-socket fd bits in rfd, wfd & efd. So
> far, so good.
Counting non-sockets was wrong.
> But if select returned >= 0, then for each set bit in rp, wp & ep, we
> set a bit in rfd, wfd & efd to return:
>
> > + for (i = 0; i < maxsock; ++i) {
> > + if (rp && FD_ISSET(i, rp)) {
> > + FD_SET(i, rfd);
> > + ret++;
> > + }
> ... etc. ...
>
> This is where I get confused about what you intended. Ret started as
> the return value from select on the sockets, and rp, wp and ep should
> already contain the ready socket fds. Why are we adding into ret the
> count of *socket* fds ready? Shouldn't this be setting rfd, wfd and efd
> to the returned rp, wp and ep, and then add in the *non-socket* bits
> (and increment ret per ready non-socket fd)? But we don't have any
> variables storing just the non-socket bits, so we can't do that.
New select() wrapper function, does this work?
int
rb_vms_select(int maxfd, fd_set *rfd, fd_set *wfd, fd_set *efd, struct timeval *tv)
{
int i, maxsock, socks, nsocks;
fd_set rs, ws, es, *rp = 0, *wp = 0, *ep = 0;
struct timeval z;
FD_ZERO(&rs);
FD_ZERO(&ws);
FD_ZERO(&es);
/* count socket and non-socket fds, and move socket bits to local
* fd_sets */
maxsock = socks = nsocks = 0;
if (rfd || wfd || efd) {
for (i = 0; i < maxfd; ++i) {
int r = (rfd != 0) && FD_ISSET(i, rfd);
int w = (wfd != 0) && FD_ISSET(i, wfd);
int e = (efd != 0) && FD_ISSET(i, efd);
if (!r && !w && !e) continue;
if (is_socket(i)) {
if (r) {
FD_SET(i, (rp = &rs));
FD_CLR(i, rfd);
}
if (w) {
FD_SET(i, (wp = &ws));
FD_CLR(i, wfd);
}
if (e) {
FD_SET(i, (ep = &es));
FD_CLR(i, efd);
}
maxsock = i + 1;
socks++;
}
else {
nsocks += r + w + e;
}
}
}
if (!nsocks) {
/* sockets only */
return select(maxsock, rfd, wfd, efd, tv);
}
if (!socks) {
/* assuming non-socket fds are always ready */
return nsocks;
}
/* check if sockets are ready */
z.tv_sec = 0;
z.tv_usec = 0;
ret = select(maxsock, rp, wp, ep, &z);
if (ret <= 0) {
return nsocks;
}
/* copy set bits back */
for (i = 0; i < maxsock; ++i) {
if (rp && FD_ISSET(i, rp)) FD_SET(i, rfd);
if (wp && FD_ISSET(i, wp)) FD_SET(i, wfd);
if (ep && FD_ISSET(i, ep)) FD_SET(i, efd);
}
ret += nsocks;
return ret;
}
--
Nobu Nakada