Work around apparent bug in lsof 4.88's -F output format.
This commit is contained in:
parent
03edf308a3
commit
63fa5c0782
4 changed files with 54 additions and 5 deletions
|
@ -93,11 +93,15 @@ parseFormatted s = bundle $ go [] $ lines s
|
||||||
_ -> parsefail
|
_ -> parsefail
|
||||||
|
|
||||||
parsefiles c [] = (c, [])
|
parsefiles c [] = (c, [])
|
||||||
parsefiles c (l:ls) = case splitnull l of
|
parsefiles c (l:ls) = parsefiles' c (splitnull l) l ls
|
||||||
['a':mode, 'n':file, ""] ->
|
|
||||||
|
parsefiles' c ['a':mode, 'n':file, ""] _ ls =
|
||||||
parsefiles ((file, parsemode mode):c) ls
|
parsefiles ((file, parsemode mode):c) ls
|
||||||
(('p':_):_) -> (c, l:ls)
|
parsefiles' c (('p':_):_) l ls = (c, l:ls)
|
||||||
_ -> parsefail
|
-- Some buggy versions of lsof emit a f field
|
||||||
|
-- that was not requested, so ignore it.
|
||||||
|
parsefiles' c (('f':_):rest) l ls = parsefiles' c rest l ls
|
||||||
|
parsefiles' _ _ _ _ = parsefail
|
||||||
|
|
||||||
parsemode ('r':_) = OpenReadOnly
|
parsemode ('r':_) = OpenReadOnly
|
||||||
parsemode ('w':_) = OpenWriteOnly
|
parsemode ('w':_) = OpenWriteOnly
|
||||||
|
|
1
debian/changelog
vendored
1
debian/changelog
vendored
|
@ -6,6 +6,7 @@ git-annex (5.20141126) UNRELEASED; urgency=medium
|
||||||
* proxy: New command for direct mode repositories, allows bypassing
|
* proxy: New command for direct mode repositories, allows bypassing
|
||||||
the direct mode guard in a safe way to do all sorts of things
|
the direct mode guard in a safe way to do all sorts of things
|
||||||
including git revert, git mv, git checkout ...
|
including git revert, git mv, git checkout ...
|
||||||
|
* Work around apparent bug in lsof 4.88's -F output format.
|
||||||
* Debian package is now maintained by Gergely Nagy.
|
* Debian package is now maintained by Gergely Nagy.
|
||||||
|
|
||||||
-- Joey Hess <joeyh@debian.org> Mon, 10 Nov 2014 15:31:55 -0400
|
-- Joey Hess <joeyh@debian.org> Mon, 10 Nov 2014 15:31:55 -0400
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
lsof got updated to version 4.88 some days ago (in archlinux) and since then the assistant reports the Committer crashed while parsing lsof output.
|
lsof got updated to version 4.88 some days ago (in archlinux) and since then the assistant reports the Committer crashed while parsing lsof output.
|
||||||
|
|
||||||
After reverting to the previous version (4.87), it's working fine.
|
After reverting to the previous version (4.87), it's working fine.
|
||||||
|
|
||||||
|
> [[fixed|done]] --[[Joey]]
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
[[!comment format=mdwn
|
||||||
|
username="joey"
|
||||||
|
subject="""comment 3"""
|
||||||
|
date="2014-11-12T21:27:48Z"
|
||||||
|
content="""
|
||||||
|
|
||||||
|
cat > ~/tmp/dir/foo &
|
||||||
|
lsof -F0can +d ~/tmp/dir
|
||||||
|
|
||||||
|
Old:
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
p15304^@ccat^@
|
||||||
|
aw^@n/home/joey/tmp/dir/foo^@
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
New:
|
||||||
|
|
||||||
|
</pre>
|
||||||
|
p15304^@ccat^@
|
||||||
|
f1^@aw^@n/home/joey/tmp/dir/foo^@
|
||||||
|
p15399^@clsof^@
|
||||||
|
f1^@aw^@npipe^@
|
||||||
|
f4^@aw^@npipe^@
|
||||||
|
f5^@ar^@npipe^@
|
||||||
|
p15401^@cless^@
|
||||||
|
f0^@ar^@npipe^@
|
||||||
|
p15402^@clsof^@
|
||||||
|
f3^@ar^@npipe^@
|
||||||
|
f6^@aw^@npipe^@
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
It looks like the new lsof has broken/changed -F; the file descriptor field
|
||||||
|
is being showed even though -F0can does not request it.
|
||||||
|
|
||||||
|
IMHO this is a bug in lsof.
|
||||||
|
|
||||||
|
Additionally, the new lsof shows processes that have open pipes, even
|
||||||
|
when it's been asked to show only files under a given directory.
|
||||||
|
|
||||||
|
I've reported these problems upstream. Easy enough to work around in git-annex's parser.
|
||||||
|
"""]]
|
Loading…
Reference in a new issue