X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fchown.c;h=1d3346d364a3f8d69670e1d96c768dc844d8b04b;hb=dd75e5195b7dd54409ae93873c8dd49036626a28;hp=4e390a81d350fac68e493872465f6dc25afb33ce;hpb=35e346ee4a42b8e53fdfe5c3faf91201d918e785;p=gnulib.git diff --git a/lib/chown.c b/lib/chown.c index 4e390a81d..1d3346d36 100644 --- a/lib/chown.c +++ b/lib/chown.c @@ -24,7 +24,7 @@ # include #endif -/* FIXME. */ +/* FIXME: describe. */ int chown (file, gid, uid) @@ -34,8 +34,17 @@ chown (file, gid, uid) { if (gid == (gid_t) -1 || uid == (uid_t) -1) { - /* Stat file to get id(s) that will remain unchanged. */ - FIXME + struct stat file_stats; + + /* Stat file to get id(s) that should remain unchanged. */ + if (stat (file, &file_stats)) + return 1; + + if (gid == (gid_t) -1) + gid = file_stats.st_gid; + + if (uid == (uid_t) -1) + uid = file_stats.st_uid; } #undef chown