From 415856bdd4f48ab4f2732996f0bae58595092bbe Mon Sep 17 00:00:00 2001 From: Parabola Date: Tue, 5 Apr 2011 14:26:38 +0000 Subject: Tue Apr 5 14:26:38 UTC 2011 --- extra/xawtv/PKGBUILD | 42 +++++++ extra/xawtv/xawtv-3.95-fixes.patch | 72 ++++++++++++ extra/xawtv/xawtv-3.95-libv4l2.patch | 176 ++++++++++++++++++++++++++++++ extra/xawtv/xawtv-3.95-no-dga.patch | 120 ++++++++++++++++++++ extra/xawtv/xawtv-3.95-pagemask-fix.patch | 44 ++++++++ extra/xawtv/xawtv-395.diff | 60 ++++++++++ 6 files changed, 514 insertions(+) create mode 100644 extra/xawtv/PKGBUILD create mode 100644 extra/xawtv/xawtv-3.95-fixes.patch create mode 100644 extra/xawtv/xawtv-3.95-libv4l2.patch create mode 100644 extra/xawtv/xawtv-3.95-no-dga.patch create mode 100644 extra/xawtv/xawtv-3.95-pagemask-fix.patch create mode 100644 extra/xawtv/xawtv-395.diff (limited to 'extra/xawtv') diff --git a/extra/xawtv/PKGBUILD b/extra/xawtv/PKGBUILD new file mode 100644 index 000000000..3a8498c10 --- /dev/null +++ b/extra/xawtv/PKGBUILD @@ -0,0 +1,42 @@ +# $Id: PKGBUILD 63661 2010-01-18 09:35:32Z andrea $ +# Maintainer: +# Contributor: Sarah Hay +# Contributor: Jason Chu + +pkgname=xawtv +pkgver=3.95 +pkgrel=7 +pkgdesc="A simple Xaw-based TV program which uses the bttv driver or video4linux" +arch=('i686' 'x86_64') +url="http://linux.bytesex.org/xawtv/" +license=('GPL') +depends=('libjpeg' 'alsa-lib' 'lesstif' 'libdv' 'zvbi' 'aalib' 'libv4l' + 'libxxf86dga' 'libfs' 'libxrandr' 'libxinerama' 'libxv' 'libxaw' + 'libxxf86vm' 'libgl' 'gpm' 'lirc-utils' 'libxft') +makedepends=('mesa') +options=('!makeflags') +source=(http://dl.bytesex.org/releases/$pkgname/$pkgname-$pkgver.tar.gz + xawtv-395.diff + xawtv-3.95-pagemask-fix.patch + xawtv-3.95-fixes.patch + xawtv-3.95-libv4l2.patch + xawtv-3.95-no-dga.patch) +md5sums=('ad25e03f7e128b318e392cb09f52207d' + '87a87b6c62b39348053704f052141843' + '97493dfaac8c80084d8b66891becd76c' + 'dc83378a5c76c029f4e49434214fc824' + '56932100c5060bf9dfc45b8af927e697' + 'c456147f15c8f836c678c6499f068085') + +build() { + cd $srcdir/$pkgname-$pkgver + patch -Np1 -i $srcdir/xawtv-395.diff || return 1 + patch -Np1 -i $srcdir/xawtv-3.95-pagemask-fix.patch || return 1 + # Add patches from https://bugzilla.redhat.com/show_bug.cgi?id=457796 + patch -Np1 -i $srcdir/xawtv-3.95-fixes.patch || return 1 + patch -Np1 -i $srcdir/xawtv-3.95-libv4l2.patch || return 1 + patch -Np1 -i $srcdir/xawtv-3.95-no-dga.patch || return 1 + ./configure --prefix=/usr --mandir=/usr/share/man + make || return 1 + make DESTDIR=$pkgdir resdir=$pkgdir/usr/lib/X11 install +} diff --git a/extra/xawtv/xawtv-3.95-fixes.patch b/extra/xawtv/xawtv-3.95-fixes.patch new file mode 100644 index 000000000..b6cdf8dec --- /dev/null +++ b/extra/xawtv/xawtv-3.95-fixes.patch @@ -0,0 +1,72 @@ +diff -up xawtv-3.95.new/libng/plugins/drv0-v4l2.c.fixes xawtv-3.95.new/libng/plugins/drv0-v4l2.c +--- xawtv-3.95.new/libng/plugins/drv0-v4l2.c.fixes 2005-02-11 18:56:24.000000000 +0100 ++++ xawtv-3.95.new/libng/plugins/drv0-v4l2.c 2008-08-03 20:46:32.000000000 +0200 +@@ -91,6 +91,7 @@ struct v4l2_handle { + struct ng_video_fmt fmt_me; + struct v4l2_requestbuffers reqbufs; + struct v4l2_buffer buf_v4l2[WANTED_BUFFERS]; ++ int buf_v4l2_size[WANTED_BUFFERS]; + struct ng_video_buf buf_me[WANTED_BUFFERS]; + unsigned int queue,waiton; + +@@ -166,7 +167,7 @@ xioctl(int fd, int cmd, void *arg, int m + int rc; + + rc = ioctl(fd,cmd,arg); +- if (0 == rc && ng_debug < 2) ++ if (rc >= 0 && ng_debug < 2) + return rc; + if (mayfail && errno == mayfail && ng_debug < 2) + return rc; +@@ -768,6 +769,7 @@ v4l2_waiton(struct v4l2_handle *h) + /* get it */ + memset(&buf,0,sizeof(buf)); + buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; ++ buf.memory = V4L2_MEMORY_MMAP; + if (-1 == xioctl(h->fd,VIDIOC_DQBUF,&buf, 0)) + return -1; + h->waiton++; +@@ -812,6 +814,7 @@ v4l2_start_streaming(struct v4l2_handle + h->buf_v4l2[i].memory = V4L2_MEMORY_MMAP; + if (-1 == xioctl(h->fd, VIDIOC_QUERYBUF, &h->buf_v4l2[i], 0)) + return -1; ++ h->buf_v4l2_size[i] = h->buf_v4l2[i].length; + h->buf_me[i].fmt = h->fmt_me; + h->buf_me[i].size = h->buf_me[i].fmt.bytesperline * + h->buf_me[i].fmt.height; +@@ -865,12 +868,16 @@ v4l2_stop_streaming(struct v4l2_handle * + ng_waiton_video_buf(&h->buf_me[i]); + if (ng_debug) + print_bufinfo(&h->buf_v4l2[i]); +- if (-1 == munmap(h->buf_me[i].data,h->buf_me[i].size)) ++ if (-1 == munmap(h->buf_me[i].data, h->buf_v4l2_size[i])) + perror("munmap"); + } + h->queue = 0; + h->waiton = 0; + ++ /* unrequest buffers (only needed for some drivers) */ ++ h->reqbufs.count = 0; ++ xioctl(h->fd, VIDIOC_REQBUFS, &h->reqbufs, EINVAL); ++ + /* turn on preview (if needed) */ + if (h->ov_on != h->ov_enabled) { + h->ov_on = h->ov_enabled; +@@ -907,6 +914,17 @@ v4l2_setformat(void *handle, struct ng_v + fmt->width = h->fmt_v4l2.fmt.pix.width; + fmt->height = h->fmt_v4l2.fmt.pix.height; + fmt->bytesperline = h->fmt_v4l2.fmt.pix.bytesperline; ++ /* struct v4l2_format.fmt.pix.bytesperline is bytesperline for the ++ main plane for planar formats, where as we want it to be the total ++ bytesperline for all planes */ ++ switch (fmt->fmtid) { ++ case VIDEO_YUV422P: ++ fmt->bytesperline *= 2; ++ break; ++ case VIDEO_YUV420P: ++ fmt->bytesperline = fmt->bytesperline * 3 / 2; ++ break; ++ } + if (0 == fmt->bytesperline) + fmt->bytesperline = fmt->width * ng_vfmt_to_depth[fmt->fmtid] / 8; + h->fmt_me = *fmt; diff --git a/extra/xawtv/xawtv-3.95-libv4l2.patch b/extra/xawtv/xawtv-3.95-libv4l2.patch new file mode 100644 index 000000000..45a5e69cb --- /dev/null +++ b/extra/xawtv/xawtv-3.95-libv4l2.patch @@ -0,0 +1,176 @@ +--- xawtv-3.95/libng/plugins/Subdir.mk~ 2008-07-30 09:51:01.000000000 +0200 ++++ xawtv-3.95/libng/plugins/Subdir.mk 2008-07-30 09:51:01.000000000 +0200 +@@ -41,6 +41,7 @@ libng/plugins/read-qt.so : LDLIBS := $( + libng/plugins/write-qt.so : LDLIBS := $(QT_LIBS) + libng/plugins/read-dv.so : LDLIBS := $(DV_LIBS) + libng/plugins/write-dv.so : LDLIBS := $(DV_LIBS) ++libng/plugins/drv0-v4l2.so: LDLIBS := -lv4l2 + + # global targets + all:: $(TARGETS-plugins) +diff -up xawtv-3.95/libng/plugins/drv0-v4l2.c.orig xawtv-3.95/libng/plugins/drv0-v4l2.c +--- xawtv-3.95/libng/plugins/drv0-v4l2.c.orig 2008-08-03 21:26:13.000000000 +0200 ++++ xawtv-3.95/libng/plugins/drv0-v4l2.c 2008-08-03 21:27:50.000000000 +0200 +@@ -29,11 +29,26 @@ + #include "struct-dump.h" + #include "struct-v4l2.h" + ++/* FIXME replace with autoconf detection */ ++#define HAVE_LIBV4L ++ ++#ifdef HAVE_LIBV4L ++#include ++#else ++#define v4l2_fd_open(fd, flags) (fd) ++#define v4l2_close close ++#define v4l2_dup dup ++#define v4l2_ioctl ioctl ++#define v4l2_read read ++#define v4l2_mmap mmap ++#define v4l2_munmap munmap ++#endif ++ + /* ---------------------------------------------------------------------- */ + + /* open+close */ +-static void* v4l2_open(char *device); +-static int v4l2_close(void *handle); ++static void* v4l2_open_handle(char *device); ++static int v4l2_close_handle(void *handle); + + /* attributes */ + static char* v4l2_devname(void *handle); +@@ -111,8 +126,8 @@ struct v4l2_handle { + + struct ng_vid_driver v4l2_driver = { + name: "v4l2", +- open: v4l2_open, +- close: v4l2_close, ++ open: v4l2_open_handle, ++ close: v4l2_close_handle, + + get_devname: v4l2_devname, + capabilities: v4l2_flags, +@@ -166,7 +181,7 @@ xioctl(int fd, int cmd, void *arg, int m + { + int rc; + +- rc = ioctl(fd,cmd,arg); ++ rc = v4l2_ioctl(fd,cmd,arg); + if (rc >= 0 && ng_debug < 2) + return rc; + if (mayfail && errno == mayfail && ng_debug < 2) +@@ -220,7 +235,7 @@ get_device_capabilities(struct v4l2_hand + } + + h->streamparm.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; +- ioctl(h->fd,VIDIOC_G_PARM,&h->streamparm); ++ v4l2_ioctl(h->fd,VIDIOC_G_PARM,&h->streamparm); + + /* controls */ + for (i = 0; i < MAX_CTRL; i++) { +@@ -444,10 +459,10 @@ static void v4l2_write_attr(struct ng_at + /* ---------------------------------------------------------------------- */ + + static void* +-v4l2_open(char *device) ++v4l2_open_handle(char *device) + { + struct v4l2_handle *h; +- int i; ++ int i, libv4l2_fd; + + h = malloc(sizeof(*h)); + if (NULL == h) +@@ -459,6 +474,16 @@ v4l2_open(char *device) + goto err; + } + ++ /* Note the v4l2_xxx functions are designed so that if they get passed an ++ unknown fd, the will behave exactly as their regular xxx counterparts, so ++ if v4l2_fd_open fails, we continue as normal (missing the libv4l2 custom ++ cam format to normal formats conversion). Chances are big we will still ++ fail then though, as normally v4l2_fd_open only fails if the device is not ++ a v4l2 device. */ ++ libv4l2_fd = v4l2_fd_open(h->fd, 0); ++ if (libv4l2_fd != -1) ++ h->fd = libv4l2_fd; ++ + if (-1 == xioctl(h->fd,VIDIOC_QUERYCAP,&h->cap,EINVAL)) + goto err; + if (ng_debug) +@@ -495,21 +520,21 @@ v4l2_open(char *device) + + err: + if (h->fd != -1) +- close(h->fd); ++ v4l2_close(h->fd); + if (h) + free(h); + return NULL; + } + + static int +-v4l2_close(void *handle) ++v4l2_close_handle(void *handle) + { + struct v4l2_handle *h = handle; + + if (ng_debug) + fprintf(stderr, "v4l2: close\n"); + +- close(h->fd); ++ v4l2_close(h->fd); + free(h); + return 0; + } +@@ -818,7 +843,7 @@ v4l2_start_streaming(struct v4l2_handle + h->buf_me[i].fmt = h->fmt_me; + h->buf_me[i].size = h->buf_me[i].fmt.bytesperline * + h->buf_me[i].fmt.height; +- h->buf_me[i].data = mmap(NULL, h->buf_v4l2[i].length, ++ h->buf_me[i].data = v4l2_mmap(NULL, h->buf_v4l2[i].length, + PROT_READ | PROT_WRITE, MAP_SHARED, + h->fd, h->buf_v4l2[i].m.offset); + if (MAP_FAILED == h->buf_me[i].data) { +@@ -859,7 +884,7 @@ v4l2_stop_streaming(struct v4l2_handle * + unsigned int i; + + /* stop capture */ +- if (-1 == ioctl(h->fd,VIDIOC_STREAMOFF,&h->fmt_v4l2.type)) ++ if (-1 == v4l2_ioctl(h->fd,VIDIOC_STREAMOFF,&h->fmt_v4l2.type)) + perror("ioctl VIDIOC_STREAMOFF"); + + /* free buffers */ +@@ -868,7 +893,7 @@ v4l2_stop_streaming(struct v4l2_handle * + ng_waiton_video_buf(&h->buf_me[i]); + if (ng_debug) + print_bufinfo(&h->buf_v4l2[i]); +- if (-1 == munmap(h->buf_me[i].data, h->buf_v4l2_size[i])) ++ if (-1 == v4l2_munmap(h->buf_me[i].data, h->buf_v4l2_size[i])) + perror("munmap"); + } + h->queue = 0; +@@ -989,7 +1014,7 @@ v4l2_nextframe(void *handle) + } else { + size = h->fmt_me.bytesperline * h->fmt_me.height; + buf = ng_malloc_video_buf(&h->fmt_me,size); +- rc = read(h->fd,buf->data,size); ++ rc = v4l2_read(h->fd,buf->data,size); + if (rc != size) { + if (-1 == rc) { + perror("v4l2: read"); +@@ -1023,11 +1048,11 @@ v4l2_getimage(void *handle) + size = h->fmt_me.bytesperline * h->fmt_me.height; + buf = ng_malloc_video_buf(&h->fmt_me,size); + if (h->cap.capabilities & V4L2_CAP_READWRITE) { +- rc = read(h->fd,buf->data,size); ++ rc = v4l2_read(h->fd,buf->data,size); + if (-1 == rc && EBUSY == errno && h->ov_on) { + h->ov_on = 0; + xioctl(h->fd, VIDIOC_OVERLAY, &h->ov_on, 0); +- rc = read(h->fd,buf->data,size); ++ rc = v4l2_read(h->fd,buf->data,size); + h->ov_on = 1; + xioctl(h->fd, VIDIOC_OVERLAY, &h->ov_on, 0); + } diff --git a/extra/xawtv/xawtv-3.95-no-dga.patch b/extra/xawtv/xawtv-3.95-no-dga.patch new file mode 100644 index 000000000..4509d4ba0 --- /dev/null +++ b/extra/xawtv/xawtv-3.95-no-dga.patch @@ -0,0 +1,120 @@ +diff -up xawtv-3.95/console/v4l-conf.c~ xawtv-3.95/console/v4l-conf.c +--- xawtv-3.95/console/v4l-conf.c~ 2008-08-03 22:22:01.000000000 +0200 ++++ xawtv-3.95/console/v4l-conf.c 2008-08-03 22:34:33.000000000 +0200 +@@ -221,6 +221,21 @@ displayinfo_x11(Display *dpy, struct DIS + } + } + ++#ifdef HAVE_LIBXXF86DGA ++static int dga_error = 0; ++static int dga_error_base; ++static int (*orig_xfree_error_handler)(Display *, XErrorEvent *); ++ ++static int dga_error_handler(Display *d, XErrorEvent *e) ++{ ++ if (e->error_code == (dga_error_base + XF86DGANoDirectVideoMode)) { ++ dga_error = 1; ++ return 0; ++ } ++ return orig_xfree_error_handler(d, e); ++} ++#endif ++ + static void + displayinfo_dga(Display *dpy, struct DISPLAYINFO *d) + { +@@ -228,7 +243,7 @@ displayinfo_dga(Display *dpy, struct DIS + int width,bar,foo,major,minor,flags=0; + void *base = NULL; + +- if (!XF86DGAQueryExtension(dpy,&foo,&bar)) { ++ if (!XF86DGAQueryExtension(dpy,&foo,&dga_error_base)) { + fprintf(stderr,"WARNING: Your X-Server has no DGA support.\n"); + return; + } +@@ -240,7 +255,14 @@ displayinfo_dga(Display *dpy, struct DIS + fprintf(stderr,"WARNING: No DGA support available for this display.\n"); + return; + } ++ orig_xfree_error_handler = XSetErrorHandler(dga_error_handler); + XF86DGAGetVideoLL(dpy,XDefaultScreen(dpy),(void*)&base,&width,&foo,&bar); ++ XSync(dpy, 0); ++ XSetErrorHandler(orig_xfree_error_handler); ++ if (dga_error) { ++ fprintf(stderr,"WARNING: No DGA direct video mode for this display.\n"); ++ return; ++ } + d->bpl = width * d->bpp/8; + d->base = base; + #else +diff -up xawtv-3.95/libng/plugins/drv0-v4l2.c~ xawtv-3.95/libng/plugins/drv0-v4l2.c +--- xawtv-3.95/libng/plugins/drv0-v4l2.c~ 2008-08-03 21:52:41.000000000 +0200 ++++ xawtv-3.95/libng/plugins/drv0-v4l2.c 2008-08-03 22:23:01.000000000 +0200 +@@ -618,7 +618,7 @@ v4l2_setupfb(void *handle, struct ng_vid + return -1; + + /* double-check settings */ +- if (NULL != base && h->ov_fb.base != base) { ++ if ((NULL != base && h->ov_fb.base != base) || h->ov_fb.base == NULL) { + fprintf(stderr,"v4l2: WARNING: framebuffer base address mismatch\n"); + fprintf(stderr,"v4l2: me=%p v4l=%p\n",base,h->ov_fb.base); + h->ov_error = 1; +diff -up xawtv-3.95/x11/xt.c~ xawtv-3.95/x11/xt.c +--- xawtv-3.95/x11/xt.c~ 2008-08-03 22:22:11.000000000 +0200 ++++ xawtv-3.95/x11/xt.c 2008-08-03 22:35:14.000000000 +0200 +@@ -1247,18 +1247,21 @@ FilterAction(Widget widget, XEvent *even + } + + /*----------------------------------------------------------------------*/ ++#ifdef HAVE_LIBXXF86DGA ++static int xfree_dga_error_base; ++#endif + + void + xfree_dga_init(Display *dpy) + { + #ifdef HAVE_LIBXXF86DGA +- int flags,foo,bar,ma,mi; ++ int flags,foo,ma,mi; + + if (!do_overlay) + return; + + if (args.dga) { +- if (XF86DGAQueryExtension(dpy,&foo,&bar)) { ++ if (XF86DGAQueryExtension(dpy,&foo,&xfree_dga_error_base)) { + XF86DGAQueryDirectVideo(dpy,XDefaultScreen(dpy),&flags); + if (flags & XF86DGADirectPresent) { + XF86DGAQueryVersion(dpy,&ma,&mi); +@@ -1348,6 +1351,19 @@ xfree_xinerama_init(Display *dpy) + #endif + } + ++#ifdef HAVE_LIBXXF86DGA ++static int (*orig_xfree_error_handler)(Display *, XErrorEvent *); ++ ++static int xfree_dga_error_handler(Display *d, XErrorEvent *e) ++{ ++ if (e->error_code == (xfree_dga_error_base + XF86DGANoDirectVideoMode)) { ++ have_dga = 0; ++ return 0; ++ } ++ return orig_xfree_error_handler(d, e); ++} ++#endif ++ + void + grabber_init() + { +@@ -1358,8 +1374,11 @@ grabber_init() + #ifdef HAVE_LIBXXF86DGA + if (have_dga) { + int bar,fred; ++ orig_xfree_error_handler = XSetErrorHandler(xfree_dga_error_handler); + XF86DGAGetVideoLL(dpy,XDefaultScreen(dpy),(void*)&base, + &screen.bytesperline,&bar,&fred); ++ XSync(dpy, 0); ++ XSetErrorHandler(orig_xfree_error_handler); + } + #endif + if (!do_overlay) { diff --git a/extra/xawtv/xawtv-3.95-pagemask-fix.patch b/extra/xawtv/xawtv-3.95-pagemask-fix.patch new file mode 100644 index 000000000..ab635f73a --- /dev/null +++ b/extra/xawtv/xawtv-3.95-pagemask-fix.patch @@ -0,0 +1,44 @@ +Patch from Andreas Jochens +http://lists.debian.org/debian-qa-packages/2006/08/msg00519.html + +diff -urN ../tmp-orig/xawtv-3.95/console/fbtools.c ./console/fbtools.c +--- ../tmp-orig/xawtv-3.95/console/fbtools.c 2003-02-14 14:14:04.000000000 +0000 ++++ ./console/fbtools.c 2006-08-23 10:57:40.000000000 +0000 +@@ -21,8 +21,6 @@ + #include + #include + +-#include +- + #include "fbtools.h" + + /* -------------------------------------------------------------------- */ +@@ -424,7 +422,7 @@ + goto err; + } + #endif +- fb_mem_offset = (unsigned long)(fb_fix.smem_start) & (~PAGE_MASK); ++ fb_mem_offset = (unsigned long)(fb_fix.smem_start) & ~(sysconf(_SC_PAGE_SIZE)-1); + fb_mem = mmap(NULL,fb_fix.smem_len+fb_mem_offset, + PROT_READ|PROT_WRITE,MAP_SHARED,fb,0); + if (-1L == (long)fb_mem) { +diff -urN ../tmp-orig/xawtv-3.95/console/matrox.c ./console/matrox.c +--- ../tmp-orig/xawtv-3.95/console/matrox.c 2005-02-03 10:40:41.000000000 +0000 ++++ ./console/matrox.c 2006-08-23 11:09:51.000000000 +0000 +@@ -9,7 +9,6 @@ + #include + #include + +-#include /* PAGE_SIZE */ + #include + + #include "byteswap.h" +@@ -226,7 +225,7 @@ + return -1; + } + off = (unsigned long)fb_fix.mmio_start - +- ((unsigned long)fb_fix.mmio_start & ~(PAGE_SIZE-1)); ++ ((unsigned long)fb_fix.mmio_start & ~(sysconf(_SC_PAGE_SIZE)-1)); + bmmio += off; + mmio = (uint32_t*)bmmio; + return 0; diff --git a/extra/xawtv/xawtv-395.diff b/extra/xawtv/xawtv-395.diff new file mode 100644 index 000000000..970b2b00f --- /dev/null +++ b/extra/xawtv/xawtv-395.diff @@ -0,0 +1,60 @@ +diff -Nru xawtv-3.95/Makefile.in xawtv-3.95.my/Makefile.in +--- xawtv-3.95/Makefile.in 2004-04-22 09:52:29.000000000 -0500 ++++ xawtv-3.95.my/Makefile.in 2006-06-04 19:05:24.000000000 -0500 +@@ -49,7 +49,7 @@ + VBI_LIBS := @LIBZVBI@ + GL_LIBS := @LIBGL@ + DV_LIBS := @LIBDV@ +-FS_LIBS := -L@x_libraries@ @FSLIB@ ++FS_LIBS := @FSLIB@ + DLFLAGS := @DLFLAGS@ + + # stuff configure has found +diff -Nru xawtv-3.95/common/channel.c xawtv-3.95.my/common/channel.c +--- xawtv-3.95/common/channel.c 2003-03-28 06:22:06.000000000 -0600 ++++ xawtv-3.95.my/common/channel.c 2006-06-04 19:10:07.000000000 -0500 +@@ -181,6 +181,9 @@ + { -1, NULL, }, + }; + ++extern struct STRTAB booltab[]; ++extern struct STRTAB captab[]; ++ + /* just malloc memory for a new channel ... */ + struct CHANNEL* + add_channel(char *name) +diff -Nru xawtv-3.95/common/channel.h xawtv-3.95.my/common/channel.h +--- xawtv-3.95/common/channel.h 2003-02-14 08:14:04.000000000 -0600 ++++ xawtv-3.95.my/common/channel.h 2006-06-04 19:08:13.000000000 -0500 +@@ -90,8 +90,6 @@ + + /* ----------------------------------------------------------------------- */ + +-extern struct STRTAB booltab[]; +-extern struct STRTAB captab[]; + + int str_to_int(char *str, struct STRTAB *tab); + const char* int_to_str(int n, struct STRTAB *tab); +diff -Nru xawtv-3.95/common/commands.c xawtv-3.95.my/common/commands.c +--- xawtv-3.95/common/commands.c 2004-04-19 11:24:05.000000000 -0500 ++++ xawtv-3.95.my/common/commands.c 2006-06-04 19:11:48.000000000 -0500 +@@ -162,6 +162,9 @@ + + static int keypad_state = -1; + ++extern struct STRTAB booltab[]; ++extern struct STRTAB captab[]; ++ + /* ----------------------------------------------------------------------- */ + + void add_attrs(struct ng_attribute *new) +diff -Nru xawtv-3.95/console/fs.h xawtv-3.95.my/console/fs.h +--- xawtv-3.95/console/fs.h 2003-02-14 08:14:04.000000000 -0600 ++++ xawtv-3.95.my/console/fs.h 2006-06-04 19:00:20.000000000 -0500 +@@ -1,5 +1,5 @@ + #ifndef X_DISPLAY_MISSING +-# include ++# include + + struct fs_font { + Font font; -- cgit v1.2.3-54-g00ecf