FreeBSD Port: pornview-0.2.0.p.1

Erik Trulsson ertr1013 at student.uu.se
Sat May 17 06:18:35 PDT 2003


On Sat, May 17, 2003 at 03:05:49PM +0200, Erik Trulsson wrote:
> On Sat, May 17, 2003 at 01:36:18PM +0100, Jonathan Belson wrote:
> > Kris Kennaway wrote:
> > >The package builds currently fail on 4.x:
> > >
> > >http://bento.freebsd.org/errorlogs/i386-4-latest/pornview-0.2.0.p.1_1.log
> > >
> > >Your workaround does not sound like a solution though.  stdin et al
> > >are defined for a reason ;-)
> > 
> > The problem is in the following structure:
> > 
> > struct ChildContext_Tag
> > {
> > 	...blah...
> >     int     stdout_fd;
> >     int     stderr_fd;
> >     int     stdin_fd;
> 
> That part of the structure is not the problem.  The next part of this
> structure is the problem.
> 
>     gchar   stdout[GTK_MPLAYER_BUF_SIZE];
>     gint    stdout_size;
>     gchar   stderr[GTK_MPLAYER_BUF_SIZE];
>     gint    stderr_size;
> 
> This code is faulty since stdin/stdout/stderr *are* macros and
> therefore *will* mess up this declaration.
> 
> > 	...blah...
> > };
> > 
> > The author's (perfectly legitimate) members are being mangled by
> 
> Not legitimate. The C standard itself says that stdin/stdout/stderr are
> supposed to be macros and therefore this behaviour is expected.
> 
> > the preprocessor.  It seems a little unfair to ask the author to
> > change them, the only other alternative I can see is to s/// every
> 
> The bug is in the application, not in FreeBSD, so, unfair or not, it
> isn't FreeBSD that should be changed.
> 
> > reference to something that doesn't clash with the FreeBSD stdio.h.
> > 
> > Ugly :-(

And until the author of pornview fixes his code the attached patch for
the port should fix things.





-- 
<Insert your favourite quote here.>
Erik Trulsson
ertr1013 at student.uu.se
-------------- next part --------------
Index: files/patch-src::support::widgets::gtkmplayer.c
===================================================================
RCS file: /ncvs/ports/graphics/pornview/files/patch-src::support::widgets::gtkmplayer.c,v
retrieving revision 1.1
diff -u -r1.1 patch-src::support::widgets::gtkmplayer.c
--- files/patch-src::support::widgets::gtkmplayer.c	5 Apr 2003 17:30:51 -0000	1.1
+++ files/patch-src::support::widgets::gtkmplayer.c	17 May 2003 13:10:56 -0000
@@ -1,5 +1,5 @@
---- src/support/widgets/gtkmplayer.c.orig	Sat Apr  5 18:54:40 2003
-+++ src/support/widgets/gtkmplayer.c	Sat Apr  5 18:55:27 2003
+--- src/support/widgets/gtkmplayer.c.orig	Fri Dec 13 12:15:21 2002
++++ src/support/widgets/gtkmplayer.c	Sat May 17 15:04:45 2003
 @@ -30,6 +30,7 @@
  #include <errno.h>
  #include <ctype.h>
@@ -8,3 +8,67 @@
  
  #include <gtk/gtk.h>
  #include <gdk/gdkx.h>
+@@ -72,9 +73,9 @@
+     int     stderr_fd;
+     int     stdin_fd;
+ 
+-    gchar   stdout[GTK_MPLAYER_BUF_SIZE];
++    gchar   stdoutb[GTK_MPLAYER_BUF_SIZE];
+     gint    stdout_size;
+-    gchar   stderr[GTK_MPLAYER_BUF_SIZE];
++    gchar   stderrb[GTK_MPLAYER_BUF_SIZE];
+     gint    stderr_size;
+ 
+     ProcessLineFunc process_line_fn;
+@@ -1049,13 +1050,13 @@
+     context->stdout_fd = out_fd[0];
+     fcntl (context->stdout_fd, F_SETFL, O_NONBLOCK);
+     close (out_fd[1]);
+-    context->stdout[0] = '\0';
++    context->stdoutb[0] = '\0';
+     context->stdout_size = 0;
+ 
+     context->stderr_fd = err_fd[0];
+     fcntl (context->stderr_fd, F_SETFL, O_NONBLOCK);
+     close (err_fd[1]);
+-    context->stderr[0] = '\0';
++    context->stderrb[0] = '\0';
+     context->stderr_size = 0;
+ 
+     context->stdin_fd = in_fd[1];
+@@ -1193,7 +1194,7 @@
+ 
+     if (size > 0 && size < GTK_MPLAYER_BUF_SIZE)
+     {
+-	memcpy (buf, context->stderr, size);
++	memcpy (buf, context->stderrb, size);
+ 	next = buf + size;
+     }
+     else
+@@ -1211,7 +1212,7 @@
+ 	size += MIN (GTK_MPLAYER_BUF_SIZE - 1, n);
+ 
+ 	process_lines (context, buf, size,
+-		       context->stderr, &context->stderr_size, TRUE);
++		       context->stderrb, &context->stderr_size, TRUE);
+     }
+ 
+     /*
+@@ -1221,7 +1222,7 @@
+ 
+     if (size > 0 && size < GTK_MPLAYER_BUF_SIZE)
+     {
+-	memcpy (buf, context->stdout, size);
++	memcpy (buf, context->stdoutb, size);
+ 	next = buf + size;
+     }
+     else
+@@ -1240,7 +1241,7 @@
+     pos = context->player->pos;
+ 
+     process_lines (context, buf, size,
+-		   context->stdout, &context->stdout_size, FALSE);
++		   context->stdoutb, &context->stdout_size, FALSE);
+ 
+     if (fabs (context->player->pos - pos) > 0.1)
+ 	gtk_signal_emit (GTK_OBJECT (context->player),


More information about the freebsd-ports mailing list