Hi,

please apply the patch from Samuel Thibault to build libao on hurd-i386.
Don't wait for the next upstream release, because it prevent xmms2 to
build on hurd-i386. Attached the debdiff. Apply this to the package and
add a new changelog entry.

Please let me know, if I should do a NMU instead.

-- 
Benjamin Drung
Ubuntu Developer (www.ubuntu.com) | Debian Maintainer (www.debian.org)
diff -u libao-0.8.8/debian/patches/series libao-0.8.8/debian/patches/series
--- libao-0.8.8/debian/patches/series
+++ libao-0.8.8/debian/patches/series
@@ -1,0 +2 @@
+path-max.patch
only in patch2:
unchanged:
--- libao-0.8.8.orig/debian/patches/path-max.patch
+++ libao-0.8.8/debian/patches/path-max.patch
@@ -0,0 +1,114 @@
+Description: Fix FTBFS on hurd-i386
+Author: Samuel Thibault <samuel.thiba...@ens-lyon.org>
+
+--- ./src/audio_out.c.orig	2009-03-31 21:54:58.650000000 +0100
++++ ./src/audio_out.c	2009-03-31 21:57:00.040000000 +0100
+@@ -253,7 +253,6 @@
+ 	struct dirent *plugin_dirent;
+ 	char *ext;
+ 	struct stat statbuf;
+-	char fullpath[PATH_MAX];
+ 	DIR *plugindir;
+ 	driver_list *plugin;
+ 	driver_list *driver = end;
+@@ -262,7 +261,8 @@
+ 	plugindir = opendir(AO_PLUGIN_PATH);
+ 	if (plugindir != NULL) {
+ 		while ((plugin_dirent = readdir(plugindir)) != NULL) {
+-			snprintf(fullpath, PATH_MAX, "%s/%s", 
++			char fullpath[strlen(AO_PLUGIN_PATH) + 1 + strlen(plugin_dirent->d_name) + 1];
++			snprintf(fullpath, sizeof(fullpath), "%s/%s", 
+ 				 AO_PLUGIN_PATH, plugin_dirent->d_name);
+ 			if (!stat(fullpath, &statbuf) && 
+ 			    S_ISREG(statbuf.st_mode) && 
+--- ./src/plugins/pulse/ao_pulse.c.orig	2009-03-31 21:58:00.050000000 +0100
++++ ./src/plugins/pulse/ao_pulse.c	2009-03-31 22:05:08.230000000 +0100
+@@ -71,7 +71,7 @@
+ }
+ 
+ int ao_plugin_test(void) {
+-    char p[PATH_MAX], t[256], t2[256];
++    char *p, t[256], t2[256];
+     const char *fn;
+     struct pa_simple *s;
+     static const struct pa_sample_spec ss = {
+@@ -79,17 +79,32 @@
+         .rate = 44100,
+         .channels = 2
+     };
++    size_t allocated = 128;
+ 
+     disable_sigpipe();
+     
+     if (getenv("PULSE_SERVER") || getenv("PULSE_SINK"))
+         return 1;
+ 
+-    if ((fn = pa_get_binary_name(p, sizeof(p)))) {
+-        snprintf(t, sizeof(t), "libao[%s]", fn);
+-        snprintf(t2, sizeof(t2), "libao[%s] test", fn);
+-    }
++    while (1) {
++        p = pa_xmalloc(allocated);
++
++        if (!(fn = pa_get_binary_name(p, allocated))) {
++            pa_xfree(p);
++            break;
++        }
++
++        if (fn != p || strlen(p) < allocated - 1) {
++            snprintf(t, sizeof(t), "libao[%s]", fn);
++            snprintf(t2, sizeof(t2), "libao[%s] playback stream", fn);
++            break;
++        }
+ 
++        pa_xfree(p);
++        allocated *= 2;
++    }
++    pa_xfree(p);
++    
+     if (!(s = pa_simple_new(NULL, fn ? t : "libao", PA_STREAM_PLAYBACK, NULL, fn ? t2 : "libao test", &ss, NULL, NULL, NULL)))
+         return 0;
+ 
+@@ -136,10 +151,11 @@
+ }
+ 
+ int ao_plugin_open(ao_device *device, ao_sample_format *format) {
+-    char p[PATH_MAX], t[256], t2[256];
++    char *p, t[256], t2[256];
+     const char *fn = NULL;
+     ao_pulse_internal *internal;
+     struct pa_sample_spec ss;
++    size_t allocated = 128;
+ 
+     assert(device && device->internal && format);
+ 
+@@ -160,11 +176,25 @@
+ 
+     disable_sigpipe();
+ 
+-    if (pa_get_binary_name(p, sizeof(p))) {
+-        fn = pa_path_get_filename(p);
+-        snprintf(t, sizeof(t), "libao[%s]", fn);
+-        snprintf(t2, sizeof(t2), "libao[%s] playback stream", fn);
++    while (1) {
++        p = pa_xmalloc(allocated);
++
++        if (!(fn = pa_get_binary_name(p, allocated))) {
++            pa_xfree(p);
++            break;
++        }
++
++        if (fn != p || strlen(p) < allocated - 1) {
++            fn = pa_path_get_filename(fn);
++            snprintf(t, sizeof(t), "libao[%s]", fn);
++            snprintf(t2, sizeof(t2), "libao[%s] playback stream", fn);
++            break;
++        }
++
++        pa_xfree(p);
++        allocated *= 2;
+     }
++    pa_xfree(p);
+     
+     if (!(internal->simple = pa_simple_new(internal->server, fn ? t : "libao", PA_STREAM_PLAYBACK, internal->sink, fn ? t2 : "libao playback stream", &ss, NULL, NULL, NULL)))
+         return 0;

Attachment: signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil

Reply via email to