Package: libunicap2-dev
Version: 0.9.12-2
Severity: normal
File: /usr/include/unicap/unicap.h
Tags: upstream patch

As unicap uses "private" as a variable name, it is not possible to
compile this library with c++ code (usefull in OpenFrameworks 0.061,
for example).

Steps to reproduce:

1. Create a test file with
$ cat >> test_unicap.cpp << EOF
#include "unicap.h"
int main(){}
EOF

2. Try to compile it with:
$ g++ `pkg-config --cflags libunicap` -o test_unicap test_unicap.cpp

This will give the following error:

In file included from test_unicap.cpp:1:0:
/usr/include/unicap/unicap.h:218:34: error: expected unqualified-id before 
‘private’
/usr/include/unicap/unicap.h:218:33: error: expected ‘;’ at end of member 
declaration
/usr/include/unicap/unicap.h:218:41: error: expected ‘:’ before ‘;’ token 

This problem is fixed in upstream, but not in this version of unicap.

I have submitted a patch where the name of the variable is changed
in unicap.h as well as in unicap.c

-- System Information:
Debian Release: wheezy/sid
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: i386 (i686)

Kernel: Linux 3.2.0-3-486
Locale: LANG=es_ES.UTF-8, LC_CTYPE=es_ES.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libunicap2-dev depends on:
ii  libunicap2  0.9.12-2

libunicap2-dev recommends no packages.

libunicap2-dev suggests no packages.

-- no debconf information
diff -Nru unicap-0.9.12/debian/changelog unicap-0.9.12/debian/changelog
--- unicap-0.9.12/debian/changelog	2012-06-24 14:27:15.000000000 +0200
+++ unicap-0.9.12/debian/changelog	2012-09-01 15:19:57.000000000 +0200
@@ -1,3 +1,11 @@
+unicap (0.9.12-2.1) UNRELEASED; urgency=low
+
+  * Non-maintainer upload.
+  * Add patch 2001 to avoid using private keyword as variable name
+    in unicap.h
+
+ -- Jorge Muñoz <pun...@gmail.com>  Sat, 01 Sep 2012 14:32:25 +0200
+
 unicap (0.9.12-2) unstable; urgency=low
 
   * Add patch 1010 to fix implicit pointer conversions in v4l2 macros.
diff -Nru unicap-0.9.12/debian/copyright unicap-0.9.12/debian/copyright
--- unicap-0.9.12/debian/copyright	2012-06-24 14:15:29.000000000 +0200
+++ unicap-0.9.12/debian/copyright	2012-09-01 15:37:23.000000000 +0200
@@ -71,6 +71,10 @@
 Copyright: 2008, by Miriam Ruiz <little_m...@yahoo.es>
 License: GPL-2+
 
+Files: debian/patches/2001_avoid_private_as_variable_name.patch
+Copyright: 2012, Jorge Muñoz <pun...@gmail.com>
+License:  GPL-2+
+
 License: GPL-2+
  This file is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
diff -Nru unicap-0.9.12/debian/patches/2001_avoid_private_as_variable_name.patch unicap-0.9.12/debian/patches/2001_avoid_private_as_variable_name.patch
--- unicap-0.9.12/debian/patches/2001_avoid_private_as_variable_name.patch	1970-01-01 01:00:00.000000000 +0100
+++ unicap-0.9.12/debian/patches/2001_avoid_private_as_variable_name.patch	2012-09-01 15:17:14.000000000 +0200
@@ -0,0 +1,131 @@
+# Copyright (C) 2012 by Jorge Muñoz <pun...@gmail.com>
+# Distributed under the same license as the software. See debian/copyright
+
+--- unicap.orig/include/unicap.h	2012-09-01 14:50:19.000000000 +0200
++++ unicap/include/unicap.h	2012-09-01 14:54:07.000000000 +0200
+@@ -215,7 +215,7 @@
+ 
+    unicap_buffer_flags_t flags;
+    
+-   unicap_data_buffer_private_t *private;
++   unicap_data_buffer_private_t *ptr_private;
+ };
+ 
+ typedef struct _unicap_data_buffer_t unicap_data_buffer_t;
+
+--- unicap.orig/src/unicap.c	2012-09-01 14:50:13.000000000 +0200
++++ unicap/src/unicap.c	2012-09-01 14:54:18.000000000 +0200
+@@ -1467,7 +1467,7 @@
+    buffer->buffer_size = buffer->format.buffer_size;
+    buffer->data = malloc( buffer->buffer_size );   
+    unicap_copy_format( &buffer->format, format );
+-   buffer->private = NULL;
++   buffer->ptr_private = NULL;
+ 
+    return buffer;
+ }
+@@ -1475,28 +1475,28 @@
+ void unicap_data_buffer_init( unicap_data_buffer_t *buffer, unicap_format_t *format, unicap_data_buffer_init_data_t *init_data )
+ {
+    unicap_copy_format( &buffer->format, format );
+-   buffer->private = malloc( sizeof( unicap_data_buffer_private_t ) );
+-   sem_init( &buffer->private->lock, 0, 1 );   
+-   buffer->private->ref_count = 0;
+-   buffer->private->free_func = init_data->free_func;
+-   buffer->private->free_func_data = init_data->free_func_data;
+-   buffer->private->ref_func = init_data->ref_func;
+-   buffer->private->ref_func_data = init_data->ref_func_data;
+-   buffer->private->unref_func = init_data->unref_func;
+-   buffer->private->unref_func_data = init_data->unref_func_data;
++   buffer->ptr_private = malloc( sizeof( unicap_data_buffer_private_t ) );
++   sem_init( &buffer->ptr_private->lock, 0, 1 );   
++   buffer->ptr_private->ref_count = 0;
++   buffer->ptr_private->free_func = init_data->free_func;
++   buffer->ptr_private->free_func_data = init_data->free_func_data;
++   buffer->ptr_private->ref_func = init_data->ref_func;
++   buffer->ptr_private->ref_func_data = init_data->ref_func_data;
++   buffer->ptr_private->unref_func = init_data->unref_func;
++   buffer->ptr_private->unref_func_data = init_data->unref_func_data;
+ }
+ 
+ void unicap_data_buffer_free( unicap_data_buffer_t *buffer )
+ {
+-   sem_wait( &buffer->private->lock );
+-   if( buffer->private->ref_count > 0 ){
+-      TRACE( "freeing a buffer with refcount = %d!!!\n", buffer->private.refcount );
++   sem_wait( &buffer->ptr_private->lock );
++   if( buffer->ptr_private->ref_count > 0 ){
++      TRACE( "freeing a buffer with refcount = %d!!!\n", buffer->ptr_private.refcount );
+    }
+-   if( buffer->private->free_func ){
+-      buffer->private->free_func( buffer, buffer->private->free_func_data );
++   if( buffer->ptr_private->free_func ){
++      buffer->ptr_private->free_func( buffer, buffer->ptr_private->free_func_data );
+    }
+    
+-   sem_destroy( &buffer->private->lock );
++   sem_destroy( &buffer->ptr_private->lock );
+    if (buffer->data)
+       free( buffer->data );
+    free( buffer );
+@@ -1504,9 +1504,9 @@
+ 
+ unicap_status_t unicap_data_buffer_ref( unicap_data_buffer_t *buffer )
+ {
+-   sem_wait( &buffer->private->lock );
+-   buffer->private->ref_count++;
+-   sem_post( &buffer->private->lock );
++   sem_wait( &buffer->ptr_private->lock );
++   buffer->ptr_private->ref_count++;
++   sem_post( &buffer->ptr_private->lock );
+ 
+    return STATUS_SUCCESS;
+ }
+@@ -1514,36 +1514,36 @@
+ unicap_status_t unicap_data_buffer_unref( unicap_data_buffer_t *buffer )
+ {
+    unicap_status_t status = STATUS_SUCCESS;
+-   sem_wait( &buffer->private->lock );
+-   if( buffer->private->ref_count > 0 ){
+-      buffer->private->ref_count--;
+-      if (buffer->private->unref_func){
+-	 buffer->private->unref_func (buffer, buffer->private->unref_func_data);
++   sem_wait( &buffer->ptr_private->lock );
++   if( buffer->ptr_private->ref_count > 0 ){
++      buffer->ptr_private->ref_count--;
++      if (buffer->ptr_private->unref_func){
++	 buffer->ptr_private->unref_func (buffer, buffer->ptr_private->unref_func_data);
+       }
+-      if (buffer->private->ref_count == 0 ){
++      if (buffer->ptr_private->ref_count == 0 ){
+ 	 unicap_data_buffer_free( buffer );
+       }
+    }else{
+       TRACE( "unref of a buffer with refcount <= 0!" );
+       status = STATUS_FAILURE;
+    }
+-   sem_post (&buffer->private->lock);
++   sem_post (&buffer->ptr_private->lock);
+    return status;
+ }
+ 
+ unsigned int unicap_data_buffer_get_refcount( unicap_data_buffer_t *buffer )
+ {
+-   return buffer->private->ref_count;
++   return buffer->ptr_private->ref_count;
+ }
+ 
+ void *unicap_data_buffer_set_user_data( unicap_data_buffer_t *buffer, void *data )
+ {
+-   void *old_data = buffer->private->user_data;
+-   buffer->private->user_data = data;
++   void *old_data = buffer->ptr_private->user_data;
++   buffer->ptr_private->user_data = data;
+    return old_data;
+ }
+ 
+ void *unicap_data_buffer_get_user_data( unicap_data_buffer_t *buffer )
+ {
+-   return buffer->private->user_data;
++   return buffer->ptr_private->user_data;
+ }
diff -Nru unicap-0.9.12/debian/patches/series unicap-0.9.12/debian/patches/series
--- unicap-0.9.12/debian/patches/series	2012-06-24 14:08:24.000000000 +0200
+++ unicap-0.9.12/debian/patches/series	2012-09-01 14:51:54.000000000 +0200
@@ -1,3 +1,4 @@
+2001_avoid_private_as_variable_name.patch
 1001_printf_warning.patch
 1003_vid21394_pointer.patch
 1005_tidy_gettext.patch

Reply via email to