summaryrefslogtreecommitdiff
path: root/noncore/unsupported
Side-by-side diff
Diffstat (limited to 'noncore/unsupported') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/filebrowser/.cvsignore2
-rw-r--r--noncore/unsupported/filebrowser/Makefile.in136
-rw-r--r--noncore/unsupported/filebrowser/filebrowser.cpp850
-rw-r--r--noncore/unsupported/filebrowser/filebrowser.h141
-rw-r--r--noncore/unsupported/filebrowser/filebrowser.pro12
-rw-r--r--noncore/unsupported/filebrowser/inlineedit.cpp30
-rw-r--r--noncore/unsupported/filebrowser/inlineedit.h39
-rw-r--r--noncore/unsupported/filebrowser/main.cpp41
-rw-r--r--noncore/unsupported/filebrowser/qpe-filebrowser.control9
-rw-r--r--noncore/unsupported/oipkg/.cvsignore10
-rw-r--r--noncore/unsupported/oipkg/Makefile.in203
-rw-r--r--noncore/unsupported/oipkg/ipkg/available2256
-rw-r--r--noncore/unsupported/oipkg/ipkg/status418
-rw-r--r--noncore/unsupported/oipkg/main.cpp33
-rw-r--r--noncore/unsupported/oipkg/packagemanager.cpp897
-rw-r--r--noncore/unsupported/oipkg/packagemanager.h94
-rw-r--r--noncore/unsupported/oipkg/packagemanagerbase.ui268
-rw-r--r--noncore/unsupported/oipkg/pkdesc.ui96
-rw-r--r--noncore/unsupported/oipkg/pkfind.ui51
-rw-r--r--noncore/unsupported/oipkg/pksettings.ui176
-rw-r--r--noncore/unsupported/oipkg/qipkg.pro13
-rw-r--r--noncore/unsupported/oipkg/qpe-qipkg.control9
22 files changed, 5784 insertions, 0 deletions
diff --git a/noncore/unsupported/filebrowser/.cvsignore b/noncore/unsupported/filebrowser/.cvsignore
new file mode 100644
index 0000000..6fe2396
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/.cvsignore
@@ -0,0 +1,2 @@
+moc_*
+Makefile
diff --git a/noncore/unsupported/filebrowser/Makefile.in b/noncore/unsupported/filebrowser/Makefile.in
new file mode 100644
index 0000000..c7238ea
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/Makefile.in
@@ -0,0 +1,136 @@
+#############################################################################
+
+####### Compiler, tools and options
+
+CXX = $(SYSCONF_CXX) $(QT_CXX_MT)
+CXXFLAGS= $(SYSCONF_CXXFLAGS_QT) $(SYSCONF_CXXFLAGS)
+CC = $(SYSCONF_CC) $(QT_C_MT)
+CFLAGS = $(SYSCONF_CFLAGS)
+INCPATH = -I$(QPEDIR)/include
+LFLAGS = $(SYSCONF_LFLAGS_QT) $(SYSCONF_RPATH_QT) $(SYSCONF_LFLAGS) $(QT_LFLAGS_MT)
+LIBS = $(SUBLIBS) -lqpe $(SYSCONF_LIBS_QT) $(SYSCONF_LIBS) $(SYSCONF_LIBS_QTAPP)
+MOC = $(SYSCONF_MOC)
+UIC = $(SYSCONF_UIC)
+
+####### Target
+
+DESTDIR = $(QPEDIR)/bin/
+VER_MAJ = 1
+VER_MIN = 0
+VER_PATCH = 0
+TARGET = filebrowser
+TARGET1 = lib$(TARGET).so.$(VER_MAJ)
+
+####### Files
+
+HEADERS = inlineedit.h \
+ filebrowser.h
+SOURCES = filebrowser.cpp \
+ inlineedit.cpp \
+ main.cpp
+OBJECTS = filebrowser.o \
+ inlineedit.o \
+ main.o
+INTERFACES =
+UICDECLS =
+UICIMPLS =
+SRCMOC = moc_inlineedit.cpp \
+ moc_filebrowser.cpp
+OBJMOC = moc_inlineedit.o \
+ moc_filebrowser.o
+
+
+####### Implicit rules
+
+.SUFFIXES: .cpp .cxx .cc .C .c
+
+.cpp.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+.cxx.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+.cc.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+.C.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+.c.o:
+ $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
+
+####### Build rules
+
+
+all: $(DESTDIR)$(TARGET)
+
+$(DESTDIR)$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS)
+ $(SYSCONF_LINK) $(LFLAGS) -o $(DESTDIR)$(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)
+
+moc: $(SRCMOC)
+
+tmake:
+ tmake filebrowser.pro
+
+clean:
+ -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS)
+ -rm -f *~ core
+ -rm -f allmoc.cpp
+
+####### Extension Modules
+
+listpromodules:
+ @echo
+
+listallmodules:
+ @echo
+
+listaddonpromodules:
+ @echo
+
+listaddonentmodules:
+ @echo
+
+
+REQUIRES=
+
+####### Sub-libraries
+
+
+###### Combined headers
+
+
+
+####### Compile
+
+filebrowser.o: filebrowser.cpp \
+ inlineedit.h \
+ filebrowser.h \
+ $(QPEDIR)/include/qpe/resource.h \
+ $(QPEDIR)/include/qpe/global.h \
+ $(QPEDIR)/include/qpe/mimetype.h \
+ $(QPEDIR)/include/qpe/applnk.h \
+ $(QPEDIR)/include/qpe/qpetoolbar.h \
+ $(QPEDIR)/include/qpe/qpemenubar.h
+
+inlineedit.o: inlineedit.cpp \
+ inlineedit.h
+
+main.o: main.cpp \
+ filebrowser.h \
+ $(QPEDIR)/include/qpe/qpeapplication.h \
+ $(QPEDIR)/include/qpe/mimetype.h
+
+moc_inlineedit.o: moc_inlineedit.cpp \
+ inlineedit.h
+
+moc_filebrowser.o: moc_filebrowser.cpp \
+ filebrowser.h
+
+moc_inlineedit.cpp: inlineedit.h
+ $(MOC) inlineedit.h -o moc_inlineedit.cpp
+
+moc_filebrowser.cpp: filebrowser.h
+ $(MOC) filebrowser.h -o moc_filebrowser.cpp
+
+
diff --git a/noncore/unsupported/filebrowser/filebrowser.cpp b/noncore/unsupported/filebrowser/filebrowser.cpp
new file mode 100644
index 0000000..9439bb8
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/filebrowser.cpp
@@ -0,0 +1,850 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "inlineedit.h"
+#include "filebrowser.h"
+
+#include <qpe/resource.h>
+#include <qpe/global.h>
+#include <qpe/mimetype.h>
+#include <qpe/applnk.h>
+
+#include <qcopchannel_qws.h>
+#include <qmessagebox.h>
+#include <qdir.h>
+#include <qregexp.h>
+#include <qheader.h>
+#include <qpe/qpetoolbar.h>
+#include <qpopupmenu.h>
+#include <qpe/qpemenubar.h>
+#include <qaction.h>
+#include <qstringlist.h>
+#include <qcursor.h>
+#include <qmultilineedit.h>
+#include <qfont.h>
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/stat.h>
+
+//
+// FileItem
+//
+FileItem::FileItem( QListView * parent, const QFileInfo & fi )
+ : QListViewItem( parent ),
+ fileInfo( fi )
+{
+ QDate d = fi.lastModified().date();
+
+ setText( 0, fi.fileName() );
+ setText( 1, sizeString( fi.size() ) + " " );
+ setText( 2, QString().sprintf("%4d-%02d-%02d",d.year(), d.month(), d.day() ) );
+
+ MimeType mt(fi.filePath());
+
+ if( fi.isDir() )
+ setText( 3, "directory" );
+ else if( isLib() )
+ setText( 3, "library" );
+ else
+ setText( 3, mt.description() );
+
+ QPixmap pm;
+ if( fi.isDir() ){
+ if( !QDir( fi.filePath() ).isReadable() )
+ pm = Resource::loadPixmap( "lockedfolder" );
+ else
+ pm = Resource::loadPixmap( "folder" );
+ }
+ else if( !fi.isReadable() )
+ pm = Resource::loadPixmap( "locked" );
+ else if( isLib() )
+ pm = Resource::loadPixmap( "library" );
+ else
+ pm = mt.pixmap();
+ if ( pm.isNull() )
+ pm = Resource::loadPixmap("UnknownDocument-14");
+ setPixmap(0,pm);
+}
+
+QString FileItem::sizeString( unsigned int s )
+{
+ double size = s;
+
+ if ( size > 1024 * 1024 * 1024 )
+ return QString().sprintf( "%.1f", size / ( 1024 * 1024 * 1024 ) ) + "G";
+ else if ( size > 1024 * 1024 )
+ return QString().sprintf( "%.1f", size / ( 1024 * 1024 ) ) + "M";
+ else if ( size > 1024 )
+ return QString().sprintf( "%.1f", size / ( 1024 ) ) + "K";
+ else
+ return QString::number( size ) + "B";
+}
+
+QString FileItem::key( int column, bool ascending ) const
+{
+ QString tmp;
+
+ ascending = ascending;
+
+ if( (column == 0) && fileInfo.isDir() ){ // Sort by name
+ // We want the directories to appear at the top of the list
+ tmp = (char) 0;
+ return (tmp + text( column ).lower());
+ }
+ else if( column == 2 ) { // Sort by date
+ QDateTime epoch( QDate( 1980, 1, 1 ) );
+ tmp.sprintf( "%08d", epoch.secsTo( fileInfo.lastModified() ) );
+ return tmp;
+ }
+ else if( column == 1 ) { // Sort by size
+ return tmp.sprintf( "%08d", fileInfo.size() );
+ }
+
+ return text( column ).lower();
+}
+
+bool FileItem::isLib()
+{
+ // This is of course not foolproof
+ if( !qstrncmp("lib", fileInfo.baseName(), 3) &&
+ ( fileInfo.extension().contains( "so" ) ||
+ fileInfo.extension().contains( "a" ) ) )
+ return TRUE;
+ else
+ return FALSE;
+}
+
+int FileItem::launch()
+{
+ DocLnk doc( fileInfo.filePath(), FALSE );
+ doc.execute();
+ listView()->clearSelection();
+ return 1;
+}
+
+bool FileItem::rename( const QString & name )
+{
+ QString oldpath, newpath;
+
+ if ( name.isEmpty() )
+ return FALSE;
+
+ if ( name.contains( QRegExp("[/\\$\"\'\\*\\?]") ) )
+ return FALSE;
+
+ oldpath = fileInfo.filePath();
+ newpath = fileInfo.dirPath() + "/" + name;
+
+ if ( ::rename( (const char *) oldpath, (const char *) newpath ) != 0 )
+ return FALSE;
+ else
+ return TRUE;
+}
+
+//
+// FileView
+//
+FileView::FileView( const QString & dir, QWidget * parent,
+ const char * name )
+ : QListView( parent, name ),
+ menuTimer( this ),
+ le( NULL ),
+ itemToRename( NULL )
+{
+ addColumn( "Name" );
+ addColumn( "Date" );
+ addColumn( "Size" );
+ addColumn( "Type" );
+
+ setMultiSelection( TRUE );
+ header()->hide();
+
+ setColumnWidthMode( 0, Manual );
+ setColumnWidthMode( 3, Manual );
+
+ // right align yize column
+ setColumnAlignment( 1, AlignRight );
+
+ generateDir( dir );
+
+ connect( this, SIGNAL( clicked( QListViewItem * )),
+ SLOT( itemClicked( QListViewItem * )) );
+ connect( this, SIGNAL( doubleClicked( QListViewItem * )),
+ SLOT( itemDblClicked( QListViewItem * )) );
+ connect( this, SIGNAL( selectionChanged() ), SLOT( cancelMenuTimer() ) );
+ connect( &menuTimer, SIGNAL( timeout() ), SLOT( showFileMenu() ) );
+}
+
+void FileView::resizeEvent( QResizeEvent *e )
+{
+ setColumnWidth( 0, width() - 2 * lineWidth() - 20 - columnWidth( 1 ) - columnWidth( 2 ) );
+
+ // hide type column, we use it for "sort by type" only
+ setColumnWidth( 3, 0 );
+ QListView::resizeEvent( e );
+}
+
+void FileView::updateDir()
+{
+ generateDir( currentDir );
+}
+
+void FileView::setDir( const QString & dir )
+{
+ if ( dir.startsWith( "/dev" ) ) {
+ QMessageBox::warning( this, tr( "File Manager" ),
+ tr( "Can't show /dev/ directory." ), tr( "&Ok" ) );
+ return;
+ }
+ dirHistory += currentDir;
+ generateDir( dir );
+}
+
+void FileView::generateDir( const QString & dir )
+{
+ QDir d( dir );
+
+ if( d.exists() && !d.isReadable() ) return;
+
+ currentDir = d.canonicalPath();
+
+ d.setFilter( QDir::Dirs | QDir::Files );
+ d.setSorting( QDir::Name | QDir::DirsFirst | QDir::IgnoreCase |
+ QDir::Reversed );
+
+ const QFileInfoList * list = d.entryInfoList();
+ QFileInfoListIterator it( *list );
+ QFileInfo *fi;
+
+ clear();
+ while( (fi = it.current()) ){
+ if( (fi->fileName() == ".") || (fi->fileName() == "..") ){
+ ++it;
+ continue;
+ }
+ (void) new FileItem( (QListView *) this, *fi );
+ ++it;
+ }
+
+ emit dirChanged();
+}
+
+void FileView::rename()
+{
+ itemToRename = (FileItem *) currentItem();
+ const QPixmap * pm;
+ int pmw;
+
+ if( itemToRename == NULL ) return;
+
+ if( ( pm = itemToRename->pixmap( 0 ) ) == NULL )
+ pmw = 0;
+ else
+ pmw = pm->width();
+
+ ensureItemVisible( itemToRename );
+ horizontalScrollBar()->setValue( 0 );
+ horizontalScrollBar()->setEnabled( FALSE );
+ verticalScrollBar()->setEnabled( FALSE );
+
+ selected = isSelected( itemToRename );
+ setSelected( itemToRename, FALSE );
+
+ if( le == NULL ){
+ le = new InlineEdit( this );
+ le->setFrame( FALSE );
+ connect( le, SIGNAL( lostFocus() ), SLOT( endRenaming() ) );
+ }
+
+ QRect r = itemRect( itemToRename );
+ r.setTop( r.top() + frameWidth() + 1 );
+ r.setLeft( r.left() + frameWidth() + pmw );
+ r.setBottom( r.bottom() + frameWidth() );
+ r.setWidth( columnWidth( 0 ) - pmw );
+
+ le->setGeometry( r );
+ le->setText( itemToRename->text( 0 ) );
+ le->selectAll();
+ le->show();
+ le->setFocus();
+}
+
+void FileView::endRenaming()
+{
+ if( le && itemToRename ){
+ le->hide();
+ setSelected( itemToRename, selected );
+
+ if( !itemToRename->rename( le->text() ) ){
+ QMessageBox::warning( this, tr( "Rename file" ),
+ tr( "Rename failed!" ), tr( "&Ok" ) );
+ } else {
+ updateDir();
+ }
+ itemToRename = NULL;
+ horizontalScrollBar()->setEnabled( TRUE );
+ verticalScrollBar()->setEnabled( TRUE );
+ }
+}
+
+void FileView::copy()
+{
+ // dont keep cut files any longer than necessary
+ // ##### a better inmplementation might be to rename the CUT file
+ // ##### to ".QPE-FILEBROWSER-MOVING" rather than copying it.
+ system ( "rm -rf /tmp/qpemoving" );
+
+ FileItem * i;
+
+ if((i = (FileItem *) firstChild()) == 0) return;
+
+ flist.clear();
+ while( i ){
+ if( i->isSelected() /*&& !i->isDir()*/ ){
+ flist += i->getFilePath();
+ }
+ i = (FileItem *) i->nextSibling();
+ }
+}
+
+void FileView::paste()
+{
+ int i, err;
+ QString cmd, dest, basename, cd = currentDir;
+
+ if(cd == "/") cd = "";
+
+ for ( QStringList::Iterator it = flist.begin(); it != flist.end(); ++it ) {
+ basename = (*it).mid((*it).findRev("/") + 1, (*it).length());
+
+ dest = cd + "/" + basename;
+ if( QFile( dest ).exists() ){
+ i = 1;
+ dest = cd + "/Copy of " + basename;
+ while( QFile( dest ).exists() ){
+ dest.sprintf( "%s/Copy (%d) of %s", (const char *) cd, i++,
+ (const char *) basename );
+ }
+ }
+
+ //
+ // Copy a directory recursively using the "cp" command -
+ // may have to be changed
+ //
+ if( QFileInfo( (*it) ).isDir() ){
+ cmd = "/bin/cp -fpR \"" + (*it) +"\" " + "\"" + dest + "\"";
+ err = system( (const char *) cmd );
+ } else if( !copyFile( dest, (*it) ) ){
+ err = -1;
+ } else {
+ err = 0;
+ }
+
+ if ( err != 0 ) {
+ QMessageBox::warning( this, tr("Paste file"), tr("Paste failed!"),
+ tr("Ok") );
+ break;
+ } else {
+ updateDir();
+ QListViewItem * i = firstChild();
+ basename = dest.mid( dest.findRev("/") + 1, dest.length() );
+
+ while( i ){
+ if( i->text(0) == basename ){
+ setCurrentItem( i );
+ ensureItemVisible( i );
+ break;
+ }
+ i = i->nextSibling();
+ }
+ }
+ }
+}
+
+bool FileView::copyFile( const QString & dest, const QString & src )
+{
+ char bf[ 50000 ];
+ int bytesRead;
+ bool success = TRUE;
+ struct stat status;
+
+ QFile s( src );
+ QFile d( dest );
+
+ if( s.open( IO_ReadOnly | IO_Raw ) &&
+ d.open( IO_WriteOnly | IO_Raw ) )
+ {
+ while( (bytesRead = s.readBlock( bf, sizeof( bf ) )) ==
+ sizeof( bf ) )
+ {
+ if( d.writeBlock( bf, sizeof( bf ) ) != sizeof( bf ) ){
+ success = FALSE;
+ break;
+ }
+ }
+ if( success && (bytesRead > 0) ){
+ d.writeBlock( bf, bytesRead );
+ }
+ } else {
+ success = FALSE;
+ }
+
+ // Set file permissions
+ if( stat( (const char *) src, &status ) == 0 ){
+ chmod( (const char *) dest, status.st_mode );
+ }
+
+ return success;
+}
+
+void FileView::cut()
+{
+ int err;
+ // ##### a better inmplementation might be to rename the CUT file
+ // ##### to ".QPE-FILEBROWSER-MOVING" rather than copying it.
+ QString cmd, dest, basename, cd = "/tmp/qpemoving";
+ QStringList newflist;
+ newflist.clear();
+
+ cmd = "rm -rf " + cd;
+ system ( (const char *) cmd );
+ cmd = "mkdir " + cd;
+ system( (const char *) cmd );
+
+// get the names of the files to cut
+ FileItem * item;
+
+ if((item = (FileItem *) firstChild()) == 0) return;
+
+ flist.clear();
+ while( item ){
+ if( item->isSelected() /*&& !item->isDir()*/ ){
+ flist += item->getFilePath();
+ }
+ item = (FileItem *) item->nextSibling();
+ }
+
+// move these files into a tmp dir
+ for ( QStringList::Iterator it = flist.begin(); it != flist.end(); ++it ) {
+ basename = (*it).mid((*it).findRev("/") + 1, (*it).length());
+
+ dest = cd + "/" + basename;
+
+ newflist += dest;
+
+ cmd = "/bin/mv -f \"" + (*it) +"\" " + "\"" + dest + "\"";
+ err = system( (const char *) cmd );
+
+ if ( err != 0 ) {
+ QMessageBox::warning( this, tr("Cut file"), tr("Cut failed!"),
+ tr("Ok") );
+ break;
+ } else {
+ updateDir();
+ QListViewItem * im = firstChild();
+ basename = dest.mid( dest.findRev("/") + 1, dest.length() );
+
+ while( im ){
+ if( im->text(0) == basename ){
+ setCurrentItem( im );
+ ensureItemVisible( im );
+ break;
+ }
+ im = im->nextSibling();
+ }
+ }
+ }
+
+ // update the filelist to point to tmp dir so paste works nicely
+ flist = newflist;
+}
+
+void FileView::del()
+{
+ FileItem * i;
+ QStringList fl;
+ QString cmd;
+ int err;
+
+ if((i = (FileItem *) firstChild()) == 0) return;
+
+ while( i ){
+ if( i->isSelected() ){
+ fl += i->getFilePath();
+ }
+ i = (FileItem *) i->nextSibling();
+ }
+ if( fl.count() < 1 ) return;
+
+ if( QMessageBox::warning( this, tr("Delete"), tr("Are you sure?"),
+ tr("Yes"), tr("No") ) == 0)
+ {
+ //
+ // Dependant upon the "rm" command - will probably have to be replaced
+ //
+ for ( QStringList::Iterator it = fl.begin(); it != fl.end(); ++it ) {
+ cmd = "/bin/rm -rf \"" + (*it) + "\"";
+ err = system( (const char *) cmd );
+ if ( err != 0 ) {
+ QMessageBox::warning( this, tr("Delete"), tr("Delete failed!"),
+ tr("Ok") );
+ break;
+ }
+ }
+ updateDir();
+ }
+}
+
+void FileView::newFolder()
+{
+ int t = 1;
+ FileItem * i;
+ QString nd = currentDir + "/NewFolder";
+
+ while( QFile( nd ).exists() ){
+ nd.sprintf( "%s/NewFolder (%d)", (const char *) currentDir, t++ );
+ }
+
+ if( mkdir( (const char *) nd, 0777 ) != 0){
+ QMessageBox::warning( this, tr( "New folder" ),
+ tr( "Folder creation failed!" ),
+ tr( "Ok" ) );
+ return;
+ }
+ updateDir();
+
+ if((i = (FileItem *) firstChild()) == 0) return;
+
+ while( i ){
+ if( i->isDir() && ( i->getFilePath() == nd ) ){
+ setCurrentItem( i );
+ rename();
+ break;
+ }
+ i = (FileItem *) i->nextSibling();
+ }
+}
+
+void FileView::viewAsText()
+{
+ FileItem * i = (FileItem *) currentItem();
+ Global::execute( "textedit -f ", i->getFilePath() );
+}
+
+void FileView::itemClicked( QListViewItem * i)
+{
+ FileItem * t = (FileItem *) i;
+
+ if( t == NULL ) return;
+ if( t->isDir() ){
+ setDir( t->getFilePath() );
+ }
+}
+
+void FileView::itemDblClicked( QListViewItem * i)
+{
+ FileItem * t = (FileItem *) i;
+
+ if(t == NULL) return;
+ if(t->launch() == -1){
+ QMessageBox::warning( this, tr( "Launch Application" ),
+ tr( "Launch failed!" ), tr( "Ok" ) );
+ }
+}
+
+void FileView::parentDir()
+{
+ setDir( currentDir + "./.." );
+}
+
+void FileView::lastDir()
+{
+ if( dirHistory.count() == 0 ) return;
+
+ QString newDir = dirHistory.last();
+ dirHistory.remove( dirHistory.last() );
+ generateDir( newDir );
+}
+
+void FileView::contentsMousePressEvent( QMouseEvent * e )
+{
+ QListView::contentsMousePressEvent( e );
+ menuTimer.start( 750, TRUE );
+}
+
+void FileView::contentsMouseReleaseEvent( QMouseEvent * e )
+{
+ QListView::contentsMouseReleaseEvent( e );
+ menuTimer.stop();
+}
+
+void FileView::cancelMenuTimer()
+{
+ if( menuTimer.isActive() )
+ menuTimer.stop();
+}
+
+void FileView::addToDocuments()
+{
+ FileItem * i = (FileItem *) currentItem();
+ DocLnk f;
+ QString n = i->text(0);
+ n.replace(QRegExp("\\..*"),"");
+ f.setName( n );
+ f.setFile( i->getFilePath() );
+ f.writeLink();
+}
+
+void FileView::run()
+{
+ FileItem * i = (FileItem *) currentItem();
+ i->launch();
+}
+
+void FileView::showFileMenu()
+{
+ FileItem * i = (FileItem *) currentItem();
+ if ( !i )
+ return;
+
+ QPopupMenu * m = new QPopupMenu( this );
+
+ if ( !i->isDir() ) {
+ m->insertItem( tr( "Add to Documents" ), this, SLOT( addToDocuments() ) );
+ m->insertSeparator();
+ }
+
+ MimeType mt(i->getFilePath());
+ const AppLnk* app = mt.application();
+
+ if ( !i->isDir() ) {
+ if ( app )
+ m->insertItem( app->pixmap(), tr( "Open in " + app->name() ), this, SLOT( run() ) );
+ else if( i->isExecutable() )
+ m->insertItem( Resource::loadPixmap( i->text( 0 ) ), tr( "Run" ), this, SLOT( run() ) );
+
+ m->insertItem( Resource::loadPixmap( "txt" ), tr( "View as text" ),
+ this, SLOT( viewAsText() ) );
+
+ m->insertSeparator();
+ }
+
+ m->insertItem( tr( "Rename" ), this, SLOT( rename() ) );
+ m->insertItem( Resource::loadPixmap("cut"),
+ tr( "Cut" ), this, SLOT( cut() ) );
+ m->insertItem( Resource::loadPixmap("copy"),
+ tr( "Copy" ), this, SLOT( copy() ) );
+ m->insertItem( Resource::loadPixmap("paste"),
+ tr( "Paste" ), this, SLOT( paste() ) );
+ m->insertItem( tr( "Delete" ), this, SLOT( del() ) );
+ m->insertSeparator();
+ m->insertItem( tr( "Select all" ), this, SLOT( selectAll() ) );
+ m->insertItem( tr( "Deselect all" ), this, SLOT( deselectAll() ) );
+ m->popup( QCursor::pos() );
+}
+
+//
+// FileBrowser
+//
+
+FileBrowser::FileBrowser( QWidget * parent,
+ const char * name, WFlags f ) :
+ QMainWindow( parent, name, f )
+{
+ init( QDir::current().canonicalPath() );
+}
+
+FileBrowser::FileBrowser( const QString & dir, QWidget * parent,
+ const char * name, WFlags f ) :
+ QMainWindow( parent, name, f )
+{
+ init( dir );
+}
+
+void FileBrowser::init(const QString & dir)
+{
+ setCaption( tr("File Manager") );
+ setIcon( Resource::loadPixmap( "filebrowser_icon" ) );
+
+ fileView = new FileView( dir, this );
+ fileView->setAllColumnsShowFocus( TRUE );
+
+ setCentralWidget( fileView );
+ setToolBarsMovable( FALSE );
+
+ QPEToolBar* toolBar = new QPEToolBar( this );
+ toolBar->setHorizontalStretchable( TRUE );
+
+ QPEMenuBar* menuBar = new QPEMenuBar( toolBar );
+
+ dirMenu = new QPopupMenu( this );
+ menuBar->insertItem( tr( "Dir" ), dirMenu );
+
+ sortMenu = new QPopupMenu( this );
+ menuBar->insertItem( tr( "Sort" ), sortMenu );
+ sortMenu->insertItem( tr( "by Name "), this, SLOT( sortName() ) );
+ sortMenu->insertItem( tr( "by Size "), this, SLOT( sortSize() ) );
+ sortMenu->insertItem( tr( "by Date "), this, SLOT( sortDate() ) );
+ sortMenu->insertItem( tr( "by Type "), this, SLOT( sortType() ) );
+ sortMenu->insertSeparator();
+ sortMenu->insertItem( tr( "Ascending" ), this, SLOT( updateSorting() ) );
+ sortMenu->setItemChecked( sortMenu->idAt( 5 ), TRUE );
+ sortMenu->setItemChecked( sortMenu->idAt( 0 ), TRUE );
+
+ toolBar = new QPEToolBar( this );
+
+ lastAction = new QAction( tr("Previous dir"), Resource::loadIconSet( "back" ),
+ QString::null, 0, this, 0 );
+ connect( lastAction, SIGNAL( activated() ), fileView, SLOT( lastDir() ) );
+ lastAction->addTo( toolBar );
+ lastAction->setEnabled( FALSE );
+
+ upAction = new QAction( tr("Parent dir"), Resource::loadIconSet( "up" ),
+ QString::null, 0, this, 0 );
+ connect( upAction, SIGNAL( activated() ), fileView, SLOT( parentDir() ) );
+ upAction->addTo( toolBar );
+
+ QAction *a = new QAction( tr("New folder"), Resource::loadPixmap( "newfolder" ),
+ QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), fileView, SLOT( newFolder() ) );
+ a->addTo( toolBar );
+
+ a = new QAction( tr("Cut"), Resource::loadPixmap( "cut" ),
+ QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), fileView, SLOT( cut() ) );
+ a->addTo( toolBar );
+
+ a = new QAction( tr("Copy"), Resource::loadPixmap( "copy" ),
+ QString::null, 0, this, 0 );
+ connect( a, SIGNAL( activated() ), fileView, SLOT( copy() ) );
+ a->addTo( toolBar );
+
+ pasteAction = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ),
+ QString::null, 0, this, 0 );
+ connect( pasteAction, SIGNAL( activated() ), fileView, SLOT( paste() ) );
+ pasteAction->addTo( toolBar );
+
+
+ connect( fileView, SIGNAL( dirChanged() ), SLOT( updateDirMenu() ) );
+ updateDirMenu();
+
+ QCopChannel* pcmciaChannel = new QCopChannel( "QPE/Card", this );
+ connect( pcmciaChannel, SIGNAL(received(const QCString &, const QByteArray &)),
+ this, SLOT(pcmciaMessage( const QCString &, const QByteArray &)) );
+}
+
+void FileBrowser::pcmciaMessage( const QCString &msg, const QByteArray &)
+{
+ if ( msg == "mtabChanged()" ) {
+ // ## Only really needed if current dir is on a card
+ fileView->updateDir();
+ }
+}
+
+void FileBrowser::dirSelected( int id )
+{
+ int i = 0, j;
+ QString dir;
+
+ // Bulid target dir from menu
+ while( (j = dirMenu->idAt( i )) != id ){
+ dir += dirMenu->text( j ).stripWhiteSpace();
+ if( dirMenu->text( j ) != "/" ) dir += "/";
+ i++;
+ }
+ dir += dirMenu->text( dirMenu->idAt( i ) ).stripWhiteSpace();
+
+ fileView->setDir( dir );
+}
+
+void FileBrowser::updateDirMenu()
+{
+ QString spc, cd = fileView->cd();
+ QStringList l = QStringList::split( "/", cd );
+ int i = 0;
+
+ dirMenu->clear();
+ dirMenu->insertItem( tr( "/" ), this, SLOT( dirSelected(int) ) );
+
+ for ( QStringList::Iterator it = l.begin(); it != l.end(); ++it ) {
+ spc.fill( ' ', i++);
+ dirMenu->insertItem( spc + (*it), this,
+ SLOT( dirSelected(int) ) );
+ }
+ dirMenu->setItemChecked( dirMenu->idAt( l.count() ), TRUE );
+
+ lastAction->setEnabled( fileView->history().count() != 0 );
+ upAction->setEnabled( cd != "/" );
+}
+
+void FileBrowser::sortName()
+{
+ fileView->setSorting( 0, sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
+ fileView->sort();
+ sortMenu->setItemChecked( sortMenu->idAt( 0 ), TRUE );
+ sortMenu->setItemChecked( sortMenu->idAt( 1 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 2 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 3 ), FALSE );
+}
+
+void FileBrowser::sortSize()
+{
+ fileView->setSorting( 1, sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
+ fileView->sort();
+ sortMenu->setItemChecked( sortMenu->idAt( 0 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 1 ), TRUE );
+ sortMenu->setItemChecked( sortMenu->idAt( 2 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 3 ), FALSE );
+}
+
+void FileBrowser::sortDate()
+{
+ fileView->setSorting( 2, sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
+ fileView->sort();
+ sortMenu->setItemChecked( sortMenu->idAt( 0 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 1 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 2 ), TRUE );
+ sortMenu->setItemChecked( sortMenu->idAt( 3 ), FALSE );
+}
+
+void FileBrowser::sortType()
+{
+ fileView->setSorting( 3, sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
+ fileView->sort();
+ sortMenu->setItemChecked( sortMenu->idAt( 0 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 1 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 2 ), FALSE );
+ sortMenu->setItemChecked( sortMenu->idAt( 3 ), TRUE );
+}
+
+void FileBrowser::updateSorting()
+{
+ sortMenu->setItemChecked( sortMenu->idAt( 5 ), !sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
+
+ if ( sortMenu->isItemChecked( sortMenu->idAt( 0 ) ) )
+ sortName();
+ else if ( sortMenu->isItemChecked( sortMenu->idAt( 1 ) ) )
+ sortSize();
+ else if ( sortMenu->isItemChecked( sortMenu->idAt( 2 ) ) )
+ sortDate();
+ else
+ sortType();
+}
diff --git a/noncore/unsupported/filebrowser/filebrowser.h b/noncore/unsupported/filebrowser/filebrowser.h
new file mode 100644
index 0000000..2e9e444
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/filebrowser.h
@@ -0,0 +1,141 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#ifndef FILEBROWSER_H
+#define FILEBROWSER_H
+
+#include <qlistview.h>
+#include <qmainwindow.h>
+#include <qfileinfo.h>
+#include <qaction.h>
+#include <qtimer.h>
+#include <qstringlist.h>
+
+class InlineEdit;
+
+class FileItem : public QListViewItem
+{
+public:
+ FileItem( QListView * parent, const QFileInfo & fi );
+
+ QString key( int column, bool ascending = TRUE ) const;
+ QString getFilePath(){ return fileInfo.filePath(); }
+ QString getFileName(){ return fileInfo.fileName(); }
+ bool isDir(){ return fileInfo.isDir(); }
+ bool isExecutable(){ return fileInfo.isExecutable(); }
+ bool isLib();
+ int launch();
+ bool rename( const QString & name );
+private:
+ QString sizeString( unsigned int size );
+ QFileInfo fileInfo;
+};
+
+
+class FileView : public QListView
+{
+ Q_OBJECT
+
+public:
+ FileView( const QString & dir, QWidget * parent = 0,
+ const char * name = 0 );
+ void setDir( const QString & dir );
+ QString cd(){ return currentDir; }
+ QStringList history() const { return dirHistory; }
+
+public slots:
+ void updateDir();
+ void parentDir();
+ void lastDir();
+
+ void rename();
+ void copy();
+ void paste();
+ void del();
+ void cut();
+ void newFolder();
+ void viewAsText();
+
+protected:
+ void generateDir( const QString & dir );
+ void resizeEvent( QResizeEvent* );
+ void contentsMousePressEvent( QMouseEvent * e );
+ void contentsMouseReleaseEvent( QMouseEvent * e );
+
+protected slots:
+ void itemClicked( QListViewItem * i );
+ void itemDblClicked( QListViewItem * i );
+ void showFileMenu();
+ void cancelMenuTimer();
+ void selectAll(){ QListView::selectAll( TRUE ); }
+ void deselectAll(){ QListView::selectAll( FALSE ); }
+ void addToDocuments();
+ void run();
+ void endRenaming();
+
+private:
+ QString currentDir;
+ QStringList dirHistory, flist;
+ QTimer menuTimer;
+ InlineEdit * le;
+ FileItem * itemToRename;
+ bool selected;
+
+ bool copyFile( const QString & dest, const QString & src );
+
+signals:
+ void dirChanged();
+ void textViewActivated( QWidget * w );
+ void textViewDeactivated();
+};
+
+class FileBrowser : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ FileBrowser( QWidget * parent = 0,
+ const char * name = 0, WFlags f = 0 );
+ FileBrowser( const QString & dir, QWidget * parent = 0,
+ const char * name = 0, WFlags f = 0 );
+private:
+ void init(const QString & dir);
+ QString fileToCopy;
+ QPopupMenu * dirMenu, * sortMenu;
+ FileView * fileView;
+ QAction * pasteAction;
+ QAction *lastAction;
+ QAction *upAction;
+
+ bool copyFile( const QString & dest, const QString & src );
+
+private slots:
+ void pcmciaMessage( const QCString &msg, const QByteArray &);
+
+ void sortName();
+ void sortDate();
+ void sortSize();
+ void sortType();
+ void updateSorting();
+
+ void updateDirMenu();
+ void dirSelected( int id );
+};
+
+#endif
diff --git a/noncore/unsupported/filebrowser/filebrowser.pro b/noncore/unsupported/filebrowser/filebrowser.pro
new file mode 100644
index 0000000..34df79a
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/filebrowser.pro
@@ -0,0 +1,12 @@
+TEMPLATE = app
+CONFIG = qt warn_on release
+DESTDIR = $(QPEDIR)/bin
+HEADERS = inlineedit.h \
+ filebrowser.h
+SOURCES = filebrowser.cpp \
+ inlineedit.cpp \
+ main.cpp
+INCLUDEPATH += $(QPEDIR)/include
+DEPENDPATH += $(QPEDIR)/include
+LIBS += -lqpe
+INTERFACES =
diff --git a/noncore/unsupported/filebrowser/inlineedit.cpp b/noncore/unsupported/filebrowser/inlineedit.cpp
new file mode 100644
index 0000000..47c500a
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/inlineedit.cpp
@@ -0,0 +1,30 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#include "inlineedit.h"
+
+InlineEdit::InlineEdit( QWidget * parent, const char * name )
+ : QLineEdit( parent, name )
+{
+}
+
+void InlineEdit::focusOutEvent( QFocusEvent * )
+{
+ emit lostFocus();
+}
diff --git a/noncore/unsupported/filebrowser/inlineedit.h b/noncore/unsupported/filebrowser/inlineedit.h
new file mode 100644
index 0000000..3fbfdd6
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/inlineedit.h
@@ -0,0 +1,39 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#ifndef INLINEEDIT_H
+#define INLINEEDIT_H
+
+#include <qlineedit.h>
+
+class InlineEdit : public QLineEdit
+{
+ Q_OBJECT
+
+public:
+ InlineEdit( QWidget * parent = 0, const char * name = 0 );
+
+signals:
+ void lostFocus();
+
+protected:
+ void focusOutEvent( QFocusEvent * );
+};
+
+#endif
diff --git a/noncore/unsupported/filebrowser/main.cpp b/noncore/unsupported/filebrowser/main.cpp
new file mode 100644
index 0000000..7304786
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/main.cpp
@@ -0,0 +1,41 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "filebrowser.h"
+
+#include <qpe/qpeapplication.h>
+#include <qpe/mimetype.h>
+
+#include <qmainwindow.h>
+#include <qfileinfo.h>
+#include <qdir.h>
+
+int main( int argc, char ** argv )
+{
+ QPEApplication a( argc, argv );
+
+ MimeType::updateApplications();
+ FileBrowser mw( QDir::current().canonicalPath() );
+ mw.resize( 240, 320 );
+ mw.setCaption( FileBrowser::tr("File Manager") );
+ a.showMainWidget( &mw );
+
+ return a.exec();
+}
diff --git a/noncore/unsupported/filebrowser/qpe-filebrowser.control b/noncore/unsupported/filebrowser/qpe-filebrowser.control
new file mode 100644
index 0000000..c55fe6a
--- a/dev/null
+++ b/noncore/unsupported/filebrowser/qpe-filebrowser.control
@@ -0,0 +1,9 @@
+Files: bin/filebrowser apps/Applications/filebrowser.desktop
+Priority: optional
+Section: qpe/applications
+Maintainer: Warwick Allison <warwick@trolltech.com>
+Architecture: arm
+Version: $QPE_VERSION-3
+Depends: qpe-base ($QPE_VERSION)
+Description: Browse the file system
+ The filebrowser for the Qtopia environment.
diff --git a/noncore/unsupported/oipkg/.cvsignore b/noncore/unsupported/oipkg/.cvsignore
new file mode 100644
index 0000000..3791def
--- a/dev/null
+++ b/noncore/unsupported/oipkg/.cvsignore
@@ -0,0 +1,10 @@
+Makefile
+moc_*
+pkfind.cpp
+pkfind.h
+pksettings.cpp
+pksettings.h
+pkdesc.cpp
+pkdesc.h
+packagemanagerbase.cpp
+packagemanagerbase.h
diff --git a/noncore/unsupported/oipkg/Makefile.in b/noncore/unsupported/oipkg/Makefile.in
new file mode 100644
index 0000000..8dd7edb
--- a/dev/null
+++ b/noncore/unsupported/oipkg/Makefile.in
@@ -0,0 +1,203 @@
+#############################################################################
+
+####### Compiler, tools and options
+
+CXX = $(SYSCONF_CXX) $(QT_CXX_MT)
+CXXFLAGS= $(SYSCONF_CXXFLAGS_QT) $(SYSCONF_CXXFLAGS)
+CC = $(SYSCONF_CC) $(QT_C_MT)
+CFLAGS = $(SYSCONF_CFLAGS)
+INCPATH = -I$(QPEDIR)/include
+LFLAGS = $(SYSCONF_LFLAGS_QT) $(SYSCONF_RPATH_QT) $(SYSCONF_LFLAGS) $(QT_LFLAGS_MT)
+LIBS = $(SUBLIBS) -lqpe $(SYSCONF_LIBS_QT) $(SYSCONF_LIBS) $(SYSCONF_LIBS_QTAPP)
+MOC = $(SYSCONF_MOC)
+UIC = $(SYSCONF_UIC)
+
+####### Target
+
+DESTDIR = $(QPEDIR)/bin/
+VER_MAJ = 1
+VER_MIN = 0
+VER_PATCH = 0
+TARGET = qipkg
+TARGET1 = lib$(TARGET).so.$(VER_MAJ)
+
+####### Files
+
+HEADERS = packagemanager.h
+SOURCES = packagemanager.cpp \
+ main.cpp
+OBJECTS = packagemanager.o \
+ main.o \
+ packagemanagerbase.o \
+ pkdesc.o \
+ pkfind.o \
+ pksettings.o
+INTERFACES = packagemanagerbase.ui \
+ pkdesc.ui \
+ pkfind.ui \
+ pksettings.ui
+UICDECLS = packagemanagerbase.h \
+ pkdesc.h \
+ pkfind.h \
+ pksettings.h
+UICIMPLS = packagemanagerbase.cpp \
+ pkdesc.cpp \
+ pkfind.cpp \
+ pksettings.cpp
+SRCMOC = moc_packagemanager.cpp \
+ moc_packagemanagerbase.cpp \
+ moc_pkdesc.cpp \
+ moc_pkfind.cpp \
+ moc_pksettings.cpp
+OBJMOC = moc_packagemanager.o \
+ moc_packagemanagerbase.o \
+ moc_pkdesc.o \
+ moc_pkfind.o \
+ moc_pksettings.o
+
+
+####### Implicit rules
+
+.SUFFIXES: .cpp .cxx .cc .C .c
+
+.cpp.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+.cxx.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+.cc.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+.C.o:
+ $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+.c.o:
+ $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
+
+####### Build rules
+
+
+all: $(DESTDIR)$(TARGET)
+
+$(DESTDIR)$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) $(SUBLIBS)
+ $(SYSCONF_LINK) $(LFLAGS) -o $(DESTDIR)$(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS)
+
+moc: $(SRCMOC)
+
+tmake:
+ tmake qipkg.pro
+
+clean:
+ -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS)
+ -rm -f *~ core
+ -rm -f allmoc.cpp
+
+####### Extension Modules
+
+listpromodules:
+ @echo
+
+listallmodules:
+ @echo
+
+listaddonpromodules:
+ @echo
+
+listaddonentmodules:
+ @echo
+
+
+REQUIRES=
+
+####### Sub-libraries
+
+
+###### Combined headers
+
+
+
+####### Compile
+
+packagemanager.o: packagemanager.cpp \
+ packagemanager.h \
+ packagemanagerbase.h \
+ pkdesc.h \
+ pkfind.h \
+ pksettings.h \
+ $(QPEDIR)/include/qpe/process.h \
+ $(QPEDIR)/include/qpe/resource.h \
+ $(QPEDIR)/include/qpe/stringutil.h \
+ $(QPEDIR)/include/qpe/qpeapplication.h \
+ $(QPEDIR)/include/qpe/qcopenvelope_qws.h \
+ $(QPEDIR)/include/qpe/applnk.h
+
+main.o: main.cpp \
+ packagemanager.h \
+ packagemanagerbase.h \
+ $(QPEDIR)/include/qpe/qpeapplication.h
+
+packagemanagerbase.h: packagemanagerbase.ui
+ $(UIC) packagemanagerbase.ui -o $(INTERFACE_DECL_PATH)/packagemanagerbase.h
+
+packagemanagerbase.cpp: packagemanagerbase.ui
+ $(UIC) packagemanagerbase.ui -i packagemanagerbase.h -o packagemanagerbase.cpp
+
+pkdesc.h: pkdesc.ui
+ $(UIC) pkdesc.ui -o $(INTERFACE_DECL_PATH)/pkdesc.h
+
+pkdesc.cpp: pkdesc.ui
+ $(UIC) pkdesc.ui -i pkdesc.h -o pkdesc.cpp
+
+pkfind.h: pkfind.ui
+ $(UIC) pkfind.ui -o $(INTERFACE_DECL_PATH)/pkfind.h
+
+pkfind.cpp: pkfind.ui
+ $(UIC) pkfind.ui -i pkfind.h -o pkfind.cpp
+
+pksettings.h: pksettings.ui
+ $(UIC) pksettings.ui -o $(INTERFACE_DECL_PATH)/pksettings.h
+
+pksettings.cpp: pksettings.ui
+ $(UIC) pksettings.ui -i pksettings.h -o pksettings.cpp
+
+packagemanagerbase.o: packagemanagerbase.cpp
+
+pkdesc.o: pkdesc.cpp
+
+pkfind.o: pkfind.cpp
+
+pksettings.o: pksettings.cpp
+
+moc_packagemanager.o: moc_packagemanager.cpp \
+ packagemanager.h \
+ packagemanagerbase.h
+
+moc_packagemanagerbase.o: moc_packagemanagerbase.cpp \
+ packagemanagerbase.h
+
+moc_pkdesc.o: moc_pkdesc.cpp \
+ pkdesc.h
+
+moc_pkfind.o: moc_pkfind.cpp \
+ pkfind.h
+
+moc_pksettings.o: moc_pksettings.cpp \
+ pksettings.h
+
+moc_packagemanager.cpp: packagemanager.h
+ $(MOC) packagemanager.h -o moc_packagemanager.cpp
+
+moc_packagemanagerbase.cpp: packagemanagerbase.h
+ $(MOC) packagemanagerbase.h -o moc_packagemanagerbase.cpp
+
+moc_pkdesc.cpp: pkdesc.h
+ $(MOC) pkdesc.h -o moc_pkdesc.cpp
+
+moc_pkfind.cpp: pkfind.h
+ $(MOC) pkfind.h -o moc_pkfind.cpp
+
+moc_pksettings.cpp: pksettings.h
+ $(MOC) pksettings.h -o moc_pksettings.cpp
+
+
diff --git a/noncore/unsupported/oipkg/ipkg/available b/noncore/unsupported/oipkg/ipkg/available
new file mode 100644
index 0000000..a9a8ddc
--- a/dev/null
+++ b/noncore/unsupported/oipkg/ipkg/available
@@ -0,0 +1,2256 @@
+Package: ae
+Priority: optional
+Section: editors
+Installed-Size: 144
+Debian-Maintainer: Dale Scheetz (Dwarf #1) <dwarf@polaris.net>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 962-30
+Depends: libc6 (>= 2.2.1-2), slang1 (>> 1.3.0-0)
+Filename: ./ae_962-30_arm.ipk
+Size: 15635
+MD5Sum: 96f0a0a9e1c3edede3fbdd605fc4a2bb
+Description: Anthony's Editor -- a tiny full-screen editor
+ ae is a tiny full-screen text editor with both modal (vi-like)
+ and modeless (emacs-like) modes, determined by an ae.rc config file.
+
+Package: apmd
+Priority: extra
+Section: admin
+Installed-Size: 284
+Debian-Maintainer: Avery Pennarun <apenwarr@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 3.0final-1
+Depends: libc6 (>= 2.1.2), xlib6g (>= 3.3-5), xlib6g (>= 3.3.6)
+Filename: ./apmd_3.0final-1_arm.ipk
+Size: 6863
+MD5Sum: 3dcb9b6ae51b923058f0a167c7dcb680
+Description: Utilities for Advanced Power Management (APM) on laptops
+ On laptop computers, the Advanced Power Management (APM) support
+ provides access to battery status information and may help you to
+ conserve battery power, depending on your laptop and the APM
+ implementation. The apmd program also lets you run arbitrary programs
+ when APM events happen (for example, you can eject PCMCIA devices when
+ you suspend, or change hard drive timeouts when you connect the battery).
+ .
+ This package contains apmd(8), a daemon for logging and acting on APM
+ events, apm(1), a client that prints /proc/apm, xapm(1x), an X11 utility
+ that displays a little graph, on_ac_power(1), a program for shell scripts
+ to determine if wall power is connected, and tailf(1) which follows the
+ growth of a log file without writing to disk.
+ .
+ The Debian default kernel does *not* contain APM support, because it causes
+ problems on some computers. So, you need to recompile your kernel
+ and enable APM support during configuration; the corresponding questions
+ are in the 'Character devices' section.
+ .
+
+Package: ash
+Essential: yes
+Priority: required
+Section: shells
+Installed-Size: 152
+Debian-Maintainer: Herbert Xu <herbert@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 0.3.7-16
+Pre-Depends: libc6 (>= 2.2.1-2)
+Filename: ./ash_0.3.7-16_arm.ipk
+Size: 51495
+MD5Sum: 1d1f163c5655cee3c62c053b818aadb2
+Description: NetBSD /bin/sh
+ "ash" is a POSIX compliant shell that is much smaller than "bash".
+ We take advantage of that by making it the shell on the installation
+ root floppy, where space is at a premium.
+ .
+ It can be usefully installed as /bin/sh (because it executes scripts
+ somewhat faster than "bash"), or as the default shell either of root
+ or of a second user with a userid of 0 (because it depends on fewer
+ libraries, and is therefore less likely to be affected by an upgrade
+ problem or a disk failure). It is also useful for checking that a
+ script uses only POSIX syntax.
+ .
+ "bash" is a better shell for most users, since it has some nice
+ features absent from "ash", and is a required part of the system.
+
+Package: bash
+Version: 2.03-6
+Section: base
+Priority: required
+Architecture: arm
+Pre-Depends: libc6 (>= 2.1.2), libncurses5
+Depends: base-files (>= 2.1.12)
+Installed-Size: 748
+Debian-Maintainer: Matthias Klose <doko@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Filename: ./bash_2.03-6_arm.ipk
+Size: 224887
+MD5Sum: 07f98861afc6d22427dd35700b342c68
+Description: The GNU Bourne Again SHell
+ Bash is an sh-compatible command language interpreter that executes
+ commands read from the standard input or from a file. Bash also
+ incorporates useful features from the Korn and C shells (ksh and csh).
+ .
+ Bash is ultimately intended to be a conformant implementation of the
+ IEEE Posix Shell and Tools specification (IEEE Working Group 1003.2).
+
+Package: blackbox
+Priority: optional
+Version: 0.1
+Architecture: arm
+Maintainer: Alexander Guy <a7r@handhelds.org>
+Depends: libc6, xlibs, libfreetype6, libstdc++2.10-glibc2.2, libxft, libxrender
+Filename: ./blackbox_0.1_arm.ipk
+Size: 145909
+MD5Sum: 02648d34fdbe00260fcb692abc9e7705
+Description: blackbox window manager
+
+Package: checkers
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, xlibs, libfreetype6, libstdc++2.10-glibc2.2, libfltk1
+Filename: ./checkers_0.0_arm.ipk
+Size: 20117
+MD5Sum: 45d08b5ead7c474711e77efcce6bff12
+Description: Play checkers against the computer
+
+Package: cpu-scale-2.4.3-rmk1-np2
+Priority: standard
+Version: 2.4.3rmk1np2
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: modutils
+Filename: ./cpu-scale-2.4.3-rmk1-np2_2.4.3rmk1np2_arm.ipk
+Size: 4068
+MD5Sum: d1b1f8bcfa511ef0a966b8435a61d69b
+Description: support for scaling the speed of the SA-1110 processor
+ This package contains a kernel module which will allow the speed of
+ the SA-1110 processor to be adjusted via /proc/scale
+
+Package: debianutils
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 172
+Debian-Maintainer: Guy Maor <maor@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1.15
+Replaces: miscutils, cron (<=3.0pl1-31), debian-utils, tetex-bin (<< 1.0.6-1.1)
+Pre-Depends: libc6 (>= 2.1.97)
+Conflicts: debian-utils
+Filename: ./debianutils_1.15_arm.ipk
+Size: 9430
+MD5Sum: ce83af3644fd050fcd97988dc7074184
+Description: Miscellaneous utilities specific to Debian.
+ Debianutils includes installkernel mkboot mktemp readlink run-parts savelog
+ sensible-editor sensible-pager tempfile which.
+
+Package: dev-files
+Essential: yes
+Version: 0.4
+Priority: required
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Filename: ./dev-files_0.4_arm.ipk
+Size: 2880
+MD5Sum: d4848a628a22fe664f35da48a56e98f4
+Description: devices files for /dev directory
+ This package contains a collection of devices files for /dev. I'm
+ not sure who came up with the list -- I just grabbed it from
+ familiar v0.4 bleeding. Perhaps we'll want to switch to devfs in
+ the kernel and eliminate this package?
+
+Package: diff
+Priority: optional
+Section: base
+Installed-Size: 276
+Debian-Maintainer: Santiago Vila <sanvila@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.7-24
+Pre-Depends: libc6 (>= 2.2.1-2)
+Filename: ./diff_2.7-24_arm.ipk
+Size: 35043
+MD5Sum: b016146c47582743d57144d13d5cb14c
+Description: File comparison utilities
+ `diff' shows differences between two files, or each corresponding file
+ in two directories.
+ .
+ The set of differences produced by `diff' can be used to distribute
+ updates to text files (such as program source code) to other people.
+ This method is especially useful when the differences are small compared
+ to the complete files. Given `diff' output, the `patch' program can
+ update, or "patch", a copy of the file.
+
+Package: dosfstools
+Priority: optional
+Section: otherosfs
+Installed-Size: 126
+Debian-Maintainer: Roman Hodek <roman@hodek.net>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.8-1
+Replaces: mkdosfs
+Depends: libc6 (>= 2.2.1-2)
+Conflicts: mkdosfs
+Filename: ./dosfstools_2.8-1_arm.ipk
+Size: 14197
+MD5Sum: 8fe452f8337b43071f1fa9558b24ac0b
+Description: Utilities to create and check MS-DOS FAT filesystems
+ Inside of this package there are two utilities to create and to
+ check MS-DOS FAT filesystems on either harddisks or floppies under
+ Linux. This version uses the enhanced boot sector/superblock
+ format of DOS 3.3+ as well as provides a default dummy boot sector
+ code.
+
+Package: e2fsprogs
+Priority: required
+Section: base
+Installed-Size: 584
+Debian-Maintainer: Yann Dirson <dirson@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1.19-4
+Replaces: e2fslibsg, ss2g, comerr2g
+Provides: libcomerr2, libss2, libext2fs2, libe2p2, libuuid1, e2fslibsg
+Pre-Depends: libc6 (>= 2.2.1-2)
+Suggests: gpart, parted
+Conflicts: e2fslibsg, dump (<< 0.4b4-4), quota (<< 1.55-8.1)
+Filename: ./e2fsprogs_1.19-4_arm.ipk
+Size: 135371
+MD5Sum: b61f3677ee894669d066d244969da387
+Description: The EXT2 file system utilities and libraries.
+ EXT2 stands for "Extended Filesystem", version 2. It's the main
+ filesystem type used for hard disks on Debian and other Linux systems.
+ .
+ This package contains programs for creating, checking, and maintaining EXT2
+ filesystems, and the generic `fsck' wrapper.
+
+Package: familiar-base
+Essential: yes
+Priority: required
+Version: 0.10
+Architecture: arm
+Maintainer: Alexander Guy <a7r@handhelds.org>
+Depends: sysvinit (>= 2.72)
+Pre-Depends: libc6 (>= 2.1.97)
+Filename: ./familiar-base_0.10_arm.ipk
+Size: 16749
+MD5Sum: f8da9c14594bbf9fd5350b5df072cfbd
+Description: essential files for a familiar installation
+ This package is a bit of a catch-all for files that need to be
+ installed with familiar, (I made this package from everything that
+ was still left over after I split off the rest of the files from
+ familiar v0.4 bleeding into their own packages) . Much of what it is
+ here is simply emty directories that must exist. Also, there are
+ some files here which may be created by scripts in Debian that we
+ are not yet runnging. There are probably several files here that
+ should move to other packages.
+
+Package: familiar-postinst
+Priority: optional
+Version: 0.1
+Architecture: arm
+Maintainer: Alexander Guy <a7r@handhelds.org>
+Depends: wget, ntpdate
+Filename: ./familiar-postinst_0.1_arm.ipk
+Size: 1022
+MD5Sum: f246e2efdcd8c798426e394426e327c1
+Description: A collection of shell scripts to do postinstall polishing.
+ These scripts download some of Microsoft's core True-Type Fonts,
+ as well as sync the handheld's time against a public NTP server.
+
+Package: fileutils
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 1892
+Debian-Maintainer: Michael Stone <mstone@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 4.0.43-1
+Replaces: color-ls, util-linux (<= 2.7.1-1)
+Pre-Depends: libc6 (>= 2.2.1-2)
+Conflicts: color-ls
+Filename: ./fileutils_4.0.43-1_arm.ipk
+Size: 244849
+MD5Sum: 96584322c797c44b0dc2171973b406c3
+Description: GNU file management utilities.
+ The utilities: chgrp chmod chown cp dd df dir dircolors du install ln
+ ls mkdir mkfifo mknod mv rm rmdir shred touch vdir sync.
+
+Package: fscrib
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, xlibs, libxaw7
+Filename: ./fscrib_0.0_arm.ipk
+Size: 120261
+MD5Sum: 916dd41f2ed4b0fe3b4ea08d3a80633e
+Description: Full-screen character recognition
+
+Package: fstroke
+Priority: optional
+Version: 0.2-fam1
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, xlibs, libxaw7
+Filename: ./fstroke_0.2-fam1_arm.ipk
+Size: 16248
+MD5Sum: f4fba9d28f724936cca622f374ce9347
+Description: Full-screen modeless character recognizer
+
+Package: ftp
+Version: 0.10-3.1
+Section: net
+Priority: standard
+Architecture: arm
+Depends: libc6 (>= 2.1.2), libncurses5, libreadline4 (>= 4.1)
+Replaces: netstd
+Installed-Size: 156
+Debian-Maintainer: Herbert Xu <herbert@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Filename: ./ftp_0.10-3.1_arm.ipk
+Size: 33962
+MD5Sum: d8c10c5d6d03be0b84964c885927e077
+Description: The FTP client.
+ ftp is the user interface to the ARPANET standard File Transfer Protocol.
+ The program allows a user to transfer files to and from a remote network
+ site.
+Source: netkit-ftp
+
+Package: gdk-imlib1
+Priority: optional
+Section: libs
+Installed-Size: 372
+Debian-Maintainer: Ossama Othman <ossama@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: imlib
+Version: 1.9.8.1-2
+Replaces: gdk-imlib-nonfree1, libgdk-imlib-nonfree1, libgdk-imlib1
+Provides: gdk-imlib, libgdk-imlib1
+Depends: imlib-base (>= 1.9.8.1-2), libc6 (>= 2.1.97), libglib1.2 (>= 1.2.0), libjpeg62, libpng2, libtiff3g, libungif3g (>= 3.0-2) | giflib3g (>= 3.0-5.2), zlib1g (>= 1:1.1.3)
+Suggests: imlib-progs, imagemagick, netpbm, libjpeg-progs
+Conflicts: gdk-imlib-nonfree1, libgdk-imlib-nonfree1, libgdk-imlib1
+Filename: ./gdk-imlib1_1.9.8.1-2_arm.ipk
+Size: 62912
+MD5Sum: 38e2feac77d8a95288de100ed3109454
+Description: Gdk-Imlib is an imaging library for use with gtk
+ Gdk-Imlib is a low-level gdk interface for gtk programmers. It allows easier
+ access to many graphics formats and can write to them as well.
+
+Package: grep
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 488
+Debian-Maintainer: Wichert Akkerman <wakkerma@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.4.2-1
+Provides: rgrep
+Pre-Depends: libc6 (>= 2.1.2)
+Conflicts: rgrep
+Filename: ./grep_2.4.2-1_arm.ipk
+Size: 119438
+MD5Sum: 67fa4cb756f951fda7b7a5d4da2ab523
+Description: GNU grep, egrep and fgrep.
+ The GNU family of grep utilities may be the "fastest grep in the west".
+ GNU grep is based on a fast lazy-state deterministic matcher (about
+ twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper
+ search for a fixed string that eliminates impossible text from being
+ considered by the full regexp matcher without necessarily having to
+ look at every character. The result is typically many times faster
+ than Unix grep or egrep. (Regular expressions containing backreferencing
+ will run more slowly, however.)
+
+Package: gzip
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 130
+Debian-Maintainer: Bdale Garbee <bdale@gag.com>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1.2.4-33
+Depends: debianutils (>= 1.6)
+Pre-Depends: libc6 (>= 2.1)
+Filename: ./gzip_1.2.4-33_arm.ipk
+Size: 30103
+MD5Sum: e98844d058d1909781782abea0182887
+Description: The GNU compression utility.
+ This is the standard GNU file compression utility, which is also the default
+ compression tool for Debian. It typically operates on files with names
+ ending in '.gz'.
+ .
+ This package can also decompress '.Z' files created with 'compress'.
+
+Package: h3600-utils
+Priority: standard
+Version: 0.4
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6
+Filename: ./h3600-utils_0.4_arm.ipk
+Size: 2736
+MD5Sum: 5071017b84fb30c7ae33e3da97dfad80
+Description: utilities for controlling hardware on Compaq iPAQ H3600 series computers
+ This package contains programs for controlling the backlight (sic)
+ as well as the leds on the Compaq iPAQ H3600 series of handheld
+ computers.
+
+Package: hostname
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 37
+Debian-Maintainer: Adam Heath <doogie@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.07
+Pre-Depends: libc6 (>= 2.1)
+Filename: ./hostname_2.07_arm.ipk
+Size: 5277
+MD5Sum: 2e3ed84ee965ed6bb7619b443b228d63
+Description: A utility to set/show the host name or domain name
+ The hostname command can be used to either set or display
+ the current host or domain name of the system. This name is
+ used by many of the networking programs to identify the machine.
+ The domain name is also used by NIS/YP.
+
+Package: ifupdown
+Priority: important
+Section: base
+Installed-Size: 168
+Debian-Maintainer: Anthony Towns <ajt@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 0.6.4-3
+Replaces: netbase (<< 4.00)
+Depends: net-tools, libc6 (>= 2.1.2)
+Suggests: iproute
+Filename: ./ifupdown_0.6.4-3_arm.ipk
+Size: 11654
+MD5Sum: 7d60dcafa9a3526aca1fa566024e6e42
+Description: High level tools to configure network interfaces
+ This package provides the tools ifup and ifdown which may be used to
+ configure (or, respectively, deconfigure) network interfaces, based on
+ the file /etc/network/interfaces.
+
+Package: intimateboot
+Priority: optional
+Section: extras
+Installed-Size: 40960
+Debian-Maintainer: Nicolás Lichtmaier <nick@debian.org>
+Maintainer: James Conner <jim@secret.org.uk>
+Architecture: arm
+Version: 050301
+Depends: reiserfs-module (= 2.4.1-rmk1-np1 )
+Filename: ./intimateboot_050301_arm.ipk
+Size: 2518
+MD5Sum: 92532bfa8875aae0746d6901192b3cd2
+Description: This package provides the necessary boot scripts to optionally make the intimate distribution boot up. If a valid boot image for intimate is not found, then the system will boot Familiar from flash as normal. The package provides an additional linuxrc script, which may be run as an alternative to the normal one. It also provides devfs support via a small script. Booting via microdrive or NFS is supported, but you must preconfigure NFS paths etc before starting. IMPORTANT : You will need to change the linuxargs in the bootloader after installing this package. This is done by entering... 'set linuxargs "noinited devfs=mount root=/dev/mtdblock3 init=/linuxrc.intimate console=ttySA0"' and 'params save' at the boot> prompt.
+
+
+Package: ion-nasty-hacks
+Priority: optional
+Version: 200102160-fam1
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, xlibs
+Filename: ./ion-nasty-hacks_200102160-fam1_arm.ipk
+Size: 58518
+MD5Sum: 79a39fcb686adf83942ad50ad32845f4
+Description: a text-editorish, keyboard/stylus friendly window manager
+
+Package: ipkg
+Essential: yes
+Priority: required
+Version: 0.4-fam1
+Architecture: all
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: shellutils, textutils, sed, grep, gzip, tar, wget
+Filename: ./ipkg_0.4-fam1_all.ipk
+Size: 5306
+MD5Sum: 6502942cc864d29cf005925a168747cd
+Description: Lightweight package management system
+
+Package: irda-common
+Version: 0.9.14-3
+Section: misc
+Priority: optional
+Architecture: arm
+Depends: libc6 (>= 2.2.1-2)
+Conflicts: irda-utils
+Replaces: irda-utils
+Installed-Size: 100
+Debian-Maintainer: NOKUBI Takatsugu <knok@daionet.gr.jp>
+Maintainer: Alexander Guy <a7r@andern.org>
+Source: irda-utils
+Filename: ./irda-common_0.9.14-3_arm.ipk
+Size: 5259
+MD5Sum: d41a70d88dbf47b63bf601cbe176b121
+Description: IrDA management utilities
+ IrDA management utilities for Linux.
+ This package contains irmanager and irattach.
+
+Package: irda-modules-2.4.3-rmk2-np1
+Priority: extra
+Maintainer: Alexander Guy <a7r@andern.org>
+Depends: kernel-modules-2.4.3-rmk2-np1
+Version: fam3
+Architecture: arm
+Filename: ./irda-modules-2.4.3-rmk2-np1_fam3_arm.ipk
+Size: 194859
+MD5Sum: 7af6f1d272eb0cb135162fb9f9bb2c76
+Description: IrDA kernel modules
+ The entire suite of kernel modules required to use both SIR and FIR
+ IrDA. This includes IrCOMM, and IrLAN support.
+
+Package: iv
+Essential: yes
+Priority: required
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Provides: vi
+Depends: libc6
+Filename: ./iv_0.0_arm.ipk
+Size: 8364
+MD5Sum: 9cf155930e6db23ddece8705df27d99d
+Description: Lightweight reimplementation of vi <attribution?>
+
+Package: kernel-modules-2.4.3-rmk2-np1
+Essential: yes
+Priority: required
+Version: fam3
+Architecture: arm
+Maintainer: Alexander Guy <a7r@andern.org>
+Depends: modutils
+Filename: ./kernel-modules-2.4.3-rmk2-np1_fam3_arm.ipk
+Size: 585458
+MD5Sum: 2cd52706ce0157337664414bc6e75943
+Description: kernel modules for kernel 2.4.3-rmk2-np1
+ This package contains almost all of the kernel modules that might be
+ useful within familiar. Eventually I would like to split many of
+ these modules off into their own packages that would have dependency
+ links from the programs that need them. For example, e2fsprogs could
+ depend on e2fs-kernel-modules or something like that. I have already
+ split off cpu-scale and the pcmcia modules into their own packages.
+
+Package: less
+Version: 346-7
+Section: text
+Priority: standard
+Architecture: arm
+Depends: libc6 (>= 2.1.2), libncurses5, debianutils (>= 1.8)
+Installed-Size: 163
+Debian-Maintainer: Thomas Schoepf <schoepf@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Filename: ./less_346-7_arm.ipk
+Size: 41734
+MD5Sum: 617280f25bba9c4b03e631af7cd969b2
+Description: A file pager program, similar to more(1)
+ Less is a program similar to more (1), but which allows backward
+ movement in the file as well as forward movement. Also, less does not
+ have to read the entire input file before starting, so with large input
+ files it starts up faster than text editors like vi (1). Less uses
+ termcap (or terminfo on some systems), so it can run on a variety of
+ terminals. There is even limited support for hardcopy terminals.
+ .
+ Homepage: http://www.flash.net/~marknu/less/
+
+Package: libc6
+Priority: required
+Section: base
+Installed-Size: 13104
+Debian-Maintainer: Ben Collins <bcollins@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: glibc
+Version: 2.2.2-1
+Replaces: ldso (<= 1.9.11-9), timezone, timezones, gconv-modules, libtricks
+Provides: gconv-modules, glibc2.2
+Suggests: locales, glibc-doc
+Conflicts: libdb2 (= 2:2.7.7-2.1), timezone, timezones, gconv-modules, libtricks, libc6-doc
+Filename: ./libc6_2.2.2-1_arm.ipk
+Size: 1100492
+MD5Sum: 4944634b673b732d4a9fc8ec87a1447c
+Description: GNU C Library: Shared libraries and Timezone data
+ Contains the standard libraries that are used by nearly all programs on
+ the system. This package includes shared versions of the standard C library
+ and the standard math library, as well as many others.
+ Timezone data is also included.
+
+Package: libdb2
+Priority: optional
+Section: libs
+Installed-Size: 388
+Debian-Maintainer: Ben Collins <bcollins@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Source: db
+Version: 2:2.7.7-3
+Architecture: arm
+Replaces: libdb2.6, lib-bdb2
+Depends: libc6 (>= 2.2.1-2)
+Conflicts: lib-bdb2
+Filename: ./libdb2_2.7.7-3_arm.ipk
+Size: 138089
+MD5Sum: ed771a8cdf8225b98db3c61b39a05d07
+Description: The Berkeley database routines (run-time files).
+ libdb2 is a library for manipulating database files, developed at
+ Berkeley and extended by Sleepycat Software Inc.
+ This is the stable version, also commercially supported.
+ .
+ It supports three kinds of file formats:
+ * btree. A representation of a sorted, balanced tree structure.
+ * hashed. An extensible, dynamic hashing scheme.
+ * UNIX file oriented. A byte stream file with fixed or variable
+ length records.
+ Other core database services:
+ * page cache management for fast access, clean page allocation.
+ * lock with multiple reader/writer granularity.
+ * nested transaction support with logging and rollback recovery
+ (two phase commit).
+ * Large set of utility, to dump/load/restore data and examine log.
+
+Package: libfltk1
+Priority: optional
+Section: libs
+Installed-Size: 370
+Debian-Maintainer: Fabrizio Polacco <fpolacco@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: fltk
+Version: 1.0.9-1.1
+Depends: libc6 (>= 2.2.1-2), libgl1, libstdc++2.10-glibc2.2, xlibs (>= 4.0.1-11)
+Filename: ./libfltk1_1.0.9-1.1_arm.ipk
+Size: 186802
+MD5Sum: 59c552236fc0e89fd4fb7474d6fbfe0a
+Description: The Fast Light Toolkit, a GUI toolkit inspired by libForms
+ This is a very nice LGPL'd graphic user interface toolkit originally based on
+ libForms. Programs written using libForms will hopefully be ported to libfltk
+ in the future and will need this package to run.
+
+Package: libfreetype6
+Priority: optional
+Section: libs
+Installed-Size: 396
+Debian-Maintainer: Anthony Fok <foka@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: freetype
+Version: 2.0.1.20010317-1
+Replaces: freetype0, freetype1
+Depends: libc6 (>= 2.2.1-2)
+Suggests: libfreetype6-dev
+Conflicts: freetype
+Filename: ./libfreetype6_2.0.1.20010317-1_arm.ipk
+Size: 106977
+MD5Sum: 639030e1e406cc87c44db49a70de9f34
+Description: FreeType 2 font engine, shared library files.
+ The FreeType project is a team of volunteers who develop free,
+ portable and high-quality software solutions for digital typography.
+ They specifically target embedded systems and focus on bringing small,
+ efficient and ubiquitous products.
+ .
+ The FreeType 2 library is their new software font engine. It has been
+ designed to provide the following important features:
+ * A universal and simple API to manage font files
+ * Support for several font formats through loadable modules
+ * High-quality anti-aliasing
+ * High portability & performance
+ .
+ Supported font formats include:
+ * TrueType files (.ttf) and collections (.ttc)
+ * Type 1 font files both in ASCII (.pfa) or binary (.pfb) format
+ * Type 1 Multiple Master fonts. The FreeType 2 API also provides
+ routines to manage design instances easily
+ * Type 1 CID-keyed fonts
+ * OpenType/CFF (.otf) fonts
+ * CFF/Type 2 fonts
+ * Adobe CEF fonts (.cef), used to embed fonts in SVG documents with
+ the Adobe SVG viewer plugin.
+ * Windows FNT/FON bitmap fonts
+ .
+ This package contains the files needed to run programs that use the
+ FreeType 2 library.
+ .
+ Home Page: http://www.freetype.org/
+ Authors: David Turner <david.turner@freetype.org>
+ Robert Wilhelm <robert.wilhelm@freetype.org>
+ Werner Lemberg <werner.lemberg@freetype.org>
+
+Package: libglade0
+Priority: optional
+Section: libs
+Installed-Size: 164
+Debian-Maintainer: Paolo Molaro <lupus@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: libglade
+Version: 0.16-2
+Depends: libc6 (>= 2.2.1-2), libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.8-3), libxml1, xlibs (>= 4.0.1-11), zlib1g (>= 1:1.1.3)
+Filename: ./libglade0_0.16-2_arm.ipk
+Size: 35028
+MD5Sum: 26211c69d51e1f8abd45022eaadb25b1
+Description: Library to load .glade files at runtime.
+ This library allows you to load user interfaces in your program, which are
+ stored externally. This allows alteration of the interface without
+ recompilation of the program.
+ .
+ The interfaces can also be edited with GLADE.
+
+Package: libglib1.2
+Priority: optional
+Section: libs
+Installed-Size: 264
+Debian-Maintainer: Ben Gertzfield <che@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: glib1.2
+Version: 1.2.10-1
+Replaces: libgtk-doc
+Depends: libc6 (>= 2.2.1-2)
+Suggests: libgtk1.2
+Filename: ./libglib1.2_1.2.10-1_arm.ipk
+Size: 68147
+MD5Sum: 1fe1ad635bc78331c9e3ae27406ddc12
+Description: The GLib library of C routines
+ GLib is a library containing many useful C routines for things such
+ as trees, hashes, and lists. GLib was previously distributed with
+ the GTK+ toolkit, but has been split off as of the developers' version
+ 1.1.0.
+ .
+ You do not need to install this package if you have libgtk1 (note 1,
+ not 1.1 or 1.2) installed. libgtk1 included libglib in it. libgtk1.1
+ and libgtk1.2, however, do need libglib1.1 to be installed separately.
+
+Package: libgtk1.2
+Priority: optional
+Section: libs
+Installed-Size: 2184
+Debian-Maintainer: Ben Gertzfield <che@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: gtk+1.2
+Version: 1.2.10-1
+Replaces: libgtk1.1.5, libgtk1.1.6, libgtk1.1.9, libgtk1.1.11, libgtk1.1.12, libgtk1.1.13, libgtk1.1.14, libgtk1.1.15, libgtk1.1.16
+Depends: libc6 (>= 2.2.1-2), libglib1.2 (>= 1.2.0), xlibs (>= 4.0.1-11)
+Pre-Depends: dpkg (>= 1.6.8)
+Conflicts: libgtk-dev (<< 1:1.0.2)
+Filename: ./libgtk1.2_1.2.10-1_arm.ipk
+Size: 602094
+MD5Sum: b0ff676813a80f1017876b125bb9bad0
+Description: The GIMP Toolkit set of widgets for X
+ The GIMP Toolkit is a freely available set of widgets for X.
+ GTK is easy to use, and has been implemented in such projects as
+ The GNU Image Manipulation Program (The GIMP), GNOME, a GNU
+ desktop set of utilities for X, and gzilla, a GNU web-browser.
+
+Package: libjpeg62
+Priority: optional
+Section: libs
+Installed-Size: 204
+Debian-Maintainer: Mark Mickan <mmickan@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: libjpeg6b
+Version: 6b-1.3
+Replaces: libjpeg6b
+Provides: libjpeg6b
+Depends: libc6 (>= 2.2.1-2)
+Conflicts: libjpeg6b
+Filename: ./libjpeg62_6b-1.3_arm.ipk
+Size: 64434
+MD5Sum: 2cabfc091e7755c93a3d78b2dff48f0f
+Description: The Independent JPEG Group's JPEG runtime library [libc6]
+ This package contains the shared library.
+
+Package: libncurses5
+Version: 5.0-6.0potato1
+Section: base
+Priority: required
+Architecture: arm
+Depends: libc6 (>= 2.1.2), ncurses-base
+Installed-Size: 427
+Debian-Maintainer: Joel Klecker <ncurses-maint@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Filename: ./libncurses5_5.0-6.0potato1_arm.ipk
+Size: 101390
+MD5Sum: 6f1a19d05c5f8d312efb33e05318d714
+Description: Shared libraries for terminal handling
+ This package contains the shared libraries necessary to run programs
+ compiled with ncurses.
+Source: ncurses
+
+Package: libpam0g
+Priority: required
+Section: base
+Installed-Size: 152
+Debian-Maintainer: Sam Hartman <hartmans@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: pam
+Version: 0.72-21
+Replaces: libpam0g-util
+Depends: libc6 (>= 2.2.1-2), libpam-runtime
+Suggests: libpam-doc
+Conflicts: libpam0 (<= 0.56-2), libpam
+Filename: ./libpam0g_0.72-21_arm.ipk
+Size: 18191
+MD5Sum: 21196b782a3327aa39382825db2d64f1
+Description: Pluggable Authentication Modules library
+ Contains the C shared library for Linux-PAM, a suite of shared
+ libraries that enable the local system administrator to choose how
+ applications authenticate users. In other words, without rewriting
+ or recompiling a PAM-aware application, it is possible to switch
+ between the authentication mechanism(s) it uses. One may entirely
+ upgrade the local authentication system without touching the
+ applications themselves.
+
+Package: libpam-modules
+Priority: required
+Section: base
+Installed-Size: 472
+Debian-Maintainer: Sam Hartman <hartmans@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: pam
+Version: 0.72-21
+Replaces: libpam0g-util
+Provides: libpam-motd, libpam-mkhomedir
+Depends: libc6 (>= 2.2.1-2), libcap1, libdb3 (>= 3.2.9-1), libpam0g (>= 0.72-1)
+Conflicts: libpam0g-modules (= 0.66-1), libpam-motd, libpam-mkhomedir, suidmanager (<< 0.50)
+Filename: ./libpam-modules_0.72-21_arm.ipk
+Size: 20438
+MD5Sum: 23a98606804b0600dcc81ff26ad5772f
+Description: Pluggable Authentication Modules for PAM
+ This package completes the set of modules for PAM. It includes the
+ the pam_unix_*.so module as well as some specialty modules.
+
+Package: libpam-runtime
+Priority: required
+Section: base
+Installed-Size: 132
+Debian-Maintainer: Sam Hartman <hartmans@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: pam
+Version: 0.72-21
+Replaces: libpam0g-util, libpam0g-dev
+Conflicts: libpam0g-util, libpam0g (<< 0.66-0)
+Filename: ./libpam-runtime_0.72-21_arm.ipk
+Size: 2495
+MD5Sum: 183d85691a48163576f7b62e8cc43184
+Description: Runtime support for the PAM library
+ Contains the base setup for libpam
+
+Package: libpng2
+Priority: standard
+Section: libs
+Installed-Size: 288
+Debian-Maintainer: Philippe Troin <phil@fifi.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: libpng
+Version: 1.0.8-1
+Depends: libc6 (>= 2.1.2), libz1
+Filename: ./libpng2_1.0.8-1_arm.ipk
+Size: 74734
+MD5Sum: ef8044db7824d9e486c6d9fb1c677168
+Description: PNG library - runtime
+ libpng is a library implementing an interface for reading and writing
+ PNG (Portable Network Graphics) format files.
+ .
+ This library is more recent than libpng0g, and you should use it rather
+ than libpng0g (which is for legacy packages).
+
+Package: libpopt0
+Priority: important
+Section: base
+Installed-Size: 92
+Debian-Maintainer: Joseph Carter <knghtbrd@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: popt
+Version: 1.5-0.1
+Replaces: popt
+Depends: libc6 (>= 2.1.2)
+Conflicts: popt, libpopt-dev (<= 1.4-1)
+Filename: ./libpopt0_1.5-0.1_arm.ipk
+Size: 11129
+MD5Sum: 9a43286e1b181448f36a1939d4cea530
+Description: lib for parsing cmdline parameters
+ Popt was heavily influenced by the getopt() and getopt_long() functions,
+ but it allows more powerful argument expansion. It can parse arbitrary
+ argv[] style arrays and automatically set variables based on command
+ line arguments. It also allows command line arguments to be aliased via
+ configuration files and includes utility functions for parsing arbitrary
+ strings into argv[] arrays using shell-like rules.
+ .
+ This package contains the runtime library and locale data.
+
+Package: libreadline4
+Version: 4.1-1
+Section: base
+Priority: required
+Architecture: arm
+Depends: libc6 (>= 2.1.2), libncurses5
+Installed-Size: 260
+Debian-Maintainer: Matthias Klose <doko@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Filename: ./libreadline4_4.1-1_arm.ipk
+Size: 67959
+MD5Sum: bb6ad084c0b2b9b6251f43d5ddd2e28e
+Description: GNU readline and history libraries, run-time libraries.
+ The GNU readline library aids in the consistency of user interface
+ across discrete programs that need to provide a command line
+ interface.
+ .
+ The GNU history library provides a consistent user interface for
+ recalling lines of previously typed input.
+Source: readline4
+
+Package: libssl0.9.6
+Priority: optional
+Section: non-us/main
+Installed-Size: 1062
+Debian-Maintainer: Christoph Martin <christoph.martin@uni-mainz.de>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: openssl
+Version: 0.9.6a-1
+Replaces: libssl, libssl096
+Provides: libssl096
+Depends: libc6 (>= 2.2.1-2), libssl0.9.6
+Conflicts: ssleay (<< 0.9.2b), libssl, openssl (<< 0.9.6-2), libssl096, libssl096-dev (<< 0.9.6-2)
+Filename: ./libssl0.9.6_0.9.6a-1_arm.ipk
+Size: 309622
+MD5Sum: d1d6d8f48a48eb86f22e89f1a7f8dc06
+Description: SSL shared libraries
+ libssl and libcrypto shared libraries needed by programs like
+ apache-ssl, telnet-ssl and openssh.
+ .
+ It is part of the OpenSSL implementation of SSL.
+
+Package: libstdc++2.10-glibc2.2
+Priority: required
+Section: base
+Installed-Size: 328
+Debian-Maintainer: Debian GCC maintainers <gcc@packages.debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: gcc-2.95 (2.95.4.ds1-0.010407)
+Version: 1:2.95.4-0.010407
+Depends: libc6 (>= 2.2.1-2)
+Filename: ./libstdc++2.10-glibc2.2_2.95.4-0.010407_arm.ipk
+Size: 161222
+MD5Sum: 3d5c530f551cb14aaaccfcb2c221741f
+Description: The GNU stdc++ library
+ NOTE: This is not a final release, but taken from the CVS gcc-2_95-branch
+ (dated 20010407).
+ .
+ This package contains an additional runtime library for C++ programs
+ built with the GNU compiler.
+
+Package: libungif3g
+Priority: optional
+Section: graphics
+Installed-Size: 88
+Debian-Maintainer: Adam Heath <doogie@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: libungif
+Version: 3.0-3
+Replaces: giflib3g
+Provides: giflib3g
+Depends: libc6 (>= 2.1.2), xlib6g (>= 3.3.6)
+Conflicts: libgif3g, libgif2, giflib3g
+Filename: ./libungif3g_3.0-3_arm.ipk
+Size: 16148
+MD5Sum: 65985228c87656161d3bdcfb1771185e
+Description: shared library for GIF images (runtime lib)
+ This is a shared library for working with GIF images.
+ .
+ The libungif library is a specially modified version of giflib which
+ is free of the Unisys LZW patent. It can read all GIFs, but only
+ write uncompressed GIFs. If you need to be able to write compressed
+ GIFs, you can install the non-free giflib packages instead (which may
+ not be available on CD).
+
+Package: libwrap0
+Priority: important
+Section: base
+Installed-Size: 136
+Debian-Maintainer: Anthony Towns <ajt@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: tcp-wrappers
+Version: 7.6-7
+Depends: libc6 (>= 2.1.2)
+Recommends: tcpd
+Conflicts: netbase (<< 3.16-1)
+Filename: ./libwrap0_7.6-7_arm.ipk
+Size: 13202
+MD5Sum: 18fd9d5e2f2e30652ee460aa1e97a5b1
+Description: Wietse Venema's TCP wrappers library
+ Wietse Venema's network logger, also known as TCPD or LOG_TCP.
+ .
+ These programs log the client host name of incoming telnet,
+ ftp, rsh, rlogin, finger etc. requests. Security options are:
+ access control per host, domain and/or service; detection of
+ host name spoofing or host address spoofing; booby traps to
+ implement an early-warning system.
+
+Package: libxaw6
+Priority: optional
+Section: libs
+Installed-Size: 372
+Debian-Maintainer: Branden Robinson <branden@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: xfree86
+Version: 4.0.2-13
+Replaces: xlib6g (<< 4.0)
+Depends: libc6 (>= 2.2.1-2), xlibs (>= 4.0.1-11)
+Conflicts: xlib6g (<< 4.0)
+Filename: ./libxaw6_4.0.2-13_arm.ipk
+Size: 125255
+MD5Sum: e5b9dbfc091f69133156ae0c53e80f43
+Description: X Athena widget set library (version 6)
+ Xaw is a widget set based on the the Xt (X Toolkit Intrinsics) library.
+ It provides a set of graphical user-interface elements ("widgets") such as
+ menus, scrollbars, dialog boxes, text-input areas, and so forth. The X
+ clients distributed with the X Window System itself, as well as many
+ others, use the Athena widget set.
+ .
+ The version of the Athena widgets in this package corresponds to the
+ X11R6.4 release of the X Window System. XFree86 has made significant
+ enhancements to the Athena widget set; their version can be found in the
+ libxaw7 package.
+
+Package: libxaw7
+Priority: optional
+Section: libs
+Installed-Size: 484
+Debian-Maintainer: Branden Robinson <branden@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: xfree86
+Version: 4.0.2-13
+Depends: libc6 (>= 2.2.1-2), xlibs (>= 4.0.1-11)
+Filename: ./libxaw7_4.0.2-13_arm.ipk
+Size: 176321
+MD5Sum: 19b82bde7d895cf3227e5e5aa20c4222
+Description: X Athena widget set library
+ Xaw is a widget set based on the the Xt (X Toolkit Intrinsics) library.
+ It provides a set of graphical user-interface elements ("widgets") such as
+ menus, scrollbars, dialog boxes, text-input areas, and so forth. The X
+ clients distributed with the X Window System itself, as well as many
+ others, use the Athena widget set.
+ .
+ XFree86 has made a number of major improvements to the Athena widget set,
+ resulting in version 7 -- this version features widgets customizable in
+ appearance and event handling (a.k.a. "themes"); an extensible image
+ loader (currently supports bitmaps, gradients, and pixmaps); numerous
+ enhancements to the Text widget, text source and text sink objects; and
+ multiple-column support in the SimpleMenu widget.
+ .
+ The older Athena widget library corresponding to version X11R6.4 of the X
+ Window System can be found in the libxaw6 package.
+
+Package: libxft
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6
+Filename: ./libxft_0.0_arm.ipk
+Size: 44433
+MD5Sum: 5c9660cd2b8f1317a6ce677b094708ff
+Description: libxft <needs better description here>
+
+Package: libxml1
+Priority: optional
+Section: libs
+Installed-Size: 480
+Debian-Maintainer: Fredrik Hallenberg <hallon@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: libxml
+Version: 1:1.8.11-1
+Replaces: libxml0
+Provides: libxml0
+Depends: libc6 (>= 2.1.97), zlib1g (>= 1:1.1.3)
+Conflicts: libxml0
+Filename: ./libxml1_1.8.11-1_arm.ipk
+Size: 122515
+MD5Sum: ffc5f30c0e229aec973ba2dedf8bf38a
+Description: GNOME XML library
+ XML is a metalanguage to let you design your own markup language.
+ A regular markup language defines a way to describe information in
+ a certain class of documents (eg HTML). XML lets you define your
+ own customized markup languages for many classes of document. It
+ can do this because it's written in SGML, the international standard
+ metalanguage for markup languages.
+
+Package: libxmltok1
+Priority: optional
+Section: libs
+Installed-Size: 176
+Debian-Maintainer: Ardo van Rangelrooij <ardo@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: libxmltok
+Version: 1.1-5
+Depends: libc6 (>= 2.1.97)
+Filename: ./libxmltok1_1.1-5_arm.ipk
+Size: 36765
+MD5Sum: 2669363932f3538598690504e8bd843b
+Description: XML Parser Toolkit, runtime libraries
+ Libraries for XML parsing in C, which contains the shared libraries,
+ libxmltok and libxmlparser. These libraries are being used, for
+ instance, for XML support to Netscape 5 and the Perl module,
+ XML::Parser.
+ .
+ Author: James Clark <jjc@jclark.com>
+ Homepage: http://www.jclark.com/xml/expat.html
+
+Package: libxrender
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6
+Filename: ./libxrender_0.0_arm.ipk
+Size: 7748
+MD5Sum: ddc4cf38278e868247db1daf82d3390d
+Description: X rendering extension
+
+Package: loadmeter
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, xlibs
+Filename: ./loadmeter_0.0_arm.ipk
+Size: 17294
+MD5Sum: 68863f7c94238b4902722e9555a40f52
+Description: graphical CPU load montitoring
+
+Package: login
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 312
+Debian-Maintainer: Ben Collins <bcollins@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: shadow
+Version: 20000902-3.1
+Replaces: shadow-login, shadow-passwd, shellutils (<< 2.0-2)
+Depends: libpam-modules (>= 0.72-5)
+Pre-Depends: libc6 (>= 2.2.1-2), libpam0g (>= 0.72-1)
+Conflicts: shadow-login, pam-apps, secure-su, suidregister (<< 0.50)
+Filename: ./login_20000902-3.1_arm.ipk
+Size: 24402
+MD5Sum: 7817225e43bb8e999f89c58152d23de4
+Description: System login tools
+ These tools are required to be able to login and use your system. The
+ login program invokes you user shell and enables command execution. The
+ newgrp program is used to change your effective group ID (useful for
+ workgroup type situations). The su program allows changing your effective
+ user ID (useful being able to execute commands as another user).
+ .
+ Also supplies a logout daemon that can place limits on when, from where,
+ and for how long certain users can login to the system.
+
+Package: lrzsz
+Essential: yes
+Priority: required
+Section: comm
+Installed-Size: 264
+Debian-Maintainer: Josip Rodin <jrodin@jagor.srce.hr>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 0.12.21-4
+Depends: libc6 (>= 2.2.1-2)
+Suggests: minicom
+Filename: ./lrzsz_0.12.21-4_arm.ipk
+Size: 64893
+MD5Sum: 6f1a0ea3c0bc986b96c916192fe318ab
+Description: Tools for zmodem/xmodem/ymodem file transfer
+ Lrzsz is a cosmetically modified zmodem/ymodem/xmodem package built
+ from the public-domain version of Chuck Forsberg's rzsz package.
+ .
+ These programs use error correcting protocols ({z,x,y}modem) to send
+ (sz, sx, sb) and receive (rz, rx, rb) files over a dial-in serial port
+ from a variety of programs running under various operating systems.
+
+Package: madplay
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6
+Filename: ./madplay_0.0_arm.ipk
+Size: 70830
+MD5Sum: 5ff68a920d656af9c8aaefaa1362a0f1
+Description: Fast, high-quality, fixed-point MP3 player
+
+Package: mingle
+Priority: optional
+Version: 0.1
+Architecture: arm
+Maintainer: Gareth J. Greenaway <gareth@wiked.org>
+Depends: python
+Filename: ./mingle_0.1_arm.ipk
+Size: 51136
+MD5Sum: 5954457eb75f93c38f941d283ea05f50
+Description: Mingle contact manager illustrating the use of the Familiar Framework project.
+
+Package: mixer
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, xlibs
+Filename: ./mixer_0.0_arm.ipk
+Size: 8729
+MD5Sum: 50d2997c142037603450e53c6af14bf6
+Description: control audio levels graphically
+
+Package: modutils
+Priority: required
+Section: base
+Installed-Size: 564
+Debian-Maintainer: Wichert Akkerman <wakkerma@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.4.2-1
+Replaces: manpages (<=1.15-3)
+Depends: libc6 (>= 2.1.97), sysvinit (>=2.71-2)
+Suggests: ksymoops
+Filename: ./modutils_2.4.2-1_arm.ipk
+Size: 113605
+MD5Sum: 8046533303655791c7c1a16f76224346
+Description: Linux module utilities.
+ These utilities are intended to make a Linux modular kernel
+ manageable for all users, administrators and distribution
+ maintainers.
+Origin: debian
+Bugs: debbugs://bugs.debian.org/
+
+Package: mount
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 228
+Debian-Maintainer: Adrian Bunk <bunk@fs.tum.de>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: util-linux
+Version: 2.11b-2
+Pre-Depends: libc6 (>= 2.2.1-2)
+Filename: ./mount_2.11b-2_arm.ipk
+Size: 41072
+MD5Sum: ddc0df15fb6d3aac711d0a77172df6c2
+Description: Tools for mounting and manipulating filesystems.
+ This package provides the mount(8), umount(8), swapon(8),
+ swapoff(8), and losetup(8) commands.
+
+Package: ncurses-base
+Priority: required
+Section: base
+Installed-Size: 222
+Debian-Maintainer: Daniel Jacobowitz <ncurses-maint@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: all
+Source: ncurses
+Version: 5.2.20010318-1
+Replaces: ncurses-term
+Provides: ncurses-runtime
+Conflicts: ncurses, ncurses-runtime
+Filename: ./ncurses-base_5.2.20010318-1_all.ipk
+Size: 8901
+MD5Sum: 67746347774792cff7d97adf0ff4c272
+Description: Descriptions of common terminal types
+ This package contains what should be a reasonable subset of terminal
+ definitions, including: ansi, dumb, linux, rxvt, screen, sun, vt100,
+ vt102, vt220, vt52, and xterm.
+
+Package: netbase
+Priority: important
+Section: base
+Installed-Size: 110
+Debian-Maintainer: Anthony Towns <ajt@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: all
+Version: 4.05
+Depends: net-tools | iproute, ifupdown, ipchains | ipfwadm | iptables, netkit-inetd, tcpd, netkit-ping | iputils-ping
+Suggests: debconf, ipmasqadm | ipautofw | iptables, portmap, netkit-rpc
+Conflicts: xinetd (<= 2.2.1-8), netstd (<< 3.00), nfs-user-server (<< 2.2beta47-9), nis (<= 3.6-2), rstatd (<= 3.03-3), rwalld (<= 0.16-1), rusersd (<= 0.17-1), ugidd (<< 2.2beta47-9)
+Filename: ./netbase_4.05_all.ipk
+Size: 9502
+MD5Sum: 029f1dffa57f6b23f97b08b5262dfc38
+Description: Basic TCP/IP networking system
+ This package provides the necessary infrastructure for basic TCP/IP based
+ networking.
+
+Package: netcat
+Priority: optional
+Section: net
+Installed-Size: 228
+Debian-Maintainer: Decklin Foster <decklin@red-bean.com>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1.10-17
+Depends: libc6 (>= 2.2.1-2)
+Filename: ./netcat_1.10-17_arm.ipk
+Size: 12265
+MD5Sum: 14101b949ee963abb64de99130725c6f
+Description: TCP/IP swiss army knife
+ A simple Unix utility which reads and writes data across network
+ connections using TCP or UDP protocol. It is designed to be a reliable
+ "back-end" tool that can be used directly or easily driven by other
+ programs and scripts. At the same time it is a feature-rich network
+ debugging and exploration tool, since it can create almost any kind of
+ connection you would need and has several interesting built-in
+ capabilities.
+
+Package: netkit-ping
+Priority: important
+Section: net
+Installed-Size: 84
+Debian-Maintainer: Anthony Towns <ajt@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: netkit-base
+Version: 0.10-6.1
+Replaces: netbase (<< 4.00)
+Provides: ping
+Depends: libc6 (>= 2.2.1-2)
+Conflicts: ping
+Filename: ./netkit-ping_0.10-6.1_arm.ipk
+Size: 10418
+MD5Sum: cdf51bd27a0e95867f1ee7ab7c328192
+Description: The ping utility from netkit
+ The ping command sends ICMP ECHO_REQUEST packets to a host in order to
+ test if the host is reachable via the network.
+
+Package: net-tools
+Priority: important
+Section: net
+Installed-Size: 676
+Debian-Maintainer: Bernd Eckenfels <ecki@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1.59-1
+Replaces: netbase (<< 4.00)
+Depends: libc6 (>= 2.2.1-2)
+Filename: ./net-tools_1.59-1_arm.ipk
+Size: 100555
+MD5Sum: 5f8cd79e32b953142faed78f46dd5625
+Description: The NET-3 networking toolkit
+ This package includes the important tools for controlling the network
+ subsystem of the Linux kernel. This includes arp, ifconfig, netstat,
+ rarp, nameif and route. Additionally, this package contains utilities
+ relating to particular network hardware types (plipconfig, slattach) and
+ advanced aspects of IP configuration (iptunnel, ipmaddr).
+ .
+ In the upstream package 'hostname' and friends are included. Those are
+ not installed by this package, since there is a special "hostname*.deb".
+
+Package: ntpdate
+Priority: optional
+Section: net
+Installed-Size: 132
+Debian-Maintainer: Bdale Garbee <bdale@gag.com>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: ntp
+Version: 1:4.0.99g-3
+Replaces: ntp (<< 4.0.98a),xntp,xntp3
+Depends: libc6 (>= 2.2.1-2)
+Suggests: ntp
+Conflicts: ntp (<< 4.0.98a),chrony
+Filename: ./ntpdate_4.0.99g-3_arm.ipk
+Size: 22995
+MD5Sum: 628963690db28b96a036356abcee8860
+Description: The ntpdate client for setting system time from NTP servers.
+ The ntpdate client allows a system's clock to be set to match the time
+ obtained by communicating with one or more servers running the NTP protocol.
+ .
+ The use of ntpdate is optional if you're running the ntp package, it can help
+ a system obtain lock if it starts with a time that's pretty close by using
+ ntpdate before starting the daemon.
+ .
+ The ntpdate client by itself is useful for occasionally setting the time on
+ machines that are not on the net full-time, such as laptops.
+
+Package: pcmcia-cs
+Priority: extra
+Version: 0.0-fam3
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6 (>= 2.2.1-2), modutils, psmisc
+Suggests: pcmcia-modules, xlibs (>= 4.0.1-11)
+Filename: ./pcmcia-cs_0.0-fam3_arm.ipk
+Size: 57178
+MD5Sum: 123d19e3199f7598e6517efe6e2a2080
+Description: PCMCIA Card Services for Linux.
+ NOTE: I couldn't find this package in Debian/arm so I just grabbed
+ the control file from my Debian/i386 and combined it with the
+ pcmcia-cs bits from familiar v0.4 bleeding. A better solution would
+ be to rebuild the real .deb from the pcmcia-cs source.
+ .
+ PCMCIA cards are commonly used in laptops to provide expanded
+ capabilities, such as modems, increased memory, etc. Some desktop PCs
+ can accept PCMCIA cards as well, although this is rare.
+ .
+ Card Services for Linux is a complete PCMCIA support package. It
+ includes a set of client drivers for specific cards, and a card
+ manager daemon that can respond to card insertion and removal events,
+ loading and unloading drivers on demand. It supports ``hot swapping''
+ of PCMCIA cards, so cards can be inserted and ejected at any time.
+ .
+ The actual kernel modules required for this package are contained in
+ the pcmcia-modules-<kernel version> package, where <kernel version> is
+ the version of the kernel for which the modules have been compiled.
+
+Package: pcmcia-modules-2.4.3-rmk2-np1
+Priority: extra
+Maintainer: Alexander Guy <a7r@andern.org>
+Depends: kernel-modules-2.4.3-rmk2-np1, pcmcia-cs
+Version: fam3
+Architecture: arm
+Filename: ./pcmcia-modules-2.4.3-rmk2-np1_fam3_arm.ipk
+Size: 111546
+MD5Sum: 95da695ec0792cdb70b86aaf5eb48e7c
+Description: PCMCIA kernel modules
+ The full collection of PCMCIA kernel modules from pcmcia-cs. Install
+ this if you will be plugging any Compact Flash or PCMCIA cards into
+ your computer.
+ .
+ We may want to split these up into many fine-grained packages.
+
+Package: ppp
+Priority: standard
+Section: base
+Installed-Size: 764
+Debian-Maintainer: Michael Beattie <mjb@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.4.0f-1
+Replaces: ppp-pam
+Depends: libc6 (>= 2.1.2), libpam0g, libpam-modules, netbase, sysvinit (>= 2.75-4)
+Suggests: debconf
+Conflicts: ppp-pam
+Filename: ./ppp_2.4.0f-1_arm.ipk
+Size: 96430
+MD5Sum: 2bd0da8e83b6d609a4a5dc498564ce06
+Description: Point-to-Point Protocol (PPP) daemon.
+ The Point-to-Point Protocol (PPP) provides a standard way to transmit
+ datagrams over a serial link, as well as a standard way for the machines
+ at either end of the link (the "peers") to negotiate various optional
+ characteristics of the link. Using PPP, a serial link can be used to
+ transmit Internet Protocol (IP) datagrams, allowing TCP/IP connections
+ between the peers.
+ .
+ This package contains pppd with PAM support built-in, so `ppp-pam'
+ package is obsolete.
+
+Package: procps
+Priority: required
+Section: base
+Installed-Size: 484
+Debian-Maintainer: Craig Small <csmall@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1:2.0.7-4
+Replaces: watch, bsdutils (<< 2.9x-1)
+Provides: watch
+Depends: libc6 (>= 2.2.1-2), libncurses5
+Recommends: psmisc
+Conflicts: watch, libproc-dev (<< 1:1.2.6-2), w-bassman (<< 1.0-3), procps-nonfree, pgrep (<< 3.3-5)
+Filename: ./procps_2.0.7-4_arm.ipk
+Size: 46669
+MD5Sum: 374592eb63c1100ebded8c4129954cc3
+Description: The /proc file system utilities.
+ These are utilities to browse the /proc filesystem, which is not a real file
+ system but a way for the kernel to provide information about the status of
+ entries in its process table. (e.g. running, stopped or "zombie")
+ Both command line and full screen utilities are provided. Ncurses is needed
+ for the full screen utilities.
+
+Package: pump
+Priority: optional
+Section: base
+Installed-Size: 144
+Debian-Maintainer: Steve Dunham <dunham@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 0.8.3-3
+Replaces: pump-udeb
+Depends: libc6 (>= 2.1.97)
+Conflicts: dhcpcd, dhcpcd-sv, pump-udeb
+Filename: ./pump_0.8.3-3_arm.ipk
+Size: 25830
+MD5Sum: 1f0b17323498f46c111531b03df1153d
+Description: Simple DHCP/BOOTP client.
+ This is the DHCP/BOOTP client written by RedHat.
+
+Package: pyditor
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: python
+Filename: ./pyditor_0.0_arm.ipk
+Size: 1444
+MD5Sum: c7209f99c5036c9ece32918905086cc5
+Description: python-based text editor
+
+Package: python
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, libdb2
+Filename: ./python_0.0_arm.ipk
+Size: 834371
+MD5Sum: 30aaff82d29a7ed787f7d288c8743794
+Description: python of course <needs real description>
+
+Package: qiv
+Priority: extra
+Section: graphics
+Installed-Size: 86
+Debian-Maintainer: Mitch Blevins <mblevin@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1.6-1
+Depends: gdk-imlib1 (>= 1.9.8.1-2), libc6 (>= 2.1.97), libglib1.2 (>= 1.2.0), libgtk1.2 (>= 1.2.8-3), xlibs (>= 4.0.1-11)
+Filename: ./qiv_1.6-1_arm.ipk
+Size: 15767
+MD5Sum: 877b1dc63c32b1f468a20a7ade4818f5
+Description: a quick image viewer for X
+ Quick Image Viewer (qiv) is a very small and pretty fast GDK/Imlib
+ image viewer. Features include zoom, maxpect, scale down, fullscreen,
+ brightness/contrast/gamma correction, slideshow, flip,
+ horizontal/vertical, rotate left/right, delete (move to .qiv-trash/),
+ jump to image x, jump forward/backward x images, filename filter and
+ you can use qiv to set your X11-Desktop background.
+
+Package: reiserfs-module
+Priority: optional
+Section: kernel
+Installed-Size: 249337
+Debian-Maintainer: Nicolás Lichtmaier <nick@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.4.3-rmk2-np1
+Depends: kernel (= 2.4.3-rmk2-np1)
+Filename: ./reiserfs-module_2.4.3-rmk2-np1_arm.ipk
+Size: 106059
+MD5Sum: f1975bedcc503d1ee66a9e627350b813
+Description: Reiserfs is a journaling filesystem. This is the kernel module for it.
+
+Package: rsync
+Priority: optional
+Section: net
+Installed-Size: 280
+Debian-Maintainer: Philip Hands <phil@hands.com>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.4.6-1
+Depends: libc6 (>= 2.1.2)
+Suggests: ssh
+Filename: ./rsync_2.4.6-1_arm.ipk
+Size: 74003
+MD5Sum: ce2d8f8672994f93bb03c38919fdb504
+Description: fast remote file copy program (like rcp)
+ rsync is a program that allows files to be copied to and from remote
+ machines in much the same way as rcp. It has many more options than
+ rcp, and uses the rsync remote-update protocol to greatly speedup
+ file transfers when the destination file already exists.
+ .
+ The rsync remote-update protocol allows rsync to transfer just the
+ differences between two sets of files across the network link.
+
+Package: rxvt
+Priority: optional
+Section: x11
+Installed-Size: 580
+Debian-Maintainer: Brian Mays <brian@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1:2.6.3-8-fam1
+Provides: x-terminal-emulator
+Depends: libc6 (>= 2.1.97), xlibs (>= 4.0.1-11), base-passwd (>= 2.0.3.4)
+Conflicts: suidmanager (<< 0.50)
+Filename: ./rxvt_2.6.3-8-fam1_arm.ipk
+Size: 40759
+MD5Sum: e514f9093a45e8a95db37123a193b974
+Description: VT102 terminal emulator for the X Window System
+ Rxvt is an 8-bit clean, color xterm replacement that uses significantly
+ less memory than a conventional xterm, mostly since it doesn't support
+ toolkit configurability or Tek graphics, but also since features can
+ be removed at compile-time to reflect your needs.
+ .
+ The distribution also includes rclock, the smaller/better xclock
+ replacement with appointment scheduling and xbiff functionality.
+
+Package: rxvt-aa
+Priority: optional
+Section: x11
+Installed-Size: 580
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1:2.6.3-8
+Provides: x-terminal-emulator
+Depends: libc6 (>= 2.1.97), xlibs (>= 4.0.1-11), base-passwd (>= 2.0.3.4), libxft, libxrender
+Conflicts: suidmanager (<< 0.50)
+Filename: ./rxvt-aa_2.6.3-8_arm.ipk
+Size: 42018
+MD5Sum: c042c85c082d043aa5a58d4c62c67b70
+Description: rxvt with support for anti-aliased fonts
+ This package proves an rxvt terminal with support for anti-aliased fonts.
+ .
+ Rxvt is an 8-bit clean, color xterm replacement that uses significantly
+ less memory than a conventional xterm, mostly since it doesn't support
+ toolkit configurability or Tek graphics, but also since features can
+ be removed at compile-time to reflect your needs.
+ .
+ The distribution also includes rclock, the smaller/better xclock
+ replacement with appointment scheduling and xbiff functionality.
+
+Package: screen
+Priority: optional
+Version: 3.9.8
+Architecture: arm
+Maintainer: Brian Kearns <bdkearns@bdkearns.net>
+Depends: ncurses-base, libncurses5, libc6
+Filename: ./screen_3.9.8_arm.ipk
+Size: 134749
+MD5Sum: 80b9bb7de6b30ecdeadc04f0bcda875a
+Description: Console manager
+
+Package: script-test
+Priority: optional
+Version: 0.0
+Architecture: all
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends:
+Filename: ./script-test_0.0_all.ipk
+Size: 820
+MD5Sum: ea6b272ff25bb69482a9907492b316a0
+Description: Empty test for ipkg script support
+
+Package: sed
+Priority: required
+Section: base
+Installed-Size: 180
+Debian-Maintainer: Wichert Akkerman <wakkerma@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 3.02-6
+Pre-Depends: libc6 (>= 2.1.2)
+Filename: ./sed_3.02-6_arm.ipk
+Size: 12338
+MD5Sum: c893daf6fef70813b566db8ed8c06950
+Description: The GNU sed stream editor.
+ sed reads the specified files or the standard input if no
+ files are specified, makes editing changes according to a
+ list of commands, and writes the results to the standard
+ output.
+
+Package: shellutils
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 2152
+Debian-Maintainer: Michael Stone <mstone@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.0.11-5
+Replaces: bsdutils (<= 3.0-2), util-linux (<< 2.9e-0.1)
+Pre-Depends: libc6 (>= 2.2.1-2), login | hurd
+Conflicts: login (<< 19990827-1)
+Filename: ./shellutils_2.0.11-5_arm.ipk
+Size: 123564
+MD5Sum: a9a70a1fd2e2057ed43e5a069d521d0d
+Description: The GNU shell programming utilities.
+ The utilities: basename chroot date dirname echo env expr factor false groups
+ hostid id logname nice nohup pathchk pinky printenv printf pwd seq sleep stty
+ tee test true tty uname users who whoami yes.
+
+Package: slang1
+Priority: optional
+Section: libs
+Installed-Size: 456
+Debian-Maintainer: Jim Mintha <jmintha@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: slang
+Version: 1.4.4-1
+Depends: libc6 (>= 2.2.1-2)
+Filename: ./slang1_1.4.4-1_arm.ipk
+Size: 159766
+MD5Sum: 775f054fdda315ef73afc9399612a7ad
+Description: The S-Lang programming library - runtime version.
+ S-Lang is a C programmer's library that includes routines for the rapid
+ development of sophisticated, user friendly, multi-platform applications.
+ .
+ This package contains only the shared library libslang.so.* and copyright
+ information. It is only necessary for programs that use this library (such
+ as jed and slrn). If you plan on doing development with S-Lang, you will
+ need the companion -dev package as well.
+
+
+Package: ssh
+Priority: optional
+Section: non-US
+Installed-Size: 1020
+Debian-Maintainer: Philip Hands <phil@hands.com>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: openssh
+Version: 1:2.5.2p2-2
+Depends: libc6 (>= 2.2.1-2), libpam0g (>= 0.72-1), libssl0.9.6, libwrap0, zlib1g (>= 1:1.1.3), libpam-modules (>= 0.72-9), libwrap0 (>= 7.6-1.1)
+Suggests: ssh-askpass, debconf, xbase-clients, dpkg (>= 1.8.3.1)
+Conflicts: ssh-nonfree, ssh-socks, ssh2, debconf (<< 0.2.17), debconf-tiny (<< 0.2.17), sftp, rsh-client (<< 0.16.1-1)
+Filename: ./ssh_2.5.2p2-2_arm.ipk
+Size: 210692
+MD5Sum: 1fe9ccb1693d36d4388758f73f041d9b
+Description: Secure rlogin/rsh/rcp replacement (OpenSSH)
+ OpenSSH is derived from OpenBSD's version of ssh, which was in turn
+ derived from ssh code from before the time when ssh's license was
+ changed to be non-free.
+ Ssh (Secure Shell) is a program for logging into a remote machine
+ and for executing commands on a remote machine.
+ It provides secure encrypted communications between two untrusted
+ hosts over an insecure network. X11 connections and arbitrary TCP/IP
+ ports can also be forwarded over the secure channel.
+ It is intended as a replacement for rlogin, rsh and rcp, and can be
+ used to provide rdist, and rsync with a secure communication channel.
+ .
+ --------------------------------------------------------------------
+ .
+ This software may be freely imported into the United States; however,
+ the United States Government may consider re-exporting it a criminal
+ offense. Thus, if you are outside the US, please retrieve this
+ software from outside the US.
+ In some countries, particularly Russia, Iraq, Pakistan, and France, it
+ may be illegal to use any encryption at all without a special permit.
+
+Package: stowaway-h3600
+Priority: optional
+Version: 1.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6
+Filename: ./stowaway-h3600_1.0_arm.ipk
+Size: 15470
+MD5Sum: 67c0f14bf6a5e523ed7a95b6fca02a79
+Description: Support for the iPAQ H3600 series Stowaway keyboard
+
+Package: sysset
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: python
+Filename: ./sysset_0.0_arm.ipk
+Size: 2878
+MD5Sum: 5124d246b5b7da481874f97fb86c859f
+Description: python utility for configuring system settings
+
+Package: sysvinit
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 207
+Debian-Maintainer: Miquel van Smoorenburg <miquels@cistron.nl>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.78-4
+Replaces: last, bsdutils (<=2.0-2)
+Depends: dpkg (>= 1.4.0.21), mount (>= 2.7i-1), util-linux (>= 2.9t-2), e2fsprogs (>= 1.15-1)
+Pre-Depends: libc6 (>= 2.1.2)
+Conflicts: last, file-rc (<= 0.4.2), kbd (<< 0.95-2), mdutils (<< 0.35-9)
+Filename: ./sysvinit_2.78-4_arm.ipk
+Size: 43771
+MD5Sum: ebf719f849e02d9bdfd66f54e129398e
+Description: System-V like init.
+ Init is the first program to run after your system is booted, and
+ continues to run as process number 1 until your system halts. Init's
+ job is to start other programs that are essential to the operation of
+ your system. All processes are descended from init. For more information,
+ see the manual page init(8).
+
+Package: tar
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 1064
+Debian-Maintainer: Bdale Garbee <bdale@gag.com>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1.13.19-1
+Pre-Depends: libc6 (>= 2.1.97)
+Suggests: bzip2
+Filename: ./tar_1.13.19-1_arm.ipk
+Size: 67084
+MD5Sum: 4f93d22d8645b86b6fb49c375254045e
+Description: GNU tar
+ Tar is a program for packaging a set of files as a single archive in tar
+ format. The function it performs is conceptually similar to cpio, and to
+ things like pkzip in the DOS world. It is heavily used by the Debian package
+ management system, and is useful for performing system backups and exchanging
+ sets of files with others.
+
+Package: task-bootstrap
+Priority: optional
+Version: 0.6
+Architecture: arm
+Maintainer: Alexander Guy <a7r@handhelds.org>
+Depends: ssh, ppp, pcmcia-modules-2.4.3-rmk2-np1, wireless-tools, pump
+Filename: ./task-bootstrap_0.6_arm.ipk
+Size: 693
+MD5Sum: 1dc75245df83987c0cb26f1953d2e9ec
+Description: Everything you might need to bootstrap a minimal ipkg system.
+
+Package: task-familiar-complete
+Priority: optional
+Version: 0.5
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: apmd, checkers, cpu-scale-2.4.3-rmk2-np1, dosfstools, fscrib, h3600-utils, libglade0, libpopt0, libxaw6, libxml1, libxmltok1, loadmeter, ncurses-base, netcat, ntpdate, pcmcia-modules-2.4.3-rmk2-np1, procps, ppp, pump, pyditor, qiv, rsync, ssh, sysset, xvkbd, task-mp3-player, task-games, task-wireless, task-x
+Filename: ./task-familiar-complete_0.5_arm.ipk
+Size: 808
+MD5Sum: f117049d5863f2e70d9903f9bc83475e
+Description: Task package for a complete familiar system
+
+Package: task-games
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: checkers
+Filename: ./task-games_0.0_arm.ipk
+Size: 994
+MD5Sum: 48f5a22131a2f4aada009620b1242438
+Description: Task package for a complete familiar system
+
+Package: task-mp3-player
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: madplay, mixer
+Filename: ./task-mp3-player_0.0_arm.ipk
+Size: 667
+MD5Sum: aa5f5c85ccb22af9c4f6f677522df9e7
+Description: Task package for a complete familiar system
+
+Package: task-wireless
+Priority: optional
+Version: 0.1
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: wireless-tools, pcmcia-modules-2.4.3-rmk2-np1
+Filename: ./task-wireless_0.1_arm.ipk
+Size: 639
+MD5Sum: 988d6d2960bf165b5ed324dbfb85d674
+Description: Task package for wireless networking
+
+Package: task-x
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: xserver-tiny-h3600, xbase-clients, xfonts-base, xfonts-75dpi, xfonts-ttf, blackbox, rxvt-aa, xcalibrate
+Filename: ./task-x_0.0_arm.ipk
+Size: 739
+MD5Sum: 78d7c74c9fdac90f3b58fba7231a4ff8
+Description: Task package for a basic X system
+
+Package: textutils
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 1550
+Debian-Maintainer: Herbert Xu <herbert@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.0-3
+Replaces: bsdmainutils (<= 4.5.2), ptx
+Provides: ptx
+Pre-Depends: libc6 (>= 2.1.2)
+Conflicts: ptx
+Filename: ./textutils_2.0-3_arm.ipk
+Size: 156555
+MD5Sum: fbdac4eb344aea6287461bc8dc613add
+Description: The GNU text file processing utilities.
+ The utilities: cat cksum comm csplit cut expand fmt fold head join md5sum
+ nl od paste pr ptx sort split sum tac tail tr tsort unexpand uniq wc.
+
+Package: urlget
+Priority: optional
+Version: 0.3
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, netbase
+Filename: ./urlget_0.3_arm.ipk
+Size: 2613
+MD5Sum: 271ae2fbfd1e691d2b19d24ba1c01648
+Description: Tiny package for retrieving files via HTTP
+
+Package: util-linux
+Essential: yes
+Priority: required
+Section: base
+Installed-Size: 840
+Debian-Maintainer: Adrian Bunk <bunk@fs.tum.de>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 2.11b-2-fam2
+Replaces: miscutils, setterm, getty, fdisk
+Pre-Depends: libc6 (>= 2.2.1-2), libncurses5 (>= 5.2.20010310-1)
+Recommends: util-linux-locales
+Suggests: kbd | console-tools
+Conflicts: setterm, getty, fdisk, kbd (<< 1.05-3), console-tools (<< 1:0.2.3-21)
+Filename: ./util-linux_2.11b-2-fam2_arm.ipk
+Size: 9771
+MD5Sum: e1abcd568a156976ac95eff239dbb091
+Description: Miscellaneous system utilities.
+ A mixed bag of system utilities: arch chkdupexe cfdisk cytune dmesg
+ fdisk fsck.minix getty getopt hwclock ipcrm ipcs mcookie mkfs mkfs.minix
+ mkswap more namei pivot_root raw rdev setterm setsid tunelp whereis.
+
+Package: wget
+Priority: optional
+Section: web
+Installed-Size: 1272
+Debian-Maintainer: Nicolás Lichtmaier <nick@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 1.6-2
+Depends: libc6 (>= 2.2.1-2), netbase
+Filename: ./wget_1.6-2_arm.ipk
+Size: 62824
+MD5Sum: bbc13feb01f63a86cb6a542bf629cc77
+Description: utility to retrieve files from the WWW via HTTP and FTP
+ Wget [formerly known as Geturl] is a freely available network utility
+ to retrieve files from the World Wide Web using HTTP and FTP, the two
+ most widely used Internet protocols. It works non-interactively, thus
+ enabling work in the background, after having logged off.
+ .
+ The recursive retrieval of HTML pages, as well as FTP sites is
+ supported -- you can use Wget to make mirrors of archives and home
+ pages, or traverse the web like a WWW robot (Wget understands
+ /robots.txt).
+
+Package: wireless-tools
+Priority: optional
+Section: net
+Installed-Size: 120
+Debian-Maintainer: Björn Andersson <bjorn@lifix.fi>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Version: 20-1.1
+Depends: libc6 (>= 2.2.1-2)
+Filename: ./wireless-tools_20-1.1_arm.ipk
+Size: 17032
+MD5Sum: 695142d573351ca6e8ddffcfc77fa195
+Description: Tools for manipulating Linux Wireless Extensions
+ This package contains the Wireless tools, used to manipulate
+ the Linux Wireless Extensions. The Wireless Extension is an interface
+ allowing you to set Wireless LAN specific parameters and get the
+ specific stats.
+ .
+ The tools in this package only work with kernel versions 2.2.14
+ and above, and 2.3.24 and above.
+
+Package: xbase-clients
+Priority: optional
+Section: x11
+Installed-Size: 3916
+Debian-Maintainer: Branden Robinson <branden@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: xfree86
+Version: 4.0.2-13
+Replaces: xbase (<< 3.3.2.3a-2), xf86setup (<< 3.3.2.3a-9), xserver-common (<< 4.0), xmodmap, xcontrib, xpm4g-dev, xpm-bin, xsm
+Provides: xmodmap, xcontrib, xpm-bin, xsm
+Depends: debconf (>= 0.3.83), cpp, libc6 (>= 2.2.1-2), libfreetype6, libgl1, libncurses5 (>= 5.2.20010310-1), libxaw7 (>= 4.0.1-1), xlibs (>= 4.0.1-11)
+Conflicts: xbase (<< 3.3.2.3a-2), xserver-common (<< 3.3.2.3a-9), xmodmap, xaw-wrappers (<< 0.90), xfonts-100dpi (<< 3.3.3.1-3), xfonts-75dpi (<< 3.3.3.1-3), xfonts-base (<< 3.3.3.1-3), xfonts-cyrillic (<< 3.3.3.1-3), xfonts-scalable (<< 3.3.3.1-3), xfnt100 (<= 3.3.2.3a-1), xfnt75 (<= 3.3.2.3a-1), xfntbase (<= 3.3.2.3a-1), xfntcyr (<= 3.3.2.3a-1), xfntscl (<= 3.3.2.3a-1), xdm (<< 4.0), xsm, xcontrib, xpm4g-dev, xpm-bin
+Filename: ./xbase-clients_4.0.2-13_arm.ipk
+Size: 205512
+MD5Sum: 60ff8d6dfa873abf4c0d611fff7d268c
+Description: miscellaneous X clients
+ An X client is a program that interfaces with an X server (almost always
+ via the X libraries), and thus with some input and output hardware like a
+ graphics card, monitor, keyboard, and pointing device (such as a mouse).
+ .
+ This package provides a miscellaneous assortment of several dozen X
+ clients that ship with the X Window System, including:
+ - startx and xinit, which initialize X sessions from the command line;
+ - xauth, a tool for controlling access to the X session;
+ - xedit, a text editor;
+ - xbiff, a tool which tells you when you have new email;
+ - xcalc, a scientific calculator desktop accessory;
+ - xclipboard, a tool to manage cut-and-pasted text selections;
+ - xcutsel, which exchanges selection and cut buffer contents;
+ - xconsole, which monitors system console messages;
+ - xditview, a viewer for ditroff output;
+ - xeyes, a demo program in which a pair of eyes track the pointer;
+ - xfd, a tool that displays all the glyphs in a given X font;
+ - xfontsel, a tool for browsing and selecting X fonts;
+ - xhost, a very dangerous program that you should never use;
+ - xkill, a tool for terminating misbehaving X clients;
+ - xload, a monitor for the system load average;
+ - xlogo, a demo program that displays the X logo;
+ - xmag, which magnifies parts of the X screen;
+ - xman, a manual page browser;
+ - xmessage, a tool to display message or dialog boxes;
+ - xrefresh, a tool that forces a redraw of the X screen;
+ - xsetroot, a tool for tailoring the appearance of the root window;
+ - xvidtune, a tool for customizing X server modelines for your monitor;
+ - xwd, a utility for taking window dumps ("screenshots") of the X session;
+ - xwud, a viewer for window dumps created by xwd;
+ - oclock and xclock, graphical clocks;
+ - beforelight, a screen saver;
+ - bitmap, a monochrome bitmap file editor;
+ - bmtoa, a tool that converts a monochrome bitmap to ASCII text;
+ - cxpm and sxpm, tools for checking and viewing X pixmap files;
+ - iceauth, a tool for manipulating ICE protocol authorization records;
+ - xset, a tool for setting miscellaneous X server parameters;
+ - xmodmap, a utility for modifying keymaps and pointer button mappings in X;
+ - xsetmode and xsetpointer, tools for handling X Input devices;
+ - setxkbmap, xkbbell, xkbcomp, xkbevd, xkbprint, xkbvleds, and xkbwatch,
+ tools for managing the X keyboard extension (XKB);
+ - xsm, a session manager for X sessions;
+ - smproxy, a session manager proxy for X clients that do not use the X
+ session manager protocol;
+ - xgamma, a tool for querying and setting a monitor's gamma correction;
+ - appres, editres, listres, viewres, and xrdb, which query and update the
+ X resource database;
+ - Xmark, x11perf, x11perfcomp, and xieperf, tools for benchmarking
+ graphical operations under the X Window System;
+ - fstobdf, which retrieves a font in BDF format from an X font server;
+ - xcmsdb, a device color characteristic utility for the X Color Management
+ System;
+ - xstdcmap, a utility to selectively define standard colormap properties;
+ - xev, an X event displayer;
+ - xfindproxy, a tool to locate X proxy services;
+ - xlsatoms, which lists interned atoms defined on an X server;
+ - xlsclients, which lists client applications running on an X display;
+ - xlsfonts, a server font list displayer;
+ - xprop, a property displayer for X;
+ - xdpyinfo, a display information utility for X;
+ - xwininfo, a window information utility for X;
+ - glxinfo, a GLX extension information utility for X;
+ - xvinfo, an Xv extension information utility for X;
+ - ico, an X graphics demo using an animated polyhedron;
+ - dga, a demo program for the DGA extension; and
+ - xgc, an (unfinished) X graphics demo program.
+
+Package: xcalibrate
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, xlibs
+Filename: ./xcalibrate_0.0_arm.ipk
+Size: 6641
+MD5Sum: 1ff1b7f86d9ee3c4f9d261d6c69059be
+Description: calibrate the iPAQ H3600 touch screen for X
+
+Package: xfonts-75dpi
+Priority: optional
+Section: x11
+Installed-Size: 2912
+Debian-Maintainer: Branden Robinson <branden@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: all
+Source: xfree86
+Version: 4.0.2-13
+Replaces: xfnt75
+Provides: xfnt75
+Depends: xutils
+Suggests: xfs | xserver
+Conflicts: xfnt75, xbase-clients (<< 4.0)
+Filename: ./xfonts-75dpi_4.0.2-13_all.ipk
+Size: 173134
+MD5Sum: b99622fecd62b08624fd4c0977b61cfd
+Description: 75 dpi fonts for X
+ xfonts-75dpi provides a set of bitmapped fonts at 75 dots per inch. In most
+ cases it is desirable to have the X font server (xfs) and/or an X server
+ installed to make the fonts available to X clients.
+ .
+ This package and xfonts-100dpi provide the same set of fonts, rendered at
+ different resolutions; only one or the other is necessary, but both may be
+ installed. xfonts-75dpi may be more suitable for small monitors and/or small
+ screen resolutions (under 1024x768).
+ .
+ This package requires the xutils package to prepare the font directories
+ for use by an X server or X font server.
+
+Package: xfonts-base
+Priority: optional
+Section: x11
+Installed-Size: 7724
+Debian-Maintainer: Branden Robinson <branden@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: all
+Source: xfree86
+Version: 4.0.2-13
+Replaces: xfntbase, xfonts-cjk
+Provides: xfntbase, xfonts-cjk
+Depends: xutils
+Suggests: xfs, xserver
+Conflicts: xfntbase, xfonts-cjk, xbase-clients (<< 4.0)
+Filename: ./xfonts-base_4.0.2-13_all.ipk
+Size: 24879
+MD5Sum: 26837af24947d47947962450480e9258
+Description: standard fonts for X
+ xfonts-base provides a standard set of low-resolution bitmapped fonts. In
+ most cases it is desirable to have the X font server (xfs) and/or an X server
+ installed to make the fonts available to X clients.
+ .
+ If you are not using a remote font server, you must install this package if
+ you are installing an X server. It contains fonts without which X servers
+ will not work.
+ .
+ This package also provides a set of files that can be used by the X or
+ fonts server to transcode fonts from one encoding to another (e.g., KOI8-R
+ to ISO-8859-5).
+ .
+ This package requires the xutils package to prepare the font directories
+ for use by an X server or X font server.
+
+Package: xfonts-ttf
+Priority: optional
+Version: 0.0
+Architecture: all
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: xutils
+Filename: ./xfonts-ttf_0.0_all.ipk
+Size: 15567
+MD5Sum: ec6912955eda9edf873f892677fae523
+Description: free TrueType fonts to be used within X
+
+Package: xlibs
+Priority: optional
+Section: libs
+Installed-Size: 4306
+Debian-Maintainer: Branden Robinson <branden@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: xfree86
+Version: 4.0.2-13
+Replaces: xlib, xbase (<< 3.3.2.3a-2), xlib6 (<< 3.3.2.3-2), xbase-clients (<< 4.0), xlib6g (<< 4.0), xlib6g-dev (<< 4.0), xpm4g, fvwm-common, xcontrib
+Provides: libxpm4
+Depends: xfree86-common (>> 4.0), libc6 (>= 2.2.1-2), xlibs (>= 4.0.1-11)
+Conflicts: xlib, xlib6 (<< 3.3.2.3-2), xlib6g (<< 4.0), xlib6g-dev (<< 4.0), xbase-clients (<< 4.0), xpm4g
+Filename: ./xlibs_4.0.2-13_arm.ipk
+Size: 820973
+MD5Sum: ad9b6742385277d8cf63cfcdde41d4dc
+Description: X Window System client libraries
+ NOTE: I really want to break this package up into lots of little
+ packages for familiar, (mainly so we can dump things like Xt if no
+ binaries depend on them). - Carl Worth <cworth@handhelds.org>
+ .
+ The X libraries are an interface between X client programs and the
+ hardware-oriented X servers, and consist of routines to read input from the
+ keyboard and pointer, draw on the screen, etc., in an abstract manner that is
+ independent of the particular characteristics of the hardware. The X
+ libraries, and the programs that use them, communicate with X servers by
+ means of the X protocol.
+ .
+ libX11 (a.k.a. Xlib) provides the low-level functionality, dealing mostly
+ with the wire protocol and in terms of basic operations such as opening and
+ closing the X protocol connection, creating graphics contexts, drawing
+ graphics primitives such as lines, arcs, and glyphs, handling events, and so
+ forth.
+ .
+ libXpm, the X pixmap library, is a set of routines used to store and retrieve
+ X pixmaps (a data structure comprising a rectangular array of pixels) from
+ files; the xpm file format is an extension of the monochrome bitmap file
+ format in the X11 specification. (Traditionally, libXpm was maintained and
+ distributed separately from the X Window System, but XFree86 has absorbed
+ this library).
+ .
+ libXt, the X Toolkit Instrinsics, is an abstract widget library upon which
+ graphical widget libraries (such as Athena and LessTif) may be developed; the
+ Intrinsics provide a number of useful interfaces to X conventions and
+ protocols, in many cases reducing a long series of Xlib calls to just a
+ couple of Xt calls.
+ .
+ libXmu is a set of miscellaneous utility functions useful to client
+ programmers.
+ .
+ The remainder of the libraries in this package implement the client side
+ of various X protocol extensions:
+ - libICE, the Inter-Client Exchange extension;
+ - libPEX5, PEX, a 3D graphics extension now superseded by Mesa/OpenGL;
+ - libSM, the Session Management extension;
+ - libXIE, the X Image Extension;
+ - libXext, a collection of several commonly-used extensions;
+ - libXi, the X Input extension;
+ - libXp, the X Printing extension; and
+ - libXtst, the X Testing extension.
+ .
+ xlibs also contains the XKB keyboard parameter files, locale data, and a set
+ of bitmap and pixmap image files commonly used by X clients.
+
+Package: xserver-tiny-h3600
+Priority: optional
+Version: 0.2
+Architecture: arm
+Maintainer: Alexander Guy <a7r@handhelds.org>
+Depends: libc6, zlib1g, h3600-utils
+Filename: ./xserver-tiny-h3600_0.2_arm.ipk
+Size: 405916
+MD5Sum: dbbc661d81cec5a8ac402ebbfd682c4d
+Description: X server for the iPAQ H3600 display and touchscreen.
+
+Package: xvkbd
+Priority: optional
+Version: 0.0
+Architecture: arm
+Maintainer: Carl Worth <cworth@handhelds.org>
+Depends: libc6, xlibs, libxaw6
+Filename: ./xvkbd_0.0_arm.ipk
+Size: 13591
+MD5Sum: 45cd39eebf02283965268bbba5436528
+Description: On-screen virtual keyboard for X
+
+Package: zlib1g
+Priority: standard
+Section: libs
+Installed-Size: 144
+Debian-Maintainer: Mark Brown <broonie@debian.org>
+Maintainer: Carl Worth <cworth@handhelds.org>
+Architecture: arm
+Source: zlib
+Version: 1:1.1.3-14
+Provides: libz1
+Depends: libc6 (>= 2.2.1-2)
+Conflicts: zlib1 (<= 1:1.0.4-7)
+Filename: ./zlib1g_1.1.3-14_arm.ipk
+Size: 28970
+MD5Sum: c7f98957d73220efb3e39ec75ac09c23
+Description: compression library - runtime
+ zlib is a library implementing the deflate compression method found
+ in gzip and pkzip. This package includes the shared library.
+
diff --git a/noncore/unsupported/oipkg/ipkg/status b/noncore/unsupported/oipkg/ipkg/status
new file mode 100644
index 0000000..ddcd5fa
--- a/dev/null
+++ b/noncore/unsupported/oipkg/ipkg/status
@@ -0,0 +1,418 @@
+Package: ash
+Status: install ok installed
+Essential: yes
+Version: 0.3.7-16
+
+Package: libc6
+Status: install ok installed
+Version: 2.2.2-1
+
+Package: debianutils
+Status: install ok installed
+Essential: yes
+Version: 1.15
+
+Package: dev-files
+Status: install ok installed
+Essential: yes
+Version: 0.4
+
+Package: dpkg
+Status: install ok installed
+Essential: yes
+Version: 1.8.3.1
+
+Package: libncurses5
+Status: install ok installed
+Version: 5.0-6.0potato1
+
+Package: libstdc++2.10-glibc2.2
+Status: install ok installed
+Version: 1:2.95.4-0.010407
+
+Package: e2fsprogs
+Status: install ok installed
+Version: 1.19-4
+
+Package: ncurses-base
+Status: install ok installed
+Conffiles: /etc/terminfo/a/ansi 6b60f35a7fb6122a53b1e74e56cba56e /etc/terminfo/d/dumb ca3b114f0727da81a9b957b553a9915d /etc/terminfo/l/linux 8d94e8037f878a0468b4a29a28e83933 /etc/terminfo/m/mach 215cacd84662e9e93e998833477da362 /etc/terminfo/m/mach-bold 2dfb5dc3b706cd29273ab25f20394ac8 /etc/terminfo/m/mach-color a4b356122e490897b411db4893c8483e /etc/terminfo/p/pcansi 8b97f1ea94e8d2942c8dcd2d943e1322 /etc/terminfo/r/rxvt 5fb0eff2f9d74b42ab9bf6532ae4b54b /etc/terminfo/r/rxvt-m fd21b1fd19f15558368fbfaca40c92ce /etc/terminfo/s/screen e6c11d68d1b4d1d754fd1024d7970251 /etc/terminfo/s/screen-w df1678735733b574d38d6dc08991b372 /etc/terminfo/s/sun c7ab8d7ab013eca15c6eb83a4c80a3d1 /etc/terminfo/v/vt100 ad245bbce8921ee045952390f57fae39 /etc/terminfo/v/vt102 c33de92a31aa93532f323d7b604f2060 /etc/terminfo/v/vt220 fb1504db6c5a5962d65c1e59ec3ee331 /etc/terminfo/v/vt52 2cfdf4dcc4a93c378d9c6bc01cb8f3c3 /etc/terminfo/x/xterm 8b85646c0ec7d05772e8893a0fe6c587 /etc/terminfo/x/xterm-color 582138668da3b0f586aeee0dab85ce64 /etc/terminfo/x/xterm-mono 894041962a58eb2c22ab75a510bfb9c8 /etc/terminfo/x/xterm-r5 edae3c5c9da23b6358a7362492fd17e8 /etc/terminfo/x/xterm-r6 ba7d833b34aa46016660e577c81644b2 /etc/terminfo/x/xterm-vt220 f7ee9373c6df206ee9b5f674a8748272 /etc/terminfo/x/xterm-xfree86 e3e10164f2a536129beeae0b1070513d
+Version: 5.2.20010318-1
+
+Package: fileutils
+Status: install ok installed
+Essential: yes
+Version: 4.0.43-1
+
+Package: grep
+Status: install ok installed
+Essential: yes
+Version: 2.4.2-1
+
+Package: gzip
+Status: install ok installed
+Essential: yes
+Version: 1.2.4-33
+
+Package: hostname
+Status: install ok installed
+Essential: yes
+Version: 2.07
+
+Package: sed
+Status: install ok installed
+Version: 3.02-6
+
+Package: urlget
+Status: install ok installed
+Version: 0.3
+
+Package: netbase
+Status: install ok installed
+Conffiles: /etc/init.d/networking e9ecbce88a3f5a296a216298e282270e /etc/protocols 9b4c76b625771acc5c8df17b3ed780bc /etc/services 1f73acd0620a72c63f34c14dff83774d
+Version: 4.05
+
+Package: ifupdown
+Status: install ok installed
+Version: 0.6.4-3
+
+Package: libpam-modules
+Status: install ok installed
+Version: 0.72-21
+
+Package: libpam0g
+Status: install ok installed
+Version: 0.72-21
+
+Package: net-tools
+Status: install ok installed
+Version: 1.59-1
+
+Package: netkit-ping
+Status: install ok installed
+Version: 0.10-6.1
+
+Package: libpam-runtime
+Status: install ok installed
+Conffiles: /etc/pam.conf c29f5bbea9887ff059b5973185c82212 /etc/pam.d/other 1ec5167fb7299a6b6b55b31c29a8b303
+Version: 0.72-21
+
+Package: modutils
+Status: install ok installed
+Conffiles: /etc/cron.daily/modutils 10fc6b90de70ffa3594d6c47ec9be935 /etc/init.d/modutils 0a8547ed5c4d6d98b729fa5a2603e7f4
+Version: 2.4.2-1
+
+Package: lrzsz
+Status: install ok installed
+Essential: yes
+Version: 0.12.21-4
+
+Package: mount
+Status: install ok installed
+Essential: yes
+Version: 2.11b-2
+
+Package: shellutils
+Status: install ok installed
+Essential: yes
+Version: 2.0.11-5
+
+Package: sysvinit
+Status: install ok installed
+Conffiles: /etc/init.d/bootmisc.sh e9418a2ae63ae39f02b3e4c32290b19d /etc/init.d/checkfs.sh 10e539a025742a6288f60651ae7613a1 /etc/init.d/checkroot.sh b73e84b9518933e9ea1195f9f707d24d /etc/init.d/halt 031ddd15603637361bca220953f21a55 /etc/init.d/hostname.sh cacd9a754d39665499db7f79dac4e212 /etc/init.d/mountall.sh ba7702a69890a12e91e7ea259c71150e /etc/init.d/reboot aff6c76c29e8daa1f7c47479024d51b2 /etc/init.d/rmnologin f84dc015574ab0e48fb0694dc70307b2 /etc/init.d/sendsigs 8c66184b264a2d86c18f34fff627b49f /etc/init.d/single 68031365ba0ce859ec96e5cc812c6d07 /etc/init.d/umountfs 1f2a624a32fee66cc5654261942aa6bb
+Essential: yes
+Version: 2.78-4
+
+Package: tar
+Status: install ok installed
+Essential: yes
+Version: 1.13.19-1
+
+Package: textutils
+Status: install ok installed
+Essential: yes
+Version: 2.0-3
+
+Package: task-bootstrap
+Status: install ok installed
+Version: 0.6
+
+Package: ppp
+Status: install ok installed
+Conffiles: /etc/ppp/options e85cc881e702d2f022e56fa48a877295
+Version: 2.4.0f-1
+
+Package: pump
+Status: install ok installed
+Version: 0.8.3-3
+
+Package: ssh
+Status: install ok installed
+Version: 1:2.5.2p2-2
+
+Package: wireless-tools
+Status: install ok installed
+Version: 20-1.1
+
+Package: libssl0.9.6
+Status: install ok installed
+Version: 0.9.6a-1
+
+Package: libwrap0
+Status: install ok installed
+Version: 7.6-7
+
+Package: zlib1g
+Status: install ok installed
+Version: 1:1.1.3-14
+
+Package: ntpdate
+Status: install ok installed
+Version: 1:4.0.99g-3
+
+Package: wget
+Status: install ok installed
+Version: 1.6-2
+
+Package: task-familiar-complete
+Status: install ok installed
+Version: 0.5
+
+Package: apmd
+Status: install ok installed
+Version: 3.0final-1
+
+Package: checkers
+Status: install ok installed
+Version: 0.0
+
+Package: dosfstools
+Status: install ok installed
+Version: 2.8-1
+
+Package: fscrib
+Status: install ok installed
+Version: 0.0
+
+Package: h3600-utils
+Status: install ok installed
+Version: 0.4
+
+Package: libglade0
+Status: install ok installed
+Version: 0.16-2
+
+Package: libpopt0
+Status: install ok installed
+Version: 1.5-0.1
+
+Package: libxaw6
+Status: install ok installed
+Version: 4.0.2-13
+
+Package: libxml1
+Status: install ok installed
+Version: 1:1.8.11-1
+
+Package: libxmltok1
+Status: install ok installed
+Version: 1.1-5
+
+Package: loadmeter
+Status: install ok installed
+Version: 0.0
+
+Package: netcat
+Status: install ok installed
+Version: 1.10-17
+
+Package: procps
+Status: install ok installed
+Version: 1:2.0.7-4
+
+Package: pyditor
+Status: install ok installed
+Version: 0.0
+
+Package: qiv
+Status: install ok installed
+Version: 1.6-1
+
+Package: rsync
+Status: install ok installed
+Version: 2.4.6-1
+
+Package: sysset
+Status: install ok installed
+Version: 0.0
+
+Package: task-games
+Status: install ok installed
+Version: 0.0
+
+Package: task-mp3-player
+Status: install ok installed
+Version: 0.0
+
+Package: task-wireless
+Status: install ok installed
+Version: 0.1
+
+Package: task-x
+Status: install ok installed
+Version: 0.0
+
+Package: xvkbd
+Status: install ok installed
+Version: 0.0
+
+Package: gdk-imlib1
+Status: install ok installed
+Version: 1.9.8.1-2
+
+Package: libfltk1
+Status: install ok installed
+Version: 1.0.9-1.1
+
+Package: libfreetype6
+Status: install ok installed
+Version: 2.0.1.20010317-1
+
+Package: libglib1.2
+Status: install ok installed
+Version: 1.2.10-1
+
+Package: libgtk1.2
+Status: install ok installed
+Version: 1.2.10-1
+
+Package: libxaw7
+Status: install ok installed
+Version: 4.0.2-13
+
+Package: madplay
+Status: install ok installed
+Version: 0.0
+
+Package: mixer
+Status: install ok installed
+Version: 0.0
+
+Package: python
+Status: install ok installed
+Version: 0.0
+
+Package: rxvt-aa
+Status: install ok installed
+Version: 1:2.6.3-8
+
+Package: xbase-clients
+Status: install ok installed
+Version: 4.0.2-13
+
+Package: xcalibrate
+Status: install ok installed
+Version: 0.0
+
+Package: xfonts-75dpi
+Status: install ok installed
+Version: 4.0.2-13
+
+Package: xfonts-base
+Status: install ok installed
+Version: 4.0.2-13
+
+Package: xfonts-ttf
+Status: install ok installed
+Version: 0.0
+
+Package: xlibs
+Status: install ok installed
+Version: 4.0.2-13
+
+Package: libdb2
+Status: install ok installed
+Version: 2:2.7.7-3
+
+Package: libjpeg62
+Status: install ok installed
+Version: 6b-1.3
+
+Package: libpng2
+Status: install ok installed
+Version: 1.0.8-1
+
+Package: libungif3g
+Status: install ok installed
+Version: 3.0-3
+
+Package: libxft
+Status: install ok installed
+Version: 0.0
+
+Package: libxrender
+Status: install ok installed
+Version: 0.0
+
+Package: stowaway-h3600
+Status: install ok installed
+Version: 1.0
+
+Package: bash
+Status: install ok installed
+Conffiles: /etc/bash.bashrc 21e4f76f5390e221909e0afaaa41d8ab
+Version: 2.03-6
+
+Package: less
+Status: install ok installed
+Version: 346-7
+
+Package: login
+Status: install ok installed
+Conffiles: /etc/login.defs ef80f19ce81f9fab26602d8398c1b46f
+Essential: yes
+Version: 20000902-3.1
+
+Package: familiar-base
+Status: install ok installed
+Essential: yes
+Version: 0.10
+
+Package: kernel-modules-2.4.3-rmk2-np1
+Status: install ok installed
+Essential: yes
+Version: fam3
+
+Package: util-linux
+Status: install ok installed
+Essential: yes
+Version: 2.11b-2-fam2
+
+Package: pcmcia-modules-2.4.3-rmk2-np1
+Status: install ok installed
+Version: fam3
+
+Package: pcmcia-cs
+Status: install ok installed
+Conffiles: /etc/init.d/pcmcia 2aec30c50530a70e9b530bbe83106062 /etc/pcmcia/cis/3CCFEM556.dat 064309527ab5c6f73f17f99f6b07e471 /etc/pcmcia/cis/3CXEM556.dat 51e99ef0d234ea1b455b0555336f7379 /etc/pcmcia/cis/COMpad2.dat 66748ecad364a24ea2150fccb1adbca0 /etc/pcmcia/cis/COMpad4.dat a1b4e46b220b7ecaec0287875f47e549 /etc/pcmcia/cis/DP83903.dat fb612f42364fd06c46aa936386a79abb /etc/pcmcia/cis/E-CARD.dat 3bd542b30f74fb6066b045436e0c70c6 /etc/pcmcia/cis/LA-PCM.dat bee381e5d148bd073184a5cadfb6c314 /etc/pcmcia/cis/MT5634ZLX.dat 15bc79fe185e6cc00c888ab6e54a0640 /etc/pcmcia/cis/NE2K.dat f6092c8b414a94b96e310654cc5cad04 /etc/pcmcia/cis/PCMLM28.dat bc1d913acfd5b8b70a6694bbd48b5795 /etc/pcmcia/cis/PE-200.dat b779b33a4a692557517a3e6edf343fb2 /etc/pcmcia/cis/PE520.dat fb7b7e2d7664771f0c4a1a39cc2efabf /etc/pcmcia/cis/RS-COM-2P.dat c9dd2f55d05d86f88cdf52f3e1363da2 /etc/pcmcia/config.opts 03b1242472171887224f92ca95ecd40d /etc/pcmcia/config 9f747a17417cfecd7d08f5ddab34935d /etc/pcmcia/ftl.opts c6e0cd4d69e56836a6ff071bba8df4c3 /etc/pcmcia/ftl af805fd6a57f77ace864fe24643a39ed /etc/pcmcia/ide.opts 98f615befe89350382037398ef6cd226 /etc/pcmcia/ide fad802a1eb4cc57656a5dcae090edbb1 /etc/pcmcia/memory.opts bd8486017c46fef68ac2ecf597c8e31b /etc/pcmcia/memory a7a7acf0fa3ea00613ed2649e6b59e8b /etc/pcmcia/network.opts a40e80fb3366f61c8839973f5418e35f /etc/pcmcia/network e4b3d221d57efe4a714fdd5eb5c49224 /etc/pcmcia/parport.opts d7a128b7352b136d60935fca3638a4f6 /etc/pcmcia/parport 89041f80c218454b68c1c0581e29b872 /etc/pcmcia/scsi.opts 6c45330bd15b2db612d1d12d5682face /etc/pcmcia/scsi 983fa0c4829c79222e3f01d690c52897 /etc/pcmcia/serial.opts e26bbd1e4e70571277def2bcac82767e /etc/pcmcia/serial f7f7b6b24f55e7317d684d7f36c6e1f5 /etc/pcmcia/wireless.opts 002a763100acd3ddbd0e1c8283418907 /etc/pcmcia/wireless 64e6cbc2d2fda6b191390536ede71b67 /etc/pcmcia/shared 8b9f0c58f3b9daa43572e5087e97032b
+Version: 0.0-fam3
+
+Package: ipkg
+Status: install ok installed
+Conffiles: /etc/ipkg.conf 5f2dff89026c95afe68ca28b5385525b
+Essential: yes
+Version: 0.4-fam1
+
+Package: blackbox
+Status: install ok installed
+Version: 0.1
+
+Package: xserver-tiny-h3600
+Status: install ok installed
+Version: 0.2
+
+Package: iv
+Status: install ok installed
+Essential: yes
+Version: 0.0
+
diff --git a/noncore/unsupported/oipkg/main.cpp b/noncore/unsupported/oipkg/main.cpp
new file mode 100644
index 0000000..96a5e8d
--- a/dev/null
+++ b/noncore/unsupported/oipkg/main.cpp
@@ -0,0 +1,33 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+
+#include "packagemanager.h"
+
+#include <qpe/qpeapplication.h>
+
+int main( int argc, char ** argv )
+{
+ QPEApplication a( argc, argv );
+
+ PackageManager mw;
+ a.showMainDocumentWidget( &mw );
+
+ return a.exec();
+}
diff --git a/noncore/unsupported/oipkg/packagemanager.cpp b/noncore/unsupported/oipkg/packagemanager.cpp
new file mode 100644
index 0000000..f3da15d
--- a/dev/null
+++ b/noncore/unsupported/oipkg/packagemanager.cpp
@@ -0,0 +1,897 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#include "packagemanager.h"
+#include "pkdesc.h"
+#include "pkfind.h"
+#include "pksettings.h"
+
+#include <qpe/process.h>
+#include <qpe/resource.h>
+#include <qpe/stringutil.h>
+#include <qpe/qpeapplication.h>
+#include <qpe/qcopenvelope_qws.h>
+#include <qpe/applnk.h>
+
+#include <qprogressbar.h>
+#include <qcombobox.h>
+#include <qdict.h>
+#include <qfile.h>
+#include <qlineedit.h>
+#include <qpushbutton.h>
+#include <qlistview.h>
+#include <qlistbox.h>
+#include <qmessagebox.h>
+#include <qpainter.h>
+#include <qpixmap.h>
+#include <qregexp.h>
+#include <qtextstream.h>
+#include <qtextview.h>
+#include <qtoolbutton.h>
+
+#include <stdlib.h>
+
+static QPixmap *pm_uninstalled=0;
+static QPixmap *pm_installed=0;
+static QPixmap *pm_uninstall=0;
+static QPixmap *pm_install=0;
+
+
+class PackageItem : public QCheckListItem {
+ bool installed;
+public:
+ PackageItem(QListView* lv, const QString& name, const QString& desc, const QString& size, bool inst ) :
+ QCheckListItem(lv,name,CheckBox), installed(inst)
+ {
+ setText(1,desc);
+ setText(2,size);
+ }
+
+ void paintCell( QPainter *p, const QColorGroup & cg,
+ int column, int width, int alignment )
+ {
+ if ( !p )
+ return;
+
+ p->fillRect( 0, 0, width, height(),
+ isSelected()? cg.highlight() : cg.base() );
+
+ if ( column != 0 ) {
+ // The rest is text
+ QListViewItem::paintCell( p, cg, column, width, alignment );
+ return;
+ }
+
+ QListView *lv = listView();
+ if ( !lv )
+ return;
+ int marg = lv->itemMargin();
+ int r = marg;
+
+ QPixmap pm = statePixmap();
+ p->drawPixmap(marg,(height()-pm.height())/2,pm);
+ r += pm.width()+1;
+
+ p->translate( r, 0 );
+ QListViewItem::paintCell( p, cg, column, width - r, alignment );
+ }
+
+ void paintFocus( QPainter *p, const QColorGroup & cg,
+ const QRect & r )
+ {
+ // Skip QCheckListItem
+ // (makes you wonder what we're getting from QCheckListItem)
+ QListViewItem::paintFocus(p,cg,r);
+ }
+
+ QPixmap statePixmap() const
+ {
+ if ( !isOn() ) {
+ if ( !installed )
+ return *pm_uninstalled;
+ else
+ return *pm_installed;
+ } else {
+ if ( !installed )
+ return *pm_install;
+ else
+ return *pm_uninstall;
+ }
+ }
+
+ QString name() const { return text(0); }
+ QString description() const { return text(1); }
+ bool isInstalled() const { return installed; }
+
+ QString key( int column, bool ascending ) const
+ {
+ if ( column == 2 ) {
+ QString t = text(2);
+ double bytes=t.toDouble();
+ if ( t.contains('M') ) bytes*=1024*1024;
+ else if ( t.contains('K') || t.contains('k') ) bytes*=1024;
+ if ( !ascending ) bytes=999999999-bytes;
+ return QString().sprintf("%09d",(int)bytes);
+ } else {
+ return QListViewItem::key(column,ascending);
+ }
+ }
+};
+
+/*
+ * Constructs a PackageManager which is a child of 'parent', with the
+ * name 'name' and widget flags set to 'f'
+ */
+PackageManager::PackageManager( QWidget* parent, const char* name, WFlags fl )
+ : PackageManagerBase( parent, name, fl )
+{
+ settings = new PackageManagerSettings(this,0,TRUE);
+ connect( settings->newserver, SIGNAL(clicked()), this, SLOT(newServer()) );
+ connect( settings->removeserver, SIGNAL(clicked()), this, SLOT(removeServer()) );
+ connect( settings->servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
+ connect( doit, SIGNAL(clicked()), this, SLOT(doIt()) );
+ settings->servername->setEnabled(FALSE);
+ settings->serverurl->setEnabled(FALSE);
+ serverurl.setAutoDelete(TRUE);
+
+ if (!pm_uninstalled) {
+ pm_uninstalled = new QPixmap(Resource::loadPixmap("uninstalled"));
+ pm_installed = new QPixmap(Resource::loadPixmap("installed"));
+ pm_install = new QPixmap(Resource::loadPixmap("install"));
+ pm_uninstall = new QPixmap(Resource::loadPixmap("uninstall"));
+ }
+
+ QFontMetrics fm = fontMetrics();
+ int w0 = fm.width(PackageManagerBase::tr("Package"))+30;
+ int w2 = fm.width("00000")+4;
+ list->setColumnWidth(0,w0);
+ list->setColumnWidth(1,228-w2-w0); // ### screen-biased
+ list->setColumnWidth(2,w2);
+ list->setColumnWidthMode(0,QListView::Manual);
+ list->setColumnWidthMode(1,QListView::Manual);
+ list->setColumnWidthMode(2,QListView::Manual);
+ list->setSelectionMode( QListView::Multi );
+ details = 0;
+ ipkg_old = 0;
+ readSettings();
+ updatePackageList();
+ progress->hide();
+}
+
+
+/*
+ * Destroys the object and frees any allocated resources
+ */
+PackageManager::~PackageManager()
+{
+ // no need to delete child widgets, Qt does it all for us
+}
+
+void PackageManager::newServer()
+{
+ int i = settings->servers->count();
+ if ( settings->servername->isEnabled() || settings->serverurl->text().isEmpty() ) {
+ serverurl.insert(i,new QString("http://"));
+ settings->servers->insertItem(tr("New"));
+ } else {
+ // allows one-level undo
+ serverurl.insert(i,new QString(settings->serverurl->text()));
+ settings->servers->insertItem(settings->servername->text());
+ }
+ settings->servers->setSelected(i,TRUE);
+ editServer(i);
+}
+
+void PackageManager::editServer(int i)
+{
+ if ( settings->servername->isEnabled() ) {
+ disconnect( settings->servername, SIGNAL(textChanged(const QString&)), this, SLOT(nameChanged(const QString&)) );
+ disconnect( settings->serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(urlChanged(const QString&)) );
+ } else {
+ settings->servername->setEnabled(TRUE);
+ settings->serverurl->setEnabled(TRUE);
+ }
+
+ settings->servername->setText( settings->servers->text(i) );
+ settings->serverurl->setText( *serverurl[i] );
+
+ editedserver = i;
+
+ connect( settings->servername, SIGNAL(textChanged(const QString&)), this, SLOT(nameChanged(const QString&)) );
+ connect( settings->serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(urlChanged(const QString&)) );
+}
+
+void PackageManager::removeServer()
+{
+ disconnect( settings->servername, SIGNAL(textChanged(const QString&)), this, SLOT(nameChanged(const QString&)) );
+ disconnect( settings->serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(urlChanged(const QString&)) );
+ settings->servername->setText(settings->servers->text(editedserver));
+ settings->serverurl->setText(*serverurl[editedserver]);
+ disconnect( settings->servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
+ settings->servers->removeItem(editedserver);
+ connect( settings->servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
+ settings->servername->setEnabled(FALSE);
+ settings->serverurl->setEnabled(FALSE);
+}
+
+void PackageManager::nameChanged(const QString& t)
+{
+ disconnect( settings->servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
+ settings->servers->changeItem( t, editedserver );
+ connect( settings->servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
+}
+
+void PackageManager::urlChanged(const QString& t)
+{
+ serverurl.replace(editedserver, new QString(t));
+}
+
+static void selectComboItem(QComboBox *cb, const QString s)
+{
+ for (int i=0; i<cb->count(); i++) {
+ if ( cb->text(i) == s ) {
+ cb->setCurrentItem(i);
+ return;
+ }
+ }
+}
+
+void PackageManager::updatePackageList()
+{
+ disconnect(section,SIGNAL(activated(int)),this,SLOT(updatePackageList()));
+ disconnect(subsection,SIGNAL(activated(int)),this,SLOT(updatePackageList()));
+
+ list->clear();
+ QString cursection = section->currentText();
+ QString cursubsection = subsection->currentText();
+ QString all=tr("All");
+ if ( cursection == all ) cursection=QString::null;
+ if ( cursubsection == all ) cursubsection=QString::null;
+ section->clear();
+ subsection->clear();
+
+ QDict<void> sections;
+ QDict<void> subsections;
+ QDict<void> installed;
+
+ QRegExp separatorRegExp( ":[\t ]+" );
+
+ QString status = ipkgStatusOutput();
+ if ( !status.isEmpty() ) {
+ QStringList lines = QStringList::split('\n',status,TRUE);
+ QString name;
+ QString status;
+ for (QStringList::Iterator it = lines.begin(); it!=lines.end(); ++it) {
+ QString line = *it;
+ if ( line.length()<=1 ) {
+ // EOR
+ if ( !name.isEmpty() ) {
+ if ( status.contains(" installed") )
+ installed.replace(name,(void*)1);
+ name="";
+ }
+ status="";
+ } else if ( line[0] == ' ' || line[0] == '\t' ) {
+ // continuation
+ } else {
+ int sep = line.find(separatorRegExp);
+ if ( sep >= 0 ) {
+ QString tag = line.left(sep);
+ if ( tag == "Package" ) {
+ name = line.mid(sep+2).simplifyWhiteSpace();
+ } else if ( tag == "Status" ) {
+ status = line.mid(sep+1);
+ }
+ }
+ }
+ }
+ }
+
+ QString info = ipkgInfoOutput();
+ if ( !info.isEmpty() ) {
+ QStringList lines = QStringList::split('\n',info,TRUE);
+ QString description_short;
+ QString name;
+ QString size;
+ QString sec;
+ for (QStringList::Iterator it = lines.begin(); it!=lines.end(); ++it) {
+ QString line = *it;
+ if ( line.length()<=1 ) {
+ // EOR
+ if ( !name.isEmpty() ) {
+ int sl = sec.find('/');
+ QString s = sl < 0 ? sec : sec.left(sl);
+ QString ss = sl < 0 ? QString::null : sec.mid(sl+1);
+ sections.replace(s,(void*)1);
+ if ( cursection.isNull()
+ || cursection == s
+ && (cursubsection.isNull() || cursubsection == ss) )
+ {
+ if ( !cursection.isNull() && !ss.isNull() )
+ subsections.replace(ss,(void*)1);
+ description_short[0] = description_short[0].upper();
+ if ( description_short.left(4) == "The " )
+ description_short = description_short.mid(4);
+ if ( description_short.left(2) == "A " )
+ description_short = description_short.mid(2);
+ description_short[0] = description_short[0].upper();
+ new PackageItem(list,name,description_short,size,
+ installed.find(name));
+ }
+ installed.remove( name );
+ }
+ name="";
+ size="";
+ sec="main";
+ } else if ( line[0] == ' ' || line[0] == '\t' ) {
+ // continuation
+ } else {
+ int sep = line.find(separatorRegExp);
+ if ( sep >= 0 ) {
+ QString tag = line.left(sep);
+ if ( tag == "Package" ) {
+ name = line.mid(sep+2).simplifyWhiteSpace();
+ } else if ( tag == "Description" ) {
+ description_short = line.mid(sep+2).simplifyWhiteSpace();
+ } else if ( tag == "Installed-Size" ) {
+ size = line.mid(sep+2).simplifyWhiteSpace();
+ } else if ( tag == "Section" ) {
+ sec = line.mid(sep+2).simplifyWhiteSpace();
+ }
+ }
+ }
+ }
+ if ( installed.count() && cursection.isNull() ) {
+ // we have some packages without description
+ QDictIterator<void> it( installed );
+ for( ; it.current(); ++it )
+ new PackageItem( list, it.currentKey(), "", "?" , TRUE );
+ }
+
+ QStringList s;
+ QDictIterator<void> it( sections );
+ for( ; it.current(); ++it )
+ s.append(it.currentKey());
+ s.sort();
+ section->insertItem(all);
+ section->insertStringList(s);
+ selectComboItem(section,cursection.isNull()?all:cursection);
+ if ( cursection.isNull() ) {
+ subsection->setEnabled(FALSE);
+ } else {
+ subsection->setEnabled(TRUE);
+ QStringList s;
+ QDictIterator<void> it( subsections );
+ for( ; it.current(); ++it )
+ s.append(it.currentKey());
+ s.sort();
+ subsection->insertItem(all);
+ subsection->insertStringList(s);
+ selectComboItem(subsection,cursubsection.isNull()?all:cursubsection);
+ }
+ } else {
+ new QListViewItem(list,"ERROR");
+ }
+
+ connect(section,SIGNAL(activated(int)),SLOT(updatePackageList()));
+ connect(subsection,SIGNAL(activated(int)),this,SLOT(updatePackageList()));
+}
+
+PackageItem* PackageManager::current() const
+{
+ return (PackageItem*)list->currentItem();
+}
+
+/*
+ * public slot
+ */
+void PackageManager::doCurrentDetails(bool multi)
+{
+ PackageItem* pit = current();
+ if ( pit ) {
+ if ( !details ) {
+ details = new PackageDetails;
+ connect( details->install, SIGNAL(clicked()),
+ this, SLOT(installCurrent()));
+ connect( details->remove, SIGNAL(clicked()),
+ this, SLOT(removeCurrent()));
+ details->description->setTextFormat(RichText);
+ }
+ if ( multi ) {
+ disconnect( details->ignore, SIGNAL(clicked()),
+ details, SLOT(close()));
+ connect( details->ignore, SIGNAL(clicked()),
+ this, SLOT(doNextDetails()));
+ } else {
+ disconnect( details->ignore, SIGNAL(clicked()),
+ this, SLOT(doNextDetails()));
+ connect( details->ignore, SIGNAL(clicked()),
+ details, SLOT(close()));
+ }
+ pit->setSelected(FALSE);
+ details->setCaption("Package: " + pit->name());
+ details->description->setText(fullDetails(pit->name()));
+ details->install->setEnabled(!pit->isInstalled());
+ details->remove->setEnabled(pit->isInstalled());
+ details->showMaximized();
+ }
+}
+
+void PackageManager::doDetails()
+{
+ doCurrentDetails(FALSE);
+}
+
+void PackageManager::doNextDetails()
+{
+ QListViewItem* i = list->firstChild();
+ for ( ; i; i = i->nextSibling() ) {
+ if ( i->isSelected() )
+ break;
+ }
+ list->setCurrentItem(i);
+ if ( i ) {
+ doCurrentDetails(TRUE);
+ } else if ( details )
+ details->close();
+}
+
+QString PackageManager::fullDetails(const QString& pk)
+{
+ QString status;
+ Process ipkg_status(QStringList() << "ipkg" << "info" << pk);
+ if ( ipkg_status.exec("",status) ) {
+ QStringList lines = QStringList::split('\n',status,TRUE);
+ QString description;
+ for (QStringList::Iterator it = lines.begin(); it!=lines.end(); ++it) {
+ QString line = *it;
+ if ( line == " ." ) {
+ description.append("<p>");
+ } else if ( line[0] == ' ' || line[0] == '\t' ) {
+ // continuation
+ description.append(" ");
+ description.append(Qtopia::escapeString(line));
+ } else {
+ int sep = line.find(QRegExp(":[\t ]+"));
+ if ( sep >= 0 ) {
+ QString tag = line.left(sep);
+ description.append("<br>");
+ description.append("<b>");
+ description.append(Qtopia::escapeString(tag));
+ description.append(":</b> ");
+ description.append(Qtopia::escapeString(line.mid(sep+2)));
+ } else {
+ description.append(" ");
+ description.append(Qtopia::escapeString(line));
+ }
+ }
+ }
+ return description;
+ }
+
+ return QString::null;
+}
+
+void PackageManager::installCurrent()
+{
+ current()->setOn(TRUE);
+ details->close();
+}
+
+void PackageManager::removeCurrent()
+{
+ current()->setOn(TRUE);
+ details->close();
+}
+
+bool PackageManager::readIpkgConfig(const QString& conffile)
+{
+ QFile conf(conffile);
+ if ( conf.open(IO_ReadOnly) ) {
+ QTextStream s(&conf);
+ settings->servers->clear();
+ serverurl.clear();
+ ipkg_old=0;
+ int currentserver=0;
+ while ( !s.atEnd() ) {
+ QString l = s.readLine();
+ QStringList token = QStringList::split(' ', l);
+ if ( token[0] == "src" || token[0] == "#src" ) {
+ currentserver=settings->servers->count();
+ serverurl.insert(settings->servers->count(),new QString(token[2]));
+ int a = token[0] == "src" ? 1 : 0;
+ int i = settings->servers->count();
+ settings->servers->insertItem(token[1]);
+ settings->servers->setSelected(i,a);
+ } else if ( token[0] == "dest" ) {
+ // needs UI
+ } else if ( token[0] == "option" ) {
+ // ### somehow need to use the settings from netsetup
+// if ( token[1] == "http_proxy" )
+// settings->http->setText(token[2]);
+// else if ( token[1] == "ftp_proxy" )
+// settings->ftp->setText(token[2]);
+// else if ( token[1] == "proxy_username" )
+// settings->username->setText(token[2]);
+// else if ( token[1] == "proxy_password" )
+// settings->password->setText(token[2]);
+ } else {
+ // Old style?
+ int eq = l.find('=');
+ if ( eq >= 0 ) {
+ QString v = l.mid(eq+1).stripWhiteSpace();
+ if ( v[0] == '"' || v[0] == '\'' ) {
+ int cl=v.find(v[0],1);
+ if ( cl >= 0 )
+ v = v.mid(1,cl-1);
+ }
+ if ( l.left(12) == "IPKG_SOURCE=" ) {
+ ipkg_old=1;
+ currentserver=settings->servers->count();
+ serverurl.insert(settings->servers->count(),new QString(v));
+ settings->servers->insertItem(v);
+ } else if ( l.left(13) == "#IPKG_SOURCE=" ) {
+ serverurl.insert(settings->servers->count(),new QString(v));
+ settings->servers->insertItem(v);
+ } else if ( l.left(10) == "IPKG_ROOT=" ) {
+ // ### no UI
+// } else if ( l.left(20) == "IPKG_PROXY_USERNAME=" ) {
+// settings->username->setText(v);
+// } else if ( l.left(20) == "IPKG_PROXY_PASSWORD=" ) {
+// settings->password->setText(v);
+// } else if ( l.left(16) == "IPKG_PROXY_HTTP=" ) {
+// settings->http->setText(v);
+// } else if ( l.left(16) == "IPKG_PROXY_FTP=" ) {
+// settings->ftp->setText(v);
+ }
+ }
+ }
+ }
+ if ( ipkg_old ) {
+ settings->servers->setSelectionMode(QListBox::Single);
+ settings->servers->setSelected(currentserver,TRUE);
+ }
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+}
+
+/*
+ * public slot
+ */
+void PackageManager::doSettings()
+{
+ settings->showMaximized();
+ if ( settings->exec() ) {
+ writeSettings();
+ startRun();
+ runIpkg("update");
+ endRun();
+ updatePackageList();
+ } else {
+ readSettings();
+ }
+}
+
+void PackageManager::readSettings()
+{
+ // read from config file(s)
+ readIpkgConfig("/etc/ipkg.conf");
+}
+
+void PackageManager::writeSettings()
+{
+ QFile conf("/etc/ipkg.conf");
+ if ( conf.open(IO_WriteOnly) ) {
+ QTextStream s(&conf);
+ s << "# Written by Qtopia Package Manager\n";
+ if ( !ipkg_old ) {
+ for (int i=0; i<(int)settings->servers->count(); i++) {
+ QString url = serverurl[i] ? *serverurl[i] : QString("???");
+ if ( !settings->servers->isSelected(i) )
+ s << "#";
+ s << "src " << settings->servers->text(i) << " " << url << "\n";
+ }
+ s << "dest root /\n"; // ### need UI
+// if ( !settings->username->text().isEmpty() )
+// s << "option proxy_username " << settings->username->text() << "\n";
+// if ( !settings->password->text().isEmpty() )
+// s << "option proxy_password " << settings->password->text() << "\n";
+// if ( !settings->http->text().isEmpty() )
+// s << "option http_proxy " << settings->http->text() << "\n";
+// if ( !settings->ftp->text().isEmpty() )
+// s << "option ftp_proxy " << settings->ftp->text() << "\n";
+ } else {
+ // Old style
+ bool src_selected=FALSE;
+ for (int i=0; i<(int)settings->servers->count(); i++) {
+ if ( settings->servers->isSelected(i) ) {
+ src_selected=TRUE;
+ } else {
+ s << "#";
+ }
+ s << "IPKG_SOURCE=\"" << settings->servers->text(i) << "\"\n";
+ }
+ if ( !src_selected )
+ s << "IPKG_SOURCE=\"" << settings->servers->currentText() << "\"\n";
+ s << "IPKG_ROOT=/\n"
+// << "IPKG_PROXY_USERNAME=\"" << settings->username->text() << "\"\n"
+// << "IPKG_PROXY_PASSWORD=\"" << settings->password->text() << "\"\n"
+// << "IPKG_PROXY_HTTP=\"" << settings->http->text() << "\"\n"
+// << "IPKG_PROXY_FTP=\"" << settings->ftp->text() << "\"\n"
+ ;
+ }
+ conf.close();
+ }
+}
+
+/*
+ * public slot
+ */
+void PackageManager::doFind()
+{
+ Search s(this, 0, TRUE);
+ if ( s.exec() ) {
+ QString p = s.pattern->text();
+ if ( p.isEmpty() ) {
+ list->selectAll(FALSE);
+ } else {
+ selectPackages(findPackages(p));
+ doNextDetails();
+ }
+ }
+}
+
+void PackageManager::selectPackages( const QStringList& l )
+{
+ QDict<void> d;
+ for (QStringList::ConstIterator it = l.begin(); it != l.end(); ++it)
+ d.replace(*it,(void*)1);
+ QListViewItem* i;
+ for ( i = list->firstChild(); i; i = i->nextSibling() ) {
+ PackageItem* pit = (PackageItem*)i;
+ i->setSelected( d[pit->name()] );
+ }
+}
+
+QStringList PackageManager::findPackages( const QRegExp& r )
+{
+ QStringList matches;
+
+ QString info = ipkgInfoOutput();
+ if ( !info.isEmpty() ) {
+ QStringList lines = QStringList::split('\n',info,TRUE);
+ QRegExp re = r;
+ QString description="";
+ QString name;
+ for (QStringList::Iterator it = lines.begin(); it!=lines.end(); ++it) {
+ QString line = *it;
+ if ( line.length()<=1 ) {
+ // EOR
+ if ( re.match(description) >= 0 )
+ matches.append(name);
+ description="";
+ name="";
+ } else if ( line[0] == ' ' || line[0] == '\t' ) {
+ // continuation
+ description.append(" ");
+ description.append(Qtopia::escapeString(line));
+ } else {
+ int sep = line.find(QRegExp(":[\t ]+"));
+ if ( sep >= 0 ) {
+ QString tag = line.left(sep);
+ if ( tag == "Package" )
+ name = line.mid(sep+2).simplifyWhiteSpace();
+ if ( !description.isEmpty() )
+ description.append("<br>");
+ description.append("<b>");
+ description.append(Qtopia::escapeString(tag));
+ description.append(":</b> ");
+ description.append(Qtopia::escapeString(line.mid(sep+2)));
+ }
+ }
+ }
+ }
+
+ return matches;
+}
+
+/*
+ * public slot
+ */
+void PackageManager::doUpgrade()
+{
+ startMultiRun(2);
+ runIpkg("update");
+ runIpkg("upgrade");
+ updatePackageList();
+ endRun();
+}
+
+
+void PackageManager::doIt()
+{
+ bool ok = commitWithIpkg();
+ updatePackageList(); // things may have changed
+ if (!ok) qApp->beep();
+}
+
+bool PackageManager::commitWithIpkg()
+{
+ // A full implementation would do the following, but we'll just do
+ // it simply and non-interactively for now.
+ //
+ // setenv IPKG_CONF_DIR for a null $IPKG_CONF_DIR/ipkg.conf
+ // setenv IPKG_SOURCE, IPKG_ROOT, etc.
+ // run ipkg, processing interactivity as dialogs
+ // - "... (Y/I/N/O/D) [default=N] ?" -> ...
+ // - "[Press ENTER to continue]" (if D chosen above)
+ // - "The following packages are marked `Essential'... Install them now [Y/n] ?"
+ // - "The following packages...ready to be installed:... Install them now [Y/n] ?"
+ // return FALSE cancelled
+
+ QStringList to_remove, to_install;
+
+ for ( QListViewItem* i = list->firstChild(); i; i = i->nextSibling() ) {
+ PackageItem* pit = (PackageItem*)i;
+ if ( pit->isOn() ) {
+ if ( pit->isInstalled() )
+ to_remove.append(pit->name());
+ else
+ to_install.append(pit->name());
+ }
+ }
+
+ bool ok=TRUE;
+
+ int jobs = to_remove.count()+to_install.count();
+ if ( jobs ) {
+ startMultiRun(jobs);
+
+ if ( to_remove.count() ) {
+ for (QStringList::ConstIterator it=to_remove.begin(); it!=to_remove.end(); ++it) {
+ if ( runIpkg("remove " + *it) != 0 ) {
+ ok = FALSE;
+ }
+ }
+ }
+ if ( to_install.count() ) {
+ for (QStringList::ConstIterator it=to_install.begin(); it!=to_install.end(); ++it) {
+ if ( runIpkg("install " + *it) != 0 ) {
+ ok = FALSE;
+ }
+ }
+ }
+
+ // ##### If we looked in the list of files, we could send out accurate
+ // ##### messages. But we don't bother yet, and just do an "all".
+ QCopEnvelope e("QPE/System", "linkChanged(QString)");
+ QString lf = QString::null;
+ e << lf;
+
+#if QT_VERSION > 230 // a bug breaks this otherwise
+ if ( !ok )
+ QMessageBox::warning(this, "Error", "<p><tt>ipkg</tt> says something went wrong. Sorry.");
+#endif
+
+ endRun();
+ }
+
+ return ok;
+}
+
+QString PackageManager::ipkgStatusOutput()
+{
+ if ( cachedIpkgStatusOutput.isEmpty() ) {
+ Process ipkg_status( QStringList() << "ipkg" << "status" );
+ ipkg_status.exec( 0, cachedIpkgStatusOutput );
+ }
+ return QString::fromLocal8Bit( cachedIpkgStatusOutput );
+}
+
+QString PackageManager::ipkgInfoOutput()
+{
+ if ( cachedIpkgInfoOutput.isEmpty() ) {
+ Process ipkg_info( QStringList() << "ipkg" << "info" );
+ ipkg_info.exec( 0, cachedIpkgInfoOutput );
+ }
+ return QString::fromLocal8Bit( cachedIpkgInfoOutput );
+}
+
+void PackageManager::setCachedIpkgOutputDirty()
+{
+ cachedIpkgInfoOutput = cachedIpkgStatusOutput = QString::null;
+}
+
+void PackageManager::startMultiRun(int jobs)
+{
+ startRun();
+ progress->setTotalSteps(jobs);
+ progress->setProgress(0);
+}
+
+void PackageManager::startRun()
+{
+ progress->show();
+ doit->hide();
+}
+
+void PackageManager::endRun()
+{
+ doit->show();
+ progress->hide();
+}
+
+int PackageManager::runIpkg(const QString& args)
+{
+ if ( progress->progress() == -1 )
+ startMultiRun(1);
+ else
+ startRun();
+ QString cmd = "ipkg ";
+ if ( ipkg_old )
+ cmd += "</dev/null ";
+ else
+ cmd += "-force-defaults ";
+ int r = system((cmd+args).latin1());
+ progress->setProgress(progress->progress()+1);
+ setCachedIpkgOutputDirty();
+ endRun();
+ return r;
+}
+
+// simple hack to get support for ipkg mimetype
+void PackageManager::maybeInstall( const QString &ipk )
+{
+ int pos = ipk.findRev( "/" );
+ QString package = ipk.mid( pos + 1 );
+ pos = package.find ( "_" );
+ if ( pos != -1 )
+ package = package.left( pos );
+ switch ( QMessageBox::information( 0, tr( "Install Package" ),
+ tr("Are you sure you want to\ninstall package\n\n%1")
+ .arg(package), QMessageBox::Yes,
+ QMessageBox::No|QMessageBox::Default|QMessageBox::Escape, 0 ) ) {
+ case QMessageBox::Yes: {
+ startRun();
+ runIpkg("install " + ipk );
+ QCopEnvelope e("QPE/System", "linkChanged(QString)");
+ QString lf = QString::null;
+ e << lf;
+ endRun();
+ }
+ break;
+ case QMessageBox::No:
+ default:
+ // do nothing
+ break;
+ }
+}
+
+void PackageManager::setDocument(const QString& fileref)
+{
+ if ( fileref.isNull() )
+ return;
+ DocLnk doc( fileref );
+ if ( doc.file().isEmpty() )
+ return;
+ maybeInstall( doc.file() );
+ updatePackageList();
+}
diff --git a/noncore/unsupported/oipkg/packagemanager.h b/noncore/unsupported/oipkg/packagemanager.h
new file mode 100644
index 0000000..a3f89d0
--- a/dev/null
+++ b/noncore/unsupported/oipkg/packagemanager.h
@@ -0,0 +1,94 @@
+/**********************************************************************
+** Copyright (C) 2000 Trolltech AS. All rights reserved.
+**
+** This file is part of Qtopia Environment.
+**
+** This file may be distributed and/or modified under the terms of the
+** GNU General Public License version 2 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file.
+**
+** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
+** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+**
+** See http://www.trolltech.com/gpl/ for GPL licensing information.
+**
+** Contact info@trolltech.com if any conditions of this licensing are
+** not clear to you.
+**
+**********************************************************************/
+#ifndef PACKAGEMANAGER_H
+#define PACKAGEMANAGER_H
+#include "packagemanagerbase.h"
+#include <qintdict.h>
+
+class PackageItem;
+class PackageDetails;
+class PackageManagerSettings;
+
+class PackageManager : public PackageManagerBase
+{
+ Q_OBJECT
+
+public:
+ PackageManager( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 );
+ ~PackageManager();
+
+
+public slots:
+ void doDetails();
+ void doSettings();
+ void doFind();
+ void doUpgrade();
+ void setDocument(const QString& fileref);
+
+protected slots:
+ void doIt();
+
+private slots:
+ void installCurrent();
+ void removeCurrent();
+ void doNextDetails();
+
+ void newServer();
+ void editServer(int);
+ void removeServer();
+ void nameChanged(const QString&);
+ void urlChanged(const QString&);
+ void updatePackageList();
+
+private:
+ void maybeInstall( const QString &ipk );
+ void startRun();
+ void endRun();
+ void startMultiRun(int jobs);
+ int runIpkg(const QString& args);
+ QString fullDetails(const QString& pk);
+
+ bool readIpkgConfig(const QString& conffile);
+
+ void doCurrentDetails(bool);
+ PackageItem* current() const;
+
+ QStringList findPackages( const QRegExp& re );
+ void selectPackages( const QStringList& l );
+
+ bool commitWithIpkg();
+
+ QString ipkgStatusOutput();
+ QString ipkgInfoOutput();
+ void setCachedIpkgOutputDirty();
+
+ PackageManagerSettings* settings;
+ QIntDict<QString> serverurl;
+ int editedserver;
+ int ipkg_old;
+ void writeSettings();
+ void readSettings();
+
+ PackageDetails* details;
+ QCString cachedIpkgStatusOutput;
+ QCString cachedIpkgInfoOutput;
+};
+
+#endif // PACKAGEMANAGER_H
diff --git a/noncore/unsupported/oipkg/packagemanagerbase.ui b/noncore/unsupported/oipkg/packagemanagerbase.ui
new file mode 100644
index 0000000..9d5a178
--- a/dev/null
+++ b/noncore/unsupported/oipkg/packagemanagerbase.ui
@@ -0,0 +1,268 @@
+<!DOCTYPE UI><UI>
+<class>PackageManagerBase</class>
+<widget>
+ <class>QWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Form1</cstring>
+ </property>
+ <property stdset="1">
+ <name>geometry</name>
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>257</width>
+ <height>290</height>
+ </rect>
+ </property>
+ <property stdset="1">
+ <name>caption</name>
+ <string>Package Manager</string>
+ </property>
+ <property>
+ <name>layoutMargin</name>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>3</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>3</number>
+ </property>
+ <widget row="0" column="0" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel1</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Section:</string>
+ </property>
+ </widget>
+ <widget row="2" column="0" rowspan="1" colspan="3" >
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout1</cstring>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>4</number>
+ </property>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>upgrade</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Upgrade all</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>doit</cstring>
+ </property>
+ <property stdset="1">
+ <name>sizePolicy</name>
+ <sizepolicy>
+ <hsizetype>7</hsizetype>
+ <vsizetype>0</vsizetype>
+ </sizepolicy>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Do it!</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QProgressBar</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>progress</cstring>
+ </property>
+ </widget>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>settings_btn</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string></string>
+ </property>
+ <property stdset="1">
+ <name>pixmap</name>
+ <pixmap>image0</pixmap>
+ </property>
+ </widget>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>find_btn</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string></string>
+ </property>
+ <property stdset="1">
+ <name>pixmap</name>
+ <pixmap>image1</pixmap>
+ </property>
+ </widget>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>info_btn</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string></string>
+ </property>
+ <property stdset="1">
+ <name>pixmap</name>
+ <pixmap>image2</pixmap>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ <widget row="0" column="2" >
+ <class>QComboBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>subsection</cstring>
+ </property>
+ </widget>
+ <widget row="0" column="1" >
+ <class>QComboBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>section</cstring>
+ </property>
+ </widget>
+ <widget row="1" column="0" rowspan="1" colspan="3" >
+ <class>QListView</class>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Package</string>
+ </property>
+ <property>
+ <name>clickable</name>
+ <bool>true</bool>
+ </property>
+ <property>
+ <name>resizeable</name>
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Description</string>
+ </property>
+ <property>
+ <name>clickable</name>
+ <bool>true</bool>
+ </property>
+ <property>
+ <name>resizeable</name>
+ <bool>true</bool>
+ </property>
+ </column>
+ <column>
+ <property>
+ <name>text</name>
+ <string>Size</string>
+ </property>
+ <property>
+ <name>clickable</name>
+ <bool>true</bool>
+ </property>
+ <property>
+ <name>resizeable</name>
+ <bool>true</bool>
+ </property>
+ </column>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>list</cstring>
+ </property>
+ <property stdset="1">
+ <name>allColumnsShowFocus</name>
+ <bool>true</bool>
+ </property>
+ </widget>
+ </grid>
+</widget>
+<images>
+ <image>
+ <name>image0</name>
+ <data format="XPM.GZ" length="1897">789c5dd3c972db381006e0bb9f82e5beb9527fb88baca939387b9c7851363b49e50082a4e445966dc98b3c35ef3e602f4c3cd6e9d3df683420f8f94e7472b41fed3cdf5aadddfad4477eee6ea29df676b1d8fcfcf5f73f5bdb491a2559546751bafd6c6b7bba8e7c74b0bcec0660124031ff0d26cfaec2474c6aaf6e4757bcbe1e9cc4630e7162fd66a3a5be50e7ea925d9969aeae34ff31388dd3d081f373752ec66f4bfd2b766da61b732af547ea4aebdfa8bde4b41a9c2559acf907b3aebf505bbf4fec7a7433ba663b7396b0cfd495fa44adfbe3ed68599f9b33f1f7c17932d6bf16e7b1d64fd5364f6b96fde896edf24aeb63b3e6976add9feecdb9e4fd68c7ebbbc1456a392a711117fcd8b05417da9fefaf70a31bb3d66fd4b59ed79bb5ff5cdd6afddde0322d139defc12c392dd585e61bb3e60bb62b751e9c9a0b39dfcc5cca7ed7ea5a723a339762cb6d3e9e679295added70bb3e62bf144e7c737b3e62fcd938c9daaedbe0e464bff477633a9f57c4e5c59bf2f83ab2c58ea0fcd15f7a735bba96a9df7caacf564ae1a36bfa7dad7addc0f3d9a6bcf39ffffb9dc252e67f37d3bef3ab92ff07e4ddb383ddf9eba9379c0efd1173ed5fc585dfa82f7e3dfdfb7c12de7fc5edba22d6bd98fdf6bdbb5e1c2b99e7fdfaeec529defa3ba54bf63779dd379b3c17dd9757dc9fe2aee53cd3f8fe6f5b4cbeec3373dbb53f792233137b27e7fb4ccffdeace7bb1a2db9f5efe53cd3b57d407068e0d1a2432f196698e3146738c70516b8c41257b896df052bac718b3bdce3019b903c62172fe4cde1155ee30ddee21dde630f1ff011fb38d09e8738c2149fc2b77bf88c2ff81ab26f360b8ec31427f88e1f884396842cfd3d2732e428506212b2fd3fd7715aa12610910b49f2e7bae99a1af2d492474cddffd7514f331434a3399d3edd2f6467744e17b4a04b5ad2155d3fd9ef986e688515ade9364c7bf8f43ee92eacbda707dad023ed6efffbd7d67f2c679e40</data>
+ </image>
+ <image>
+ <name>image1</name>
+ <data format="XPM.GZ" length="1182">789c55d34b739b301007f0bb3f05636e9e0e0181304ca78724b6f3b4e3043b76d2e94148c28f183b7ec7e9f4bb97d52ea4151cf4fbaf249619386b58e37ed76a9cd5b63bb19b494b4ec5c66aa87d9e9f7efefaf1bb56f702abb8796c79f56fb5ba6349abb75a6a9827c5dc76cd008e8801726c18c105ec1225f205e8b965b583840b288901d2368c0a9ac58218211551225320733dc9ccde47a01f33c962200372e613ef91dce50cd82772e4aba1085cdfbc7b0fc91517c00130644184d52b64e88566ef3b918766b126c6589d5734d536304a632f0e804fc038682aacee0ca5283a017e0285145a48e0033265a9a9ce88213200a641445dad916535238a54018740c963afe9037da410d89547d4d8c60752869203af89027947d4d29cec1aaa983753e033326578540b592ebe45aa5099a34e40c59550e6abbb216ae4a5a12eab2ba466c88b923a041e892172020420df2a9abd53a2409e1335726ba8339699bd076288dc130572032c6ac4bc62065c1a662517c40ce938b64885908e1926513a9b4c67735125f6fc6db1c897ab775926729d2ff27c53fcd465924e8a607f387e548938eef3c3f6789a7d259fdbf3e9c565ab6d9749e7eafae6b675b7beef564f17bdf6faa1dd7f7c4acac4e988a2c1ee60f89c94493146e3d1cbabeb255f493192840dfde4dfa48806c1ff09644efdcff7da5f08a60ed0</data>
+ </image>
+ <image>
+ <name>image2</name>
+ <data format="XPM.GZ" length="702">789c7dd1c96ac3301006e0bb9f4224b75092d891b550fa082d3d164a0f238d27abb33a1ba5ef5ecfd89098868e7cd0f75b23c97834501fefaf6a304a0e1554f3a8e20cf66a80c7b2bc7e7ebd7c27bd54abfac9ac4a7b4f496fa8a27adbac0b9e633def8fa5986b66ea783067cccc672ef3cc0d53a77aac659f8310b4d3c03c330d98dc08fb2db1e19c692736b513e652186c6e0373d7d2378c4c37b1e864f1b1617d29e145189c77b2f8da121bae985efbd46be6b665de300863cdc88496be61c5840800c282197430417a17420c10907962c63c9a98334b214688f276cac4820773cf244319192609a5e48f74ea9fa40f21e27d52f016d3d92d99132d80086ec97255ae3744dbbb2ec4dd9e4abc4f0e441576926379c2ce5978be5cbbc9704b84dd1bc29f64d8f43cfcae9fe7e417c79f9e92</data>
+ </image>
+</images>
+<connections>
+ <connection>
+ <sender>settings_btn</sender>
+ <signal>clicked()</signal>
+ <receiver>Form1</receiver>
+ <slot>doSettings()</slot>
+ </connection>
+ <connection>
+ <sender>find_btn</sender>
+ <signal>clicked()</signal>
+ <receiver>Form1</receiver>
+ <slot>doFind()</slot>
+ </connection>
+ <connection>
+ <sender>info_btn</sender>
+ <signal>clicked()</signal>
+ <receiver>Form1</receiver>
+ <slot>doDetails()</slot>
+ </connection>
+ <connection>
+ <sender>list</sender>
+ <signal>doubleClicked(QListViewItem*)</signal>
+ <receiver>Form1</receiver>
+ <slot>doDetails()</slot>
+ </connection>
+ <connection>
+ <sender>upgrade</sender>
+ <signal>clicked()</signal>
+ <receiver>Form1</receiver>
+ <slot>doUpgrade()</slot>
+ </connection>
+ <slot access="public">doFind()</slot>
+ <slot access="public">doDetails()</slot>
+ <slot access="public">doSettings()</slot>
+ <slot access="public">doUpgrade()</slot>
+</connections>
+</UI>
diff --git a/noncore/unsupported/oipkg/pkdesc.ui b/noncore/unsupported/oipkg/pkdesc.ui
new file mode 100644
index 0000000..494d3d6
--- a/dev/null
+++ b/noncore/unsupported/oipkg/pkdesc.ui
@@ -0,0 +1,96 @@
+<!DOCTYPE UI><UI>
+<class>PackageDetails</class>
+<widget>
+ <class>QDialog</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Form7</cstring>
+ </property>
+ <property stdset="1">
+ <name>geometry</name>
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>221</width>
+ <height>291</height>
+ </rect>
+ </property>
+ <property stdset="1">
+ <name>caption</name>
+ <string>(pkgname)</string>
+ </property>
+ <property>
+ <name>layoutMargin</name>
+ </property>
+ <property>
+ <name>layoutSpacing</name>
+ </property>
+ <vbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>6</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>3</number>
+ </property>
+ <widget>
+ <class>QTextView</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>description</cstring>
+ </property>
+ </widget>
+ <widget>
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout4</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>install</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Install</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>remove</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Remove</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QToolButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>ignore</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Ignore</string>
+ </property>
+ </widget>
+ </hbox>
+ </widget>
+ </vbox>
+</widget>
+</UI>
diff --git a/noncore/unsupported/oipkg/pkfind.ui b/noncore/unsupported/oipkg/pkfind.ui
new file mode 100644
index 0000000..7a24c00
--- a/dev/null
+++ b/noncore/unsupported/oipkg/pkfind.ui
@@ -0,0 +1,51 @@
+<!DOCTYPE UI><UI>
+<class>Search</class>
+<widget>
+ <class>QDialog</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Form5</cstring>
+ </property>
+ <property stdset="1">
+ <name>geometry</name>
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>196</width>
+ <height>55</height>
+ </rect>
+ </property>
+ <property stdset="1">
+ <name>caption</name>
+ <string>Search Packages</string>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>11</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel4</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Find:</string>
+ </property>
+ </widget>
+ <widget>
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>pattern</cstring>
+ </property>
+ </widget>
+ </hbox>
+</widget>
+</UI>
diff --git a/noncore/unsupported/oipkg/pksettings.ui b/noncore/unsupported/oipkg/pksettings.ui
new file mode 100644
index 0000000..f182752
--- a/dev/null
+++ b/noncore/unsupported/oipkg/pksettings.ui
@@ -0,0 +1,176 @@
+<!DOCTYPE UI><UI>
+<class>PackageManagerSettings</class>
+<widget>
+ <class>QDialog</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Form4</cstring>
+ </property>
+ <property stdset="1">
+ <name>geometry</name>
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>549</width>
+ <height>683</height>
+ </rect>
+ </property>
+ <property stdset="1">
+ <name>caption</name>
+ <string>Package Servers</string>
+ </property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>11</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget row="3" column="0" rowspan="1" colspan="2" >
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout4</cstring>
+ </property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget row="0" column="1" >
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>servername</cstring>
+ </property>
+ </widget>
+ <widget row="0" column="0" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel1_3</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Name:</string>
+ </property>
+ </widget>
+ <widget row="1" column="1" >
+ <class>QLineEdit</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>serverurl</cstring>
+ </property>
+ </widget>
+ <widget row="1" column="0" >
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>TextLabel2_3</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>URL:</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget row="2" column="0" >
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>newserver</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>New</string>
+ </property>
+ <property stdset="1">
+ <name>autoDefault</name>
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget row="2" column="1" >
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>removeserver</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Remove</string>
+ </property>
+ <property stdset="1">
+ <name>autoDefault</name>
+ <bool>false</bool>
+ </property>
+ </widget>
+ <widget row="1" column="0" rowspan="1" colspan="2" >
+ <class>QListBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>servers</cstring>
+ </property>
+ <property stdset="1">
+ <name>selectionMode</name>
+ <enum>Multi</enum>
+ </property>
+ </widget>
+ <widget row="0" column="0" rowspan="1" colspan="2" >
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout2</cstring>
+ </property>
+ <hbox>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget>
+ <class>QLabel</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Servers</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>Servers</string>
+ </property>
+ </widget>
+ <spacer>
+ <property>
+ <name>name</name>
+ <cstring>Spacer2</cstring>
+ </property>
+ <property stdset="1">
+ <name>orientation</name>
+ <enum>Horizontal</enum>
+ </property>
+ <property stdset="1">
+ <name>sizeType</name>
+ <enum>Expanding</enum>
+ </property>
+ <property>
+ <name>sizeHint</name>
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </hbox>
+ </widget>
+ </grid>
+</widget>
+</UI>
diff --git a/noncore/unsupported/oipkg/qipkg.pro b/noncore/unsupported/oipkg/qipkg.pro
new file mode 100644
index 0000000..90d8703
--- a/dev/null
+++ b/noncore/unsupported/oipkg/qipkg.pro
@@ -0,0 +1,13 @@
+DESTDIR = $(QPEDIR)/bin
+TEMPLATE = app
+CONFIG = qt warn_on release
+HEADERS = packagemanager.h
+SOURCES = packagemanager.cpp \
+ main.cpp
+INCLUDEPATH += $(QPEDIR)/include
+DEPENDPATH += $(QPEDIR)/include
+LIBS += -lqpe
+INTERFACES = packagemanagerbase.ui pkdesc.ui pkfind.ui pksettings.ui
+TARGET = qipkg
+
+TRANSLATIONS = ../i18n/de/qipkg.ts
diff --git a/noncore/unsupported/oipkg/qpe-qipkg.control b/noncore/unsupported/oipkg/qpe-qipkg.control
new file mode 100644
index 0000000..3c3e7c8
--- a/dev/null
+++ b/noncore/unsupported/oipkg/qpe-qipkg.control
@@ -0,0 +1,9 @@
+Files: bin/qipkg apps/Settings/qipkg.desktop
+Priority: optional
+Section: qpe/settings
+Maintainer: Warwick Allison <warwick@trolltech.com>
+Architecture: arm
+Version: $QPE_VERSION-3
+Depends: qpe-base ($QPE_VERSION)
+Description: Package Manager
+ A GUI front-end to ipkg for the Qtopia environment.