This is the mail archive of the mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: ksh on cygwin

> >I know about that.
> Ok.  Then that's the way to go.  Just follow the procedures in
> .  If your fix is big you'll 
> need to fill
> out an assignment form as that web page mentions.

It's a whole bunch of small fixes. I think I need to fill out the assignment form.
Is it OK to send patches to 1.3.3-2 or should I move them to 1.3.6 first?

> >So can we get down to discuss my fixes now?
> If you want to start a discussion, then... start it.  You don't need
> permission to begin.
> It would be nice if, before you start making observations or 
> suggesting
> fixes, you checked the mailing list archives to see if you 
> are covering
> old ground or not.

I think I've done that thoroughly enough.
I've done some fixes to mmap() that might be superseded by other patches now. I haven't checked this yet.

> Also be advised that we can't break backwards compatibility 
> in the DLL.

That's one of the reasons I haven't been coming up with my patches until now. I wanted to test it carefully.

> If you provide patches, small well-defined ones are the best. 
>  Long patches
> which do many different things are less likely to be 
> inspected or accepted.

They're quite small.

> And, if you are really going to be engaged in a discussion 
> you probably should
> subscribe to the cygwin mailing list.  I don't think we're 
> going to be able
> to remember to include your two email addresses in every 
> response to you.


I'll give a short summary of what I've fixed:

- pathconf() doesn't check existance of the path
- getpagesize() should return a value compatible with mmap(), that is dwAllocGranularity (65536) instead of dwPageSize (1024).
- use .exe extension detection consequently in all syscalls
- automatically add the .exe extension to a newly created file on close() when the first four bytes are 0x4d, 0x5a, 0x90, 0x00 (MS Executable magic bytes) and the file name didn't have an extension already. (This is from UWIN, I think it's really nice).
- exec*() functions would always invoke a /bin/sh on a file that isn't a valid executable. Only execlp()/execvp() should do so, others must return with an ENOEXEC.
- the exec*() fix revealed a bug with vfork() in ash
- use the contents of $SHELL instead of /bin/sh for execvp()/execlp() and system() (with some additional checks, e.g. do not use a csh, use only 'trusted' shells from /bin, /usr/bin, /usr/local/bin etc.). This allows the user to select his favorite shell manually, so no more "copy /bin/bash to /bin/sh" troubles. (This is also from UWIN).
- some mmap() problems have been fixed.
- utime() doesn't mark st_ctime for update

Does this sound OK for you, especially the UWIN things I'm mimicing?


Unsubscribe info:
Bug reporting:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]