Loading...
emulated/lchflags.c Libc-1725.40.4 Libc-498
--- Libc/Libc-1725.40.4/emulated/lchflags.c
+++ Libc/Libc-498/emulated/lchflags.c
@@ -30,9 +30,15 @@
 int
 lchflags(const char *path, unsigned int flags)
 {
-	struct attrlist a = {
-		.bitmapcount = ATTR_BIT_MAP_COUNT,
-		.commonattr = ATTR_CMN_FLAGS
-	};
+	struct stat s;
+	struct attrlist a;
+
+	if(lstat(path, &s) < 0)
+		return -1;
+	if((s.st_mode & S_IFMT) != S_IFLNK)
+		return chflags(path, flags);
+	bzero(&a, sizeof(a));
+	a.bitmapcount = ATTR_BIT_MAP_COUNT;
+	a.commonattr = ATTR_CMN_FLAGS;
 	return setattrlist(path, &a, &flags, sizeof(unsigned int), FSOPT_NOFOLLOW);
 }