X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Funlink.c;h=fdd5565fef09ced6c1a427c3616e22ea4fb9c89a;hb=bbfcd2f1a92c9bdbb8d7d7d0a8a8c6665c316747;hp=5585158887384c8488a02d69247963c1cde549cc;hpb=441aa3044f43e5572f58c354f01e6bc070acd5c7;p=gnulib.git diff --git a/lib/unlink.c b/lib/unlink.c index 558515888..fdd5565fe 100644 --- a/lib/unlink.c +++ b/lib/unlink.c @@ -1,6 +1,6 @@ /* Work around unlink bugs. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009-2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,6 +24,8 @@ #include #include +#include "dosname.h" + #undef unlink /* Remove file NAME. @@ -80,6 +82,16 @@ rpl_unlink (char const *name) } } if (!result) - result = unlink (name); + { +#if UNLINK_PARENT_BUG + if (len >= 2 && name[len - 1] == '.' && name[len - 2] == '.' + && (len == 2 || ISSLASH (name[len - 3]))) + { + errno = EISDIR; /* could also use EPERM */ + return -1; + } +#endif + result = unlink (name); + } return result; }