Package: libsvg
Version: 0.1.4
Severity: important
Tags: patch
libsvg fails to build on Hurd. There is no MAXPATHLEN in Hurd, because Hurd
doesn't impose path length limitations.
Please see failed build log:
http://buildd.debian-ports.org/fetch.php?&pkg=libsvg&ver=0.1.4-2&arch=hurd-i386&stamp=1191625588&file=log&as=raw
Patch attached below to correct this.
-- System Information:
Debian Release: lenny/sid
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: hurd-i386 (i686-AT386)
Kernel: GNU-Mach 1.3.99/Hurd-0.3
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
--- orig/libsvg-0.1.4/src/svg.c 2008-05-05 20:01:05.000000000 +0000
+++ libsvg-0.1.4/src/svg.c 2008-05-05 20:25:10.890000000 +0000
@@ -206,7 +206,13 @@
void *closure)
{
svg_status_t status;
- char orig_dir[MAXPATHLEN];
+ char* orig_dir = NULL;
+#ifndef __GLIBC__
+ long pathmax = pathconf("/", _PC_PATH_MAX);
+
+ if (pathmax < 0) /* unlimited path length */
+ pathmax = 1024;
+#endif
if (svg->group_element == NULL)
return SVG_STATUS_SUCCESS;
@@ -216,13 +222,27 @@
directory -- at least I'll be nice about it and restore it
afterwards. */
- getcwd (orig_dir, MAXPATHLEN);
+#ifdef __GLIBC__
+ orig_dir = getcwd (NULL, 0);
+#else
+ orig_dir = (char *) malloc (pathmax);
+#endif
+
+ if (orig_dir == NULL)
+ return SVG_STATUS_NO_MEMORY;
+
+#ifndef __GLIBC__
+ getcwd (orig_dir, pathmax);
+#endif
+
chdir (svg->dir_name);
status = svg_element_render (svg->group_element, engine, closure);
chdir (orig_dir);
+ free(orig_dir);
+
return status;
}