r2863 - in vdr/vdr-plugin-chanorg/trunk: . debian debian/patches

Thomas Günther tom-guest at costa.debian.org
Sun Jun 11 19:38:59 UTC 2006


Author: tom-guest
Date: 2006-06-11 19:38:57 +0000 (Sun, 11 Jun 2006)
New Revision: 2863

Added:
   vdr/vdr-plugin-chanorg/trunk/debian/
   vdr/vdr-plugin-chanorg/trunk/debian/changelog
   vdr/vdr-plugin-chanorg/trunk/debian/compat
   vdr/vdr-plugin-chanorg/trunk/debian/control
   vdr/vdr-plugin-chanorg/trunk/debian/copyright
   vdr/vdr-plugin-chanorg/trunk/debian/docs
   vdr/vdr-plugin-chanorg/trunk/debian/install
   vdr/vdr-plugin-chanorg/trunk/debian/patches/
   vdr/vdr-plugin-chanorg/trunk/debian/patches/00list
   vdr/vdr-plugin-chanorg/trunk/debian/patches/01_Makefile-fPIC-fix.dpatch
   vdr/vdr-plugin-chanorg/trunk/debian/patches/02_OOPS_Kill.dpatch
   vdr/vdr-plugin-chanorg/trunk/debian/patches/03_chanorg-0.0.6_fix-EbS-crash.dpatch
   vdr/vdr-plugin-chanorg/trunk/debian/patches/90_APIVERSION.dpatch
   vdr/vdr-plugin-chanorg/trunk/debian/rules
   vdr/vdr-plugin-chanorg/trunk/debian/watch
Log:
Load newtrunk into vdr/vdr-plugin-chanorg/trunk.


Added: vdr/vdr-plugin-chanorg/trunk/debian/changelog
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/changelog	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/changelog	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,11 @@
+vdr-plugin-chanorg (0.0.6-1) unstable; urgency=low
+
+  * Klaus Deiss <kdeiss at web.de>
+    - Initial Release.
+  * Thomas Günther <tom at toms-cafe.de>
+    - Corrected debian/control and debian/copyright
+    - Added debian/watch file for uscan
+    - Added 03_chanorg-0.0.6_fix-EbS-crash.dpatch
+
+ -- Debian VDR Team <pkg-vdr-dvb-devel at lists.alioth.debian.org>  Sat,  21 May 2006 23:08:35 +0200
+

Added: vdr/vdr-plugin-chanorg/trunk/debian/compat
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/compat	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/compat	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1 @@
+4

Added: vdr/vdr-plugin-chanorg/trunk/debian/control
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/control	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/control	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,14 @@
+Source: vdr-plugin-chanorg
+Section: misc
+Priority: extra
+Maintainer: Debian VDR Team <pkg-vdr-dvb-devel at lists.alioth.debian.org>
+Uploaders: Thomas Günther <tom at toms-cafe.de>, Tobias Grimm <tg at e-tobi.net>, Thomas Schmidt <tschmidt at debian.org>
+Build-Depends: debhelper (>> 4.1.16), vdr-dev (>= 1.4.0-1), dpatch
+Standards-Version: 3.6.2
+
+Package: vdr-plugin-chanorg
+Architecture: any
+Depends: ${shlibs:Depends}, ${vdr:Depends}
+Description: Channel organizer for VDR
+ This plugin allows you to manage your channels.conf.
+XB-VDR-Patchlevel: ${vdr:Patchlevel}

Added: vdr/vdr-plugin-chanorg/trunk/debian/copyright
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/copyright	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/copyright	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,11 @@
+This package was debianized by Klaus Deiss <kdeiss at web.de> on
+Sat, 20 May 2006 17:06:55 +0100.
+
+It was downloaded from http://www.freewebs.com/sadhome/Plugin/Chanorg.html
+
+Upstream Author: Sad <sad at ntica.com>
+
+Copyright:
+
+It may be redistributed under the terms of the GNU GPL, Version 2
+found on Debian systems in the file /usr/share/common-licenses/GPL .

Added: vdr/vdr-plugin-chanorg/trunk/debian/docs
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/docs	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/docs	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1 @@
+README

Added: vdr/vdr-plugin-chanorg/trunk/debian/install
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/install	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/install	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1 @@
+libvdr-chanorg.so.*    usr/lib/vdr/plugins/

Added: vdr/vdr-plugin-chanorg/trunk/debian/patches/00list
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/patches/00list	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/patches/00list	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,5 @@
+01_Makefile-fPIC-fix
+02_OOPS_Kill
+03_chanorg-0.0.6_fix-EbS-crash
+90_APIVERSION.dpatch
+

Added: vdr/vdr-plugin-chanorg/trunk/debian/patches/01_Makefile-fPIC-fix.dpatch
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/patches/01_Makefile-fPIC-fix.dpatch	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/patches/01_Makefile-fPIC-fix.dpatch	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,20 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+
+## Makefile-fPIC-fix patch
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Adds -fPIC to Makefile to fix potential FTBFS.
+
+ at DPATCH@
+diff -urNad /usr/src/cvs/vdrdevel-plugin-rotor/Makefile vdrdevel-plugin-rotor/Makefile
+--- /usr/src/cvs/vdrdevel-plugin-rotor/Makefile	Sun May 16 15:48:12 2004
++++ vdrdevel-plugin-rotor/Makefile	Sat Sep 11 00:28:18 2004
+@@ -18,7 +18,7 @@
+ ### The C++ compiler and options:
+ 
+ CXX      ?= g++
+-CXXFLAGS ?= -O2 -Wall -Woverloaded-virtual
++CXXFLAGS ?= -fPIC -O2 -Wall -Woverloaded-virtual
+ 
+ ### The directory environment:
+ 

Added: vdr/vdr-plugin-chanorg/trunk/debian/patches/02_OOPS_Kill.dpatch
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/patches/02_OOPS_Kill.dpatch	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/patches/02_OOPS_Kill.dpatch	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,678 @@
+#!/bin/sh /usr/share/dpatch/dpatch-run
+## 02_OOPS_Kill.dpatch by Klaus Deiss <kdeiss at web.de>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fixes crash.
+
+ at DPATCH@
+diff -Naur chanorg-0.0.6.orig/chan-menu.c chanorg-0.0.6/chan-menu.c
+--- chanorg-0.0.6.orig/chan-menu.c	2005-01-26 19:06:13.000000000 +0100
++++ chanorg-0.0.6/chan-menu.c	2005-01-31 19:25:36.956680980 +0100
+@@ -14,37 +14,37 @@
+ 
+ void cGroupMove::Setup()
+ {
+-	cChannel *tmp=ChanOrg.OrgChans.First();
++	cChannel *tmp=pChanOrg->OrgChans.First();
+         Clear();
+ 	cChannel *last=new cChannel();
+ #if VDRVERSNUM<10315
+ 	last->SetName(tr(":End"));
+-	ChanOrg.OrgChans.NewChannel(last,last->Name(),0,0,0,0);
++	pChanOrg->OrgChans.NewChannel(last,last->Name(),0,0,0,0);
+ #else
+ 	last->SetName(tr(":End"),"","");
+-	ChanOrg.OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
++	pChanOrg->OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
+ #endif
+-	ChanOrg.OrgChans.Last()->Parse(last->Name());
+-	ChanOrg.OrgChans.ReNumber();
++	pChanOrg->OrgChans.Last()->Parse(last->Name());
++	pChanOrg->OrgChans.ReNumber();
+ 	int j=0;
+-	if (ChanOrg.OrgChans.First()->GroupSep() && tmp!=ToMove)
++	if (pChanOrg->OrgChans.First()->GroupSep() && tmp!=ToMove)
+ 	{
+-		Add(new cOsdItem(ChanOrg.OrgChans.First()->Name(),osUser1));
+-		Group[j]=ChanOrg.OrgChans.First();
++		Add(new cOsdItem(pChanOrg->OrgChans.First()->Name(),osUser1));
++		Group[j]=pChanOrg->OrgChans.First();
+ 		j++;
+ 	}
+ 	int i=0;
+-	while ((i=ChanOrg.OrgChans.GetNextGroup(i))>0)
++	while ((i=pChanOrg->OrgChans.GetNextGroup(i))>0)
+ 	{
+-		tmp=ChanOrg.OrgChans.Get(i);
++		tmp=pChanOrg->OrgChans.Get(i);
+ 		Group[j]=tmp;
+-		if (tmp != ToMove && tmp->Index()!=ChanOrg.OrgChans.GetNextGroup(ToMove->Index()))
++		if (tmp != ToMove && tmp->Index()!=pChanOrg->OrgChans.GetNextGroup(ToMove->Index()))
+ 		{
+ 		Add(new cOsdItem(tmp->Name(),osUser1));
+ 		j++;
+ 		}
+ 	}
+-	SetCurrent(Get(ChanOrg.LastAffect));
++	SetCurrent(Get(pChanOrg->LastAffect));
+ 	Display();
+ }
+ 
+@@ -59,9 +59,9 @@
+ 	{
+ 		case osUser1 : 
+ 			MoveGroup(Group[Current()]);
+-			ChanOrg.OrgChans.Del(ChanOrg.OrgChans.Last());
+-			ChanOrg.OrgChans.ReNumber();
+-			ChanOrg.ReDraw=true;
++			pChanOrg->OrgChans.Del(pChanOrg->OrgChans.Last());
++			pChanOrg->OrgChans.ReNumber();
++			pChanOrg->ReDraw=true;
+ 			return osBack;
+ 			break;
+ 		default:break;
+@@ -78,16 +78,16 @@
+ 	while (move && (!move->GroupSep() || move==ToMove) )
+ 	{
+ 		movelist[i]=move;
+-		move=ChanOrg.OrgChans.Next(move);
++		move=pChanOrg->OrgChans.Next(move);
+ 		i++;
+ 	}
+ 	nbr=i;
+ 	for (int j=0;j<nbr;j++)
+ 	{
+ 		if (movelist[j]->Index() > chan->Index())
+-		ChanOrg.OrgChans.Move(movelist[j],chan);
++		pChanOrg->OrgChans.Move(movelist[j],chan);
+ 		else
+-		ChanOrg.OrgChans.Move(movelist[j]->Index(),chan->Index()-1);
++		pChanOrg->OrgChans.Move(movelist[j]->Index(),chan->Index()-1);
+ 	}
+ }
+ 
+@@ -111,17 +111,17 @@
+ 	switch(Key)
+ 	{
+ 		case kOk : 
+-			   ChanOrg.LastAffect = Current();
++			   pChanOrg->LastAffect = Current();
+ 			   if (chan->Number()>Group[Current()]->Number())
+ 			   {
+-				ChanOrg.OrgChans.Move(chan,ChanOrg.OrgChans.Next(Group[Current()]));
++				pChanOrg->OrgChans.Move(chan,pChanOrg->OrgChans.Next(Group[Current()]));
+ 			   }
+ 			   else
+ 			   {
+-			   ChanOrg.OrgChans.Move(chan,Group[Current()]);
++			   pChanOrg->OrgChans.Move(chan,Group[Current()]);
+ 			   }
+-			   ChanOrg.OrgChans.ReNumber();
+-			   ChanOrg.ReDraw=true;
++			   pChanOrg->OrgChans.ReNumber();
++			   pChanOrg->ReDraw=true;
+ 			   return osBack;
+ 			   break;
+ 		default : break;
+@@ -133,22 +133,22 @@
+ {
+ 	Clear();
+ 	int j=0;
+-	if (ChanOrg.OrgChans.First()->GroupSep())
++	if (pChanOrg->OrgChans.First()->GroupSep())
+ 	{
+-		Add(new cOsdItem(ChanOrg.OrgChans.First()->Name(),osUser1));
+-		Group[j]=ChanOrg.OrgChans.First();	
++		Add(new cOsdItem(pChanOrg->OrgChans.First()->Name(),osUser1));
++		Group[j]=pChanOrg->OrgChans.First();	
+ 		j++;
+ 	}
+ 	int i=0;
+ 	cChannel *tmp;
+-	while ((i=ChanOrg.OrgChans.GetNextGroup(i))>0)
++	while ((i=pChanOrg->OrgChans.GetNextGroup(i))>0)
+ 	{
+ 		tmp=GetByIndex(i);
+ 		Group[j]=tmp;
+ 		Add(new cOsdItem(tmp->Name(),osUser1));
+ 		j++;
+ 	}
+-	SetCurrent(Get(ChanOrg.LastAffect));
++	SetCurrent(Get(pChanOrg->LastAffect));
+ 	Display();
+ }
+ 
+@@ -203,7 +203,7 @@
+ 				   {
+ 				           Edit();
+ 				   }
+-				   ChanOrg.ReDraw=true;
++				   pChanOrg->ReDraw=true;
+ 				   return osBack;
+ 				   break;
+ 			default :break;
+@@ -216,6 +216,7 @@
+ 
+ cChanOrgMenu::cChanOrgMenu(void) : cOsdMenu(tr("Channels Organizer"),20)
+ {
++	pChanOrg = new cPluginChanOrg();
+ 	ClearMarks();
+ 	SaveTimers();
+ 	MakeChannelsList();
+@@ -224,48 +225,48 @@
+ 
+ cChanOrgMenu::~cChanOrgMenu(void)
+ {
+-	delete &ChanOrg;
++	delete pChanOrg;
+ }
+ 
+ void cChanOrgMenu::TriAlphaCroiss(cChannel *start,cChannel *stop)
+ {
+ 	if (start->Index()+1>=stop->Index()) return;
+ 	bool DelLast=false;
+-	if (stop==ChanOrg.OrgChans.Last())
++	if (stop==pChanOrg->OrgChans.Last())
+ 	{
+ 		cChannel *last=new cChannel();
+ #if VDRVERSNUM<10315
+ 		last->SetName(":Last");
+-		ChanOrg.OrgChans.NewChannel(last,last->Name(),0,0,0,0);
++		pChanOrg->OrgChans.NewChannel(last,last->Name(),0,0,0,0);
+ #else
+ 		last->SetName(":Last","","");
+-		ChanOrg.OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
++		pChanOrg->OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
+ #endif
+-		ChanOrg.OrgChans.Last()->Parse(last->Name());
+-		ChanOrg.OrgChans.ReNumber();
+-		stop=ChanOrg.OrgChans.Last();
++		pChanOrg->OrgChans.Last()->Parse(last->Name());
++		pChanOrg->OrgChans.ReNumber();
++		stop=pChanOrg->OrgChans.Last();
+ 		DelLast=true;
+ 	}
+ 	bool cont=false;
+-	cChannel *chan = ChanOrg.OrgChans.Next(start);
+-	cChannel *tmp = ChanOrg.OrgChans.Next(chan);
+-	while (chan && ((start==ChanOrg.OrgChans.Last())? (tmp!=NULL) :(tmp!=stop)))
++	cChannel *chan = pChanOrg->OrgChans.Next(start);
++	cChannel *tmp = pChanOrg->OrgChans.Next(chan);
++	while (chan && ((start==pChanOrg->OrgChans.Last())? (tmp!=NULL) :(tmp!=stop)))
+ 	{
+ 	 if ( ( strcasecmp(chan->Name(),tmp->Name()) ) > 0) 
+ 	 {
+-		ChanOrg.OrgChans.Move(chan,tmp);
++		pChanOrg->OrgChans.Move(chan,tmp);
+ 		cont=true;
+ 	 }
+ 	else chan=tmp;
+-	tmp=ChanOrg.OrgChans.Next(chan);
++	tmp=pChanOrg->OrgChans.Next(chan);
+ 	}
+-	ChanOrg.OrgChans.ReNumber();
++	pChanOrg->OrgChans.ReNumber();
+ 	chan=NULL;
+ 	tmp=NULL;
+ 	if (DelLast)
+ 	{
+-		ChanOrg.OrgChans.Del(ChanOrg.OrgChans.Last());
+-		stop=ChanOrg.OrgChans.Last();
++		pChanOrg->OrgChans.Del(pChanOrg->OrgChans.Last());
++		stop=pChanOrg->OrgChans.Last();
+ 	}
+ 	if (cont) TriAlphaCroiss(start,stop);
+ }
+@@ -274,41 +275,41 @@
+ {
+ 	if (start->Index()+1>=stop->Index()) return;
+ 	bool DelLast=false;
+-	if (stop==ChanOrg.OrgChans.Last())
++	if (stop==pChanOrg->OrgChans.Last())
+ 	{
+ 		cChannel *last=new cChannel();
+ #if VDRVERSNUM<10315
+ 		last->SetName(":Last");
+-		ChanOrg.OrgChans.NewChannel(last,last->Name(),0,0,0,0);
++		pChanOrg->OrgChans.NewChannel(last,last->Name(),0,0,0,0);
+ #else
+ 		last->SetName(":Last","","");
+-		ChanOrg.OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
++		pChanOrg->OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
+ #endif
+-		ChanOrg.OrgChans.Last()->Parse(last->Name());
+-		ChanOrg.OrgChans.ReNumber();
+-		stop=ChanOrg.OrgChans.Last();
++		pChanOrg->OrgChans.Last()->Parse(last->Name());
++		pChanOrg->OrgChans.ReNumber();
++		stop=pChanOrg->OrgChans.Last();
+ 		DelLast=true;
+ 	}
+ 	bool cont=false;
+-	cChannel *chan = ChanOrg.OrgChans.Next(start);
+-	cChannel *tmp = ChanOrg.OrgChans.Next(chan);
+-	while (chan && ((start==ChanOrg.OrgChans.Last())? (tmp!=NULL) :(tmp!=stop)))
++	cChannel *chan = pChanOrg->OrgChans.Next(start);
++	cChannel *tmp = pChanOrg->OrgChans.Next(chan);
++	while (chan && ((start==pChanOrg->OrgChans.Last())? (tmp!=NULL) :(tmp!=stop)))
+ 	{
+ 	 if ( ( strcasecmp(chan->Name(),tmp->Name()) ) < 0) 
+ 	 {
+-		ChanOrg.OrgChans.Move(chan,tmp);
++		pChanOrg->OrgChans.Move(chan,tmp);
+ 		cont=true;
+ 	 }
+ 	else chan=tmp;
+-	tmp=ChanOrg.OrgChans.Next(chan);
++	tmp=pChanOrg->OrgChans.Next(chan);
+ 	}
+-	ChanOrg.OrgChans.ReNumber();
++	pChanOrg->OrgChans.ReNumber();
+ 	chan=NULL;
+ 	tmp=NULL;
+ 	if (DelLast)
+ 	{
+-		ChanOrg.OrgChans.Del(ChanOrg.OrgChans.Last());
+-		stop=ChanOrg.OrgChans.Last();
++		pChanOrg->OrgChans.Del(pChanOrg->OrgChans.Last());
++		stop=pChanOrg->OrgChans.Last();
+ 	}
+ 	if (cont) TriAlphaDec(start,stop);
+ }
+@@ -317,41 +318,41 @@
+ {
+ 	if (start->Index()+1>=stop->Index()) return;
+ 	bool DelLast=false;
+-	if (stop==ChanOrg.OrgChans.Last())
++	if (stop==pChanOrg->OrgChans.Last())
+ 	{
+ 		cChannel *last=new cChannel();
+ #if VDRVERSNUM<10315
+ 		last->SetName(":Last");
+-		ChanOrg.OrgChans.NewChannel(last,last->Name(),0,0,0,0);
++		pChanOrg->OrgChans.NewChannel(last,last->Name(),0,0,0,0);
+ #else
+ 		last->SetName(":Last","","");
+-		ChanOrg.OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
++		pChanOrg->OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
+ #endif
+-		ChanOrg.OrgChans.Last()->Parse(last->Name());
+-		ChanOrg.OrgChans.ReNumber();
+-		stop=ChanOrg.OrgChans.Last();
++		pChanOrg->OrgChans.Last()->Parse(last->Name());
++		pChanOrg->OrgChans.ReNumber();
++		stop=pChanOrg->OrgChans.Last();
+ 		DelLast=true;
+ 	}
+ 	bool cont=false;
+-	cChannel *chan = ChanOrg.OrgChans.Next(start);
+-	cChannel *tmp = ChanOrg.OrgChans.Next(chan);
+-	while (chan && ((start==ChanOrg.OrgChans.Last())? (tmp!=NULL) :(tmp!=stop)))
++	cChannel *chan = pChanOrg->OrgChans.Next(start);
++	cChannel *tmp = pChanOrg->OrgChans.Next(chan);
++	while (chan && ((start==pChanOrg->OrgChans.Last())? (tmp!=NULL) :(tmp!=stop)))
+ 	{
+ 	 if (  chan->Frequency() > tmp->Frequency()) 
+ 	 {
+-		ChanOrg.OrgChans.Move(chan,tmp);
++		pChanOrg->OrgChans.Move(chan,tmp);
+ 		cont=true;
+ 	 }
+ 	else chan=tmp;
+-	tmp=ChanOrg.OrgChans.Next(chan);
++	tmp=pChanOrg->OrgChans.Next(chan);
+ 	}
+-	ChanOrg.OrgChans.ReNumber();
++	pChanOrg->OrgChans.ReNumber();
+ 	chan=NULL;
+ 	tmp=NULL;
+ 	if (DelLast)
+ 	{
+-		ChanOrg.OrgChans.Del(ChanOrg.OrgChans.Last());
+-		stop=ChanOrg.OrgChans.Last();
++		pChanOrg->OrgChans.Del(pChanOrg->OrgChans.Last());
++		stop=pChanOrg->OrgChans.Last();
+ 	}
+ 	if (cont) TriTranspCroiss(start,stop);
+ }
+@@ -360,61 +361,61 @@
+ {
+ 	if (start->Index()+1>=stop->Index()) return;
+ 	bool DelLast=false;
+-	if (stop==ChanOrg.OrgChans.Last())
++	if (stop==pChanOrg->OrgChans.Last())
+ 	{
+ 		cChannel *last=new cChannel();
+ #if VDRVERSNUM<10315
+ 		last->SetName(":Last");
+-		ChanOrg.OrgChans.NewChannel(last,last->Name(),0,0,0,0);
++		pChanOrg->OrgChans.NewChannel(last,last->Name(),0,0,0,0);
+ #else
+ 		last->SetName(":Last","","");
+-		ChanOrg.OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
++		pChanOrg->OrgChans.NewChannel(last,last->Name(),last->ShortName(),last->Provider(),0,0,0,0);
+ #endif
+-		ChanOrg.OrgChans.Last()->Parse(last->Name());
+-		ChanOrg.OrgChans.ReNumber();
+-		stop=ChanOrg.OrgChans.Last();
++		pChanOrg->OrgChans.Last()->Parse(last->Name());
++		pChanOrg->OrgChans.ReNumber();
++		stop=pChanOrg->OrgChans.Last();
+ 		DelLast=true;
+ 	}
+ 	bool cont=false;
+-	cChannel *chan = ChanOrg.OrgChans.Next(start);
+-	cChannel *tmp = ChanOrg.OrgChans.Next(chan);
+-	while (chan && ((start==ChanOrg.OrgChans.Last())? (tmp!=NULL) :(tmp!=stop)))
++	cChannel *chan = pChanOrg->OrgChans.Next(start);
++	cChannel *tmp = pChanOrg->OrgChans.Next(chan);
++	while (chan && ((start==pChanOrg->OrgChans.Last())? (tmp!=NULL) :(tmp!=stop)))
+ 	{
+ 	 if ( chan->Frequency()<tmp->Frequency()) 
+ 	 {
+-		ChanOrg.OrgChans.Move(chan,tmp);
++		pChanOrg->OrgChans.Move(chan,tmp);
+ 		cont=true;
+ 	 }
+ 	else chan=tmp;
+-	tmp=ChanOrg.OrgChans.Next(chan);
++	tmp=pChanOrg->OrgChans.Next(chan);
+ 	}
+-	ChanOrg.OrgChans.ReNumber();
++	pChanOrg->OrgChans.ReNumber();
+ 	chan=NULL;
+ 	tmp=NULL;
+ 	if (DelLast)
+ 	{
+-		ChanOrg.OrgChans.Del(ChanOrg.OrgChans.Last());
+-		stop=ChanOrg.OrgChans.Last();
++		pChanOrg->OrgChans.Del(pChanOrg->OrgChans.Last());
++		stop=pChanOrg->OrgChans.Last();
+ 	}
+ 	if (cont) TriTranspDec(start,stop);
+ }
+ 
+ void cChanOrgMenu::MakeChannelsList(void)
+ {
+-  ChanOrg.OrgChans.cList<cChannel>::Clear();
++  pChanOrg->OrgChans.cList<cChannel>::Clear();
+   for (cChannel *channel = Channels.First(); channel; channel = Channels.Next(channel)) {
+ 	  if (!channel->GroupSep() || *channel->Name())
+ 	  {
+ 		 
+ #if VDRVERSNUM<10315
+-		 ChanOrg.OrgChans.NewChannel(channel,channel->Name(),channel->Nid(),channel->Tid(),channel->Sid(),channel->Rid());
++		 pChanOrg->OrgChans.NewChannel(channel,channel->Name(),channel->Nid(),channel->Tid(),channel->Sid(),channel->Rid());
+ #else
+-		 ChanOrg.OrgChans.NewChannel(channel,channel->Name(),channel->ShortName(),channel->Provider(),channel->Nid(),channel->Tid(),channel->Sid(),channel->Rid());
++		 pChanOrg->OrgChans.NewChannel(channel,channel->Name(),channel->ShortName(),channel->Provider(),channel->Nid(),channel->Tid(),channel->Sid(),channel->Rid());
+ #endif
+ #if VDRVERSNUM>10317
+-		 ChanOrg.OrgChans.Last()->Parse(*channel->ToText());
++		 pChanOrg->OrgChans.Last()->Parse(*channel->ToText());
+ #else
+-		 ChanOrg.OrgChans.Last()->Parse(channel->ToText());
++		 pChanOrg->OrgChans.Last()->Parse(channel->ToText());
+ #endif
+ 	  }
+       }
+@@ -422,8 +423,8 @@
+ 
+ void cChanOrgMenu::Draw(void)
+ {
+-ChanOrg.ReDraw=false;
+-cChannel *chan=ChanOrg.OrgChans.First();
++pChanOrg->ReDraw=false;
++cChannel *chan=pChanOrg->OrgChans.First();
+ char *buff;
+ int i = Current();
+ Clear();
+@@ -439,7 +440,7 @@
+ 		asprintf(&buff,"%i : %s",chan->Number(),chan->Name());
+ 		Add(new cOsdItem(buff,osUser1));
+ 	}
+-	chan=ChanOrg.OrgChans.Next(chan);
++	chan=pChanOrg->OrgChans.Next(chan);
+ }
+ SetCurrent(Get(i));
+ if (i>=0)
+@@ -451,26 +452,26 @@
+ 	chan=GetByIndex(0);
+ }
+ if (chan) chan->GroupSep()? SetHelp(tr("Del Group"),tr("Edit Group"),tr("Sort Group"),tr("Move")) : SetHelp (tr("Add Group"),tr("Affect"),tr("Zap"),tr("Move"));
+-ChanOrg.OrgChans.ReNumber();
++pChanOrg->OrgChans.ReNumber();
+ Display();
+ }
+ 
+ cChannel *cAffect::GetByIndex(int Index)
+ {
+-cChannel *chan=ChanOrg.OrgChans.First();
++cChannel *chan=pChanOrg->OrgChans.First();
+ 	for(int i=0;i!=Index;i++)
+ 	{
+-		chan=ChanOrg.OrgChans.Next(chan);
++		chan=pChanOrg->OrgChans.Next(chan);
+ 	}
+ 	return chan;
+ }
+ 
+ cChannel *cChanOrgMenu::GetByIndex(int Index)
+ {
+-cChannel *chan=ChanOrg.OrgChans.First();
++cChannel *chan=pChanOrg->OrgChans.First();
+ 	for(int i=0;i!=Index;i++)
+ 	{
+-		chan=ChanOrg.OrgChans.Next(chan);
++		chan=pChanOrg->OrgChans.Next(chan);
+ 	}
+ 	return chan;
+ }
+@@ -486,24 +487,24 @@
+ 	CurChan->SetName(name,"","");
+ #endif
+ 	CurChan->Parse(name);
+-	ChanOrg.OrgChans.ReNumber();
++	pChanOrg->OrgChans.ReNumber();
+ }
+ 
+ void cGroup::Insert(void)
+ {
+ 	int num=CurChan->Number();
+-	cChannel *channel=ChanOrg.OrgChans.Last();
++	cChannel *channel=pChanOrg->OrgChans.Last();
+ #if VDRVERSNUM<10315
+-	ChanOrg.OrgChans.NewChannel(channel,channel->Name(),channel->Nid(),channel->Tid(),channel->Sid(),channel->Rid());
++	pChanOrg->OrgChans.NewChannel(channel,channel->Name(),channel->Nid(),channel->Tid(),channel->Sid(),channel->Rid());
+ #else
+-	ChanOrg.OrgChans.NewChannel(channel,channel->Name(),channel->ShortName(),channel->Provider(),channel->Nid(),channel->Tid(),channel->Sid(),channel->Rid());
++	pChanOrg->OrgChans.NewChannel(channel,channel->Name(),channel->ShortName(),channel->Provider(),channel->Nid(),channel->Tid(),channel->Sid(),channel->Rid());
+ #endif
+-	for (int i=ChanOrg.OrgChans.Count();i>Pos;i--)
++	for (int i=pChanOrg->OrgChans.Count();i>Pos;i--)
+ 	{
+-		ChanOrg.OrgChans.Move(i-1,i); 
++		pChanOrg->OrgChans.Move(i-1,i); 
+ 	}
+ 	char *name;
+-	CurChan=ChanOrg.OrgChans.Prev(CurChan);
++	CurChan=pChanOrg->OrgChans.Prev(CurChan);
+ 	if (Num==0) asprintf(&name,":%s",Name);
+ 	else asprintf(&name,":@%i %s",Num,Name);
+ #if VDRVERSNUM<10315
+@@ -513,7 +514,7 @@
+ #endif
+ 	CurChan->SetNumber(num);
+ 	CurChan->Parse(name);
+-	ChanOrg.OrgChans.ReNumber();
++	pChanOrg->OrgChans.ReNumber();
+ }
+ 
+ void cChanOrgMenu::SaveTimers()
+@@ -521,13 +522,13 @@
+ 	int i=0;
+ 	for (cTimer *t = Timers.First(); t; t= Timers.Next(t))
+ 	{
+-		ChanOrg.Tmr.Add(new cTimer(*t));
++		pChanOrg->Tmr.Add(new cTimer(*t));
+ #if VDRVERSNUM>10317
+-		ChanOrg.Tmr.Last()->Parse((const char *)t->ToText(false));
+-		asprintf(&ChanOrg.TmrChan[i],"%s",*t->ToText(true));
++		pChanOrg->Tmr.Last()->Parse((const char *)t->ToText(false));
++		asprintf(&pChanOrg->TmrChan[i],"%s",*t->ToText(true));
+ #else
+-		ChanOrg.Tmr.Last()->Parse(t->ToText(false));
+-		asprintf(&ChanOrg.TmrChan[i],"%s",t->ToText(true));
++		pChanOrg->Tmr.Last()->Parse(t->ToText(false));
++		asprintf(&pChanOrg->TmrChan[i],"%s",t->ToText(true));
+ #endif
+ 		i++;
+ 	}
+@@ -537,10 +538,10 @@
+ {
+ 	int i=0;
+ 	Timers.cList<cTimer>::Clear();
+-	for (cTimer *t = ChanOrg.Tmr.First(); t; t = ChanOrg.Tmr.Next(t))
++	for (cTimer *t = pChanOrg->Tmr.First(); t; t = pChanOrg->Tmr.Next(t))
+ 	{
+ 		Timers.Add(new cTimer(*t));
+-		Timers.Last()->Parse(ChanOrg.TmrChan[i]);
++		Timers.Last()->Parse(pChanOrg->TmrChan[i]);
+ 		i++;
+ 	}
+ }
+@@ -549,7 +550,7 @@
+ eOSState cChanOrgMenu::ProcessKey(eKeys Key)
+ {
+ 	eOSState state = cOsdMenu::ProcessKey(Key);
+-	cChannel *chan=ChanOrg.OrgChans.First();
++	cChannel *chan=pChanOrg->OrgChans.First();
+ 	char totext[255];
+ 	if (!HasSubMenu())
+ 	{
+@@ -572,7 +573,7 @@
+ 						strcpy(totext,chan->ToText());
+ #endif
+ 						Channels.Last()->Parse(totext);
+-						chan=ChanOrg.OrgChans.Next(chan);
++						chan=pChanOrg->OrgChans.Next(chan);
+ 					}
+ 					Channels.ReNumber();
+ #if VDRVERSNUM>10317
+@@ -601,7 +602,7 @@
+ 			default : break;
+ 			}
+ 		case osUnknown:
+-			if (ChanOrg.ReDraw) Draw();
++			if (pChanOrg->ReDraw) Draw();
+ 			switch(Key)
+ 			{
+ 			case kBlue:
+@@ -610,8 +611,8 @@
+ 					if ( (Marked != Current()) && Marked!=Current()+1    )
+ 
+ 					{
+-						ChanOrg.OrgChans.Move(Marked,Current()<=Marked ? Current()+1 : Current() );
+-						ChanOrg.OrgChans.ReNumber();
++						pChanOrg->OrgChans.Move(Marked,Current()<=Marked ? Current()+1 : Current() );
++						pChanOrg->OrgChans.ReNumber();
+ 					}
+ 				MarkMove=false;
+ 				Marked=0;
+@@ -634,7 +635,7 @@
+ 				{
+ 					//Tri Transp Dec
+ 					Skins.Message(mtStatus,tr("Sorting"));
+-					TriTranspDec(GetByIndex(Current()),ChanOrg.OrgChans.GetNextGroup(Current())>0? GetByIndex(ChanOrg.OrgChans.GetNextGroup(Current())):ChanOrg.OrgChans.Last());
++					TriTranspDec(GetByIndex(Current()),pChanOrg->OrgChans.GetNextGroup(Current())>0? GetByIndex(pChanOrg->OrgChans.GetNextGroup(Current())):pChanOrg->OrgChans.Last());
+ 					Skins.Message(mtStatus,tr("Sort done"));
+ 					sleep(Setup.OSDMessageTime);
+ 					Skins.Message(mtStatus,"");
+@@ -651,15 +652,15 @@
+ 					   }
+ 					   else if (!MarkMove && !MarkTri)
+ 						   {
+-					   	   ChanOrg.OrgChans.Del( GetByIndex(Current()) );
+-						   ChanOrg.OrgChans.ReNumber();
++					   	   pChanOrg->OrgChans.Del( GetByIndex(Current()) );
++						   pChanOrg->OrgChans.ReNumber();
+ 						   Draw();
+ 						   }
+ 				    	   else
+ 					   {
+ 						   //Tri Alpha Croiss
+ 						Skins.Message(mtStatus,tr("Sorting"));
+-						TriAlphaCroiss(GetByIndex(Current()),ChanOrg.OrgChans.GetNextGroup(Current())>0? GetByIndex(ChanOrg.OrgChans.GetNextGroup(Current())):ChanOrg.OrgChans.Last());
++						TriAlphaCroiss(GetByIndex(Current()),pChanOrg->OrgChans.GetNextGroup(Current())>0? GetByIndex(pChanOrg->OrgChans.GetNextGroup(Current())):pChanOrg->OrgChans.Last());
+ 						Skins.Message(mtStatus,tr("Sort done"));
+ 						sleep(Setup.OSDMessageTime);
+ 						Skins.Message(mtStatus,"");
+@@ -673,8 +674,8 @@
+ 				   {
+ 					if ( Marked!=Current() && Marked+1!=Current())
+ 					{
+-						ChanOrg.OrgChans.Move(Marked,Current()<=Marked ? Current() : Current()-1 );
+-						ChanOrg.OrgChans.ReNumber();
++						pChanOrg->OrgChans.Move(Marked,Current()<=Marked ? Current() : Current()-1 );
++						pChanOrg->OrgChans.ReNumber();
+ 					}
+ 					MarkMove=false;
+ 					Marked=0;
+@@ -685,7 +686,7 @@
+ 					if (MarkTri)
+ 					{
+ 					Skins.Message(mtStatus,tr("Sorting"));
+-					TriTranspCroiss(GetByIndex(Current()),ChanOrg.OrgChans.GetNextGroup(Current())>0? GetByIndex(ChanOrg.OrgChans.GetNextGroup(Current())):ChanOrg.OrgChans.Last());
++					TriTranspCroiss(GetByIndex(Current()),pChanOrg->OrgChans.GetNextGroup(Current())>0? GetByIndex(pChanOrg->OrgChans.GetNextGroup(Current())):pChanOrg->OrgChans.Last());
+ 					Skins.Message(mtStatus,tr("Sort done"));
+ 					sleep(Setup.OSDMessageTime);
+ 					Skins.Message(mtStatus,"");
+@@ -701,7 +702,7 @@
+ 				   }
+ 				   else 
+ 				   {
+-					   cDevice::PrimaryDevice()->SwitchChannel(Channels.GetByChannelID(ChanOrg.OrgChans.Get(Current())->GetChannelID()),true);
++					   cDevice::PrimaryDevice()->SwitchChannel(Channels.GetByChannelID(pChanOrg->OrgChans.Get(Current())->GetChannelID()),true);
+ 				   }
+ 				   break;
+ 			case kGreen : 
+@@ -717,7 +718,7 @@
+ 				   {
+ 					   //Tri Alpha Dec
+ 					   Skins.Message(mtStatus,tr("Sorting"));
+-					   TriAlphaDec(GetByIndex(Current()),ChanOrg.OrgChans.GetNextGroup(Current())>0? GetByIndex(ChanOrg.OrgChans.GetNextGroup(Current())):ChanOrg.OrgChans.Last());
++					   TriAlphaDec(GetByIndex(Current()),pChanOrg->OrgChans.GetNextGroup(Current())>0? GetByIndex(pChanOrg->OrgChans.GetNextGroup(Current())):pChanOrg->OrgChans.Last());
+ 					   Skins.Message(mtStatus,tr("Sort done"));
+ 					   sleep(Setup.OSDMessageTime);
+ 					   Skins.Message(mtStatus,"");
+diff -Naur chanorg-0.0.6.orig/chanorg.c chanorg-0.0.6/chanorg.c
+--- chanorg-0.0.6.orig/chanorg.c	2004-07-22 00:55:45.000000000 +0200
++++ chanorg-0.0.6/chanorg.c	2005-01-31 19:26:05.965080886 +0100
+@@ -1,13 +1,13 @@
+ #include "chanorg.h"
+ #include "chan-menu.h"
+ 
+-cPluginChanOrg ChanOrg;
++cPluginChanOrg *pChanOrg;
+ 
+ void cPluginChanOrg::Debug(void)
+ {
+-	cChannel *chan=ChanOrg.OrgChans.First();
++	cChannel *chan=pChanOrg->OrgChans.First();
+ 		fprintf(stderr,"Chaine Index %i %s\n",chan->Index(),chan->Name());
+-	while ((chan=ChanOrg.OrgChans.Next(chan)))
++	while ((chan=pChanOrg->OrgChans.Next(chan)))
+ 	{
+ 		fprintf(stderr,"Chaine Index %i %s\n",chan->Index(),chan->Name());
+ 	}
+diff -Naur chanorg-0.0.6.orig/chanorg.h chanorg-0.0.6/chanorg.h
+--- chanorg-0.0.6.orig/chanorg.h	2005-01-26 19:07:03.000000000 +0100
++++ chanorg-0.0.6/chanorg.h	2005-01-31 19:26:19.657549480 +0100
+@@ -33,6 +33,6 @@
+   void Debug(void);
+ };
+ 
+-extern cPluginChanOrg ChanOrg;
++extern cPluginChanOrg *pChanOrg;
+ 
+ #endif //__AIDE_H

Added: vdr/vdr-plugin-chanorg/trunk/debian/patches/03_chanorg-0.0.6_fix-EbS-crash.dpatch
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/patches/03_chanorg-0.0.6_fix-EbS-crash.dpatch	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/patches/03_chanorg-0.0.6_fix-EbS-crash.dpatch	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,12 @@
+#!/bin/sh /usr/share/dpatch/dpatch-run
+## 03_chanorg-0.0.6_fix-EbS-crash.dpatch by Thomas Günther <tom at toms-cafe.de>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Fixes crash while scanning channel EbS with 32 audio ids.
+
+ at DPATCH@
+--- chanorg-0.0.6/chan-menu.c
++++ chanorg-0.0.6/chan-menu.c
+@@ -553 +553 @@
+-	char totext[255];
++	char totext[512];

Added: vdr/vdr-plugin-chanorg/trunk/debian/patches/90_APIVERSION.dpatch
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/patches/90_APIVERSION.dpatch	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/patches/90_APIVERSION.dpatch	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,20 @@
+#! /bin/sh -e
+## 90_APIVERSION.dpatch by Thomas Günther <tom at toms-cafe.de>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Support for the APIVERSION define as introduced in VDR-1.3.47.
+
+case "$1" in
+    -patch)
+        sed -i -e s/VDRVERSION/APIVERSION/g Makefile
+        ;;
+    -unpatch)
+        sed -i -e s/APIVERSION/VDRVERSION/g Makefile
+        ;;
+     *)
+        echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
+        exit 1
+        ;;
+esac
+
+exit 0

Added: vdr/vdr-plugin-chanorg/trunk/debian/rules
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/rules	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/rules	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,97 @@
+#!/usr/bin/make -f
+# Sample debian/rules that uses debhelper.
+# GNU copyright 1997 to 1999 by Joey Hess.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
+	CFLAGS += -g
+endif
+ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
+	INSTALL_PROGRAM += -s
+endif
+
+# Set VDR=vdr or VDR=vdrdevel - vdrdevel always uses dpatch
+VDR=$(shell dh_listpackages | grep "^vdr.*-" | head -n 1 | sed -e "s/-.*//")
+ifeq ($(VDR), vdrdevel)
+    DPATCH=yes
+endif
+
+# To use dpatch uncomment the following line and set Build-Depends to dpatch
+DPATCH=yes
+
+ifdef DPATCH
+include /usr/share/dpatch/dpatch.make
+else
+patch:
+patch-stamp:
+unpatch:
+endif
+
+configure: configure-stamp
+configure-stamp: patch-stamp
+	dh_testdir
+	touch configure-stamp
+
+build: build-stamp
+build-stamp: configure-stamp
+	dh_testdir
+	$(MAKE) all DVBDIR=/usr VDRDIR=/usr/include/$(VDR) LIBDIR=.
+	touch build-stamp
+
+clean: clean-patched unpatch
+clean-patched:
+	dh_testdir
+	dh_testroot
+	rm -f build-stamp configure-stamp
+	-$(MAKE) -o .dependencies clean
+	rm -f libvdr-*.so.*
+	dh_clean
+
+install: build
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs
+	dh_install
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+	dh_testdir
+	dh_testroot
+#	dh_installdebconf
+	dh_installdocs
+	dh_installexamples
+#	dh_installmenu
+#	dh_installlogrotate
+#	dh_installemacsen
+#	dh_installpam
+#	dh_installmime
+#	dh_installinit
+#	dh_installcron
+#	dh_installman
+#	dh_installinfo
+#	dh_undocumented
+	dh_installchangelogs HISTORY
+	dh_link
+	dh_strip
+	dh_compress
+	dh_fixperms
+#	dh_makeshlibs
+	dh_installdeb
+#	dh_perl
+	dh_shlibdeps
+	/usr/lib/$(VDR)-dev/patchlevel.sh subst
+	/usr/lib/$(VDR)-dev/dependencies.sh
+	dh_gencontrol
+	dh_md5sums
+	dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure \
+        clean-patched patch unpatch


Property changes on: vdr/vdr-plugin-chanorg/trunk/debian/rules
___________________________________________________________________
Name: svn:executable
   + *

Added: vdr/vdr-plugin-chanorg/trunk/debian/watch
===================================================================
--- vdr/vdr-plugin-chanorg/trunk/debian/watch	2006-06-11 19:38:37 UTC (rev 2862)
+++ vdr/vdr-plugin-chanorg/trunk/debian/watch	2006-06-11 19:38:57 UTC (rev 2863)
@@ -0,0 +1,2 @@
+version=2
+http://www.freewebs.com/sadhome/Plugin/Chanorg.html .*/vdr-chanorg-(.*)\.tar\.gz




More information about the pkg-vdr-dvb-changes mailing list