mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-28 07:12:30 -05:00
81 lines
1.6 KiB
Diff
81 lines
1.6 KiB
Diff
|
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=636512
|
||
|
|
||
|
From: Svante Signell <srs@kth.se>
|
||
|
Subject: acl: Fix FTBFS on hurd-i386
|
||
|
Date: Wed, 03 Aug 2011 19:36:27 +0200
|
||
|
|
||
|
Currently acl does not compile on hurd-i386. The problem is a PATH_MAX
|
||
|
definition which is not supported on GNU/Hurd.
|
||
|
|
||
|
Index: acl-2.2.52/setfacl/parse.c
|
||
|
===================================================================
|
||
|
--- acl-2.2.52/setfacl/parse.c
|
||
|
+++ acl-2.2.52/setfacl/parse.c
|
||
|
@@ -419,7 +419,13 @@ read_acl_comments(
|
||
|
bytes for "# file: ". Not a good solution but for now it is the
|
||
|
best I can do without too much impact on the code. [tw]
|
||
|
*/
|
||
|
+
|
||
|
+#ifdef __GNU__
|
||
|
+ char *linebuf;
|
||
|
+ size_t dummy = 0;
|
||
|
+#else
|
||
|
char linebuf[(4*PATH_MAX)+9];
|
||
|
+#endif
|
||
|
char *cp;
|
||
|
char *p;
|
||
|
int comments_read = 0;
|
||
|
@@ -449,9 +455,13 @@ read_acl_comments(
|
||
|
if (line)
|
||
|
(*line)++;
|
||
|
|
||
|
+#ifdef __GNU__
|
||
|
+ if (getline(&linebuf, &dummy, file) == -1)
|
||
|
+ break;
|
||
|
+#else
|
||
|
if (fgets(linebuf, sizeof(linebuf), file) == NULL)
|
||
|
break;
|
||
|
-
|
||
|
+#endif
|
||
|
comments_read = 1;
|
||
|
|
||
|
p = strrchr(linebuf, '\0');
|
||
|
@@ -473,7 +483,12 @@ read_acl_comments(
|
||
|
goto fail;
|
||
|
*path_p = (char*)malloc(strlen(cp)+1);
|
||
|
if (!*path_p)
|
||
|
+ {
|
||
|
+#ifdef __GNU__
|
||
|
+ free (linebuf);
|
||
|
+#endif
|
||
|
return -1;
|
||
|
+ }
|
||
|
strcpy(*path_p, cp);
|
||
|
}
|
||
|
} else if (strncmp(cp, "owner:", 6) == 0) {
|
||
|
@@ -522,13 +537,24 @@ read_acl_comments(
|
||
|
}
|
||
|
}
|
||
|
if (ferror(file))
|
||
|
+ {
|
||
|
+#ifdef __GNU__
|
||
|
+ free (linebuf);
|
||
|
+#endif
|
||
|
return -1;
|
||
|
+ }
|
||
|
+#ifdef __GNU__
|
||
|
+ free (linebuf);
|
||
|
+#endif
|
||
|
return comments_read;
|
||
|
fail:
|
||
|
if (path_p && *path_p) {
|
||
|
free(*path_p);
|
||
|
*path_p = NULL;
|
||
|
}
|
||
|
+#ifdef __GNU__
|
||
|
+ free (linebuf);
|
||
|
+#endif
|
||
|
return -EINVAL;
|
||
|
}
|
||
|
|