From: Stas B. <sta...@gm...> - 2013-08-22 18:49:08
|
Eric Schulte <sch...@gm...> writes: > SBCL build with the attached patch fixes this bug on my system. > > >>From 940504fb930ad823cfdf9cf8061fda49a4efaecb Mon Sep 17 00:00:00 2001 > From: Eric Schulte <sch...@gm...> > Date: Thu, 22 Aug 2013 09:32:01 -0600 > Subject: [PATCH] use readlink to find pipe files when realpath fails > > The fix only impacts runtime behavior when the call to realpath fails > to find an existing file. In this case before failing readlink is > called, and if a pipe is found in the file location, then the location > of the original file is returned by (query-file-system * :truename). > > With this change `open' may be called on pipe file handles. This > fixes errors trying to read from /proc/self/fd/* file handles on Linux > systems, e.g. as generated by command line redirects. This (string= (subseq (sb!unix:unix-readlink filename) 0 4) "pipe") is both wasteful (copying the sequence) and incorrect (if the string length is less than 4). (and (>= (length string) 4) (string= string "pipe" :end1 4)) solves this. -- With best regards, Stas. |