Unfortunately, I don't have a means at the moment to try out potential
fixes.  If you have something that appears to fix the problem, then go
ahead and commit the fix and we can adjust as needed.

Rick

On Fri, Nov 11, 2011 at 11:27 AM, Jean-Louis Faucher
<jfaucher...@gmail.com> wrote:
> ok.
> on my side I don't plan to commit in trunk, was just an experimentation.
> I prefer to leave you decide what to do :-)
>
> Jean-Louis
>
> 2011/11/11 Rick McGuire <object.r...@gmail.com>
>>
>> I was looking at something similar, but my Linux system is castors up
>> at the moment, so I haven't really been able to test anything.  I'm
>> not totally comfortable with the isDevice() test just being commented
>> out.  I think this should be "if (write_only || fileInfo.isDevice())"
>> rather than just being an unconditional.  It would be wrong to open
>> any stream as write only if the options were requesting otherwise.
>>
>> Rick
>>
>> On Fri, Nov 11, 2011 at 11:08 AM, Jean-Louis Faucher
>> <jfaucher...@gmail.com> wrote:
>> > The problem comes from
>> > StreamNative.cpp
>> > const char *StreamInfo::streamOpen(const char *options)
>> > When the O_WRONLY flag is set, ooRexx tries read-write first,
>> > but does not fallback to write-only in case of failure (limited to
>> > device)
>> > After replacing the test isDevice() by true, the open is ok, but...
>> > another problem in this method, when testing if the last character is
>> > ctrl_z.
>> > Since the handle is write-only, the attempt to read the last character
>> > fails
>> > and notReadyError is called.
>> > Fixed by not testing if ctrl_z when write-only.
>> > The same workaround for ctrl_z must be done in
>> > StreamInfo::implicitOpen
>> > StreamInfo::handleOpen
>> > Tested under MacOs, looks good.
>> > Not tested under Linux or Windows.
>> > Not sure if I break something by not testing ctrl_z... For me, ctrl_z is
>> > Windows specific, no ? is the write-only mode supported under Windows ?
>> > Jean-Louis
>> > ---------- Forwarded message ----------
>> > From: <jfauc...@users.sourceforge.net>
>> > Date: 2011/11/11
>> > Subject: [Oorexx-svn] SF.net SVN: oorexx:[7286]
>> > sandbox/jlf/trunk/interpreter/streamLibrary/ StreamNative.cpp
>> > To: oorexx-...@lists.sourceforge.net
>> >
>> >
>> > Revision: 7286
>> >          http://oorexx.svn.sourceforge.net/oorexx/?rev=7286&view=rev
>> > Author:   jfaucher
>> > Date:     2011-11-11 16:04:41 +0000 (Fri, 11 Nov 2011)
>> > Log Message:
>> > -----------
>> > A possible fix for bug 3274050 (to discuss on the dev list)
>> >
>> > Modified Paths:
>> > --------------
>> >    sandbox/jlf/trunk/interpreter/streamLibrary/StreamNative.cpp
>> >
>> > Modified: sandbox/jlf/trunk/interpreter/streamLibrary/StreamNative.cpp
>> > ===================================================================
>> > --- sandbox/jlf/trunk/interpreter/streamLibrary/StreamNative.cpp
>> >  2011-11-11 04:23:38 UTC (rev 7285)
>> > +++ sandbox/jlf/trunk/interpreter/streamLibrary/StreamNative.cpp
>> >  2011-11-11 16:04:41 UTC (rev 7286)
>> > @@ -632,6 +632,8 @@
>> >             // position at the end, and set the write position
>> >             setPosition(size(), charWritePosition);
>> >
>> > +            if (!write_only)
>> > +            {
>> >             char   char_buffer;
>> >             size_t bytesRead;
>> >             // read the last character of the buffer.
>> > @@ -651,6 +653,7 @@
>> >                 /* explicitly set the position       */
>> >                 setPosition(charWritePosition, charWritePosition);
>> >             }
>> > +            }
>> >         }
>> >         lineWritePosition = 0;
>> >         lineWriteCharPosition = 0;
>> > @@ -793,6 +796,8 @@
>> >             // position at the end, and set the write position
>> >             setPosition(size(), charWritePosition);
>> >
>> > +            if (!write_only)
>> > +            {
>> >             char   char_buffer;
>> >             size_t bytesRead;
>> >             // read the last character of the buffer.
>> > @@ -812,6 +817,7 @@
>> >                 /* explicitly set the position       */
>> >                 setPosition(charWritePosition, charWritePosition);
>> >             }
>> > +            }
>> >         }
>> >         // set default line positioning
>> >         lineWritePosition = 0;
>> > @@ -2384,7 +2390,8 @@
>> >     {
>> >         // if this is some sort of device, it might be output only
>> > (i.e., a
>> >         // printer).  Try opening again write only
>> > -        if (fileInfo.isDevice())
>> > +        // bug 3274050 : no longer limited to device, a regular file
>> > can
>> > have write-only permissions
>> > +        if (true /*fileInfo.isDevice()*/)
>> >         {
>> >             if (!open(WR_CREAT, S_IWRITE, shared))
>> >             {
>> > @@ -2428,6 +2435,8 @@
>> >             // position at the end, and set the write position
>> >             setPosition(size(), charWritePosition);
>> >
>> > +            if (!write_only)
>> > +            {
>> >             char   char_buffer;
>> >             size_t bytesRead;
>> >             // read the last character of the buffer.
>> > @@ -2447,6 +2456,7 @@
>> >                 /* explicitly set the position       */
>> >                 setPosition(charWritePosition, charWritePosition);
>> >             }
>> > +            }
>> >         }
>> >         /* set default line positioning      */
>> >         lineWritePosition = 0;
>> >
>> > This was sent by the SourceForge.net collaborative development platform,
>> > the
>> > world's largest Open Source development site.
>> >
>> >
>> >
>> > ------------------------------------------------------------------------------
>> > RSA(R) Conference 2012
>> > Save $700 by Nov 18
>> > Register now
>> > http://p.sf.net/sfu/rsa-sfdev2dev1
>> > _______________________________________________
>> > Oorexx-svn mailing list
>> > oorexx-...@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/oorexx-svn
>> >
>> >
>> >
>> > ------------------------------------------------------------------------------
>> > RSA(R) Conference 2012
>> > Save $700 by Nov 18
>> > Register now
>> > http://p.sf.net/sfu/rsa-sfdev2dev1
>> > _______________________________________________
>> > Oorexx-devel mailing list
>> > Oorexx-devel@lists.sourceforge.net
>> > https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>> >
>> >
>>
>>
>> ------------------------------------------------------------------------------
>> RSA(R) Conference 2012
>> Save $700 by Nov 18
>> Register now
>> http://p.sf.net/sfu/rsa-sfdev2dev1
>> _______________________________________________
>> Oorexx-devel mailing list
>> Oorexx-devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>
> ------------------------------------------------------------------------------
> RSA(R) Conference 2012
> Save $700 by Nov 18
> Register now
> http://p.sf.net/sfu/rsa-sfdev2dev1
> _______________________________________________
> Oorexx-devel mailing list
> Oorexx-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/oorexx-devel
>
>

------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to