rpms/libkni3/F-11 import.log, NONE, 1.1 kni-3.9.2-ctor.patch, NONE, 1.1 kni-3.9.2-gcc43.patch, NONE, 1.1 kni-3.9.2-noexit.patch, NONE, 1.1 kni-3.9.2-sofixes.patch, NONE, 1.1 libkni3.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Tim Niemueller timn at fedoraproject.org
Mon Sep 14 22:52:01 UTC 2009


Author: timn

Update of /cvs/pkgs/rpms/libkni3/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv14183/F-11

Modified Files:
	.cvsignore sources 
Added Files:
	import.log kni-3.9.2-ctor.patch kni-3.9.2-gcc43.patch 
	kni-3.9.2-noexit.patch kni-3.9.2-sofixes.patch libkni3.spec 
Log Message:
Initial Fedora import


--- NEW FILE import.log ---
libkni3-3_9_2-12_fc11:F-11:libkni3-3.9.2-12.fc11.src.rpm:1252967789

kni-3.9.2-ctor.patch:
 include/KNI/cdlCOM.h     |    2 
 src/Base/cdlCOM.cpp      |   17 +-
 src/Base/cdlCOM.cpp.orig |  369 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 380 insertions(+), 8 deletions(-)

--- NEW FILE kni-3.9.2-ctor.patch ---
diff -urN KNI_3.9.2/include/KNI/cdlCOM.h KNI_3.9.2.ctor/include/KNI/cdlCOM.h
--- KNI_3.9.2/include/KNI/cdlCOM.h	2007-04-12 14:52:06.000000000 +0200
+++ KNI_3.9.2.ctor/include/KNI/cdlCOM.h	2009-06-12 16:44:42.000000000 +0200
@@ -107,7 +107,7 @@
 	 *	describes the desired serial port. An attempt to open a connection
 	 *	to the desired device will be tried.
 	 */
-	CCdlCOM(TCdlCOMDesc ccd);
+	CCdlCOM(TCdlCOMDesc ccd, const char *dev_name = 0);
 
 	/*! \brief	Destructs the class
 	 */	virtual ~CCdlCOM();
diff -urN KNI_3.9.2/src/Base/cdlCOM.cpp KNI_3.9.2.ctor/src/Base/cdlCOM.cpp
--- KNI_3.9.2/src/Base/cdlCOM.cpp	2009-06-12 16:44:03.000000000 +0200
+++ KNI_3.9.2.ctor/src/Base/cdlCOM.cpp	2009-06-12 16:45:02.000000000 +0200
@@ -23,8 +23,9 @@
 
 #include "common/Timer.h"
 #include <cstring>
+#include <cstdio>
 
-
+#include <cstdlib>
 #ifdef WIN32
 
 CCdlCOM::CCdlCOM(TCdlCOMDesc ccd) : _deviceName(""), _ccd(), _prtHdl(INVALID_HANDLE_VALUE), _oto() {
@@ -160,21 +161,24 @@
 
 #else //LINUX
 
-CCdlCOM::CCdlCOM(TCdlCOMDesc ccd) : _deviceName(""), _ccd(), _prtHdl(-1), _oto() {
+CCdlCOM::CCdlCOM(TCdlCOMDesc ccd, const char *dev_name) : _deviceName(""), _ccd(), _prtHdl(-1), _oto() {
 
 	int prtHdl	= -1;
 
-	std::string deviceName;
 	struct termios	nto, oto;
-	char		name[11];
+	char *name;
 
 	errno = 0;
 
-	strncpy(name, "/dev/ttyS ", 11);
-	name[9] = digit(ccd.port);
+	if (dev_name) {
+          name = strdup(dev_name);
+        } else {
+          asprintf(&name, "/dev/ttyS%i", ccd.port);
+        }
 	prtHdl = ::open(name, O_RDWR | O_NOCTTY | O_NDELAY| O_NONBLOCK);
 
 	_deviceName = name;
+        free(name);
 
 	if (prtHdl < 0) {
 		throw CannotOpenPortException(_deviceName, strerror(errno));
@@ -290,7 +294,6 @@
 	}
 
 	_prtHdl = prtHdl;
-	_deviceName = deviceName;
 	_ccd = ccd;
 	_oto = oto;
 }
diff -urN KNI_3.9.2/src/Base/cdlCOM.cpp.orig KNI_3.9.2.ctor/src/Base/cdlCOM.cpp.orig
--- KNI_3.9.2/src/Base/cdlCOM.cpp.orig	1970-01-01 01:00:00.000000000 +0100
+++ KNI_3.9.2.ctor/src/Base/cdlCOM.cpp.orig	2009-06-12 16:44:42.000000000 +0200
@@ -0,0 +1,369 @@
+/*
+ *   Katana Native Interface - A C++ interface to the robot arm Katana.
+ *   Copyright (C) 2005 Neuronics AG
+ *   Check out the AUTHORS file for detailed contact information.
+ *
+ *   This program is free software; you can redistribute it and/or modify
+ *   it under the terms of the GNU General Public License as published by
+ *   the Free Software Foundation; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include "KNI/cdlCOM.h"
+
+#include "common/Timer.h"
+#include <cstring>
+
+
+#ifdef WIN32
+
+CCdlCOM::CCdlCOM(TCdlCOMDesc ccd) : _deviceName(""), _ccd(), _prtHdl(INVALID_HANDLE_VALUE), _oto() {
+
+	DCB commDCB;	//COM port parameters
+	COMMTIMEOUTS nto;	//new timeouts
+	char comX[5];
+	char dcb[35];
+	int i, d;
+
+	std::string deviceName;
+	HANDLE prtHdl;
+	COMMTIMEOUTS oto;
+
+	strncpy_s(comX, "COM ", 5);
+	comX[3] = digit(ccd.port);
+	deviceName = comX;
+	prtHdl = CreateFile(comX,
+	                    GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING,
+	                    FILE_ATTRIBUTE_NORMAL | FILE_FLAG_WRITE_THROUGH | FILE_FLAG_NO_BUFFERING, 0
+	                   );
+
+	if (prtHdl == INVALID_HANDLE_VALUE) {
+		throw CannotOpenPortException(_deviceName, "info from win32-system not yet available");
+	}
+
+	FillMemory(&commDCB, sizeof(commDCB), 0);
+	commDCB.DCBlength = sizeof(commDCB);
+	strncpy_s(dcb, "baud=       parity=  data=  stop= ", 35);
+	for(i=5,d=100000; d>=1; d=d/10) {
+		if(d <= ccd.baud) {
+			dcb[i++] = digit((ccd.baud/d) % 10);
+		}
+	}
+	dcb[19] = ccd.parity;
+	dcb[26] = digit(ccd.data);
+	dcb[33] = digit(ccd.stop);
+	if (!BuildCommDCB(dcb, &commDCB)) {
+		CloseHandle(prtHdl);
+		throw CannotGetSetPortAttributesException(_deviceName);
+	}
+
+	commDCB.fAbortOnError	= false;
+	commDCB.fInX			= false;
+	commDCB.fOutX			= false;
+	commDCB.fOutxCtsFlow	= false;
+	if (!SetCommState(prtHdl, &commDCB)) {
+		CloseHandle(prtHdl);
+		throw CannotGetSetPortAttributesException(_deviceName);
+	}
+
+	PurgeComm(	prtHdl,	PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR);
+
+	GetCommTimeouts(prtHdl, &oto);
+	nto.ReadIntervalTimeout			= MAXDWORD;
+	nto.ReadTotalTimeoutMultiplier	= 0;
+	nto.ReadTotalTimeoutConstant	= 0;
+	nto.WriteTotalTimeoutMultiplier	= 0;
+	nto.WriteTotalTimeoutConstant	= 0;
+	if (!SetCommTimeouts(prtHdl, &nto)) {
+		CloseHandle(prtHdl);
+		throw CannotGetSetPortAttributesException(_deviceName);
+	}
+
+	// Everything done, now we can change the state
+	_prtHdl = prtHdl;
+	_deviceName = deviceName;
+	_ccd = ccd;
+	_oto = oto;
+}
+
+CCdlCOM::~CCdlCOM() {
+	if(_prtHdl == INVALID_HANDLE_VALUE)
+		return;
+
+	FlushFileBuffers(_prtHdl);
+	SetCommTimeouts(_prtHdl, &_oto);
+
+	CloseHandle(_prtHdl);
+
+}
+
+int  CCdlCOM::send(const void* buf, int size) {
+
+	if (_prtHdl == INVALID_HANDLE_VALUE) {
+		throw PortNotOpenException(_deviceName);
+	}
+
+	if(PurgeComm(_prtHdl, PURGE_TXABORT | PURGE_TXCLEAR) == 0) {
+		throw DeviceWriteException(_deviceName, "PurgeComm failed");
+	}
+
+	unsigned long readsz;
+	if (WriteFile(_prtHdl, buf, size, &readsz, 0) == 0) {
+		throw DeviceWriteException(_deviceName, "WriteFile failed");
+	}
+
+	if(readsz != static_cast<long>(size)) {
+		throw WriteNotCompleteException(_deviceName);
+	}
+
+	return (int)readsz;
+}
+
+int  CCdlCOM::recv(void* buf, int size) {
+
+	if (_prtHdl == INVALID_HANDLE_VALUE) {
+		throw PortNotOpenException(_deviceName);
+	}
+
+	unsigned char*	tmp	= static_cast<unsigned char*>(buf);
+	unsigned long readsz = 0, readsz_temp = 0;
+	KNI::Timer timeout(_ccd.rttc);
+	timeout.Start();
+	while (readsz<(unsigned long)size && !timeout.Elapsed()) {
+		if(ReadFile(_prtHdl, &tmp[readsz], size, &readsz_temp, 0) == 0) {
+			DeviceReadException( _deviceName, "ReadFile failed" );
+		} else {
+			readsz  += readsz_temp;
+		}
+	}
+
+	if((unsigned)size != readsz) {
+		throw ReadNotCompleteException(_deviceName);
+	}
+
+	if(PurgeComm(_prtHdl, PURGE_RXABORT | PURGE_RXCLEAR) == 0) {
+		throw DeviceReadException(_deviceName, "PurgeComm failed");
+	}
+	return (int)readsz;
+}
+
+
+#else //LINUX
+
+CCdlCOM::CCdlCOM(TCdlCOMDesc ccd) : _deviceName(""), _ccd(), _prtHdl(-1), _oto() {
+
+	int prtHdl	= -1;
+
+	std::string deviceName;
+	struct termios	nto, oto;
+	char		name[11];
+
+	errno = 0;
+
+	strncpy(name, "/dev/ttyS ", 11);
+	name[9] = digit(ccd.port);
+	prtHdl = ::open(name, O_RDWR | O_NOCTTY | O_NDELAY| O_NONBLOCK);
+
+	_deviceName = name;
+
+	if (prtHdl < 0) {
+		throw CannotOpenPortException(_deviceName, strerror(errno));
+	}
+
+	tcgetattr(prtHdl, &oto);
+	bzero(&nto, sizeof(nto));
+	nto.c_cc[VTIME]	= 0;
+	nto.c_cc[VMIN]	= 0;
+	nto.c_oflag	= 0;
+	nto.c_lflag	= 0;
+	nto.c_cflag	= CLOCAL | CREAD;
+	nto.c_iflag	= 0;
+
+	switch (ccd.baud) {
+	case     50:
+		nto.c_cflag |= B50;
+		break;
+	case     75:
+		nto.c_cflag |= B75;
+		break;
+	case    110:
+		nto.c_cflag |= B110;
+		break;
+	case    134:
+		nto.c_cflag |= B134;
+		break;
+	case    150:
+		nto.c_cflag |= B150;
+		break;
+	case    200:
+		nto.c_cflag |= B200;
+		break;
+	case    300:
+		nto.c_cflag |= B300;
+		break;
+	case    600:
+		nto.c_cflag |= B600;
+		break;
+	case   1200:
+		nto.c_cflag |= B1200;
+		break;
+	case   1800:
+		nto.c_cflag |= B1800;
+		break;
+	case   2400:
+		nto.c_cflag |= B2400;
+		break;
+	case   4800:
+		nto.c_cflag |= B4800;
+		break;
+	case   9600:
+		nto.c_cflag |= B9600;
+		break;
+	case  19200:
+		nto.c_cflag |= B19200;
+		break;
+	case  38400:
+		nto.c_cflag |= B38400;
+		break;
+	case  57600:
+		nto.c_cflag |= B57600;
+		break;
+	case 115200:
+		nto.c_cflag |= B115200;
+		break;
+	case 230400:
+		nto.c_cflag |= B230400;
+		break;
+	}
+
+	switch (ccd.data) {
+	case  5:
+		nto.c_cflag |= CS5;
+		break;
+	case  6:
+		nto.c_cflag |= CS6;
+		break;
+	case  7:
+		nto.c_cflag |= CS7;
+		break;
+	case  8:
+		nto.c_cflag |= CS8;
+		break;
+	}
+
+	switch (ccd.parity) {
+	case 'N':
+	case 'n':
+		break;
+	case 'O':
+	case 'o':
+		nto.c_cflag |= PARENB | PARODD;
+		break;
+	case 'E':
+	case 'e':
+		nto.c_cflag |= PARENB;
+		break;
+	}
+
+	switch (ccd.stop) {
+	case  1:
+		break;
+	case  2:
+		nto.c_cflag |= CSTOPB;
+		break;
+	}
+
+	tcflush(prtHdl,TCIFLUSH);
+	if (tcsetattr(prtHdl, TCSANOW, &nto) != 0) {
+		::close(prtHdl);
+		throw CannotGetSetPortAttributesException(_deviceName);
+	}
+
+	_prtHdl = prtHdl;
+	_deviceName = deviceName;
+	_ccd = ccd;
+	_oto = oto;
+}
+
+CCdlCOM::~CCdlCOM() {
+
+	if (_prtHdl < 0) {
+		return;
+	}
+
+	tcflush(_prtHdl, TCIFLUSH);
+	tcsetattr(_prtHdl, TCSANOW, &_oto);
+
+	::close(_prtHdl); // there's nothing we can do about failing
+
+}
+
+int  CCdlCOM::send(const void* buf, int size) {
+
+	if (_prtHdl < 0)
+		throw PortNotOpenException(_deviceName);
+
+	errno = 0;
+
+	int tcflush_return = tcflush(_prtHdl,TCIFLUSH);
+	if(tcflush_return < 0)
+		throw DeviceWriteException( _deviceName, strerror(errno) );
+
+	int writesz = write(_prtHdl, buf, size);
+
+	if(writesz < 0)
+		throw DeviceWriteException( _deviceName, strerror(errno) );
+
+	if(writesz != size)
+		throw WriteNotCompleteException(_deviceName);
+
+	return writesz;
+}
+
+int  CCdlCOM::recv(void* buf, int size) {
+	unsigned char*	tmp	= static_cast<unsigned char*>(buf);
+	register int	readsz 	= 0;
+
+	if (_prtHdl < 0)
+		throw PortNotOpenException(_deviceName);
+
+	errno = 0;
+
+	int read_return;
+	KNI::Timer timeout(_ccd.rttc);
+	timeout.Start();
+	while (readsz<size && !timeout.Elapsed()) {
+		read_return = read(_prtHdl, &tmp[readsz], size-readsz);
+		if(read_return < 0) {
+			if(errno != EAGAIN)
+				throw DeviceReadException( _deviceName, strerror(errno));
+		} else {
+			readsz  += read_return;
+		}
+	}
+
+	if (readsz != size)
+		throw ReadNotCompleteException(_deviceName);
+
+	int tcflush_return = tcflush(_prtHdl,TCIFLUSH);
+	if(tcflush_return < 0)
+		throw DeviceReadException( _deviceName, strerror(errno));
+
+	return readsz;
+
+}
+
+
+
+#endif //WIN32 else LINUX
+

kni-3.9.2-gcc43.patch:
 demo/keycontrol/keycontrol.cpp         |    1 +
 demo/perfo/main.cpp                    |    1 +
 demo/perfo/perfo.cpp                   |    9 +++++----
 demo/positions/main.cpp                |    1 +
 demo/sensor/main.cpp                   |    1 +
 demo/socketcommands/socketcommands.cpp |    1 +
 demo/socketcontrol/socketcontrol.cpp   |    1 +
 include/KNI/kmlMotBase.h               |    4 ++--
 src/Base/cdlCOM.cpp                    |    1 +
 src/Base/cdlSocket.cpp                 |    3 +++
 src/Base/cplSerial.cpp                 |    1 +
 src/Base/kmlBase.cpp                   |    1 +
 src/Base/kmlFactories.cpp              |    2 ++
 src/Base/kmlMotBase.cpp                |    2 ++
 14 files changed, 23 insertions(+), 6 deletions(-)

--- NEW FILE kni-3.9.2-gcc43.patch ---
diff -urN KNI_3.9.2/demo/keycontrol/keycontrol.cpp KNI_3.9.2.gcc43/demo/keycontrol/keycontrol.cpp
--- KNI_3.9.2/demo/keycontrol/keycontrol.cpp	2007-08-10 14:37:42.000000000 +0200
+++ KNI_3.9.2.gcc43/demo/keycontrol/keycontrol.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -10,6 +10,7 @@
 #include <vector>
 #include <fstream>
 #include <pthread.h>
+#include <cstdlib>
 
 
 #ifdef WIN32
diff -urN KNI_3.9.2/demo/perfo/main.cpp KNI_3.9.2.gcc43/demo/perfo/main.cpp
--- KNI_3.9.2/demo/perfo/main.cpp	2007-04-12 14:52:06.000000000 +0200
+++ KNI_3.9.2.gcc43/demo/perfo/main.cpp	2009-06-12 16:48:21.000000000 +0200
@@ -19,6 +19,7 @@
 #include "KNI/kmlBase.h"	//for robot: CKatBase, CMotBase, CSctBase
 #include "KNI/kmlExt.h"	// extended katana features
 #include <iostream>		//for messages: printf()
+#include <cstdio>
 
 /**********************************************************************************/
 #include "perfo.h"	//for performance checking..
diff -urN KNI_3.9.2/demo/perfo/perfo.cpp KNI_3.9.2.gcc43/demo/perfo/perfo.cpp
--- KNI_3.9.2/demo/perfo/perfo.cpp	2007-04-26 08:18:24.000000000 +0200
+++ KNI_3.9.2.gcc43/demo/perfo/perfo.cpp	2009-06-12 16:48:29.000000000 +0200
@@ -2,6 +2,7 @@
 #include "perfo.h"
 #include <time.h>
 #include <iostream>
+#include <cstdio>
 
 #include "KNI/cdlCOMExceptions.h"
 #include "KNI/cplSerial.h"
@@ -13,7 +14,7 @@
 #define CLOCK() (clock_t)((double)(1000.0f * clock()) / CLOCKS_PER_SEC)
 //-------------------------------------------------------------------------------//
 
-void statKatRecv(char strTitle[], long i, long j, clock_t t, long l) {
+void statKatRecv(const char strTitle[], long i, long j, clock_t t, long l) {
 	printf("-------------------------------------------\n");
 	printf(strTitle); printf("\tAverage: %.3f [ms]\n", (double)t/(double)l);
 	printf("-------------------------------------------\n");
@@ -102,7 +103,7 @@
 //-------------------------------------------------------------------------------//
 //-------------------------------------------------------------------------------//
 
-void statMotRecv(char strTitle[], short idx, long i, long j, clock_t t, long l) {
+void statMotRecv(const char strTitle[], short idx, long i, long j, clock_t t, long l) {
 	printf("-------------------------------------------\n");
 	printf(strTitle, idx); printf("\tAverage: %.3f [ms]\n", (double)t/(double)l);
 	printf("-------------------------------------------\n");
@@ -111,7 +112,7 @@
 	printf("-------------------------------------------\n\n");
 }
 
-void statMotSend(char strTitle[], short idx, long i, long j, long k, long s, clock_t t, long l) {
+void statMotSend(const char strTitle[], short idx, long i, long j, long k, long s, clock_t t, long l) {
 	printf("-------------------------------------------\n");
 	printf(strTitle, idx); printf("\tAverage: %.3f [ms]\n", (double)t/(double)l);
 	printf("-------------------------------------------\n");
@@ -278,7 +279,7 @@
 //-------------------------------------------------------------------------------//
 //-------------------------------------------------------------------------------//
 
-void statSct(char strTitle[], short idx, long i, long j, long k, long s, clock_t t, long l) {
+void statSct(const char strTitle[], short idx, long i, long j, long k, long s, clock_t t, long l) {
 	printf("-------------------------------------------\n");
 	printf(strTitle, idx); printf("\tAverage: %.3f [ms]\n", (double)t/(double)l);
 	printf("-------------------------------------------\n");
diff -urN KNI_3.9.2/demo/positions/main.cpp KNI_3.9.2.gcc43/demo/positions/main.cpp
--- KNI_3.9.2/demo/positions/main.cpp	2007-04-26 08:18:24.000000000 +0200
+++ KNI_3.9.2.gcc43/demo/positions/main.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -8,6 +8,7 @@
 #include <vector>
 #include <fstream>
 #include <pthread.h>
+#include <cstdlib>
 
 
 #ifdef WIN32
diff -urN KNI_3.9.2/demo/sensor/main.cpp KNI_3.9.2.gcc43/demo/sensor/main.cpp
--- KNI_3.9.2/demo/sensor/main.cpp	2007-04-26 08:18:24.000000000 +0200
+++ KNI_3.9.2.gcc43/demo/sensor/main.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -6,6 +6,7 @@
 #include <conio.h> //ONLY WIN32 COMPATIBLE!!
 #endif
 #include <time.h>
+#include <cstdlib>
 
 //------------------------------------------------------------------------//
 
diff -urN KNI_3.9.2/demo/socketcommands/socketcommands.cpp KNI_3.9.2.gcc43/demo/socketcommands/socketcommands.cpp
--- KNI_3.9.2/demo/socketcommands/socketcommands.cpp	2007-04-12 14:52:06.000000000 +0200
+++ KNI_3.9.2.gcc43/demo/socketcommands/socketcommands.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -6,6 +6,7 @@
 #include <iostream>
 #include <cstdio>
 #include <memory>
+#include <cstdlib>
 
 
 #ifdef WIN32
diff -urN KNI_3.9.2/demo/socketcontrol/socketcontrol.cpp KNI_3.9.2.gcc43/demo/socketcontrol/socketcontrol.cpp
--- KNI_3.9.2/demo/socketcontrol/socketcontrol.cpp	2007-09-03 16:04:48.000000000 +0200
+++ KNI_3.9.2.gcc43/demo/socketcontrol/socketcontrol.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -11,6 +11,7 @@
 #include <vector>
 #include <fstream>
 #include <pthread.h>
+#include <cstdlib>
 
 
 #ifdef WIN32
diff -urN KNI_3.9.2/include/KNI/kmlMotBase.h KNI_3.9.2.gcc43/include/KNI/kmlMotBase.h
--- KNI_3.9.2/include/KNI/kmlMotBase.h	2007-09-19 15:16:44.000000000 +0200
+++ KNI_3.9.2.gcc43/include/KNI/kmlMotBase.h	2009-06-12 16:48:02.000000000 +0200
@@ -45,7 +45,7 @@
 
 /*!	\brief	command flags
  */
-typedef enum TMotCmdFlg {
+enum TMotCmdFlg {
 	MCF_OFF		= 0,		//!< set the motor off
 	MCF_CALIB	= 4,		//!< calibrate
 	MCF_FREEZE	= 8,		//!< freeze the motor
@@ -54,7 +54,7 @@
 
 /*!	\brief	status flags
  */
-typedef enum TMotStsFlg	{
+enum TMotStsFlg	{
 	MSF_MECHSTOP	= 1,		//!< mechanical stopper reached
 	MSF_MAXPOS	= 2,		//!< max. position was reached
 	MSF_MINPOS	= 4,		//!< min. position was reached
diff -urN KNI_3.9.2/src/Base/cdlCOM.cpp KNI_3.9.2.gcc43/src/Base/cdlCOM.cpp
--- KNI_3.9.2/src/Base/cdlCOM.cpp	2007-04-12 14:52:06.000000000 +0200
+++ KNI_3.9.2.gcc43/src/Base/cdlCOM.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -22,6 +22,7 @@
 #include "KNI/cdlCOM.h"
 
 #include "common/Timer.h"
+#include <cstring>
 
 
 #ifdef WIN32
diff -urN KNI_3.9.2/src/Base/cdlSocket.cpp KNI_3.9.2.gcc43/src/Base/cdlSocket.cpp
--- KNI_3.9.2/src/Base/cdlSocket.cpp	2007-11-06 14:45:08.000000000 +0100
+++ KNI_3.9.2.gcc43/src/Base/cdlSocket.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -21,6 +21,9 @@
 /****************************************************************************/
 #include "KNI/cdlSocket.h"
 #include <iostream>
+#include <cstring>
+#include <cstdlib>
+
 /****************************************************************************/
 //test write:
 int writesz;
diff -urN KNI_3.9.2/src/Base/cplSerial.cpp KNI_3.9.2.gcc43/src/Base/cplSerial.cpp
--- KNI_3.9.2/src/Base/cplSerial.cpp	2007-11-13 10:38:44.000000000 +0100
+++ KNI_3.9.2.gcc43/src/Base/cplSerial.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -22,6 +22,7 @@
 #include "KNI/CRC.h"
 #include <assert.h>
 #include <iostream>
+#include <cstring>
 
 
 /*
diff -urN KNI_3.9.2/src/Base/kmlBase.cpp KNI_3.9.2.gcc43/src/Base/kmlBase.cpp
--- KNI_3.9.2/src/Base/kmlBase.cpp	2007-11-07 09:22:52.000000000 +0100
+++ KNI_3.9.2.gcc43/src/Base/kmlBase.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -21,6 +21,7 @@
 #include "KNI/kmlBase.h"
 
 #include <vector>
+#include <cstring>
 
 bool CKatBase::init(
     const TKatGNL _gnl,
diff -urN KNI_3.9.2/src/Base/kmlFactories.cpp KNI_3.9.2.gcc43/src/Base/kmlFactories.cpp
--- KNI_3.9.2/src/Base/kmlFactories.cpp	2007-07-16 14:17:40.000000000 +0200
+++ KNI_3.9.2.gcc43/src/Base/kmlFactories.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -1,5 +1,7 @@
 
 #include "KNI/kmlFactories.h"
+#include <cstring>
+#include <cstdlib>
 
 namespace KNI {
 
diff -urN KNI_3.9.2/src/Base/kmlMotBase.cpp KNI_3.9.2.gcc43/src/Base/kmlMotBase.cpp
--- KNI_3.9.2/src/Base/kmlMotBase.cpp	2007-09-19 15:16:44.000000000 +0200
+++ KNI_3.9.2.gcc43/src/Base/kmlMotBase.cpp	2009-06-12 16:48:02.000000000 +0200
@@ -15,6 +15,8 @@
 #include "common/MathHelperFunctions.h"
 #include "common/Timer.h"
 #include <iostream>
+#include <cstring>
+#include <cstdlib>
 
 
 bool CMotBase::init(CKatBase* _own, const TMotDesc _motDesc, CCplBase* _protocol) {

kni-3.9.2-noexit.patch:
 cdlSocket.cpp |    7 ++++---
 kmlExt.cpp    |    4 +++-
 2 files changed, 7 insertions(+), 4 deletions(-)

--- NEW FILE kni-3.9.2-noexit.patch ---
diff -urN KNI_3.9.2.patched/src/Base/cdlSocket.cpp KNI_3.9.2.noexit/src/Base/cdlSocket.cpp
--- KNI_3.9.2.patched/src/Base/cdlSocket.cpp	2008-12-01 13:12:13.000000000 +0100
+++ KNI_3.9.2.noexit/src/Base/cdlSocket.cpp	2008-12-01 13:16:07.000000000 +0100
@@ -23,6 +23,7 @@
 #include <iostream>
 #include <cstring>
 #include <cstdlib>
+#include <stdexcept>
 
 /****************************************************************************/
 //test write:
@@ -95,7 +96,7 @@
 	_socketfd = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
 	if(_socketfd == -1){
 		std::cout << "socket could not be created"<<_ipAddr<<" port: "<< _port<<" \n";
-		exit(1);
+		throw std::runtime_error("socket could not be created");
 	}
 	memset(&_socketAddr, 0, sizeof(_socketAddr));  
 	_socketAddr.sin_family = AF_INET;
@@ -106,13 +107,13 @@
 	res = inet_pton ( AF_INET, _ipAddr, &_socketAddr.sin_addr );
 	if ( errno == EAFNOSUPPORT ){
 		std::cout << "inet_pton failed, try again "<<_ipAddr<<" port: "<< _port<<" \n";
-		exit(1);
+		throw std::runtime_error("inet_pton failed (EAFNOSUPPORT)");
 	}
 //	std::cout << "trying to connect to server...\n";
 	res = connect(_socketfd, (struct sockaddr *) &_socketAddr, _len);
 	if(res != 0){
 		std::cout << "client could not connect, check if server is running on ip "<<_ipAddr<<" port: "<< _port<<" \n";
-		exit(1);
+		throw std::runtime_error("client could not connect, check if server is running");
 	}
 	else{
 //		std::cout << "client connected to ip "<<_ipAddr<<", port: "<< _port<<" \n";
diff -urN KNI_3.9.2.patched/src/Base/kmlExt.cpp KNI_3.9.2.noexit/src/Base/kmlExt.cpp
--- KNI_3.9.2.patched/src/Base/kmlExt.cpp	2007-09-28 07:38:10.000000000 +0200
+++ KNI_3.9.2.noexit/src/Base/kmlExt.cpp	2008-12-01 13:16:58.000000000 +0100
@@ -28,6 +28,7 @@
 #include <iostream>
 #include <algorithm>
 #include <vector>
+#include <stdexcept>
 
 #define max(a,b) (((a)>(b))?(a):(b))
 KNI::Timer kni_timer;
@@ -145,7 +146,8 @@
 		std::cout << "Exit: Incompatible Config File!\n";
 		std::cout << "Check whether you have a Katana 400 or 300 and choose the config file accordingly\n";
 		std::cout << "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n.";
-		exit(0);
+		throw std::runtime_error("Exit: Incompatible Config File! "
+					 "Check whether you have a Katana 400 or 300 and choose the config file accordingly");
 	}
 	bool gripperIsPresent;
 	int gripperOpenEncoders, gripperCloseEncoders;

kni-3.9.2-sofixes.patch:
 demo/Makefile       |   10 +++++-----
 src/Base/Makefile   |   13 ++++++++-----
 src/InvKin/Makefile |   14 +++++++++-----
 src/LM/Makefile     |   13 ++++++++-----
 src/common/Makefile |    4 ++--
 5 files changed, 32 insertions(+), 22 deletions(-)

--- NEW FILE kni-3.9.2-sofixes.patch ---
diff -urN KNI_3.9.2/demo/Makefile KNI_3.9.2.sofixes/demo/Makefile
--- KNI_3.9.2/demo/Makefile	2007-06-20 08:05:24.000000000 +0200
+++ KNI_3.9.2.sofixes/demo/Makefile	2009-08-28 22:09:05.000000000 +0200
@@ -34,11 +34,11 @@
 INCLUDE_DIR = ../include -I./common
 LIBRARY_DIR  = ../lib/linux
 
-BASE_LIBRARY = $(LIBRARY_DIR)/libKNIBase.a
-INVKIN_LIBRARY = $(LIBRARY_DIR)/libKNI_InvKin.a
-LM_LIBRARY = $(LIBRARY_DIR)/libKNI_LM.a
+BASE_LIBRARY = $(LIBRARY_DIR)/libKNIBase3.a
+INVKIN_LIBRARY = $(LIBRARY_DIR)/libKNI_InvKin3.a
+LM_LIBRARY = $(LIBRARY_DIR)/libKNI_LM3.a
 
-AVAILABLE_LIBRARIES = ./common/keyboard.o ${BASE_LIBRARY} ${INVKIN_LIBRARY} ${LM_LIBRARY}
+AVAILABLE_LIBRARIES = ./common/keyboard.o
 
 .SILENT:
 
@@ -55,7 +55,7 @@
 
 $(TARGETS_D): $(CTARGETS_D)
 	echo -n "Building: $@"
-	if $(CXX) $(CXXFLAGS) -I$(INCLUDE_DIR) -lpthread -o $(@:.demo=)/$(@:.demo=) $(wildcard $(@:.demo=)/*.cpp) ${AVAILABLE_LIBRARIES} 2>.clog; \
+	if $(CXX) $(CXXFLAGS) -I$(INCLUDE_DIR) -L../lib/linux -lKNIBase3 -lKNI_InvKin3 -lKNI_LM3 -lpthread -o $(@:.demo=)/$(@:.demo=) $(wildcard $(@:.demo=)/*.cpp) ${AVAILABLE_LIBRARIES} 2>.clog; \
 	then echo " [ok]"; \
 		cat .clog; \
 	else echo " [failed]"; \
diff -urN KNI_3.9.2/src/Base/Makefile KNI_3.9.2.sofixes/src/Base/Makefile
--- KNI_3.9.2/src/Base/Makefile	2007-04-26 08:18:24.000000000 +0200
+++ KNI_3.9.2.sofixes/src/Base/Makefile	2009-08-28 22:08:00.000000000 +0200
@@ -24,20 +24,22 @@
 
 TARGETS		=	alib solib
 
-LIBNAME = libKNIBase
+LIBNAME = libKNIBase3
 SOURCES = cdlCOM.cpp cplSerial.cpp cdlSocket.cpp CRC.cpp kmlBase.cpp kmlExt.cpp kmlMotBase.cpp kmlSctBase.cpp kmlFactories.cpp
 
 ADDITIONAL_DEPS = ../common/Timer.o
 
 LIBNAME_A  = $(LIBNAME).a
 LIBNAME_SO = $(LIBNAME).so.$(MAJOR_VERSION).$(MINOR_VERSION)
-
-SLCFLAGS=-fPIC
-SLLDFLAGS=-shared
+LIBNAME_SO_LN = $(LIBNAME).so
+LIBNAME_SONAME = $(LIBNAME).so.$(MAJOR_VERSION)
 
 INCLUDE_DIR = ../../include
 TARGET_DIR  = ../../lib/linux
 
+SLCFLAGS=-fPIC
+SLLDFLAGS = -shared -L$(TARGET_DIR)
+
 .SILENT:
 
 .SUFFIXES: .cpp.o
@@ -69,8 +71,9 @@
 
 $(TARGET_DIR)/$(LIBNAME_SO): $(SOURCES:.cpp=.o)
 	echo -n "Building: $@"
-	if $(CXX) $(CXXFLAGS) $(SLLDFLAGS) -o $@ $(SOURCES:.cpp=.o) $(ADDITITIONAL_DEPS) 2>.slog; \
+	if $(CXX) $(CXXFLAGS) $(SLLDFLAGS) -o $@ -Wl,-soname,$(LIBNAME_SONAME) $(SOURCES:.cpp=.o) $(ADDITIONAL_DEPS) 2>.slog; \
 	then echo " [ok]"; \
+	     ln -s $(LIBNAME_SO) $(TARGET_DIR)/$(LIBNAME_SO_LN); \
 	     cat .slog; \
 	else echo " [failed]"; \
 	     cat .slog; \
diff -urN KNI_3.9.2/src/common/Makefile KNI_3.9.2.sofixes/src/common/Makefile
--- KNI_3.9.2/src/common/Makefile	2007-04-26 08:18:24.000000000 +0200
+++ KNI_3.9.2.sofixes/src/common/Makefile	2009-08-28 22:08:16.000000000 +0200
@@ -17,14 +17,14 @@
 #===========================================================================
 
 CXX		=	g++
-CXXFLAGS	+=	-g -O2 -Wall
+CXXFLAGS	+=	-g -O2 -Wall -fPIC
 
 MAJOR_VERSION	=	3.9
 MINOR_VERSION	=	0
 
 TARGETS		=	alib
 
-LIBNAME = knicommon
+LIBNAME = knicommon3
 SOURCES = Timer.cpp
 
 LIBNAME_A  = $(LIBNAME).a
diff -urN KNI_3.9.2/src/InvKin/Makefile KNI_3.9.2.sofixes/src/InvKin/Makefile
--- KNI_3.9.2/src/InvKin/Makefile	2007-04-26 08:18:24.000000000 +0200
+++ KNI_3.9.2.sofixes/src/InvKin/Makefile	2009-08-28 22:08:25.000000000 +0200
@@ -24,20 +24,23 @@
 
 TARGETS		=	alib solib
 
-LIBNAME = libKNI_InvKin
+LIBNAME = libKNI_InvKin3
 SOURCES = ikBase.cpp KatanaKinematics6M90G.cpp KatanaKinematics6M90T.cpp KatanaKinematics6M180.cpp KatanaKinematics5M180.cpp KatanaKinematicsDecisionAlgorithms.cpp
 
 ADDITIONAL_DEPS = ../common/Timer.o
 
 LIBNAME_A  = $(LIBNAME).a
 LIBNAME_SO = $(LIBNAME).so.$(MAJOR_VERSION).$(MINOR_VERSION)
-
-SLCFLAGS=-fPIC
-SLLDFLAGS=-shared
+LIBNAME_SO_LN = $(LIBNAME).so
+LIBNAME_SONAME = $(LIBNAME).so.$(MAJOR_VERSION)
 
 INCLUDE_DIR = ../../include
 TARGET_DIR  = ../../lib/linux
 
+SLCFLAGS=-fPIC
+SLLDFLAGS=-shared -L$(TARGET_DIR) -lKNIBase3
+
+
 .SILENT:
 
 .SUFFIXES: .cpp.o
@@ -69,8 +72,9 @@
 
 $(TARGET_DIR)/$(LIBNAME_SO): $(SOURCES:.cpp=.o)
 	echo -n "Building: $@"
-	if $(CXX) $(CXXFLAGS) $(SLLDFLAGS) -o $@ $(SOURCES:.cpp=.o) $(ADDITITIONAL_DEPS) 2>.slog; \
+	if $(CXX) $(CXXFLAGS) $(SLLDFLAGS) -o $@ -Wl,-soname,$(LIBNAME_SONAME) $(SOURCES:.cpp=.o) $(ADDITIONAL_DEPS) 2>.slog; \
 	then echo " [ok]"; \
+	     ln -s $(LIBNAME_SO) $(TARGET_DIR)/$(LIBNAME_SO_LN); \
 	     cat .slog; \
 	else echo " [failed]"; \
 	     cat .slog; \
diff -urN KNI_3.9.2/src/LM/Makefile KNI_3.9.2.sofixes/src/LM/Makefile
--- KNI_3.9.2/src/LM/Makefile	2007-04-26 08:18:24.000000000 +0200
+++ KNI_3.9.2.sofixes/src/LM/Makefile	2009-08-28 22:08:40.000000000 +0200
@@ -24,20 +24,22 @@
 
 TARGETS		=	alib solib
 
-LIBNAME = libKNI_LM
+LIBNAME = libKNI_LM3
 SOURCES = lmBase.cpp
 
 ADDITIONAL_DEPS = ../common/Timer.o
 
 LIBNAME_A  = $(LIBNAME).a
 LIBNAME_SO = $(LIBNAME).so.$(MAJOR_VERSION).$(MINOR_VERSION)
-
-SLCFLAGS=-fPIC
-SLLDFLAGS=-shared
+LIBNAME_SO_LN = $(LIBNAME).so
+LIBNAME_SONAME = $(LIBNAME).so.$(MAJOR_VERSION)
 
 INCLUDE_DIR = ../../include
 TARGET_DIR  = ../../lib/linux
 
+SLCFLAGS=-fPIC
+SLLDFLAGS=-shared -L$(TARGET_DIR) -lKNIBase3 -lKNI_InvKin3
+
 .SILENT:
 
 .SUFFIXES: .cpp.o
@@ -69,8 +71,9 @@
 
 $(TARGET_DIR)/$(LIBNAME_SO): $(SOURCES:.cpp=.o)
 	echo -n "Building: $@"
-	if $(CXX) $(CXXFLAGS) $(SLLDFLAGS) -o $@ $(SOURCES:.cpp=.o) $(ADDITITIONAL_DEPS) 2>.slog; \
+	if $(CXX) $(CXXFLAGS) $(SLLDFLAGS) -o $@ -Wl,-soname,$(LIBNAME_SONAME) $(SOURCES:.cpp=.o) $(ADDITIONAL_DEPS) 2>.slog; \
 	then echo " [ok]"; \
+	     ln -s $(LIBNAME_SO) $(TARGET_DIR)/$(LIBNAME_SO_LN); \
 	     cat .slog; \
 	else echo " [failed]"; \
 	     cat .slog; \


--- NEW FILE libkni3.spec ---
Name:           libkni3
Version:        3.9.2
Release:        12%{?dist}
Summary:        C++ KNI library v3 for the Katana 300 robot arm

Group:          System Environment/Libraries
License:        GPLv2+
URL:            http://www.neuronics.ch/cms_de/web/index.php?id=386
Source0:        http://www.neuronics.ch/cms_de/mediabase/KNI_3.9.2.tar.gz
Patch0:         kni-3.9.2-gcc43.patch
Patch1:         kni-3.9.2-sofixes.patch
Patch2:         kni-3.9.2-ctor.patch
Patch3:         kni-3.9.2-noexit.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)

BuildRequires:  doxygen, graphviz
%if 0%{?fedora} >= 9
BuildRequires:  texlive-utils
%else
BuildRequires:  tetex
%endif

BuildRequires:  boost-devel

%description
Katana Native Interface is a C++ library for programmers who would like to
write their own programs, but don't want to implement the protocol and
device stuff katana is using.

This package contains the library for the Katana 300 series of the arm. For
newer robots use libkni (version 4 and above).


%package        devel
Summary:        Development files for %{name}
Group:          Development/Libraries
Requires:       %{name} = %{version}-%{release}
Requires:       pkgconfig

%description    devel
The %{name}-devel package contains libraries and header files for
developing applications that use %{name}.


%package        static
Summary:        Static libraries for %{name}
Group:          Development/Libraries
Requires:       %{name}-devel = %{version}-%{release}

%description    static
This package contains static libraries that can be used to
compile static binaries using %{name}.


%package        doc
Summary:        Documentation for %{name}
Group:          Documentation

%description    doc
This package contains the documentation for developing with %{name}.

%package        examples
Summary:        Example applications for %{name}
Group:          Applications/System
Requires:       %{name} = %{version}-%{release}

%description    examples
This package contains demo applications for %{name}.

%prep
%setup -q -n KNI_%{version}
%patch0 -p1 -b .gcc43
%patch1 -p1 -b .sofixes
%patch2 -p1 -b .ctor
%patch3 -p1 -b .noexit


%build
make CFLAGS="%{optflags}"
make doc
echo "prefix=%{prefix}
exec_prefix=%{prefix}
libdir=%{_libdir}
includedir=%{_includedir}

Name: %{name}
Description: %{summary}
Version: %{version}
Libs: -L\${libdir} -lKNIBase3 -lKNI_InvKin3 -lKNI_LM3
Cflags: -I\${includedir}/kni3" > libkni3.pc


%install
rm -rf %{buildroot}
mkdir -p %{buildroot}
mkdir -p %{buildroot}%{_libdir}
install -m 0644 -p lib/linux/*.a %{buildroot}%{_libdir}
install -p lib/linux/*.so.* %{buildroot}%{_libdir}
for f in `find %{buildroot}%{_libdir} -name '*.so.*.*.*'`; do
    ln -s `basename $f` %{buildroot}%{_libdir}/`echo \`basename $f\` | sed -e 's/\(\(.*\).so\)\(.*\)/\1/'`
    ln -s `basename $f` %{buildroot}%{_libdir}/`objdump --private-headers $f | grep SONAME | awk '{print $2}'`
done
mkdir -p %{buildroot}%{_bindir}
for f in `find demo/ -perm /a+x -type f`; do
    install -p $f %{buildroot}%{_bindir}/kni_`basename $f`
done
mkdir -p %{buildroot}%{_sysconfdir}/kni3
mkdir -p %{buildroot}%{_sysconfdir}/kni3/hd300
mkdir -p %{buildroot}%{_sysconfdir}/kni3/hd400
install -p -m 0644 configfiles300/*.cfg %{buildroot}%{_sysconfdir}/kni3/hd300
install -p -m 0644 configfiles400/*.cfg %{buildroot}%{_sysconfdir}/kni3/hd400
mkdir -p %{buildroot}%{_includedir}/kni3
cp -a include/* %{buildroot}%{_includedir}/kni3
mkdir -p %{buildroot}%{_docdir}/%{name}-doc-%{version}
cp -a doc/html %{buildroot}%{_docdir}/%{name}-doc-%{version}
install -p -m 0644 doc/*.pdf %{buildroot}%{_docdir}/%{name}-doc-%{version}
find %{buildroot} -name '.svn' | xargs rm -rf
mkdir -p %{buildroot}%{_libdir}/pkgconfig
install -p -m 0644 libkni3.pc %{buildroot}%{_libdir}/pkgconfig


%clean
rm -rf %{buildroot}


%post -p /sbin/ldconfig

%postun -p /sbin/ldconfig


%files
%defattr(-,root,root,-)
%doc LICENSE.txt readme.txt AUTHORS.txt
%{_libdir}/*.so.*
%dir %{_sysconfdir}/kni3
%dir %{_sysconfdir}/kni3/hd300
%dir %{_sysconfdir}/kni3/hd400
%config(noreplace)%{_sysconfdir}/kni3/*/*.cfg

%files devel
%defattr(-,root,root,-)
%{_includedir}/*
%{_libdir}/*.so
%{_libdir}/pkgconfig/*

%files static
%defattr(-,root,root,-)
%{_libdir}/*.a

%files doc
%defattr(-, root, root, 0755)
%{_docdir}/%{name}-doc-%{version}

%files examples
%defattr(-, root, root, 0755)
%{_bindir}/kni_*


%changelog
* Mon Sep 14 2009 Tim Niemueller <tim at niemueller.de> - 3.9.2-12
- doc package contains doc dir, not docs

* Fri Aug 28 2009 Tim Niemueller <tim at niemueller.de> - 3.9.2-11
- Rename shared libs to allow parallel installation for libkni
- Merge all shared lib related patches to one sofixes patch

* Sat Jun 13 2009 Tim Niemueller <tim at niemueller.de> - 3.9.2-10
- Update ctor and gcc43 patch for F11

* Tue Jun 09 2009 Tim Niemueller <tim at niemueller.de> - 3.9.2-9
- Rename to libkni3, libkni will be the most up2date version (v4), but this
  version is still required for older Katana 300 arms
- Add patch to fix library building, did work on my machin only because libs
  were installed on the system

* Wed Dec 03 2008 Tim Niemueller <tim at niemueller.de> - 3.9.2-8
- Fix noexit patch

* Mon Dec 01 2008 Tim Niemueller <tim at niemueller.de> - 3.9.2-7
- Make patch 3 apply with fuzz=0
- Added patch that removes calls to exit() but throws exceptions

* Sun Nov 09 2008 Tim Niemueller <tim at niemueller.de> - 3.9.2-6
- Updated license tag
- Consistent (non-)macro usage

* Tue Jul 15 2008 Tim Niemueller <tim at niemueller.de> - 3.9.2-5
- Added ctor patch which adds an optional argument to the ctor to allow for
  accessing an arbitrary device, for example a usb2ser converter
  (RoboCup 2008)

* Mon Jun 23 2008 Tim Niemueller <tim at niemueller.de> - 3.9.2-4
- More .so fixes, link libs against base lib to get rid of
  undefined-non-weak-symbol rpmlint warnings

* Mon Jun 16 2008 Tim Niemueller <tim at niemueller.de> - 3.9.2-3
- Fixed summary

* Thu Jun 12 2008 Tim Niemueller <tim at niemueller.de> - 3.9.2-2
- Upgraded BR to support building on Fedora version < 9

* Sat Jun 07 2008 Tim Niemueller <tim at niemueller.de> - 3.9.2-1
- Initial package



Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/libkni3/F-11/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- .cvsignore	14 Sep 2009 05:03:12 -0000	1.1
+++ .cvsignore	14 Sep 2009 22:51:58 -0000	1.2
@@ -0,0 +1 @@
+KNI_3.9.2.tar.gz


Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/libkni3/F-11/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- sources	14 Sep 2009 05:03:12 -0000	1.1
+++ sources	14 Sep 2009 22:51:58 -0000	1.2
@@ -0,0 +1 @@
+63b40f2c258f7ce2159b2471f4569165  KNI_3.9.2.tar.gz




More information about the scm-commits mailing list