[Bug 969032] Re: Python os module lacks the chflags/lchflags methods
Tim Landscheidt
tim at tim-landscheidt.de
Tue Mar 29 01:08:55 UTC 2016
I ran into this today and thought I'd share what I learned.
The syscall chflags does not exist in Linux, so when compiling Python it
notices this and does not provide os.chflags().
chattr(1) on the other hand uses an ioctl() of EXT2_IOC_SETFLAGS to set
the attributes (e2fsprogs-1.42.13's lib/e2p/fsetflags.c):
| fd = open (name, OPEN_FLAGS);
| if (fd == -1)
| return -1;
| f = (int) flags;
| r = ioctl (fd, EXT2_IOC_SETFLAGS, &f);
| if (r == -1)
| save_errno = errno;
| close (fd);
So you could (instead of executing chattr(1)) call Python's
fcntl.ioctl() to perform that action.
It would probably be very nice if Python's os.chflags() would DWIM (and
if someone brings this to Python please report here), but on the other
hand I can also understand the paradigm to keep low-level functions
"dumb", i. e. a function where the user expects that a simple syscall is
made should only do that and nothing more.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to python2.7 in Ubuntu.
https://bugs.launchpad.net/bugs/969032
Title:
Python os module lacks the chflags/lchflags methods
Status in python2.7 package in Ubuntu:
Invalid
Bug description:
Reading http://docs.python.org/library/os.html#os.stat , I noticed
that on Linux the "flags" or "chattr" features have a Python interface
since version 2.6.
However, on up-to-date Precise (Python 2.7.3rc2) and Oneiric (Python
Python 2.7.2+), the following commands :
import os
os.chflags
report "AttributeError" in a Python shell. Grepping in
/usr/lib/python2.7, the only reference to "chflags" is in the
`shutil.py` file which just checks if the python method is present or
not.
As the system interface is OK (I can successfully use "chattr" and
"lsattr" in the shell on both Ubuntu versions, and historically this
features has been present since I started using Linux), I think the
"flags" part of the Python distribution should be activated on Ubuntu.
Currently I need this feature in my Python application to see if some
files have the IMMUTABLE or APPEND flag, but generally speaking I
can't see any good reason why this feature is not active while beeing
part of the standard Python distribution.
regards,
--
Olivier
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/969032/+subscriptions
More information about the foundations-bugs
mailing list