summaryrefslogtreecommitdiff
path: root/audio/vorbis-tools
diff options
context:
space:
mode:
authorTrevor Johnson <trevor@FreeBSD.org>2001-04-09 23:26:47 +0000
committerTrevor Johnson <trevor@FreeBSD.org>2001-04-09 23:26:47 +0000
commit4b1eb71e81192cd15b5103e48c22796257a065aa (patch)
treef1d040a101810f6b24b81a4ff7c6df71a69e0e3d /audio/vorbis-tools
parentPrepend %%PORTDOCS%% were needed. (diff)
Add forgotten patch file.
Submitted by: maintainer
Notes
Notes: svn path=/head/; revision=41154
Diffstat (limited to 'audio/vorbis-tools')
-rw-r--r--audio/vorbis-tools/files/patch-ogg123_buffer.c66
1 files changed, 66 insertions, 0 deletions
diff --git a/audio/vorbis-tools/files/patch-ogg123_buffer.c b/audio/vorbis-tools/files/patch-ogg123_buffer.c
new file mode 100644
index 000000000000..9c89a82719de
--- /dev/null
+++ b/audio/vorbis-tools/files/patch-ogg123_buffer.c
@@ -0,0 +1,66 @@
+$FreeBSD$
+--- ogg123/buffer.c.orig Tue Jan 30 11:42:48 2001
++++ ogg123/buffer.c Sat Mar 17 17:12:02 2001
+@@ -6,17 +6,16 @@
+ */
+
+ #include <sys/types.h>
++#if HAVE_SMMAP
++#include <sys/mman.h>
++#else
+ #include <sys/ipc.h>
+ #include <sys/shm.h>
+-#include <sys/stat.h>
++#endif
+ #include <sys/time.h>
+ #include <unistd.h> /* for fork and pipe*/
+ #include <fcntl.h>
+
+-#ifndef DARWIN
+-#include <malloc.h>
+-#endif
+-
+ #include "ogg123.h"
+ #include "buffer.h"
+
+@@ -73,10 +72,26 @@ buf_t *fork_writer (long size, devices_t
+ int childpid;
+ buf_t *buf;
+
++#if HAVE_SMMAP
++ int fd;
++
++ if ((fd = open("/dev/zero", O_RDWR)) < 0)
++ {
++ perror ("cannot open /dev/zero");
++ exit (1);
++ }
++ if ((buf = (buf_t *) mmap (0, sizeof(buf_t) + sizeof (chunk_t) * (size - 1),
++ PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) < 0)
++ {
++ perror("mmap");
++ exit(1);
++ }
++ close(fd);
++#else
+ /* Get the shared memory segment. */
+ int shmid = shmget (IPC_PRIVATE,
+ sizeof(buf_t) + sizeof (chunk_t) * (size - 1),
+- IPC_CREAT|S_IREAD|S_IWRITE);
++ IPC_CREAT|SHM_R|SHM_W);
+
+ if (shmid == -1)
+ {
+@@ -92,7 +107,11 @@ buf_t *fork_writer (long size, devices_t
+ perror ("shmat");
+ exit (1);
+ }
+-
++
++ /* Remove segment after last process detaches it or terminates. */
++ shmctl(shmid, IPC_RMID, 0);
++#endif /* HAVE_SMMAP */
++
+ buffer_init (buf, size);
+
+ /* Create a pipe for communication between the two processes. Unlike