[PATCH] kdesu on freebsd
Adriaan de Groot
adridg at cs.kun.nl
Wed Sep 24 18:53:44 BST 2003
The attached patch (against kdelibs/kdesu in HEAD) tries to fix kdesu on
FreeBSD and do a little cleanup at the same time.
First off, the problem: kdesu parses su's output and looks for a : in the
output, assuming that is the : at the end of the password prompt. This fails
in FreeBSD, where su can output
su: you are not in the correct group (wheel) to su root.
It can even just print "su:" and buffer the rest of the error message for the
next read from the pipe/pty. Ugh.
The result is that lots of kdesu's while(1) loops can hang forever, in
particular when su dies with an error exit and kdesu doesn't realize it.
The solution (bits): split out some of the wait and check process code into
separate functions. I've added them to process.h, for want of a better place.
Since that's a public header file, this may not be a good idea, but doing it
differently would require adding a file.
kdesu should check that su: is still running when it expects it to.
In su.{h,cpp}, I've replaced some integer constants by enums, in order to
create some clarity in the forest of 0,1,2,-2,-1, etc. constants being thrown
around.
Ugh, I see I've left in debugging statements. Well, consider this a patch for
review then, and I'll clean it up for commit.
--
pub 1024D/FEA2A3FE 2002-06-18 Adriaan de Groot <groot at kde.org>
Key fingerprint = 934E 31AA 80A7 723F 54F9 50ED 76AC EE01 FEA2 A3FE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: kdesu.diff
Type: text/x-diff
Size: 10153 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20030924/73e58886/attachment.diff>
More information about the kde-core-devel
mailing list