Daniel Holth added the comment:

On Thu, Feb 26, 2015, at 09:41 AM, Paul Moore wrote:
> 
> Paul Moore added the comment:
> 
> Following on from that, the code to make an archive executable is
> currently
> 
> os.chmod(new_archive, os.stat(new_archive).st_mode | stat.S_IEXEC)
> 
> Should I use "... | stat.S_IXUSR | stat.S_IXGRP | stat.S_IXOTH"? If so,
> do I need to protect that with an "if not Windows" test? (I've tested the
> existing code and it does nothing on Windows, so I omitted the test at
> the moment). Is there any *other* way I should be making a file
> executable on Unix?
> 
> (Side note: Maybe there should be an os.make_executable(pathname) or
> similar that does the right thing in a cross-platform way?)

The chmod + umask analog that will work not just on a newly created file
is

umask = os.umask(0) # must change umask to get umask

os.umask(umask) # restore previous umask

os.chmod(new_archive, os.stat(new_archive).st_mode |
((stat.stat.S_IXUSR|stat.S_IXGRP|stat.S_IXOTH) & ~umask))

If I understand the man page correctly, "chmod +x filename" does exactly
the above. Depending on the umask the command may or may not create a
world / group / user executable file.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue23491>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to