6cb503998002 — flub@devork.be default tip 2 years ago
Added tag 0.3b3 for changeset 3ba75cf135b7
3ba75cf135b7 — flub@devork.be 0.3b3 2 years ago
Change source code location

Bitbucket is going down for mercurial.
Ignore EIO, ENOENT and ENOTDIR when checking cwd

If the current working directory is gone Solaris can also give an
ENOTDIR error.  In this case we need to hande this gracefully too,
just like ENOENT or EIO.

Fixes issue #24.
Handle zone names more safely on Solaris
Ignore psueo filesystems fdesc and devfs

Patch from issue #32.
Whitespace cleanup

Follow the python coding standard (ish).
Correct build failure on Darwin

This was a typo, patch from issue #31.
Fix bad address error on AIX if proc disappears

This fixes issue 30 using the patch supplied there.
Fix remote mounts

The test for recognising a remote mount was wrong and resulted in the
host attribute never being set.  This in turn meant that a remote
mount was always represented by a LocalMount instance.  Which in turn
broke the .refresh() logic since that only asks for remote mounts if
the instance is a RemoteMount, so it could not find the disk.  Finally
we should raise MissingResourceError if .frefresh() can no longer find
the mountpoint.

The detection of a remote mount could also be confused by having : in
the local path.  So we ensure that : occurs before the first /.
Improve behaviour in the face of disappearing processes

* On Linux it seems possible that the stat file is empty if the
  process disappeared between the open() call and the read() call.  In
  that case we did not handle some errors which would occur while
  parsing the stat file.

* Improve the process-is-gone detection, especially in the init stage
  of a Process instance.  Otherwise we will get random errors for a
  process which might simply no longer be around.  This is the
  introduction of psi_arch_check_pid() and it's use in process.c.

* Make procfs_check_pid take a const argument, it was a mistake it
  wasn't yet.
Tweak the range of processes to check

AIX has a process 0 which we'd rather skip, also increase the
pids searched.
Remove pointless check

It is actually possible to have a minor number higher then 99, no
idea where that number came from.
Small fix to selecting the PyCapsule API

Thanks to Cimarron Taylor for providing the patch.
No need for conditional, it will never be NULL
Correctly check for the error condition
Use the PyCapsule API on 2.7 and 3.1+

The PyCObject API was removed after an *very* short (pending)
deprecation cycle, which means we've been broken on Python 3.2
until now.
Accept EIO for PSI_STATUS_NA too

It seems Solaris can get messed up and give an EIO instead of ENOENT.
I think EIO shouldn't be caught really but practicality might have to
beat purity.
Allow the testapps to be run in a specific directory

And make use of that functionality in the cwd tests.  Solaris doesn't
like it when we're trying to remove the directory of python itself.
But it's fine when we do that for a testapp.
Re-organise top-level call to be more consistent

By always checking if the process still exists on an error at the top
level we make things more consistent and no longer need to do this
check in various places.