* Rename top level ipkg directory to opkg
authorticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Mon, 15 Dec 2008 04:18:06 +0000 (04:18 +0000)
committerticktock35 <ticktock35@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>
Mon, 15 Dec 2008 04:18:06 +0000 (04:18 +0000)
git-svn-id: http://opkg.googlecode.com/svn/trunk@8 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358

106 files changed:
AUTHORS
ChangeLog
INSTALL
Makefile.am
README
TODO
args.c
args.h
conffile.c
conffile.h
conffile_list.c
configure.ac
familiar/control-unstripped.in
familiar/control.in
familiar/libipkg-control.in [deleted file]
familiar/libipkg-dev-control.in [deleted file]
familiar/libopkg-control.in [new file with mode: 0644]
familiar/libopkg-dev-control.in [new file with mode: 0644]
file_util.c
hash_table.c
hash_table.h
intercept/depmod
intercept/ldconfig
intercept/update-modules
ipkg-frontend.c [deleted file]
ipkg.c [deleted file]
ipkg.h [deleted file]
ipkg.h.in [deleted file]
ipkg_cmd.c [deleted file]
ipkg_cmd.h [deleted file]
ipkg_conf.c [deleted file]
ipkg_conf.h [deleted file]
ipkg_configure.c [deleted file]
ipkg_configure.h [deleted file]
ipkg_download.c [deleted file]
ipkg_download.h [deleted file]
ipkg_extract_test.c [deleted file]
ipkg_hash_test.c [deleted file]
ipkg_install.c [deleted file]
ipkg_install.h [deleted file]
ipkg_message.c [deleted file]
ipkg_message.h [deleted file]
ipkg_remove.c [deleted file]
ipkg_remove.h [deleted file]
ipkg_upgrade.c [deleted file]
ipkg_upgrade.h [deleted file]
ipkg_utils.c [deleted file]
ipkg_utils.h [deleted file]
libbb/libbb.h
libbb/unarchive.c
libipkg.c [deleted file]
libipkg.h [deleted file]
libipkg.pc.in [deleted file]
libopkg.c [new file with mode: 0644]
libopkg.h [new file with mode: 0644]
libopkg.pc.in [new file with mode: 0644]
md5.c
nv_pair.c
nv_pair_list.c
opkg-frontend.c [new file with mode: 0644]
opkg.c [new file with mode: 0644]
opkg.h [new file with mode: 0644]
opkg.h.in [new file with mode: 0644]
opkg_cmd.c [new file with mode: 0644]
opkg_cmd.h [new file with mode: 0644]
opkg_conf.c [new file with mode: 0644]
opkg_conf.h [new file with mode: 0644]
opkg_configure.c [new file with mode: 0644]
opkg_configure.h [new file with mode: 0644]
opkg_download.c [new file with mode: 0644]
opkg_download.h [new file with mode: 0644]
opkg_extract_test.c [new file with mode: 0644]
opkg_hash_test.c [new file with mode: 0644]
opkg_install.c [new file with mode: 0644]
opkg_install.h [new file with mode: 0644]
opkg_message.c [new file with mode: 0644]
opkg_message.h [new file with mode: 0644]
opkg_remove.c [new file with mode: 0644]
opkg_remove.h [new file with mode: 0644]
opkg_upgrade.c [new file with mode: 0644]
opkg_upgrade.h [new file with mode: 0644]
opkg_utils.c [new file with mode: 0644]
opkg_utils.h [new file with mode: 0644]
pkg.c
pkg.h
pkg_depends.c
pkg_depends.h
pkg_dest.c
pkg_dest.h
pkg_dest_list.c
pkg_extract.c
pkg_hash.c
pkg_hash.h
pkg_parse.c
pkg_src.c
pkg_src_list.c
pkg_vec.c
pkg_vec.h
sprintf_alloc.c
str_list.c
str_util.c
update-alternatives
user.c
void_list.c
xregex.c
xsystem.c

diff --git a/AUTHORS b/AUTHORS
index a4a42c8..17af84f 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,5 +1,5 @@
-ipkg actually is maintained by Pierluigi Frullani <pigi@frumar.it>
+opkg actually is maintained by Pierluigi Frullani <pigi@frumar.it>
 
-ipkg is being written by Carl Worth <cworth@handhelds.org> and Steve
+opkg is being written by Carl Worth <cworth@handhelds.org> and Steve
 Ayer <steven.ayer@compaq.com>
 
index 5b86406..d13b3fb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -34,7 +34,7 @@
 
 2006-02-02 pigi ( pigi@frumar.it)
         * Version update to 0.99.158
-        * Modified the way upgrade handle the removing of a package, to be sure that ipkg doesn't break busybox upgrade
+        * Modified the way upgrade handle the removing of a package, to be sure that opkg doesn't break busybox upgrade
         *          this should fix #1503
         
 2006-01-30 pigi ( pigi@frumar.it)
 2005-12-15 pigi ( pigi@frumar.it)
         * Version update to 0.99.155
         * Added a function to remove the package that is being upgraded.
-        * Fixed a problem when installing by hand. Now ipkg knows that a package has been selected by hand, 
+        * Fixed a problem when installing by hand. Now opkg knows that a package has been selected by hand, 
         *       and, if every check returns ok, it install the wanted package, instead of selecting one from feed.
         *       Moreover, now downgrade should works again.
-        * Fixed the "Replaces" bug. Now ipkg is able to replace a package also if it doesn't conflict.
+        * Fixed the "Replaces" bug. Now opkg is able to replace a package also if it doesn't conflict.
         * Other minor changes in debug options
 
 2005-09-15 pigi ( pigi@frumar.it)
         * Added a little fix for an off-by-one error in checking for depends.
 
 2005-07-29 pigi ( pigi@frumar.it)
-        * Applied a patch for the GNU tar compatibility . Now ipkg can handle filenames > 100 char.
+        * Applied a patch for the GNU tar compatibility . Now opkg can handle filenames > 100 char.
 
 2005-07-29 pigi ( pigi@frumar.it)
        * Version update to 0.99.153
-        * Fixed a problem with Provides:. Now ipkg is able to install foo when foo is provided by bar, and is able to determine the best candidate based on 
+        * Fixed a problem with Provides:. Now opkg is able to install foo when foo is provided by bar, and is able to determine the best candidate based on 
         * package name. This also fix #1328
 
 2005-07-06 pigi ( pigi@frumar.it)
@@ -89,7 +89,7 @@
 
 2005-05-11 pigi ( pigi@frumar.it)
        * Version update to 0.99.149
-        * Added the possibility to choice the ipkglibdir from configure ( --with-libipkgdir )
+        * Added the possibility to choice the opkglibdir from configure ( --with-libopkgdir )
 
 2005-04-10 pigi ( pigi@frumar.it)
        * Version update to 0.99.148
 
 2005-03-30 pigi ( pigi@frumar.it)
        * Version update to 0.99.147
-        * Found a bug in ipkg_install when freeing a cursor 
+        * Found a bug in opkg_install when freeing a cursor 
 
 2005-03-28 pigi ( pigi@frumar.it)
        * Version update to 0.99.146
-        * Modified the ipkg_error messaging to collect all the messages at the end of the program
+        * Modified the opkg_error messaging to collect all the messages at the end of the program
 
 2005-03-26 pigi ( pigi@frumar.it)
         * Little bug in message when "depends broken" 
 
 2005-03-14 pigi ( pigi@frumar.it)
        * Version update to 0.99.145
-       * Found a bug in ipkg remove when a package was depending in itself and ipkg where asked to "-recursive"
+       * Found a bug in opkg remove when a package was depending in itself and opkg where asked to "-recursive"
           This fix bug # 1301
         * A very little beautify in args.c
 
 2005-03-07 pigi ( pigi@frumar.it)
-       * Added the check for md5 in resolv_conf_file. Now ipkg ask for confirmation only it the files differ
+       * Added the check for md5 in resolv_conf_file. Now opkg ask for confirmation only it the files differ
 
 2005-02-22 pigi ( pigi@frumar.it)
        * Version update to 0.99.144
-       * A little fix suggested by drw in ipkg_conf.c
-       * Changed the ipkg.h to be build in automake for oe mechanism . This will enhance the building phase 
+       * A little fix suggested by drw in opkg_conf.c
+       * Changed the opkg.h to be build in automake for oe mechanism . This will enhance the building phase 
           by honouring the lib hierarchy choose by users
         * Changes in automake to honour the new building mechanism
 
 2005-02-20 pigi ( pigi@frumar.it)
        * Version update to 0.99.143
-       * libipkg.h: reverting the previous modify
-        * ipkg_conf.c: fixing a probable bug in list_dir that fix problems with opie-packagemanager ( tanks to drw for signaling)
+       * libopkg.h: reverting the previous modify
+        * opkg_conf.c: fixing a probable bug in list_dir that fix problems with opie-packagemanager ( tanks to drw for signaling)
 
 2005-02-20 pigi ( pigi@frumar.it)
-       * libipkg.h: added some define to fix the broken external interface after 0.99.139 and lists_dir
+       * libopkg.h: added some define to fix the broken external interface after 0.99.139 and lists_dir
 
 2005-02-17 pigi ( pigi@frumar.it)
        * pkg_depends.c: applied patch from rjt@cambridgebroadband.com to remove some c99ism 
 
 2005-02-06 pigi ( pigi@frumar.it)
        * Version update to 0.99.141
-        * Added space in ipkg_message to give more readible messages
+        * Added space in opkg_message to give more readible messages
         * Corrected a problem when creating the directories in pkg_dest_init
 
 2005-02-05 pigi ( pigi@frumar.it)
        * Version update to 0.99.140
-        * Fixed the bug in ipkg_conf for a wrong pointer.
+        * Fixed the bug in opkg_conf for a wrong pointer.
 
 2005-02-05 pigi ( pigi@frumar.it)
        * Version update to 0.99.139
-        * Fixed the "replaces" problem  reported by pb_. Now ipkg is able to resolve a "replace/conflict" reference
+        * Fixed the "replaces" problem  reported by pb_. Now opkg is able to resolve a "replace/conflict" reference
         * Added the possibility to keep the lists file in a different location. Fullfill enh #1276
 
 2005-02-02 pigi ( pigi@frumar.it)
        * libbb.h: patch for the uclib 
 
 2005-01-14 pigi ( pigi@frumar.it)
-       * ipkg_install.c: applied patch from rjt@cambridgebroadband.com to remove some c99ism 
+       * opkg_install.c: applied patch from rjt@cambridgebroadband.com to remove some c99ism 
 
 2005-01-14 jamey ( jamey@handhelds.org )
        * pkg_hash.c: applied patch from Jean Tourrilhes to allow default
        * Version update to 0.99.134
         * Added a new option for listing only the installed packages. Asked by pb_ but really important
        * Little modification to autoconfigure.sh 
-       * removed fileutils dependencies that has disappeared from 0.8 in control-cl.in  control-unstripped.in libipkg-control.in  
+       * removed fileutils dependencies that has disappeared from 0.8 in control-cl.in  control-unstripped.in libopkg-control.in  
 
 2004-11-18 pigi ( pigi@frumar.it)
        * Version update to 0.99.133
 2004-09-20 pigi ( pigi@frumar.it)
        * Version update to 0.99.131
         * Added a lot of debug info in DEBUG2
-        * Added a check in ipkg_install.c to permit replacing of existing file when installing a package
-        * from a file ( not an upgrade ) when ipkg find a file clash but the owner of the package is the 
+        * Added a check in opkg_install.c to permit replacing of existing file when installing a package
+        * from a file ( not an upgrade ) when opkg find a file clash but the owner of the package is the 
         * same. That should fix the #1246
 
 2004-09-02 pigi ( pigi@frumar.it)
 
 2004-09-01 pigi ( pigi@frumar.it)
         * Applied patches from pb_ (bug #1244)
-        * Added EXTRADIST = ipkg.c and others in Makefile.am as in ipkg.0.99.xxx.tar.gz the ipkg.c was missing. ( 
+        * Added EXTRADIST = opkg.c and others in Makefile.am as in opkg.0.99.xxx.tar.gz the opkg.c was missing. ( 
           reported by odvard12@yahoo.com )
        * Version update to 0.99.129
 
 2004-08-19 Florian <florian.boor@kernelconcepts.de>
        * Version update to 0.99.128
-       * libipkg.c, ipkg_cmd.c: Fixed return value zero if installation
+       * libopkg.c, opkg_cmd.c: Fixed return value zero if installation
          failed. Changed text because failing to install a package
           is not necessarily a bug :-)
        * Makefile.in, libbb/Makefile.in: Removed autogenerated files.
        * configure.ac: updated to 0.99.126
 2004-06-12 florian <florian.boor@kernelconcepts.de>
        * Makefile.am: Added some missing headers to the list.
-       * libipkg.pc.in: Fixed hardcoded prefix... tsts
+       * libopkg.pc.in: Fixed hardcoded prefix... tsts
 2004-06-12 pigi ( pigi@frumar.it)
         * pb_ patch for setuid bit in unarchive
 2004-06-05 pigi ( pigi@frumar.it)
 2004-05-21 pigi ( pigi@frumar.it)
        * configure.ac: updated to 0.99.124
         * import the kergoth patch for Makefile.am to fix the linking problems on arch <> arm
-        * added the ipkg remove <regexp> feature.
-        * fixed the ipkg usage message, 'cause in "ifdef LIBIPKG" we don't have the ipkg info field version.
+        * added the opkg remove <regexp> feature.
+        * fixed the opkg usage message, 'cause in "ifdef LIBOPKG" we don't have the opkg info field version.
         * added the message "No package removed" if no package has been removed. This to avoid misunderstanding
           with the successfully done message at the exit of execution.
 2004-05-16 pigi ( pigi@frumar.it)
         * Anothere little fix. Added the version number in control.in. This should fix definitelly the problem with dependencies
 2004-05-16 pigi ( pigi@frumar.it)
        * configure.ac: updated to 0.99.122-2
-        * New subrelease released to correct the problem for dependencies (libipkg >= 0.99.122-1) in ipkg control file
+        * New subrelease released to correct the problem for dependencies (libopkg >= 0.99.122-1) in opkg control file
 2004-05-14 pigi ( pigi@frumar.it)
        * configure.ac: updated to 0.99.122-1
         * needed for a recompilation with the libtool updated. This could fix the #1209 created by my old libtool version
         * cleaned the cvs dir by removing the really unneeded busybox directory
 2004-05-10 pigi ( pigi@frumar.it)
        * configure.ac: updated to 0.99.122
-        * pb_, cworth and I discussed a bit on ipkg output to users. We agreed on removing some confusing
+        * pb_, cworth and I discussed a bit on opkg output to users. We agreed on removing some confusing
         * messages, moving them to a debug level of verbosity.
-        * I do added also some message to user indicating the phase ipkg is in, and a global ending message
+        * I do added also some message to user indicating the phase opkg is in, and a global ending message
         * informing the user for the status of operation.
         * This fixes the #1206, and hopefully does not introduce others ;-) 
 2004-05-03 pigi ( pigi@frumar.it)
         * I' ve also included the fix for the empty lists as for bug # 1136 reported and suggested by k.vangelder@chello.nl 
 2004-03-17 pigi ( pigi@frumar.it)
         *  Added the implement for Essential in status file. This is needed to avoid the unintentional remove
-           of essential packages. In effect the command "ipkg remove ipkg" worked without problems, but then
+           of essential packages. In effect the command "opkg remove opkg" worked without problems, but then
            it was difficult to reinstall. This fix the bug # 867
 2004-03-15 jamey <jamey@handhelds.org>
        * configure.ac: updated to 0.99.117
            the default.
            This fixes the bug #1099
 2004-03-07 pigi ( pigi@frumar.it)
-        *  Minimal changes for a clean compile in libipkg.c ( so we can close the bug# 1119 )
+        *  Minimal changes for a clean compile in libopkg.c ( so we can close the bug# 1119 )
 2004-03-03 pigi ( pigi@frumar.it)
         * Missing \n in Size and Source Fields.
 2004-03-03 pigi ( pigi@frumar.it)
-        * Florian noticed a free missiing in ipkg_cmd.c ( should sleep more at night ) 
+        * Florian noticed a free missiing in opkg_cmd.c ( should sleep more at night ) 
           it was in an (almost) unsed part of the code ( old code ) but, just in case...
         * Changed a comment in pkg.c ( it was in italian ) and added a bit of explain in 
           pkg_formatted_field
 2004-03-02 jamey <jamey@handhelds.org>
        * configure.ac: updated to 0.99.116
        * pkg.h: from Pigi: pkg_formatted_info and pkg_formatted_field now allocate the strings they fill in
-       * pkg.c, ipkg_cmd.c: from Pigi: updated to the new pkg.h interface 
+       * pkg.c, opkg_cmd.c: from Pigi: updated to the new pkg.h interface 
 2004-02-29 florian <florian.boor@kernelconcepts.de>
        pkg.c: Pigi and me poked around a little bit and located the cause of
               latest segfault. strncat is not used correctly in pkg_formatted_info
                   BUT: There are many similar bugs remaining!
 2004-02-24 jamey <jamey@handhelds.org>
        * configure.ac: updated to 0.99.115
-       * ipkg_cmd.c: segv caught by pigi: buffer freed in loop but used on next iterations.  bug squashed.
+       * opkg_cmd.c: segv caught by pigi: buffer freed in loop but used on next iterations.  bug squashed.
        * user.c: realloc question buffer if it is too short so that messages are not truncated.
 2004-02-20 jamey <jamey@handhelds.org>
        * configure.ac: updated to 0.99.114
        * libbb/unarchive.c: patch from pigi@frumar.it: fix erroneous invalid header checksum message
 2004-02-19 jamey <jamey.hicks@hp.com>
        * configure.ac: update to 0.99.113
-       * libipkg.c: patch from drw to fix ipkg list
+       * libopkg.c: patch from drw to fix opkg list
 2004-02-19 florian <florian.boor@kernelconcepts.de>
        * Some minor changes to make code compile on more compilers.
 2004-02-14 jamey <jamey.hicks@hp.com>
         * pkg.c: wim delvaux's patch for status file in other destinations
 2004-01-23 florian <florian.boor@kernelconcepts.de>
        * Applied Dan's patch that adds a package download command to
-         libipkg.      
+         libopkg.      
 2004-01-20 florian <florian.boor@kernelconcepts.de>
        * Applied Dan's changes to work incuded from a C++ app. 
 2004-01-15 jamey
        * configure.ac: updated to 0.99.110
-       * libipkg.c: added default callbacks for output
-       * ipkg_conf.c: default verbosity to 1
+       * libopkg.c: added default callbacks for output
+       * opkg_conf.c: default verbosity to 1
 2004-01-12 jamey
        * configure.ac: updated to 0.99.109
-       * ipkg_install.c: fix potential segv sprintf_alloc with fewer args than required by format string (yay valgrind)
+       * opkg_install.c: fix potential segv sprintf_alloc with fewer args than required by format string (yay valgrind)
        * sprintf_alloc.c: add null pointer checking
 2004-01-12 jamey
        * configure.ac: updated to 0.99.108
-       * Makefile.am, familiar/: use ipkg-cl as default executable, install as ipkg via update-alternatives
+       * Makefile.am, familiar/: use opkg-cl as default executable, install as opkg via update-alternatives
 2004-01-12 jamey
        * configure.ac: updated to 0.99.107
        * void_list.c: check for null data
        * Added void* parameter to some callbacks. 
 
 2003-12-02 florian <florian.boor@kernelconcepts.de>
-       * Added familiar/ipkg-cl.control.in, which is a prototype of
-         control file for ipkg-cl package creation.
+       * Added familiar/opkg-cl.control.in, which is a prototype of
+         control file for opkg-cl package creation.
 2003-12-01 florian <florian.boor@kernelconcepts.de>
-       * added ipkg command line tool using libipkg, binary is known as ipkg-cl
-       * ipkg-frontend.c: source for this tool
+       * added opkg command line tool using libopkg, binary is known as opkg-cl
+       * opkg-frontend.c: source for this tool
        * libbb/Makefile.am: Removed changing of CFLAGS, this avoids a nasty warning.
-       * Makefile.am: Same fix and addition of new target creating ipkg-cl.
+       * Makefile.am: Same fix and addition of new target creating opkg-cl.
        * removed ltmain.sh, libtool which seem to be created by autostuff
        
 2003-12-01 jamey
        * configure.ac: updated to 0.99.106
-       * pkg.c, ipkg_conf.c: check for null pointers (null pkg->dest in particular)
+       * pkg.c, opkg_conf.c: check for null pointers (null pkg->dest in particular)
 2003-11-11 jamey
        * configure.ac: updated to 0.99.105
-       * ipkg_conf.c: added verbosity option to conf file
+       * opkg_conf.c: added verbosity option to conf file
 2003-11-11 jamey
        * configure.ac: updated to 0.99.104
-       * ipkg_install.c: removed spurious calls to fflush, remove obsolete maintainer scripts on upgrade
-       * ipkg_remove.c: remove unused function: remove_conffiles
+       * opkg_install.c: removed spurious calls to fflush, remove obsolete maintainer scripts on upgrade
+       * opkg_remove.c: remove unused function: remove_conffiles
 2003-11-11 jamey
        * configure.ac: updated to 0.99.103
-       * libipkg.pc.in, configure.ac: pkgconfig for libipkg
-       * ipkg_conf.c, pkg.c: check for error on fopen
+       * libopkg.pc.in, configure.ac: pkgconfig for libopkg
+       * opkg_conf.c, pkg.c: check for error on fopen
        * pkg_hash.c: reduced verbosity
        * libtool: arm-linux-strip does not support --strip-debug on .a files
 2003-11-10 jamey
        * configure.ac: updated to 0.99.102
-       * ipkg_cmd.c: compute architecture_priority of packages in database before doing download command
-       * conffile.c file_util.[ch] ipkg_install.c: better separation of installation root filenames and actual filenames
+       * opkg_cmd.c: compute architecture_priority of packages in database before doing download command
+       * conffile.c file_util.[ch] opkg_install.c: better separation of installation root filenames and actual filenames
        * pkg.h: added prototype for pkg_free_installed_files
 2003-11-10 jamey
        * configure.ac: updated to 0.99.101
-       * libipkg changes
+       * libopkg changes
        * generate .list files from file_hash
 2003-11-05 jamey
        * configure.ac: updated to 0.99.100
-       * ipkg_install.c: fix segv: was passing conflictee->parent instead of conflictee
+       * opkg_install.c: fix segv: was passing conflictee->parent instead of conflictee
 2003-10-08 jamey
        * configure.ac: updated to 0.99.99
-       * ipkg_install.c: use the root_dir after stripping off offline_root prefix
+       * opkg_install.c: use the root_dir after stripping off offline_root prefix
 2003-10-08 jamey
        * configure.ac: updated to 0.99.98
        * pkg_hash.c: fixed segv if replaced_by->len was 0
-       * ipkg_cmd.c: ipkg remove with no arguments will remove non-user leaf packages
-       * ipkg_remove.[ch]: export pkg_has_installed_dependents
+       * opkg_cmd.c: opkg remove with no arguments will remove non-user leaf packages
+       * opkg_remove.[ch]: export pkg_has_installed_dependents
        * pkg_depends.c: add pkg->parent to pkg->provides
-       * ipkg_install.c: strip offline_root prefix off of conffile name so comparing the md5sums should work
+       * opkg_install.c: strip offline_root prefix off of conffile name so comparing the md5sums should work
        * pkg.c: missing comma added
 2003-10-01 jamey
        * configure.ac: updated to 0.99.97
-       * ipkg_cmd.c: added whatdependsrec command to show what recursively depends on a package or packages
+       * opkg_cmd.c: added whatdependsrec command to show what recursively depends on a package or packages
        * pkg_vec.[ch]: added pkg_vec_clear_marks and pkg_vec_mark_if_matches
        * args.c: usage string updated
 2003-09-28 jamey
        * configure.ac: updated to 0.99.96
-       * ipkg_conf.c: adjusted verbosity
-       * ipkg_install.c: only remove replacee if it is also conflicted, per debian standard
+       * opkg_conf.c: adjusted verbosity
+       * opkg_install.c: only remove replacee if it is also conflicted, per debian standard
        * pkg_depends.c: only add to replaced_by if it also conflicts, per debian standard
                added pkg_provides, pkg_replaces, pkg_conflicts
        * pkg_hash.c: adjusted verbosity                  
 2003-09-28 jamey
        * configure.ac: updated to 0.99.95
-       * args.[ch], ipkg_cmd.c, ipkg_conf.[ch], ipkg_download.c, ipkg_install.c, ipkg_remove.c, pkg.[ch]:
-          Implemented -test mode for ipkg.
+       * args.[ch], opkg_cmd.c, opkg_conf.[ch], opkg_download.c, opkg_install.c, opkg_remove.c, pkg.[ch]:
+          Implemented -test mode for opkg.
 2003-09-28 jamey
        * configure.ac: updated to 0.99.94
        * pkg_hash.c: fix pkg_hash_fetch_best_installation_candidate so
        that one can install another provider of an installed package name
 2003-09-26 jamey
        * configure.ac: updated to 0.99.93
-       * ipkg_install.c: corrected message level depending on conf->force_depend
-       * ipkg_conf.c: check for duplicate src entries
+       * opkg_install.c: corrected message level depending on conf->force_depend
+       * opkg_conf.c: check for duplicate src entries
        * nv_pair_list.[ch]: added nv_pair_list_find
 2003-09-16 jamey
        * configure.ac: updated to 0.99.92
        * pkg_hash.c: updated old_pkg->installed_files list when setting file owner if it was previously owned by old_pkg
        * pkg_extract.c: use installed_file list if it exists in pkg_extract_data_file_names_to_file
        * pkg.[ch]: added pkg_write_filelist() and pkg_write_changed_filelists()
-       * ipkg_remove.c: do not call ipkg_conf_write_status_files from ipkg_remove
-       * ipkg_install.c: use ipkg_write_filelist()
+       * opkg_remove.c: do not call opkg_conf_write_status_files from opkg_remove
+       * opkg_install.c: use opkg_write_filelist()
        * ipgk_cmd.c: after writing status file, write any changed pkg filelists
 2003-08-20 11:02  jamey
        * configure.ac: updated to 0.99.89
 2003-08-06 18:34  jamey
        * configure.ac: updated to 0.99.88
        * pkg_hash: bug 942, declare internal induction variable
-       * ipkg_cmd.c, ipkg_conf.[ch], pkg_src.[ch], pkg_src_list.[ch]: bug 604, support Packages.gz
+       * opkg_cmd.c, opkg_conf.[ch], pkg_src.[ch], pkg_src_list.[ch]: bug 604, support Packages.gz
 2003-08-06 18:34  jamey
        * configure.ac: updated to 0.99.87
        * pkg.c: remove extra printing of Suggests field
        * pkg_depends.c: print info about recommendations as Notice instead of DEBUG
 2003-07-11 18:34  jamey
        * configure.ac: updated to 0.99.86
-       * ipkg.h, ipkg_cmd.c, ipkg_configure.c, ipkg_install.c, ipkg_remove.c: only write status file if something changed.
+       * opkg.h, opkg_cmd.c, opkg_configure.c, opkg_install.c, opkg_remove.c: only write status file if something changed.
 2003-07-11 18:34  jamey
        * configure.ac: updated to 0.99.85
        * pkg.c, pkg.h, pkg_depends.c, pkg_depends.h, pkg_parse.c: bug 885:
          add recommends and suggests
-       * args.c, ipkg_cmd.c, ipkg_cmd.h: add ipkg configure command
+       * args.c, opkg_cmd.c, opkg_cmd.h: add opkg configure command
        * pkg_vec.c: apply patch for bug 883
 2003-05-11 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.84
-       * pkg.c, ipkg-compare-versions.c: fix problem where . and - were not treated as separators in version comparison
+       * pkg.c, opkg-compare-versions.c: fix problem where . and - were not treated as separators in version comparison
 2003-04-11 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.83
-       * ipkg_install.c: use pkg->installed_size instead of pkg->size
-       * ipkg_cmd.c, ipkg_conf.c: put lists under offline_root if specified
+       * opkg_install.c: use pkg->installed_size instead of pkg->size
+       * opkg_cmd.c, opkg_conf.c: put lists under offline_root if specified
 2003-04-11 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.82
        * pkg_hash.c: ignore Replaces directive when a package replaces itself
 2003-04-07 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.79
        * pkg_hash.c: default architecture to host_cpu if unspecified
-       * ipkg_install.c, ipkg_download.c: refuse to install package with no architecture
+       * opkg_install.c, opkg_download.c: refuse to install package with no architecture
 2003-04-07 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.78
-       * args.[ch], ipkg_conf.[ch]: added query_all (-A)
-       * ipkg_cmd.c: finished implementing whatdepends, whatrequires, whatprovides, and whatconflicts
+       * args.[ch], opkg_conf.[ch]: added query_all (-A)
+       * opkg_cmd.c: finished implementing whatdepends, whatrequires, whatprovides, and whatconflicts
 2003-04-03 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.77
-       * ipkg_cmd.c: implemented whatdepends
-       * ipkg_conf.c: fixed typo
+       * opkg_cmd.c: implemented whatdepends
+       * opkg_conf.c: fixed typo
 2003-04-03 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.76
        * args.c: was zeroing args structure too late
-       * ipkg_conf.c: test for existence of /etc/ipkg.conf before trying to load it
+       * opkg_conf.c: test for existence of /etc/opkg.conf before trying to load it
 2003-04-03 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.75
        * familiar/rules: update postinst only to generate ipaqarch.conf if none exists
        * args.[ch]: added -t or --tmp-dir option to specify tmp-dir
 2003-04-03 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.74
-       * ipkg_cmd.c: avoid segv by only calling xregfree after xregcomp was called
+       * opkg_cmd.c: avoid segv by only calling xregfree after xregcomp was called
        * pkg_hash.c: prefer pkgs that are marked hold/prefer, next
        abstract pkgs that are installed, next latest pkg if one provider,
        give up if multiple providers are acceptable -- let user decide
 2003-04-03 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.71
        * pkg.c: Added pkg_name_version_and_architecture_compare and abstract_pkg_name_compare
-       * ipkg_cmd.c: allow multiple fields for info and status command.
+       * opkg_cmd.c: allow multiple fields for info and status command.
        Allow posix regexp's for package name in status, info, and list
        commands.
        * pkg_remove.c: fixed type error
        * pkg_hash.c: Provides functionality seems to be working again
 2003-04-02 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.70
-       * args.c, args.h, ipkg_conf.c, ipkg_conf.h, ipkg_install.c: implemented nodeps option
+       * args.c, args.h, opkg_conf.c, opkg_conf.h, opkg_install.c: implemented nodeps option
        * pkg_vec.[ch]: added [abstract_]pkg_vec_{contains,sort}
        * pkg.c: print which script not being run in offline root mode
 2003-04-02 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.69
        * pkg_vec.c: compare architecture to architecture, not to name
-       * ipkg_utils.c: do not exit, instead return NULL
-       * ipkg_install.c: do not exit, instead return -EINVAL
-       * ipkg_download.c: make sure to set pkg dest
-       * ipkg_cmd.c: notice instead of info for writing status file message
+       * opkg_utils.c: do not exit, instead return NULL
+       * opkg_install.c: do not exit, instead return -EINVAL
+       * opkg_download.c: make sure to set pkg dest
+       * opkg_cmd.c: notice instead of info for writing status file message
 2003-04-02 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.68
        * pkg_vec.c, pkg_depends.c: pkg_t's are the same if they have same name, version, and architecture 
 2003-04-01 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.67
-       * ipkg_install.c: one last check for supported architecture in ipkg_install_pkg
+       * opkg_install.c: one last check for supported architecture in opkg_install_pkg
        * pkg.c: make pkg_print_field less fragile by using strcasecmp,
        added support to print Conflicts
        * pkg_hash.c: if multiple candidates with right architecture
        satisfy constraint_fcn, return latest version
-       * ipkg_cmd.c: when verbosity > 1, show if conffiles have been
+       * opkg_cmd.c: when verbosity > 1, show if conffiles have been
        modified in info command
        * hash_table.c, hash_table.h: count number of elements in hash
        tables
        * pkg_parse.c, pkg.c: added Installed-Time as field saved to status file
 2003-04-01 Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.65
-       * ipkg_cmd.c, ipkg_conf.c: applied ipkg dest installation patch from Ben Lau <benlau@linux.org.hk>
-       * ipkg_cmd.c: fixed probably segv when using offline_root, fixed problem installing from local file.
-       * ipkg_conf.c: 
-         - Do not add default architectures if ipkg configuration files include architecture definitions.
-         - Look for /etc/ipkg/*.conf under offline root if using offline root mode
+       * opkg_cmd.c, opkg_conf.c: applied opkg dest installation patch from Ben Lau <benlau@linux.org.hk>
+       * opkg_cmd.c: fixed probably segv when using offline_root, fixed problem installing from local file.
+       * opkg_conf.c: 
+         - Do not add default architectures if opkg configuration files include architecture definitions.
+         - Look for /etc/opkg/*.conf under offline root if using offline root mode
        * void_list.h: added void_list_empty()
        * nv_pair_list.h: added nv_pair_list_empty()
 2003-03-28 14:30  Jamey Hicks <jamey@handhelds.org> 
        * configure.ac: 0.99.64
-       * pkg_hash.c: change fprintf stderr to ipkg_message
+       * pkg_hash.c: change fprintf stderr to opkg_message
        * pkg.h: added SF_MARKED and abstract_pkg_t state_flag field
        * pkg.c: include Provides, Replaces, and Architecture in status
        file
-       * ipkg_remove.c: make sure to print each dependent package only
+       * opkg_remove.c: make sure to print each dependent package only
        once
-       * ipkg_message.h: added IPKG_DEBUG2
-       * ipkg_install.c: modify message and level depending on
+       * opkg_message.h: added OPKG_DEBUG2
+       * opkg_install.c: modify message and level depending on
        force_depends
-       * ipkg_cmd.c: call pkg_info_preinstall_check before any
+       * opkg_cmd.c: call pkg_info_preinstall_check before any
        install/upgrade/remove action
        * ChangeLog, autoconfigure.sh, includes.h,
-       ipkg_conf.c, ipkg_remove.c, pkg.c, pkg.h, update-alternatives,
+       opkg_conf.c, opkg_remove.c, pkg.c, pkg.h, update-alternatives,
        xregex.h: applied kergoth's update-alternatives patch
-       * ipkg_cmd.c, ipkg_remove.c: remove maybe_broken_removal... which
+       * opkg_cmd.c, opkg_remove.c: remove maybe_broken_removal... which
        was an expensive no-op; before removing package, make sure that
        nothing is installed that depends on the apkgs **provided** by a
        package
        of file obsolescence and package replacements in progress
 2003-03-27 18:26  jamey
        * autoconfigure.sh: accidentally committed /usr/local/bin calls
-       * ipkg_conf.c: needed a strdup, set default verbosity back to 0
+       * opkg_conf.c: needed a strdup, set default verbosity back to 0
        * familiar/postinst: default architecture priorities
-       * Makefile.in, autoconfigure.sh, ipkg_cmd.c, ipkg_conf.c, pkg.c:
+       * Makefile.in, autoconfigure.sh, opkg_cmd.c, opkg_conf.c, pkg.c:
        both name and value in nv_pair_list must be actual strings
        * pkg_hash.c: do not try to invoke NULL constraint_fcn
-       * ipkg_install.c: added file_hash_{set,get}_file_owner, created
+       * opkg_install.c: added file_hash_{set,get}_file_owner, created
        check_downgrade
-       * ipkg_conf.c, ipkg_conf.h, ipkg_remove.c, pkg.c, pkg_hash.c,
+       * opkg_conf.c, opkg_conf.h, opkg_remove.c, pkg.c, pkg_hash.c,
        pkg_hash.h: added file_hash_{set,get}_file_owner
        * hash_table.c: check for key already being present in
        hash_table_insert
        * configure.ac: update to 0.99.63
-       * ipkg_hash_test.c: update due to new prototypes
-       * ipkg_conf.c: missed a conversion from str_list to nv_pair_list
-       * ipkg_install.c: minor tweaks
+       * opkg_hash_test.c: update due to new prototypes
+       * opkg_conf.c: missed a conversion from str_list to nv_pair_list
+       * opkg_install.c: minor tweaks
        * pkg.c, pkg.h: added pkg_info_preinstall_check to update
        pkg->arch_priority
        * pkg_depends.c, pkg_depends.h: use constrained
        pkg_hash_fetch_best_installation_candidate in
        pkg_hash_fetch_unsatisfied_dependencies
-       * pkg_hash.c, pkg_hash.h, ipkg_cmd.c, ipkg_upgrade.c: split
+       * pkg_hash.c, pkg_hash.h, opkg_cmd.c, opkg_upgrade.c: split
        pkg_hash_fetch_best_installation_candidate into a by name and a
        constrained version
-       * ipkg_install.c: block SIGINT while doing core of package
+       * opkg_install.c: block SIGINT while doing core of package
        installation (single package)
-       * ipkg_conf.c, ipkg_conf.h: support for architecture priority
+       * opkg_conf.c, opkg_conf.h: support for architecture priority
        * pkg_depends.c: cleanup, reindent
        * pkg.c, pkg.h: support for architecture_priority
-       * ipkg_cmd.c: installed SIGINT handler when upgrading or removing,
+       * opkg_cmd.c: installed SIGINT handler when upgrading or removing,
        support for architecture_priority
        * pkg_hash.c: added support for architecture priority, reindented
        * pkg_vec.c: minor cleanup
 2003-03-24  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.61
-       * familiar/postinst: mkdir -p /etc/ipkg
+       * familiar/postinst: mkdir -p /etc/opkg
 2003-03-24  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.61
-       * ipkg_conf.c: read configuration from all *.conf files in /etc/ipkg/
-       * familiar/postinst: create /etc/ipkg/*.conf according to platform ipkg is installed on
+       * opkg_conf.c: read configuration from all *.conf files in /etc/opkg/
+       * familiar/postinst: create /etc/opkg/*.conf according to platform opkg is installed on
 2003-03-20  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.60
        * various: added support for package architectures
        * configure.ac: do not test for malloc
-2003-03-17  Aman Gupta <ipkg@themastermind1.net>
+2003-03-17  Aman Gupta <opkg@themastermind1.net>
        * configure.ac: updated to 0.99.59
        * args.c: show all verbosity levels in usage info
        * args.h: changed default verbosity level to 1
-       * ipkg_cmd.c: ipkg_multiple_files_scan() was useless, switch to using 
-       ipkg_prepare_url_for_install()
-       * ipkg_install.c: fix --force-reinstall
-       * ipkg_remove.c: stop removing of modified conffiles
+       * opkg_cmd.c: opkg_multiple_files_scan() was useless, switch to using 
+       opkg_prepare_url_for_install()
+       * opkg_install.c: fix --force-reinstall
+       * opkg_remove.c: stop removing of modified conffiles
 2003-03-04  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.56
-       * ipkg_message.c: show error messages by default
-       * ipkg_message.h: protect against multiple inclusion
-       * conffile.[ch]: switch to ipkg_message, added conf argument to conffile_has_been_modified
-       * ipkg.h: move EXTENSION macros here
+       * opkg_message.c: show error messages by default
+       * opkg_message.h: protect against multiple inclusion
+       * conffile.[ch]: switch to opkg_message, added conf argument to conffile_has_been_modified
+       * opkg.h: move EXTENSION macros here
        * pkg_depends.c: minor cleanup
        * pkg.h: added prefer and obsolete flags
        * pkg.c: parse and unparse SF_PREFER and SF_OBSOLETE
-       * ipkg_install.[ch]: 
+       * opkg_install.[ch]: 
          - added {pkg,name}_mark_dependencies_for_installation, 
          - added conf argument to conffile_has_been_modified 
-         - missing ifdef IPKG_DEBUG_NO_TMP_CLEANUP
-       * ipkg_remove.c: added conf argument to conffile_has_been_modified
-       * ipkg_download.c: added ipkg_prepare_for_install
+         - missing ifdef OPKG_DEBUG_NO_TMP_CLEANUP
+       * opkg_remove.c: added conf argument to conffile_has_been_modified
+       * opkg_download.c: added opkg_prepare_for_install
 2003-03-01  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.55
-       * ipkg.h: wrap #if 0 around definition of of IPKG_DEBUG_NO_TMP_CLEANUP
+       * opkg.h: wrap #if 0 around definition of of OPKG_DEBUG_NO_TMP_CLEANUP
 2003-03-01  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.54
-       * ipkg_install.c: make old package SW_DEINSTALL during ipkg installation
-       * ipkg_cmd.[ch]: added some code to install packages marked SW_INSTALL, but have not enabled this code yet.
+       * opkg_install.c: make old package SW_DEINSTALL during opkg installation
+       * opkg_cmd.[ch]: added some code to install packages marked SW_INSTALL, but have not enabled this code yet.
 2003-03-01  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: updated to 0.99.53
        * pkg_depends.c: let SW_INSTALL satisfy dependences (instead of SS_INSTALL)
 2003-03-01  Daniele Nicolodi <daniele@grinta.net>      
-       * ipkg_install.c: indentation fixes and finish switch to message
+       * opkg_install.c: indentation fixes and finish switch to message
        facility
-       * ipkg_cmd.c: indentation fixes, switch to message facility and
+       * opkg_cmd.c: indentation fixes, switch to message facility and
        some code cleanup
-       * ipkg_message.c (ipkg_message): check for a NULL *conf parameter
-       * ipkg_message.h: renamed IPKG_ERR in IPKG_ERROR
+       * opkg_message.c (opkg_message): check for a NULL *conf parameter
+       * opkg_message.h: renamed OPKG_ERR in OPKG_ERROR
 2003-02-28  Jamey Hicks <jamey@handhelds.org> (patch from Daniele Nicolodi <daniele@grinta.net>)
        * configure.ac: incremented version to 0.99.5
-       * ipkg_message.[ch]: added message facility
+       * opkg_message.[ch]: added message facility
        * args.[ch]: verbosity control
-       * ipkg_conf.[ch]: verbosity control
-       * ipkg_install.c: switch to using message factility
+       * opkg_conf.[ch]: verbosity control
+       * opkg_install.c: switch to using message factility
 2003-02-28  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: incremented version to 0.99.51
-       * ipkg_cmd.c: added ipkg_statisfy_all_dependences, called after
+       * opkg_cmd.c: added opkg_statisfy_all_dependences, called after
        install/upgrade of packages to handle packages that were split and
        no longer provide all the resources they used to provide.
 2003-02-27  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: incremented version to 0.99.50
-       * ipkg_cmd.c: write out status after doing an upgrade
+       * opkg_cmd.c: write out status after doing an upgrade
 2003-02-27  Jamey Hicks <jamey@handhelds.org> (another patch from pb)
        * configure.ac: incremented version to 0.99.49
        * pkg_parse.c, pkg.c: do not treat deb revision specially
 2003-02-27  Jamey Hicks <jamey@handhelds.org> (another patch from pb)
        * configure.ac: incremented version number to 0.99.48
-       * args.c: added help for ipkg flags sub-command
-       * ipkg_cmd.c: added ipkg_flag_cmd, do not upgrade package marked hold
-       * ipkg_install.c: do not remove obsolesced files if old_pkg is flagged noprune
-       * ipkg_remove.c: pkg->state_flag is a bitvector now
+       * args.c: added help for opkg flags sub-command
+       * opkg_cmd.c: added opkg_flag_cmd, do not upgrade package marked hold
+       * opkg_install.c: do not remove obsolesced files if old_pkg is flagged noprune
+       * opkg_remove.c: pkg->state_flag is a bitvector now
        * pkg.c: pkg->state_flag is a bitvector now
        * pkg.h: pkg->state_flag is a bitvector now
 2003-02-27  Jamey Hicks <jamey@handhelds.org> (another patch from pb)
 2003-02-24  Jamey Hicks <jamey@handhelds.org> (per patch from Philip Blundell <pb@handhelds.org>)
        * configure.ac: incremented version to 0.99.45
        * file_util.c: include space for null in line_size
-       * ipkg_cmd.c: sigint handler while configuring packages
-       * ipkg_install.c: state_status != SS_INSTALLED and != SS_UNPACKED
-       * ipkg_remove.c: missing i++
+       * opkg_cmd.c: sigint handler while configuring packages
+       * opkg_install.c: state_status != SS_INSTALLED and != SS_UNPACKED
+       * opkg_remove.c: missing i++
        * pkg.c: do not run scripts in offline_root mode
        * pkg_depends.c: every package provides itself
        * pkg_hash.c: better handling of packges provided by multiple providers
        * args.c: added doc for -force-overwrite
 2002-11-26  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: incremented version number to 0.99.43
-       * ipkg_install.c: completely skip the space check when -force_space asserted
+       * opkg_install.c: completely skip the space check when -force_space asserted
 2002-11-23  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: incremented version number to 0.99.42
        * args.c: missed one spot checking for -force_space or -force-space    
 2002-11-23  Jamey Hicks <jamey@handhelds.org>
        * configure.ac: incremented version number to 0.99.41
-       * ipkg_install.c: added -force_space option to override out of space check
+       * opkg_install.c: added -force_space option to override out of space check
 2002-11-23  Aman Gupta  <oz@themastermind1.net>
        * configure.ac: incremented version number to 0.99.40
-       * ipkg_configure.c: updated to match new text output format
-       * ipkg_install.c: updated to new text output format
+       * opkg_configure.c: updated to match new text output format
+       * opkg_install.c: updated to new text output format
                          fixed problems where ipks installed from file or
                          http were being installed over newer ipks of the
                          same name
-       * ipkg_remove.c: updated to new text output format
-                        made ipkg remove do what ipkg purge originally did,
+       * opkg_remove.c: updated to new text output format
+                        made opkg remove do what opkg purge originally did,
                         by having it remove conffiles, and status entries for
-                        ipks that are removed. ipkg_purge now calls
-                        ipkg_remove
+                        ipks that are removed. opkg_purge now calls
+                        opkg_remove
 2002-11-22  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.39
         * applied patches from Aman Gupta for better handling of dests
        * pkg_hash.c: moved internals of hash_tables out of pkg_hash.c
 2002-10-29  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.37
-       * ipkg_cmd.c: ipkg_upgrade_cmd now installs uninstalled packages
+       * opkg_cmd.c: opkg_upgrade_cmd now installs uninstalled packages
                      instead of getting a segv 
 2002-10-29  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.36
        * changed verbose_get to verbose_wget as documented
 2002-08-08  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.34
-       * ipkg_cmd.c: fixed problem stringifying HOST_CPU
+       * opkg_cmd.c: fixed problem stringifying HOST_CPU
        * Makefile.am: helped fix problem stringifying HOST_CPU
 2002-08-08  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.33
-       * ipkg_cmd.c, args.c: added print-architecture and print-installation-architecture commands
+       * opkg_cmd.c, args.c: added print-architecture and print-installation-architecture commands
        * Makefile.am: added defines for HOST_CPU and BUILD_CPU to CFLAGS and package: target
 2002-08-08  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.32
 2002-08-07  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.31
        * other: applied multiple providers patch from philip blundell
-       * ipkg_cmd.c: implemented compare_versions cmd
+       * opkg_cmd.c: implemented compare_versions cmd
 2002-07-25  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.30
-       * ipkg_conf.c: added offline_root_pre_script_cmd and offline_root_post_script_cmd
+       * opkg_conf.c: added offline_root_pre_script_cmd and offline_root_post_script_cmd
        * pkg.c: execute scripts in chroot'ed environment running
        pre_script_cmd and post_script_cmd before and after the pkg script. 
 2002-07-24  Jamey Hicks <jamey.hicks@hp.com>
        * pkg.c: fixed a segv when printing Replaces field
 2002-07-24  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.28
-       * ipkg_cmd.c: merged functionality from ipkg_install_cmd into
-       ipkg_upgrade_cmd with an eye towards unifying these two commands. 
-       * ipkg_install.c: installing a package that replaces other
+       * opkg_cmd.c: merged functionality from opkg_install_cmd into
+       opkg_upgrade_cmd with an eye towards unifying these two commands. 
+       * opkg_install.c: installing a package that replaces other
        packages removes them first.  (Upgrade does not do replacements automatically).
-       * ipkg_remove.c: ipkg_remove_pkg will remove a package with
+       * opkg_remove.c: opkg_remove_pkg will remove a package with
        installed dependents if state_flag == SF_REPLACE.
 2002-07-24  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.27
        * various files: trying to stomp a segv in conflicts checking.  
 2002-07-17  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.23
-       * ipkg_remove.c: do not do recursive removal if force-depends is
+       * opkg_remove.c: do not do recursive removal if force-depends is
          specified
        * other-files: other cleanups to reduce code clutter
 2002-07-16  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.22
        * user.[ch]: moved user interaction procedure here
-       * args.[ch], ipkg_conf.[ch]: added force_removal_of_dependent_packages
+       * args.[ch], opkg_conf.[ch]: added force_removal_of_dependent_packages
        * pkg.h: added state_status to abstract_pkg_t
-       * ipkg_remove.c: If package has installed dependents, then only
+       * opkg_remove.c: If package has installed dependents, then only
        remove if force_removal_of_dependent_packages is asserted in
-       ipkg.conf or on command line.  Will add user interaction option later.
+       opkg.conf or on command line.  Will add user interaction option later.
 2002-07-16  Jamey Hicks <jamey.hicks@hp.com>
        * configure.ac: incremented version number to 0.99.21 after
        applying dependent removal and conflicts patch.
 2002-07-14  Jamey Hicks <jamey.hicks@hp.com>
        
        * configure.ac: incremented version number to 0.99.20
-       * ipkg_download.c: removed useless -N flag from wget 
+       * opkg_download.c: removed useless -N flag from wget 
        * update-alternatives: 'head -1' -> 'head -n 1', no sort -k 2 for busybox
        
 2002-07-15  Karthikeyan K  <karthik@innvo.com>
        
-       * ipkg_remove.c (ipkg_remove_dependant_pkgs): removed setting the 
+       * opkg_remove.c (opkg_remove_dependant_pkgs): removed setting the 
        dependencies_checked variable in the while loop b4 actually checking
        the dependencies of that package.
-       * ipkg_cmd.c (ipkg_multiple_files_scan): added check for ".ipk" and
+       * opkg_cmd.c (opkg_multiple_files_scan): added check for ".ipk" and
        ".deb" extension, so that no caching is attempted on  arguments that
        are not local files
        * pkg_depends.c (pkg_hash_fetch_conflicts): while returning NULL,
        found before returning
 
 2002-07-04  Abhaya Shenoy  <abhaya@innvo.com>
-       * ipkg_install.c (check_conflicts_for): new function to call
+       * opkg_install.c (check_conflicts_for): new function to call
        pkg_hash_fetch_conflicts and print offending packages
-       (ipkg_install_pkg): added call to check_conflicts_for
+       (opkg_install_pkg): added call to check_conflicts_for
        * pkg.c (pkg_merge): provides from oldpkg should be given
        priority
        (pkg_init): init of conflicts, conflicts_count fields
 
 2002-07-04  Karthikeyan K  <karthik@innvo.com>
        
-       * ipkg_cmd.c (ipkg_multiple_files_scan): new function to handle installation
+       * opkg_cmd.c (opkg_multiple_files_scan): new function to handle installation
        of already downloaded files
-       (ipkg_install_cmd): added call to ipkg_multiple_files_scan
-       (ipkg_remove_cmd): added call to possible_broken_removal_of_packages
-       * ipkg_install.c (ipkg_install_pkg): added check to remove redundant upgrade
+       (opkg_install_cmd): added call to opkg_multiple_files_scan
+       (opkg_remove_cmd): added call to possible_broken_removal_of_packages
+       * opkg_install.c (opkg_install_pkg): added check to remove redundant upgrade
        when a package to be installed is already installed as a dependancy of
        another
-       * ipkg_remove.c (possible_broken_removal_of_packages): new fnuction 
+       * opkg_remove.c (possible_broken_removal_of_packages): new fnuction 
        to check that all packages can be removed, before actually starting to
        remove them
-       (ipkg_remove_dependant_pkgs): new function to remove dependant packages
-       (ipkg_remove_pkg): added call to ipkg_remove_dependant_pkgs
+       (opkg_remove_dependant_pkgs): new function to remove dependant packages
+       (opkg_remove_pkg): added call to opkg_remove_dependant_pkgs
        * pkg.c (abstract_pkg_init): initialized dependencies_checked
        * pkg_hash.c (pkg_hash_dump): added more information to hash dump
        
 2002-07-03  Jamey Hicks <jamey.hicks@hp.com>
        
        * configure.ac: incremented version number to 0.99.16
-       * ipkg_install.c: defensive programming in case pkg contains no Size: clause
+       * opkg_install.c: defensive programming in case pkg contains no Size: clause
        
 2002-07-02  Jamey Hicks <jamey.hicks@hp.com>
        
 2002-06-17  Jamey Hicks        <jamey.hicks@hp.com>
        
        * configure.ac: incremented version number to 0.99.12
-       * args.h, ipkg_conf.h, ipkg_install.c: Added force_overwrite
-       option.  When this is asserted, ipkg will overwrite files that
+       * args.h, opkg_conf.h, opkg_install.c: Added force_overwrite
+       option.  When this is asserted, opkg will overwrite files that
        have no owner or that belong to other packages.
-       * ipkg_conf.c, ipkg_dest.c: Update status file atomically, keeping
+       * opkg_conf.c, opkg_dest.c: Update status file atomically, keeping
        old copy of status file if cannot update new status file.  Applied
        patch from Jukka Santala for this fix.
        
        * familiar/rules (binary-arch): Fixed to use "make install-strip"
        rather than "make install" and a strip command.
 
-       * ipkg_cmd.c (ipkg_install_cmd): Moved an error message up from
-       ipkg_install_by_name, (eventually all error messages should come
-       up out of what will become libipkg, (pkg.c, ipkg_install.c, etc.)
-       and into ipkg_cmd.c and friends).
-       (ipkg_upgrade_pkg): Pushed downgrade check down into
-       ipkg_install_by_name so that "ipkg install foo" will do the
+       * opkg_cmd.c (opkg_install_cmd): Moved an error message up from
+       opkg_install_by_name, (eventually all error messages should come
+       up out of what will become libopkg, (pkg.c, opkg_install.c, etc.)
+       and into opkg_cmd.c and friends).
+       (opkg_upgrade_pkg): Pushed downgrade check down into
+       opkg_install_by_name so that "opkg install foo" will do the
        downgrade check.
 
-       * ipkg.h: Rename some ipkg_error_t error codes to be more
+       * opkg.h: Rename some opkg_error_t error codes to be more
        consistent.
 
-       * ipkg_install.c (resolve_conffiles): Added missing removal of
+       * opkg_install.c (resolve_conffiles): Added missing removal of
        backed-up modified conffiles, (which led to bizarre, bogus
        conffile prompting the next time the package was upgraded).
        (user_prefers_old_conffile): Fixed reversed arguments to diff in
        interactive conffiles prompting.
-       (ipkg_install_by_name): Fixed "ipkg install foo" to never
-       downgrade foo, (just like "ipkg upgrade foo").
+       (opkg_install_by_name): Fixed "opkg install foo" to never
+       downgrade foo, (just like "opkg upgrade foo").
 
        * familiar/rules: Added installation of
-       /usr/share/doc/ipkg/copyright file. Fixed so that ipkg.conf goes
+       /usr/share/doc/opkg/copyright file. Fixed so that opkg.conf goes
        to /etc, not /usr/etc, (but still keep binary in /usr/bin not
-       /bin). Changed name of installed binary from ipkg-unstable to
-       ipkg.
+       /bin). Changed name of installed binary from opkg-unstable to
+       opkg.
 
        * familiar/control.in (Package): Changed package name from
-       ipkg-unstable to ipkg.
+       opkg-unstable to opkg.
 
        * pkg_parse.c (parseVersion): Fixed to ignore whitespace at
        beginning of version string.
        (pkg_parse_raw): Fixed segfault if a package record list ends with
        a package paragraph without a final blank line.
 
-       * ipkg_install.c (check_data_file_clashes): Improved wording of
+       * opkg_install.c (check_data_file_clashes): Improved wording of
        file clash error message.
 
-       * ipkg_download.c (ipkg_download_pkg): Fixed segfault if package
+       * opkg_download.c (opkg_download_pkg): Fixed segfault if package
        has no src, (occurs if package had benn installed locally, then
        was removed (but not purged), then tried to reinstall eithout it
-       existing in any /usr/lib/ipkg/lists/* file).
+       existing in any /usr/lib/opkg/lists/* file).
 
-       * etc/ipkg.conf: Added a default ipkg.conf to the distribution.
+       * etc/opkg.conf: Added a default opkg.conf to the distribution.
 
 2002-03-13  Carl Worth  <cworth@east.isi.edu>
 
        * RELEASE_NOTES: Added release notes for 0.99.7.
 
        * pkg.c (pkg_run_script): Added support to export
-       IPKG_OFFLINE_ROOT. This is really a nasty hack as it means scripts
-       need to be modified to check IPKG_OFFLINE_ROOT. I'd really prefer
+       OPKG_OFFLINE_ROOT. This is really a nasty hack as it means scripts
+       need to be modified to check OPKG_OFFLINE_ROOT. I'd really prefer
        coming up with a good, reliable chroot system. But for now this
        will let update-alternatives work, (which already does examine
-       IPKG_OFFLINE_ROOT).
+       OPKG_OFFLINE_ROOT).
        (pkg_run_script): Added missing brace.
 
-       * ipkg_conf.c (ipkg_conf_init): Reworked significantly to properly
+       * opkg_conf.c (opkg_conf_init): Reworked significantly to properly
        set up the pkg_dest_list stuff to account for offline_root.
 
        * args.c (args_parse): Added support for -force_defaults in
 
        * RELEASE_NOTES: Added release notes for 0.99.6.
 
-       * ipkg_download.c (ipkg_download): Fixed bug in handling of
+       * opkg_download.c (opkg_download): Fixed bug in handling of
        "file://" URLs.
 
-       * ipkg.c (main): Fixed to abort if ipkg_conf_init fails.
+       * opkg.c (main): Fixed to abort if opkg_conf_init fails.
 
-       * ipkg_conf.c (ipkg_conf_init): Fixed to complain if given an
+       * opkg_conf.c (opkg_conf_init): Fixed to complain if given an
        unknown dest.
 
        * pkg.c (pkg_print_field): Fixed several fields to not print if
        * RELEASE_NOTES: Added release notes for 0.99.5.
 
        * familiar/rules (binary-arch): Added strip back in in preparation
-       of non-unstable release of ipkg.
+       of non-unstable release of opkg.
 
        * str_util.c (str_starts_with): Added convenience function.
 
        * pkg_extract.c (pkg_extract_data_file_names_to_file): Fixed
        filenames in *.list files to be compatible with dpkg and the old
-       ipkg, (no prefix of "." for example).
+       opkg, (no prefix of "." for example).
 
        * pkg.c (pkg_run_script): Added export of PKG_ROOT for the benefit
        of maintainer scripts.
 
-       * ipkg_remove.c (ipkg_remove_pkg): Complain and abort if user
+       * opkg_remove.c (opkg_remove_pkg): Complain and abort if user
        attempts to remove an essential package, (also inform them of the
        force option if they insist).
 
-       * ipkg_install.c (ipkg_install_pkg): Added message about whether
+       * opkg_install.c (opkg_install_pkg): Added message about whether
        installing or upgrading.
 
-       * ipkg_download.c (ipkg_download): Added support for "file://"
+       * opkg_download.c (opkg_download): Added support for "file://"
        URLs, (untested).
-       (ipkg_download): Added support for wget proxy options.
+       (opkg_download): Added support for wget proxy options.
 
-       * ipkg_conf.c (ipkg_conf_init): Added proxy support to ipkg_conf,
+       * opkg_conf.c (opkg_conf_init): Added proxy support to opkg_conf,
        (http_proxy, ftp_proxy, no_proxy, proxy_user, and proxy_passwd).
 
-       * ipkg_cmd.c (ipkg_upgrade_pkg): Moved Upgrading message from
-       ipkg_upgrade_cmd to ipkg_install_pkg.
+       * opkg_cmd.c (opkg_upgrade_pkg): Moved Upgrading message from
+       opkg_upgrade_cmd to opkg_install_pkg.
 
        * args.c (args_parse): Added new option
        -force-removal-of-essential-packages, (which is intentionally
        * pkg.c (pkg_merge): Made pkg_merge a NOP if oldpkg == newpkg.
        (pkg_print_field): Don't print MD5sum field if NULL.
 
-       * ipkg_install.c (satisfy_dependencies_for): Now returns error
+       * opkg_install.c (satisfy_dependencies_for): Now returns error
        status if one or more of the dependencies fail to install cleanly.
        (unpack_pkg_control_files): Fixed to not tack on a bunch of
        NULL-valued conffiles entries if non-NULL conffiles already
        (unpack_pkg_control_files): Cleaned up conffile filenames to not
        have ugly things like "///" inside them.
 
-       * ipkg_download.c (ipkg_download): Cleaned up error message.
-       (ipkg_download): Now uses new file_move function.
-       (ipkg_download_pkg): Created new function, (from old code in ipkg_install).
+       * opkg_download.c (opkg_download): Cleaned up error message.
+       (opkg_download): Now uses new file_move function.
+       (opkg_download_pkg): Created new function, (from old code in opkg_install).
 
-       * ipkg_cmd.c (ipkg_download_cmd): Added new "ipkg download"
+       * opkg_cmd.c (opkg_download_cmd): Added new "opkg download"
        command.
 
        * file_util.c (file_move): Created file_move, (from code that had
-       been in ipkg_download).
+       been in opkg_download).
        (file_copy): Added error message on failure.
 
        * conffile.c (conffile_has_been_modified): Eliminated crash if
 
        * pkg_hash.c (pkg_hash_pkg_owning_file): Moved this function in
        from pkg_dest.c. Also, updated it to use pkg_get_installed rather
-       than mucking around inside /usr/lib/ipkg and globbing for *.list
+       than mucking around inside /usr/lib/opkg and globbing for *.list
        files.
        (pkg_hash_fetch_best_installation_candidate): Fixed to only return
        a package that actually could be installed, (ie. it must have
        either a local_filename or a non-NULL src from which it could be
-       downloaded). This prevents a segfault during "ipkg upgrade".
+       downloaded). This prevents a segfault during "opkg upgrade".
 
        * pkg.c (pkg_get_installed_files): Fixed to not do strange things
        to filenames such as: "//./bin/sh"
 
-       * ipkg_cmd.c (ipkg_files_cmd): Added pkg_free_installed_files to
+       * opkg_cmd.c (opkg_files_cmd): Added pkg_free_installed_files to
        conserve a bit of memory.
-       (ipkg_search_cmd): Updated to use pkg_get_installed rather than
-       mucking around inside /usr/lib/ipkg and globbing for *.list files.
+       (opkg_search_cmd): Updated to use pkg_get_installed rather than
+       mucking around inside /usr/lib/opkg and globbing for *.list files.
 
        * pkg.c (pkg_free_installed_files): Added this function to free up
        memory from pkg_get_installed_files.
 
-       * ipkg_conf.c (ipkg_conf_set_option): Added force_reinstall option
+       * opkg_conf.c (opkg_conf_set_option): Added force_reinstall option
        to allow reinstallation of an installed package.
 
        * args.c (args_parse): Added -force-reinstall option to enable
        * busybox-0.60.2/libbb/unarchive.c (free_header_ar): Added
        function to plug memory leak.
 
-       * ipkg_install.c (check_data_file_clashes): Fixed crash if no
+       * opkg_install.c (check_data_file_clashes): Fixed crash if no
        package can be found owning the pre-existing file.
 
        * pkg_dest.c (pkg_dest_deinit): Fixed bug that pkg_dest was
        (pkg_print_status): Fixed pkg_print_status to work whether or not
        the package is installed.
 
-       * ipkg_utils.c (read_raw_pkgs_from_file): Moved fclose out of
+       * opkg_utils.c (read_raw_pkgs_from_file): Moved fclose out of
        read_raw_pkgs_from_stream and into this function where it belongs,
        (since the fopen occurs here).
        (trim_alloc): Fixed trim to not free data passed in. Changed the
        name to make it obvious that it is allocating memory.
 
-       * ipkg_install.c (ipkg_install_from_file): Fixed to be more robust
+       * opkg_install.c (opkg_install_from_file): Fixed to be more robust
        to the fact that hash_insert_pkg sometimes frees the data that I
        pass into it (!).
        (satisfy_dependencies_for): Cosmetic change to messages.
        file if necessary.
        (satisfy_dependencies_for): Added pkg_vec_deinit to plug memory
        leak.
-       (ipkg_install_pkg): Added "run ipkg update?" hint to error
+       (opkg_install_pkg): Added "run opkg update?" hint to error
        message.
        (backup_modified_conffiles): Made more robust to the case that a
        conffile has disappeared.
        (cleanup_temporary_files): Added missing closedir to plug a memory
        leak.
 
-       * ipkg_download.c (ipkg_download): Cosmetic change to error
+       * opkg_download.c (opkg_download): Cosmetic change to error
        messages.
 
-       * ipkg_conf.c (ipkg_conf_parse_file): Plugged some small memory
+       * opkg_conf.c (opkg_conf_parse_file): Plugged some small memory
        leaks.
-       (ipkg_conf_set_option): Changed configuration options from
+       (opkg_conf_set_option): Changed configuration options from
        force-depends, force-defaults to force_depdends, force_defaults to
-       be compatible with old ipkg.conf files.
-       (ipkg_conf_set_option): Fixed bug in parsing options.
-       (ipkg_conf_write_status_files): Fixed to list all interesting
+       be compatible with old opkg.conf files.
+       (opkg_conf_set_option): Fixed bug in parsing options.
+       (opkg_conf_write_status_files): Fixed to list all interesting
        packages, (any with non-default state), in status file rather than
        just installed files.
-       (ipkg_conf_write_status_files): Plugged a memory leak.
+       (opkg_conf_write_status_files): Plugged a memory leak.
 
-       * ipkg_cmd.c (ipkg_status_cmd): Changed "ipkg status" to use
+       * opkg_cmd.c (opkg_status_cmd): Changed "opkg status" to use
        pkg_print_info so it is much more verbose, (includes fields such
        as Maintainer, etc. that are merged in from the lists files).
 
-       * ipkg.h (IPKG_DEBUG_NO_TMP_CLEANUP): Added compile-time option to
+       * opkg.h (OPKG_DEBUG_NO_TMP_CLEANUP): Added compile-time option to
        preserve temporary files for easier debugging.
 
        * file_util.c (file_md5sum_alloc): cosmetic changes to variable
        names.
        
-       * ipkg_conf.c (ipkg_conf_init): Added support for offline_root
+       * opkg_conf.c (opkg_conf_init): Added support for offline_root
        configuration file option.
 
        * args.c (args_init): Added support for -o, -offline,
        -offline-root command-line arguments. (Although they don't really
        have any effect yet).
 
-       * ipkg_install.c (ipkg_install_pkg): Changed back to marking
+       * opkg_install.c (opkg_install_pkg): Changed back to marking
        package as installed before postinst, (the pkg_run_script wanted
-       to find the scripts in /usr/lib/ipkg/info). Actually, it could
+       to find the scripts in /usr/lib/opkg/info). Actually, it could
        probably find the script in either place at this point so maybe it
        doesn't really matter.
 
 2002-03-07  Carl Worth  <cworth@east.isi.edu>
 
-       * ipkg_install.c (ipkg_install_pkg): Changed to only mark package
-       as installed after running ipkg_configure, (to run the postinst
+       * opkg_install.c (opkg_install_pkg): Changed to only mark package
+       as installed after running opkg_configure, (to run the postinst
        script).
 
-       * RELEASED ipkg-unstable 0.99.0
+       * RELEASED opkg-unstable 0.99.0
 
        * Updated all instances of "XXX" in the code to indicate one of
        the following categories:
        XXX: FEATURE: Comment describes a useful feature request.
        
        * pkg.c (pkg_print_status): Added the Depends field to package
-       paragraphs in the status file, ("ipkg remove" will need this).
+       paragraphs in the status file, ("opkg remove" will need this).
 
-       * ipkg_install.c (satisfy_dependencies_for): Fixed "ipkg install"
+       * opkg_install.c (satisfy_dependencies_for): Fixed "opkg install"
        to not complain several times about "Package foo already
        installed" when doing large recursive installs.
-       (ipkg_install_pkg): "ipkg install foo" for an installed package
+       (opkg_install_pkg): "opkg install foo" for an installed package
        will now check and install any missing dependencies before exiting
        with "Package foo is alrady installed."
 
 2002-03-06  Carl Worth  <cworth@east.isi.edu>
 
        * pkg_dest.c (pkg_dest_pkg_owning_file_alloc): Moved this function
-       here from ipkg_install.c. Also plugged a memory leak in it with
+       here from opkg_install.c. Also plugged a memory leak in it with
        globfree.
 
        * pkg.c (pkg_remove_installed_files_list): Fixed bug that
-       prevented package.list file from ever being removed during "ipkg
+       prevented package.list file from ever being removed during "opkg
        remove".
 
-       * ipkg_remove.c (remove_data_files_and_list): Fixed noisy and
-       spurious warnings about non-empty directories. "ipkg remove"
+       * opkg_remove.c (remove_data_files_and_list): Fixed noisy and
+       spurious warnings about non-empty directories. "opkg remove"
        should now only say anything if a directory that was solely
        provided by that package is non-empty.
 
-       * ipkg_cmd.c (ipkg_install_pending_cmd): Plugged memory leak with
+       * opkg_cmd.c (opkg_install_pending_cmd): Plugged memory leak with
        globfree.
 
-       * ipkg_install.c: *Many* fixes to enable "ipkg upgrade" to more or
+       * opkg_install.c: *Many* fixes to enable "opkg upgrade" to more or
        less work. Primarily fixing file clash identification and conffile
-       handling/resolution. "ipkg upgrade" has now worked correctly on
+       handling/resolution. "opkg upgrade" has now worked correctly on
        several test cases!
 
-       * ipkg_install.c (unpack_pkg_control_files): Now initializes
+       * opkg_install.c (unpack_pkg_control_files): Now initializes
        conffiles list from the contents of conffiles control file,
        (leaves md5sum calculation until the actual conffiles are
        extracted later).
-       (ipkg_install_pkg): Separated backup_modified_conffiles and
+       (opkg_install_pkg): Separated backup_modified_conffiles and
        check_data_file_clashes into separate functions.
        (preinst_configure): Simplified this function pushing its old
        logic into pkg.c:pkg_run_script.
        * pkg.c (pkg_print_field): Added support for printing Conffiles
        field.
 
-       * ipkg_install.c (remove_obsolesced_files): With the fixed
+       * opkg_install.c (remove_obsolesced_files): With the fixed
        pkg_get_installed_files_list from below, this function now seems
        to work!
-       (ipkg_install_pkg): Fixed to mark old package as uninstalled after
+       (opkg_install_pkg): Fixed to mark old package as uninstalled after
        upgrading.
 
        * pkg.c (pkg_get_installed_files_list): Fixed so that it's
        package, (it pulls the list of data files straight out of the
        package).
 
-       * ipkg_cmd.c (ipkg_upgrade_cmd): Fixed ipkg_upgrade to not choke
+       * opkg_cmd.c (opkg_upgrade_cmd): Fixed opkg_upgrade to not choke
        if asked to upgrade an un-installed package.
-       (ipkg_upgrade_pkg): Fixed printing of version numbers.
+       (opkg_upgrade_pkg): Fixed printing of version numbers.
 
        * file_util.c (file_mkdir_hier): Abstracted call to libbb
        make_directory into new file_mkdir_hier. At this point, the only
 
 2002-03-04  Carl Worth  <cworth@east.isi.edu>
 
-       * ipkg_conf.c (ipkg_conf_init): Added support to ipkg_conf to
+       * opkg_conf.c (opkg_conf_init): Added support to opkg_conf to
        pickup command-line arguments for "force-defaults" and
        "force-depends". Things set on the command-line should take
        precedence over things found in the configuration file.
 
-       * ipkg_cmd.c (ipkg_search_cmd): Fixed formatting of "ipkg search"
+       * opkg_cmd.c (opkg_search_cmd): Fixed formatting of "opkg search"
        output.
 
        * pkg_depends.c (pkg_hash_fetch_unsatisfied_dependencies):
        * xregex.c (xregexec): Removed useless error messages from NOMATCH
        calls to regexec.
 
-       * ipkg_install.c (satisfy_dependencies_for): Added support for new
+       * opkg_install.c (satisfy_dependencies_for): Added support for new
        "unresolved" argument in
        pkg_hash_fetch_unsatisfied_dependencies. Cleaned up warning/error
        messages.
 
-       * ipkg_cmd.c (ipkg_search_cmd): Implemented first-cut of "ipkg search".
+       * opkg_cmd.c (opkg_search_cmd): Implemented first-cut of "opkg search".
 
        * pkg_depends.c (pkg_hash_fetch_unsatisfied_dependencies): Fixed
        to set *unresolved to NULL if depends is NULL.
 
 2002-03-01  Carl Worth  <cworth@east.isi.edu>
 
-       * RELEASED ipkg-unstable 0.98.0
+       * RELEASED opkg-unstable 0.98.0
 
-       * ipkg_configure.c (ipkg_configure): Added flushing of stdout,
+       * opkg_configure.c (opkg_configure): Added flushing of stdout,
        (here and in a few other modules).
 
        * file_util.c (file_copy): Implemented this function here as one
        step toward isolating the calls into libbb functions. Updated old
-       copy_file calls to file_copy in both ipkg_download.c and
-       ipkg_install.c.
+       copy_file calls to file_copy in both opkg_download.c and
+       opkg_install.c.
 
-       * ipkg_install.c, ipkg_remove.c: Demoted several "XXX" comments to
+       * opkg_install.c, opkg_remove.c: Demoted several "XXX" comments to
        DPKG_INCOMPATIBILITY as I really don't intend on addressing them
        any time soon, (if ever).
 
-       * ipkg_cmd.c (ipkg_files_cmd): Fixed "ipkg files" from crashing on
+       * opkg_cmd.c (opkg_files_cmd): Fixed "opkg files" from crashing on
        uninstalled packages.
 
        * familiar/rules: Added support for easy building of an
-       ipkg.ipk. The version number and the architecture are
+       opkg.ipk. The version number and the architecture are
        automatically sucked in correctly from autoconf magic, (even when
        cross-compiling). Maybe autoconf will start paying off with
        benefits rather than pain, (finally!).
        * configure.ac: Removed MEMCMP and STAT checks which were breaking
        cross-compilation.
 
-       * ipkg_cmd.c (ipkg_upgrade_pkg): BIG bugfix: Package version
+       * opkg_cmd.c (opkg_upgrade_pkg): BIG bugfix: Package version
        comparison was sign-reversed, (hence it would never upgrade).
 
 2002-02-28  Carl Worth  <cworth@east.isi.edu>
 
-       * ipkg_download.c (ipkg_download): Changed from
+       * opkg_download.c (opkg_download): Changed from
        system("/bin/cp",...) to copy_file(...)
 
        * replace/strndup.c: Implemented an (untested) replacement for
        strndup.
 
        * configure.ac: Added AC_CANONICAL_HOST to automatically set the
-       correct architecture type in the ipkg control file.
+       correct architecture type in the opkg control file.
 
        * configure.ac: Changed version number to 0.98.0 in preparation
        for alpha release.
 
-       * familiar/rules: Added support for easy building of an ipkg.ipk.
+       * familiar/rules: Added support for easy building of an opkg.ipk.
 
 2002-02-27  Carl Worth  <cworth@east.isi.edu>
 
-       * ipkg_install.c (ipkg_install_pkg): Fixed to abort on failed
+       * opkg_install.c (opkg_install_pkg): Fixed to abort on failed
        download.
 
        * pkg.c (pkg_run_script): Fixed bug that was preventing any
        schedule.
 
        * pkg_parse.c (pkg_parse_raw): Added parsing of "MD5Sum" in
-       addition to "MD5sum" to accomodate bug in old ipkg.
+       addition to "MD5sum" to accomodate bug in old opkg.
 
        * void_list.c (void_list_remove): Added new remove function, (also
        adjusts a forward iterator). Required new list->pre_head member
        * pkg.c (pkg_init): Changed pkg->conffiles to be of the new
        conffile_list_t datatype.
        (pkg_remove_installed_files_list): Pulled this function into
-       pkg.c, (from ipkg_remove.c), so the mallocs and frees would be in
+       pkg.c, (from opkg_remove.c), so the mallocs and frees would be in
        the same C file.
        (pkg_get_conffile): Added this convenience function.
 
-       * ipkg_remove.c: Fixed several bugs. ipkg_remove now actually
+       * opkg_remove.c: Fixed several bugs. opkg_remove now actually
        works for simple packages!
 
-       * ipkg_install.c (ipkg_install_pkg): Don't re-install if a package
+       * opkg_install.c (opkg_install_pkg): Don't re-install if a package
        is already installed.
-       (ipkg_install_pkg): Fixed major bug that all of ipkg_install's
+       (opkg_install_pkg): Fixed major bug that all of opkg_install's
        work was always being unwound even when successful.
 
-       * ipkg_cmd.c (ipkg_files_cmd): Fixed to use
+       * opkg_cmd.c (opkg_files_cmd): Fixed to use
        pkg_get_installed_files_list rather than a private implementation
        that sifted through the file lists on disk.
 
        * str_util.c (str_ends_with): Added this convenient function.
        (str_chomp): Another convenience.
 
-       * ipkg_conf.c: Moved chomp to str_util.c (str_chomp), since
+       * opkg_conf.c: Moved chomp to str_util.c (str_chomp), since
        someone else wanted it too.
 
 2002-02-26  Carl Worth  <cworth@east.isi.edu>
        * pkg.c (pkg_run_script): Changed to return return value of
        script.
 
-       * ipkg_remove.c: Fleshed out initial version of all ipkg_remove.c
+       * opkg_remove.c: Fleshed out initial version of all opkg_remove.c
        functions.
 
-       * ipkg_configure.c (ipkg_configure): Added check on return value
+       * opkg_configure.c (opkg_configure): Added check on return value
        of pkg_run script. Added comments about dpkg compliance.
 
-       * ipkg_cmd.c (ipkg_purge_cmd): Added ipkg_purge_cmd
+       * opkg_cmd.c (opkg_purge_cmd): Added opkg_purge_cmd
 
 2002-02-20  Carl Worth  <cworth@east.isi.edu>
 
        * Added USC copyright statements, (and Compaq stubs as necessary)
 
-       * ipkg_install.c: At this point "ipkg install" on a simple
+       * opkg_install.c: At this point "opkg install" on a simple
        package, (no scripts and no dependencies), works just fine. It
        might even do some of the script and dependency handling correctly
-       too, but I haven't tested that yet. "ipkg install libc6" is a nice
+       too, but I haven't tested that yet. "opkg install libc6" is a nice
        little test that should complete without any errors or
-       warnings. Follow that up with "ipkg status" to see that it worked.
+       warnings. Follow that up with "opkg status" to see that it worked.
 
        * pkg.c (pkg_run_script): Added convenience method for running
        package scripts.
 
-       * ipkg_install.c: Fixed several bugs:
+       * opkg_install.c: Fixed several bugs:
        (unpack_pkg_control_files): control files now extract to the
        correct temporary directory.
-       (ipkg_install_pkg): pkg->state_want is now properly set to SW_INSTALL
-       (ipkg_install_pkg): status file now gets written after installation
+       (opkg_install_pkg): pkg->state_want is now properly set to SW_INSTALL
+       (opkg_install_pkg): status file now gets written after installation
        (cleanup_temporary_files): All temporary files are cleaned up.
 
-       * ipkg_configure.c (ipkg_configure): Fleshed out a very simple
-       ipkg_configure, (simply runs "postinst configure"). Maybe it will
+       * opkg_configure.c (opkg_configure): Fleshed out a very simple
+       opkg_configure, (simply runs "postinst configure"). Maybe it will
        need to be smarter at some point. Moved unwritten conffiles stuff
-       back to ipkg_install.c.
+       back to opkg_install.c.
 
-       * ipkg_conf.c (ipkg_conf_write_status_files): Moved this function
-       from ipkg_utils to ipkg_conf since it needs access to the
+       * opkg_conf.c (opkg_conf_write_status_files): Moved this function
+       from opkg_utils to opkg_conf since it needs access to the
        pkg_dest_list.
 
        * pkg_vec.c (marry_two_packages): Added several missing fields,
 
 2002-02-19  Carl Worth  <cworth@east.isi.edu>
 
-       * ipkg_install.c: several little bug fixes. "ipkg install" will
+       * opkg_install.c: several little bug fixes. "opkg install" will
        now actually install files from a package! There are still some
        bugs, (eg. postinst scripts are not called -- probably other
        things as well). But, it's coming together now.
 
        * pkg_dest.c (pkg_dest_init): now creates all necessary directories
 
-       * ipkg_download.c (ipkg_download): Fixed misleading parameter name.
+       * opkg_download.c (opkg_download): Fixed misleading parameter name.
 
-       * ipkg_conf.c (ipkg_conf_deinit): Now cleans up tmd_dir on deinit
-       ipkg.c: now calls ipkg_conf_deinit before exiting.
-       (ipkg_conf_add_nv): Fixed to set default_dest when parsing first
-       dest in ipkg.conf
+       * opkg_conf.c (opkg_conf_deinit): Now cleans up tmd_dir on deinit
+       opkg.c: now calls opkg_conf_deinit before exiting.
+       (opkg_conf_add_nv): Fixed to set default_dest when parsing first
+       dest in opkg.conf
 
-       * ipkg_cmd.c (ipkg_list_cmd): Fixed ugly bug in ipkg_list that led
+       * opkg_cmd.c (opkg_list_cmd): Fixed ugly bug in opkg_list that led
        to infinite loops, segfaults, string corruption, and other bizarre
        behavior.
 
-       * Added many files as we are approaching the first functional ipkg
+       * Added many files as we are approaching the first functional opkg
        implementation in C:
        file_util.c: convenience for testing if file_exists, reading files, etc.
-       ipkg_configure.c: mostly just a stub so far
-       ipkg_download.c: convenient function to download a file
+       opkg_configure.c: mostly just a stub so far
+       opkg_download.c: convenient function to download a file
        nv_pair.c: data structure to hold a name-value pair
        nv_pair_list.c: data structure to hold a list of nv_pair_t
        pkg_dest.c: data structure for everything a pkg destination wants
        void_list.c: generic linked-list data structure and functions
        xsystem.c: wrapper around system() with error checking
 
-       * ipkg_remove.c: Just added some stubs. Nothing really works at
+       * opkg_remove.c: Just added some stubs. Nothing really works at
        all yet.
 
-       * ipkg_install.c: Large rework of ipkg_install. It's now close to
+       * opkg_install.c: Large rework of opkg_install. It's now close to
        actually being usable, (but it's not quite there yet). Revamped to
        match dpkg install order more closely, (with all the stubs in case
        we ever want to call all the scripts that dpkg does). Also updated
        to use a more recent deb_extract from libbb.
 
-       * ipkg_extract_test.c (main): Added support for a third arg, (the
+       * opkg_extract_test.c (main): Added support for a third arg, (the
        filename to extract to the buffer).
 
-       * ipkg_conf.c (ipkg_conf_init): Added several fields to
-       ipkg_conf_t: pkg_src_list, pkg_dest_list ,
+       * opkg_conf.c (opkg_conf_init): Added several fields to
+       opkg_conf_t: pkg_src_list, pkg_dest_list ,
        restrict_to_default_dest, default_dest, tmp_dir, lists_dir,
        pending_dir, force_depends, and pkg_hash. There's still a bit of
-       tension between options stored in the config file, (ipkg_conf_t),
+       tension between options stored in the config file, (opkg_conf_t),
        and command-line arguments, (args_t).
 
-       * ipkg_cmd.c: First version that is approaching usability. The
-       following commands are more-or-less in place: "ipkg update", "ipkg
-       list", "ipkg info", "ipkg status". While the rest are in various
+       * opkg_cmd.c: First version that is approaching usability. The
+       following commands are more-or-less in place: "opkg update", "opkg
+       list", "opkg info", "opkg status". While the rest are in various
        states of being partiallyy written or written but untested.
-       (ipkg_upgrade_cmd): Added support for restricting to a dest.  Many
+       (opkg_upgrade_cmd): Added support for restricting to a dest.  Many
        other changes, largely involving plugging into the pkg_hash for
        real for the first time, and adding multiple dest support.
 
-       * ipkg.c: Added support for setting the dest on the command-line.
+       * opkg.c: Added support for setting the dest on the command-line.
 
-       * args.c: Added support for IPKG_CONF_DIR environment variable and
+       * args.c: Added support for OPKG_CONF_DIR environment variable and
        -f, -conf, and -conf-file options.
 
        * configure.ac: Added lots of little bits suggested by autoscan.
        (pkg_hash_fetch_installed_by_name_dest): Added this function to
        support pkg_dest
 
-       * ipkg_utils.h: Added GPL blurb
-       (IPKG_UTILS_H): Added multiple include protection
+       * opkg_utils.h: Added GPL blurb
+       (OPKG_UTILS_H): Added multiple include protection
 
-       * ipkg_utils.c:
+       * opkg_utils.c:
        (read_raw_pkgs_from_file): broke read_raw_pkgs into
        read_raw_pkgs_from_file and read_raw-pkgs_from_stream
-       (ipkg_write_status_file): Fixed return value
+       (opkg_write_status_file): Fixed return value
        (print_pkg_status): Moved this function to pkg.c:pkg_print_status
        (line_is_blank): Fixed const char handling
 
 
 2001-12-11  Carl Worth  <cworth@east.isi.edu>
 
-       * ipkg_conf.c: Now parses /etc/ipkg.conf, (and doesn't do anything
+       * opkg_conf.c: Now parses /etc/opkg.conf, (and doesn't do anything
        with it).
 
-       * ipkg.c: Started work on ipkg main, (not much here yet).
+       * opkg.c: Started work on opkg main, (not much here yet).
 
-       * ipkg_cmd.h: Added a tiny thing to abstract top-level ipkg
+       * opkg_cmd.h: Added a tiny thing to abstract top-level opkg
        commands, (not finished).
 
        * Set up autoconf and friends
diff --git a/INSTALL b/INSTALL
index 39ce024..3350a01 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
-ipkg uses autoconf and friends for configuration. The familiar steps of:
+opkg uses autoconf and friends for configuration. The familiar steps of:
 
        ./configure
        make
index 4f820d5..c6218c1 100644 (file)
@@ -3,38 +3,38 @@ SUBDIRS = etc familiar libbb
 
 HOST_CPU=@host_cpu@
 BUILD_CPU=@build_cpu@
-IPKGLIBDIR=@ipkglibdir@ 
-ALL_CFLAGS=-g -O -Wall -DHOST_CPU_STR=\"@host_cpu@\" -DBUILD_CPU=@build_cpu@ -DLIBDIR=\"@libdir@\" -DIPKGLIBDIR=\"@ipkglibdir@\" -DDATADIR=\"@datadir@\"
+OPKGLIBDIR=@opkglibdir@ 
+ALL_CFLAGS=-g -O -Wall -DHOST_CPU_STR=\"@host_cpu@\" -DBUILD_CPU=@build_cpu@ -DLIBDIR=\"@libdir@\" -DOPKGLIBDIR=\"@opkglibdir@\" -DDATADIR=\"@datadir@\"
 
-bin_PROGRAMS = ipkg-cl
+bin_PROGRAMS = opkg-cl
 
-lib_LTLIBRARIES = libipkg.la
+lib_LTLIBRARIES = libopkg.la
 
 bin_SCRIPTS = update-alternatives
 
-interceptdir = $(datadir)/ipkg/intercept
+interceptdir = $(datadir)/opkg/intercept
 intercept_DATA = intercept/ldconfig intercept/depmod intercept/update-modules
 
 install-data-hook:
-       chmod +x $(DESTDIR)$(datadir)/ipkg/intercept/*
+       chmod +x $(DESTDIR)$(datadir)/opkg/intercept/*
 
-# ipkg_LDADD = libbb/libbb.a replace/libreplace.a
+# opkg_LDADD = libbb/libbb.a replace/libreplace.a
 
-#ipkg_cl_LDADD = libipkg.la libbb/libbb.la replace/libreplace.a 
-ipkg_cl_LDADD = libipkg.la libbb/libbb.la 
+#opkg_cl_LDADD = libopkg.la libbb/libbb.la replace/libreplace.a 
+opkg_cl_LDADD = libopkg.la libbb/libbb.la 
 
-libipkg_includedir=$(includedir)/libipkg
+libopkg_includedir=$(includedir)/libopkg
 
-libipkg_include_HEADERS= \
+libopkg_include_HEADERS= \
        args.h \
        conffile.h \
        conffile_list.h \
        config.h \
        hash_table.h \
        includes.h \
-       ipkg_conf.h \
-       ipkg.h \
-       ipkg_message.h \
+       opkg_conf.h \
+       opkg.h \
+       opkg_message.h \
        nv_pair.h \
        nv_pair_list.h \
        pkg_depends.h \
@@ -47,41 +47,41 @@ libipkg_include_HEADERS= \
        pkg_vec.h \
        str_list.h \
        void_list.h \
-       libipkg.h 
+       libopkg.h 
 
 #\ replace/replace.h
 
-#libipkg_la_LIBADD = libbb/libbb.la replace/libreplace.a
-libipkg_la_LIBADD = libbb/libbb.la $(CURL_LIBS)
+#libopkg_la_LIBADD = libbb/libbb.la replace/libreplace.a
+libopkg_la_LIBADD = libbb/libbb.la $(CURL_LIBS)
 
-ipkg_core_sources = args.c args.h ipkg.c \
+opkg_core_sources = args.c args.h opkg.c \
                    user.c user.h 
-ipkg_libcore_sources = args.c args.h libipkg.c libipkg.h ipkg.h\
+opkg_libcore_sources = args.c args.h libopkg.c libopkg.h opkg.h\
                    user.c user.h 
-ipkg_cmd_sources = ipkg_cmd.c ipkg_cmd.h \
-                  ipkg_configure.c ipkg_configure.h \
-                  ipkg_download.c ipkg_download.h \
-                  ipkg_install.c ipkg_install.h \
-                  ipkg_upgrade.c ipkg_upgrade.h \
-                  ipkg_remove.c ipkg_remove.h
-ipkg_db_sources = ipkg_conf.c ipkg_conf.h \
-                 ipkg_utils.c ipkg_utils.h pkg.c pkg.h hash_table.h \
+opkg_cmd_sources = opkg_cmd.c opkg_cmd.h \
+                  opkg_configure.c opkg_configure.h \
+                  opkg_download.c opkg_download.h \
+                  opkg_install.c opkg_install.h \
+                  opkg_upgrade.c opkg_upgrade.h \
+                  opkg_remove.c opkg_remove.h
+opkg_db_sources = opkg_conf.c opkg_conf.h \
+                 opkg_utils.c opkg_utils.h pkg.c pkg.h hash_table.h \
                  pkg_depends.c pkg_depends.h pkg_extract.c pkg_extract.h \
                  hash_table.c pkg_hash.c pkg_hash.h pkg_parse.c pkg_parse.h \
                  pkg_vec.c pkg_vec.h
-ipkg_list_sources = conffile.c conffile.h conffile_list.c conffile_list.h \
+opkg_list_sources = conffile.c conffile.h conffile_list.c conffile_list.h \
                    nv_pair.c nv_pair.h nv_pair_list.c nv_pair_list.h \
                    pkg_dest.c pkg_dest.h pkg_dest_list.c pkg_dest_list.h \
                    pkg_src.c pkg_src.h pkg_src_list.c pkg_src_list.h \
                    str_list.c str_list.h void_list.c void_list.h
-ipkg_util_sources = file_util.c file_util.h ipkg_message.h ipkg_message.c md5.c md5.h \
+opkg_util_sources = file_util.c file_util.h opkg_message.h opkg_message.c md5.c md5.h \
                    sprintf_alloc.c sprintf_alloc.h str_util.c str_util.h \
                    xregex.c xregex.h xsystem.c xsystem.h
 
-# ipkg_SOURCES = $(ipkg_core_sources) $(ipkg_cmd_sources) $(ipkg_db_sources) \
-#             $(ipkg_util_sources) $(ipkg_list_sources)
+# opkg_SOURCES = $(opkg_core_sources) $(opkg_cmd_sources) $(opkg_db_sources) \
+#             $(opkg_util_sources) $(opkg_list_sources)
 
-EXTRA_DIST = ipkg.c update-alternatives $(intercept_DATA)
+EXTRA_DIST = opkg.c update-alternatives $(intercept_DATA)
 
 MAINTAINERCLEANFILES= \
        configure \
@@ -92,26 +92,26 @@ MAINTAINERCLEANFILES= \
        .Makefile.am.swp \
        aclocal.m4
 
-libipkg_la_SOURCES = $(ipkg_libcore_sources) $(ipkg_cmd_sources) $(ipkg_db_sources) \
-              $(ipkg_util_sources) $(ipkg_list_sources)
+libopkg_la_SOURCES = $(opkg_libcore_sources) $(opkg_cmd_sources) $(opkg_db_sources) \
+              $(opkg_util_sources) $(opkg_list_sources)
 
-ipkg_cl_SOURCES = ipkg-frontend.c
+opkg_cl_SOURCES = opkg-frontend.c
 
-libipkg_la_CFLAGS = -DIPKG_LIB $(ALL_CFLAGS)  $(CURL_CFLAGS)
+libopkg_la_CFLAGS = -DOPKG_LIB $(ALL_CFLAGS)  $(CURL_CFLAGS)
 
-ipkg_CFLAGS = $(ALL_CFLAGS) $(CURL_CFLAGS)
+opkg_CFLAGS = $(ALL_CFLAGS) $(CURL_CFLAGS)
 
-ipkg_cl_CFLAGS = -DIPKG_LIB $(ALL_CFLAGS)
+opkg_cl_CFLAGS = -DOPKG_LIB $(ALL_CFLAGS)
 
-noinst_PROGRAMS = ipkg_hash_test ipkg_extract_test
+noinst_PROGRAMS = opkg_hash_test opkg_extract_test
 
-ipkg_hash_test_LDADD = libbb/libbb.la
-ipkg_hash_test_SOURCES = ipkg_hash_test.c $(ipkg_db_sources) $(ipkg_util_sources) $(ipkg_list_sources)
-ipkg_hash_test_CFLAGS = $(ALL_CFLAGS)
+opkg_hash_test_LDADD = libbb/libbb.la
+opkg_hash_test_SOURCES = opkg_hash_test.c $(opkg_db_sources) $(opkg_util_sources) $(opkg_list_sources)
+opkg_hash_test_CFLAGS = $(ALL_CFLAGS)
 
-ipkg_extract_test_LDADD = libbb/libbb.la
-ipkg_extract_test_SOURCES = ipkg_extract_test.c $(ipkg_db_sources) $(ipkg_util_sources) $(ipkg_list_sources)
-ipkg_extract_test_CFLAGS = $(ALL_CFLAGS)
+opkg_extract_test_LDADD = libbb/libbb.la
+opkg_extract_test_SOURCES = opkg_extract_test.c $(opkg_db_sources) $(opkg_util_sources) $(opkg_list_sources)
+opkg_extract_test_CFLAGS = $(ALL_CFLAGS)
 
 package: all-recursive
        STRIPPROG=$(STRIP) familiar/rules INSTALL=$$PWD/install-sh  binary-arch
diff --git a/README b/README
index 5c73e12..e69de29 100644 (file)
--- a/README
+++ b/README
@@ -1,3 +0,0 @@
-ipkg - The Itsy Package Management System
-
-See http://www.handhelds.org/moin/moin.cgi/Ipkg for more details about ipkg.
diff --git a/TODO b/TODO
index 4830d7e..be92b03 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,12 +1,12 @@
 
-Things to do for ipkg, in a partial order:
+Things to do for opkg, in a partial order:
 
 0) Play with configure to check for strdup/strndup ( to works with replace/replace.h stuffs )
 
-1) Fix incompatibilities between current C-based ipkg and original
-sh-based ipkg.
+1) Fix incompatibilities between current C-based opkg and original
+sh-based opkg.
 
-1.a) Fix ipkg.conf options for http_proxy and friends. DONE:
+1.a) Fix opkg.conf options for http_proxy and friends. DONE:
      http_proxy tested, (ftp_proxy, no_proxy, proxy_user, and
      proxy_passwd have not been tested).
 
@@ -18,7 +18,7 @@ sh-based ipkg.
 
 1.e) Fix offline_root mode. DONE: tested.
 
-2) Release ipkg as ipkg, (no longer as ipkg-unstable). This depends on
+2) Release opkg as opkg, (no longer as opkg-unstable). This depends on
    all of (1) being DONE. Although I might let this release proceed
    without offline_root --- only Jamey will complain. ;-)
 
@@ -26,7 +26,7 @@ sh-based ipkg.
 
 3.a) fix all code marked "XXX: BUG"
 
-3.b) fix all outstanding ipkg bugzilla bugs
+3.b) fix all outstanding opkg bugzilla bugs
 
 3.c) conffiles support seems broken again. It's prompting on just
      about every file. It might be because of file names beginning
@@ -47,34 +47,34 @@ sh-based ipkg.
 
 3.g) Audit all dpkg package fields for both parsing and printing support.
 
-3.h) "ipkg status" and "ipkg info" need to complain about unknown
+3.h) "opkg status" and "opkg info" need to complain about unknown
   packages. For that matter, these two commands should probably just
   become aliases to the same functionality.
 
-  Jamey thinks ipkg status should be brief give one line per package, while
-  ipkg info can continue to be verbose. 7/23/2002.
+  Jamey thinks opkg status should be brief give one line per package, while
+  opkg info can continue to be verbose. 7/23/2002.
 
-3.i) Currently "ipkg install foo" will upgrade foo if possible. The
+3.i) Currently "opkg install foo" will upgrade foo if possible. The
   "Package foo is already installed" check needs to be moved up to
   avoid this.
 
-  Jamey thinkgs that "ipkg install foo" should upgrade foo.  7/23/2002.
+  Jamey thinkgs that "opkg install foo" should upgrade foo.  7/23/2002.
 
 4) Implement new features
 
 4.a) start with all "XXX: FEATURE" comments
 
-4.b) implement all accepted ipkg bugzilla feature requests, (also
-     check old post "Subject: Reinventing ipkg" to see if we forgot
+4.b) implement all accepted opkg bugzilla feature requests, (also
+     check old post "Subject: Reinventing opkg" to see if we forgot
      any of the good ideas we had once upon a time)
 
-4.c) ipkg remove needs to (prompt first) then remove packages for
+4.c) opkg remove needs to (prompt first) then remove packages for
      which the dependencies will no longer be met. DONE. 7/19/2002.
 
 4.d) Add support for:
-       ipkg install foo from some-feed
-       ipkg install foo-0.4.3
-       ipkg install foo-latest # Only needed if we add a feed-order-priority option
+       opkg install foo from some-feed
+       opkg install foo-0.4.3
+       opkg install foo-latest # Only needed if we add a feed-order-priority option
      or something like that.
 
 4.e) Orphaned dependency management (what is this -Jamey 7/23/2002)
@@ -89,7 +89,7 @@ sh-based ipkg.
      eliminate some library calls, (glob, regcomp)? Can we get
      something like uclibc to work well?
 
-4.h) Add support for a deb-src in /etc/ipkg.conf. (ARGH! Name clash
+4.h) Add support for a deb-src in /etc/opkg.conf. (ARGH! Name clash
      alert! In apt-land, deb-src means something very different than
      what I would mean here. Hrm... Maybe src-deb would be cleaner? )
 
@@ -98,10 +98,10 @@ sh-based ipkg.
 4.i) Figure out a clever chroot mechanism for running maintainer scripts in
      offline_root mode.
 
-4.j) Implement ipkg history mechanism, with undo and redo?  Keep track of
-     packages removed/installed by each call to ipkg.
+4.j) Implement opkg history mechanism, with undo and redo?  Keep track of
+     packages removed/installed by each call to opkg.
 
-5) release ipkg-1.0.0
+5) release opkg-1.0.0
 
 6) Cleanup the code
 
diff --git a/args.c b/args.c
index 985c942..99f3e12 100644 (file)
--- a/args.c
+++ b/args.c
@@ -20,7 +20,7 @@
 #include <string.h>
 #include <unistd.h>
 
-#include "ipkg.h"
+#include "opkg.h"
 
 #include "config.h"
 #include "args.h"
@@ -53,7 +53,7 @@ int args_init(args_t *args)
 
      args->dest = ARGS_DEFAULT_DEST;
 
-     conf_file_dir = getenv("IPKG_CONF_DIR");
+     conf_file_dir = getenv("OPKG_CONF_DIR");
      if (conf_file_dir == NULL || conf_file_dir[0] == '\0') {
          conf_file_dir = ARGS_DEFAULT_CONF_FILE_DIR;
      }
@@ -226,10 +226,10 @@ int args_parse(args_t *args, int argc, char *argv[])
 void args_usage(char *complaint)
 {
      if (complaint) {
-         fprintf(stderr, "ipkg: %s\n", complaint);
+         fprintf(stderr, "opkg: %s\n", complaint);
      }
      print_version();
-     fprintf(stderr, "usage: ipkg [options...] sub-command [arguments...]\n");
+     fprintf(stderr, "usage: opkg [options...] sub-command [arguments...]\n");
      fprintf(stderr, "where sub-command is one of:\n");
     
      fprintf(stderr, "\nPackage Manipulation:\n");
@@ -247,7 +247,7 @@ void args_usage(char *complaint)
      fprintf(stderr, "\tlist_installed         List all and only the installed packages and description \n");
      fprintf(stderr, "\tfiles <pkg>            List all files belonging to <pkg>\n");
      fprintf(stderr, "\tsearch <file|regexp>           Search for a package providing <file>\n");
-#ifndef IPKG_LIB
+#ifndef OPKG_LIB
      fprintf(stderr, "\tinfo [pkg|regexp [<field>]]    Display all/some info fields for <pkg> or all\n");
      fprintf(stderr, "\tstatus [pkg|regexp [<field>]]  Display all/some status fields for <pkg> or all\n");
 #else
@@ -273,7 +273,7 @@ void args_usage(char *complaint)
      fprintf(stderr, "\t                         1 normal messages (default)\n");
      fprintf(stderr, "\t                         2 informative messages\n");
      fprintf(stderr, "\t                         3 debug output\n");
-     fprintf(stderr, "\t-f <conf_file>         Use <conf_file> as the ipkg configuration file\n");
+     fprintf(stderr, "\t-f <conf_file>         Use <conf_file> as the opkg configuration file\n");
      fprintf(stderr, "\t-conf <conf_file>      Default configuration file location\n");
      fprintf(stderr, "                         is %s/%s\n", ARGS_DEFAULT_CONF_FILE_DIR, ARGS_DEFAULT_CONF_FILE_NAME);
      fprintf(stderr, "\t-d <dest_name>         Use <dest_name> as the the root directory for\n");
@@ -285,27 +285,27 @@ void args_usage(char *complaint)
      fprintf(stderr, "\t-offline <offline_root>        offline installation of packages.\n");
      fprintf(stderr, "\t-verbose_wget          more wget messages\n");
     
-     fprintf(stderr, "\tForce Options (use when ipkg is too smart for its own good):\n");
+     fprintf(stderr, "\tForce Options (use when opkg is too smart for its own good):\n");
      fprintf(stderr, "\t-force-depends         Make dependency checks warnings instead of errors\n");
      fprintf(stderr, "\t                               Install/remove package in spite of failed dependences\n");
-     fprintf(stderr, "\t-force-defaults                Use default options for questions asked by ipkg.\n");
+     fprintf(stderr, "\t-force-defaults                Use default options for questions asked by opkg.\n");
      fprintf(stderr, "                         (no prompts). Note that this will not prevent\n");
      fprintf(stderr, "                         package installation scripts from prompting.\n");
-     fprintf(stderr, "\t-force-reinstall       Allow ipkg to reinstall a package.\n");
-     fprintf(stderr, "\t-force-overwrite       Allow ipkg to overwrite files from another package during an install.\n");
-     fprintf(stderr, "\t-force-downgrade       Allow ipkg to downgrade packages.\n");
+     fprintf(stderr, "\t-force-reinstall       Allow opkg to reinstall a package.\n");
+     fprintf(stderr, "\t-force-overwrite       Allow opkg to overwrite files from another package during an install.\n");
+     fprintf(stderr, "\t-force-downgrade       Allow opkg to downgrade packages.\n");
      fprintf(stderr, "\t-force_space            Install even if there does not seem to be enough space.\n");
      fprintf(stderr, "\t-noaction               No action -- test only\n");
      fprintf(stderr, "\t-nodeps                 Do not follow dependences\n");
      fprintf(stderr, "\t-force-removal-of-dependent-packages\n");
-     fprintf(stderr, "\t-recursive             Allow ipkg to remove package and all that depend on it.\n");
+     fprintf(stderr, "\t-recursive             Allow opkg to remove package and all that depend on it.\n");
      fprintf(stderr, "\t-test                   No action -- test only\n");
      fprintf(stderr, "\t-t                     Specify tmp-dir.\n");
      fprintf(stderr, "\t--tmp-dir              Specify tmp-dir.\n");
      fprintf(stderr, "\n");
      fprintf(stderr, "\tregexp could be something like 'pkgname*' '*file*' or similar\n");
-     fprintf(stderr, "\teg: ipkg info 'libstd*'  or ipkg search '*libop*' or ipkg remove 'libncur*'\n");
-     /* -force-removal-of-essential-packages   Let ipkg remove essential packages. 
+     fprintf(stderr, "\teg: opkg info 'libstd*'  or opkg search '*libop*' or opkg remove 'libncur*'\n");
+     /* -force-removal-of-essential-packages   Let opkg remove essential packages. 
        Using this option is almost guaranteed to break your system, hence this option
        is not even advertised in the usage statement. */
      exit(1);
@@ -313,5 +313,5 @@ void args_usage(char *complaint)
 
 static void print_version(void)
 {
-     fprintf(stderr, "ipkg version %s\n", VERSION);
+     fprintf(stderr, "opkg version %s\n", VERSION);
 }
diff --git a/args.h b/args.h
index 2fd3fd0..a470778 100644 (file)
--- a/args.h
+++ b/args.h
@@ -46,7 +46,7 @@ struct args
 typedef struct args args_t;
 
 #define ARGS_DEFAULT_CONF_FILE_DIR "/etc"
-#define ARGS_DEFAULT_CONF_FILE_NAME "ipkg.conf"
+#define ARGS_DEFAULT_CONF_FILE_NAME "opkg.conf"
 #define ARGS_DEFAULT_DEST NULL
 #define ARGS_DEFAULT_FORCE_DEFAULTS 0
 #define ARGS_DEFAULT_FORCE_DEPENDS 0
index 09577c6..5f41cc1 100644 (file)
@@ -18,8 +18,8 @@
 #include <string.h>
 #include <stdlib.h>
 
-#include "ipkg.h"
-#include "ipkg_message.h"
+#include "opkg.h"
+#include "opkg_message.h"
 
 #include "conffile.h"
 #include "file_util.h"
@@ -35,7 +35,7 @@ void conffile_deinit(conffile_t *conffile)
     nv_pair_deinit(conffile);
 }
 
-int conffile_has_been_modified(ipkg_conf_t *conf, conffile_t *conffile)
+int conffile_has_been_modified(opkg_conf_t *conf, conffile_t *conffile)
 {
     char *md5sum;
     char *filename = conffile->name;
@@ -43,7 +43,7 @@ int conffile_has_been_modified(ipkg_conf_t *conf, conffile_t *conffile)
     int ret;
 
     if (conffile->value == NULL) {
-        ipkg_message(conf, IPKG_NOTICE, "%s: conffile %s has no md5sum\n", __FUNCTION__, conffile->name);
+        opkg_message(conf, OPKG_NOTICE, "%s: conffile %s has no md5sum\n", __FUNCTION__, conffile->name);
         return 1;
     }
 
@@ -53,7 +53,7 @@ int conffile_has_been_modified(ipkg_conf_t *conf, conffile_t *conffile)
 
     ret = strcmp(md5sum, conffile->value);
     if (ret) {
-      ipkg_message(conf, IPKG_NOTICE, "%s: conffile %s: \t\nold md5=%s \t\nnew md5=%s\n", __FUNCTION__,
+      opkg_message(conf, OPKG_NOTICE, "%s: conffile %s: \t\nold md5=%s \t\nnew md5=%s\n", __FUNCTION__,
               conffile->name, md5sum, conffile->value);
     }
 
index 48c14e1..130d1d8 100644 (file)
@@ -24,7 +24,7 @@ typedef struct nv_pair conffile_t;
 
 int conffile_init(conffile_t *conffile, const char *file_name, const char *md5sum);
 void conffile_deinit(conffile_t *conffile);
-int conffile_has_been_modified(struct ipkg_conf *conf, conffile_t *conffile);
+int conffile_has_been_modified(struct opkg_conf *conf, conffile_t *conffile);
 
 #endif
 
index 0865107..27d48d5 100644 (file)
@@ -15,7 +15,7 @@
    General Public License for more details.
 */
 
-#include "ipkg.h"
+#include "opkg.h"
 
 #include "conffile_list.h"
 
index 810db5c..a076742 100644 (file)
@@ -1,6 +1,6 @@
 # Process this file with autoconf to produce a configure script
-AC_INIT(ipkg.c)
-AM_INIT_AUTOMAKE([ipkg], [0.99.163])
+AC_INIT(opkg.c)
+AM_INIT_AUTOMAKE([opkg], [0.99.163])
 AM_CONFIG_HEADER(config.h)
 
 AC_CANONICAL_HOST
@@ -19,7 +19,7 @@ AC_PROG_LN_S
 AM_PROG_INSTALL_STRIP
 AC_PROG_LIBTOOL
 
-# Checks for libraries (hah! ipkg is pretty much self-contained)
+# Checks for libraries (hah! opkg is pretty much self-contained)
 PKG_CHECK_MODULES(CURL, libcurl)
 
 # Checks for header files
@@ -51,23 +51,23 @@ AC_FUNC_UTIME_NULL
 AC_FUNC_VPRINTF
 AC_CHECK_FUNCS([memmove memset mkdir regcomp strchr strcspn strdup strerror strndup strrchr strstr strtol strtoul sysinfo utime])
 
-ipkglibdir=
-AC_ARG_WITH(ipkglibdir,
-[  --with-ipkglibdir=DIR   specifies directory to put status and info files.
-                          "/ipkg" is always added so if you want your files 
-                          to be in /usr/lib/ipkg you should indicate 
-                          --with-ipkglibdir=/usr/lib ],
+opkglibdir=
+AC_ARG_WITH(opkglibdir,
+[  --with-opkglibdir=DIR   specifies directory to put status and info files.
+                          "/opkg" is always added so if you want your files 
+                          to be in /usr/lib/opkg you should indicate 
+                          --with-opkglibdir=/usr/lib ],
 [case "${withval}" in
-yes)    AC_MSG_ERROR(bad value ${withval} given for ipkg libs directories ) ;;
+yes)    AC_MSG_ERROR(bad value ${withval} given for opkg libs directories ) ;;
 no)     ;;
-*)      ipkglibdir=$with_ipkglibdir ;;
+*)      opkglibdir=$with_opkglibdir ;;
 esac])
 
 # Default local prefix if it is empty
-if test x$ipkglibdir = x; then
-        ipkglibdir=/usr/lib
+if test x$opkglibdir = x; then
+        opkglibdir=/usr/lib
 fi
 
-AC_SUBST(ipkglibdir)
+AC_SUBST(opkglibdir)
 
-AC_OUTPUT(Makefile etc/Makefile familiar/Makefile familiar/control familiar/control-unstripped familiar/libipkg-control  familiar/libipkg-dev-control libbb/Makefile libipkg.pc ipkg.h)
+AC_OUTPUT(Makefile etc/Makefile familiar/Makefile familiar/control familiar/control-unstripped familiar/libopkg-control  familiar/libopkg-dev-control libbb/Makefile libopkg.pc opkg.h)
index 890e27e..bccea05 100644 (file)
@@ -1,22 +1,22 @@
-Package: ipkg-unstripped
-Replaces: ipkg
+Package: opkg-unstripped
+Replaces: opkg
 Version: @VERSION@
 Section: base
 Priority: required
 Essential: yes
 Architecture: @host_cpu@
 Maintainer: Jamey Hicks <jamey@handhelds.org>
-Source: http://www.handhelds.org/packages/ipkg/ipkg-@VERSION@.tar.gz
+Source: http://www.handhelds.org/packages/opkg/opkg-@VERSION@.tar.gz
 Depends: libc6, busybox 
 Description: lightweight package management system
ipkg is the Itsy Package Management System, for handling
opkg is the Itsy Package Management System, for handling
  installation and removal of packages on a system. It can
  recursively follow dependencies and download all packages
  necessary to install a particular package.
  .
ipkg knows how to install both .ipk and .deb packages.
opkg knows how to install both .ipk and .deb packages.
  .
ipkg is intended to serve the same functions (and more) for
opkg is intended to serve the same functions (and more) for
  Familiar that dpkg and apt serve for Debian, (while taking
  up much less space).
 
index d6e69b5..d1532cf 100644 (file)
@@ -1,21 +1,21 @@
-Package: ipkg
+Package: opkg
 Version: @VERSION@
 Section: base
 Priority: required
 Essential: yes
 Architecture: @host_cpu@
 Maintainer: Pierluigi Frullani <pigi@frumar.it>
-Source: http://www.handhelds.org/packages/ipkg/ipkg-@VERSION@.tar.gz
-Depends: libc6, libipkg (>= @VERSION@)
+Source: http://www.handhelds.org/packages/opkg/opkg-@VERSION@.tar.gz
+Depends: libc6, libopkg (>= @VERSION@)
 Description: lightweight package management system
ipkg is the Itsy Package Management System, for handling
opkg is the Itsy Package Management System, for handling
  installation and removal of packages on a system. It can
  recursively follow dependencies and download all packages
  necessary to install a particular package.
  .
ipkg knows how to install both .ipk and .deb packages.
opkg knows how to install both .ipk and .deb packages.
  .
ipkg is intended to serve the same functions (and more) for
opkg is intended to serve the same functions (and more) for
  Familiar that dpkg and apt serve for Debian, (while taking
  up much less space).
 
diff --git a/familiar/libipkg-control.in b/familiar/libipkg-control.in
deleted file mode 100644 (file)
index 641bd66..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Package: libipkg
-Version: @VERSION@
-Section: base
-Priority: optional
-Essential: yes
-Architecture: @host_cpu@
-Maintainer: Jamey Hicks <jamey@handhelds.org>
-Source: http://www.handhelds.org/packages/ipkg/ipkg-@VERSION@.tar.gz
-Depends: libc6, busybox
-Description: lightweight package management system
- ipkg is the Itsy Package Management System, for handling
- installation and removal of packages on a system. It can
- recursively follow dependencies and download all packages
- necessary to install a particular package.
- .
- ipkg knows how to install both .ipk and .deb packages.
- .
- ipkg is intended to serve the same functions (and more) for
- Familiar that dpkg and apt serve for Debian, (while taking
- up much less space).
-
diff --git a/familiar/libipkg-dev-control.in b/familiar/libipkg-dev-control.in
deleted file mode 100644 (file)
index 52e4ed8..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-Package: libipkg-dev
-Version: @VERSION@
-Section: base
-Priority: optional
-Essential: yes
-Architecture: @host_cpu@
-Maintainer: Jamey Hicks <jamey@handhelds.org>
-Source: http://www.handhelds.org/packages/ipkg/ipkg-@VERSION@.tar.gz
-Depends: libipkg
-Description: lightweight package management system
- ipkg is the Itsy Package Management System, for handling
- installation and removal of packages on a system. It can
- recursively follow dependencies and download all packages
- necessary to install a particular package.
- .
- ipkg knows how to install both .ipk and .deb packages.
- .
- ipkg is intended to serve the same functions (and more) for
- Familiar that dpkg and apt serve for Debian, (while taking
- up much less space).
-
diff --git a/familiar/libopkg-control.in b/familiar/libopkg-control.in
new file mode 100644 (file)
index 0000000..b1b672d
--- /dev/null
@@ -0,0 +1,21 @@
+Package: libopkg
+Version: @VERSION@
+Section: base
+Priority: optional
+Essential: yes
+Architecture: @host_cpu@
+Maintainer: Jamey Hicks <jamey@handhelds.org>
+Source: http://www.handhelds.org/packages/opkg/opkg-@VERSION@.tar.gz
+Depends: libc6, busybox
+Description: lightweight package management system
+ opkg is the Itsy Package Management System, for handling
+ installation and removal of packages on a system. It can
+ recursively follow dependencies and download all packages
+ necessary to install a particular package.
+ .
+ opkg knows how to install both .ipk and .deb packages.
+ .
+ opkg is intended to serve the same functions (and more) for
+ Familiar that dpkg and apt serve for Debian, (while taking
+ up much less space).
+
diff --git a/familiar/libopkg-dev-control.in b/familiar/libopkg-dev-control.in
new file mode 100644 (file)
index 0000000..a11caab
--- /dev/null
@@ -0,0 +1,21 @@
+Package: libopkg-dev
+Version: @VERSION@
+Section: base
+Priority: optional
+Essential: yes
+Architecture: @host_cpu@
+Maintainer: Jamey Hicks <jamey@handhelds.org>
+Source: http://www.handhelds.org/packages/opkg/opkg-@VERSION@.tar.gz
+Depends: libopkg
+Description: lightweight package management system
+ opkg is the Itsy Package Management System, for handling
+ installation and removal of packages on a system. It can
+ recursively follow dependencies and download all packages
+ necessary to install a particular package.
+ .
+ opkg knows how to install both .ipk and .deb packages.
+ .
+ opkg is intended to serve the same functions (and more) for
+ Familiar that dpkg and apt serve for Debian, (while taking
+ up much less space).
+
index e8084dd..da8a1cd 100644 (file)
@@ -15,7 +15,7 @@
    General Public License for more details.
 */
 
-#include "ipkg.h"
+#include "opkg.h"
 #include <sys/types.h>
 #include <sys/stat.h>
 
@@ -107,7 +107,7 @@ int file_move(const char *src, const char *dest)
 }
 
 /* I put these here to keep libbb dependencies from creeping all over
-   the ipkg code */
+   the opkg code */
 int file_copy(const char *src, const char *dest)
 {
     int err;
index 76e1aa3..41877c2 100644 (file)
@@ -1,4 +1,4 @@
-/* hash.c - hash tables for ipkg
+/* hash.c - hash tables for opkg
 
    Steven M. Ayer, Jamey Hicks
    
@@ -20,7 +20,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include "hash_table.h"
-#include "ipkg_message.h"
+#include "opkg_message.h"
 
 
 static int hash_index(hash_table_t *hash, const char *pkg_name);
@@ -92,7 +92,7 @@ void *hash_table_get(hash_table_t *hash, const char *key)
     if (hash_entry->key) 
     {
       if (strcmp(key, hash_entry->key) == 0) {
-         // ipkg_message(NULL, IPKG_DEBUG, "Function: %s. Key found for '%s' \n", __FUNCTION__, key);
+         // opkg_message(NULL, OPKG_DEBUG, "Function: %s. Key found for '%s' \n", __FUNCTION__, key);
         return hash_entry->data;
       }
     }
@@ -105,11 +105,11 @@ int hash_table_insert(hash_table_t *hash, const char *key, void *value)
 {
      int ndx= hash_index(hash, key);
      hash_entry_t *hash_entry = hash->entries + ndx;
-     if (0) ipkg_message(NULL, IPKG_DEBUG2, "Function: %s. Inserting in hash for '%s' \n", __FUNCTION__, key);
+     if (0) opkg_message(NULL, OPKG_DEBUG2, "Function: %s. Inserting in hash for '%s' \n", __FUNCTION__, key);
      if (hash_entry->key) {
          if (strcmp(hash_entry->key, key) == 0) {
               /* alread in table, update the value */
-               if (0) ipkg_message(NULL, IPKG_DEBUG2, "Function: %s. Value already in hash for '%s' \n", __FUNCTION__, key);
+               if (0) opkg_message(NULL, OPKG_DEBUG2, "Function: %s. Value already in hash for '%s' \n", __FUNCTION__, key);
               hash_entry->data = value;
               return 0;
          } else {
@@ -118,7 +118,7 @@ int hash_table_insert(hash_table_t *hash, const char *key, void *value)
                * then add a new entry
                * before we can hook up the value
                */
-               if (0) ipkg_message(NULL, IPKG_DEBUG2, "Function: %s. Value already in hash by collision for '%s' \n", __FUNCTION__, key);
+               if (0) opkg_message(NULL, OPKG_DEBUG2, "Function: %s. Value already in hash by collision for '%s' \n", __FUNCTION__, key);
               while (hash_entry->next)
                    hash_entry = hash_entry->next;
               hash_entry->next = (hash_entry_t *)malloc(sizeof(hash_entry_t));
index b498454..388a966 100644 (file)
@@ -1,4 +1,4 @@
-/* hash.h - hash tables for ipkg
+/* hash.h - hash tables for opkg
 
    Steven M. Ayer, Jamey Hicks
    
index 7dc442d..a60768f 100644 (file)
@@ -1,9 +1,9 @@
 #!/bin/sh
 
 if [ "x$1" = "x-a" ] || [ "x$1" = "x-A" ]; then
-  if [ ! -f $IPKG_INTERCEPT_DIR/depmod ]; then
-    echo "depmod -A" > $IPKG_INTERCEPT_DIR/depmod
-    chmod +x $IPKG_INTERCEPT_DIR/depmod
+  if [ ! -f $OPKG_INTERCEPT_DIR/depmod ]; then
+    echo "depmod -A" > $OPKG_INTERCEPT_DIR/depmod
+    chmod +x $OPKG_INTERCEPT_DIR/depmod
   fi
   exit 0
 fi
index 2be99b4..e07c81d 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
-if [ ! -f $IPKG_INTERCEPT_DIR/ldconfig ]; then
-  echo "ldconfig" > $IPKG_INTERCEPT_DIR/ldconfig
-  chmod +x $IPKG_INTERCEPT_DIR/ldconfig
+if [ ! -f $OPKG_INTERCEPT_DIR/ldconfig ]; then
+  echo "ldconfig" > $OPKG_INTERCEPT_DIR/ldconfig
+  chmod +x $OPKG_INTERCEPT_DIR/ldconfig
 fi
 
index 431bfcd..ac5749c 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
-if [ ! -f $IPKG_INTERCEPT_DIR/update-modules ]; then
-  echo "update-modules" > $IPKG_INTERCEPT_DIR/update-modules
-  chmod +x $IPKG_INTERCEPT_DIR/update-modules
+if [ ! -f $OPKG_INTERCEPT_DIR/update-modules ]; then
+  echo "update-modules" > $OPKG_INTERCEPT_DIR/update-modules
+  chmod +x $OPKG_INTERCEPT_DIR/update-modules
 fi
 
diff --git a/ipkg-frontend.c b/ipkg-frontend.c
deleted file mode 100644 (file)
index b814e08..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/* ipkg-frontend.c - the itsy package management system
-
-   Florina Boor
-
-   Copyright (C) 2003 kernel concepts
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-   
-   ipkg command line frontend using libipkg
-   
-*/
-
-#include "libipkg.h"
-
-/* This is really small, eh? ;-) */
-
-int main(int argc, char *argv[])
-{
-       return ipkg_op(argc,argv);      
-}
diff --git a/ipkg.c b/ipkg.c
deleted file mode 100644 (file)
index 50f8c7e..0000000
--- a/ipkg.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/* ipkg.c - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#include "ipkg.h"
-
-#include "args.h"
-#include "ipkg_conf.h"
-#include "ipkg_cmd.h"
-
-int main(int argc, const char *argv[])
-{
-    int err, optind;
-    args_t args;
-    char *cmd_name;
-    ipkg_cmd_t *cmd;
-    ipkg_conf_t ipkg_conf;
-
-    error_list=NULL;
-
-    args_init(&args);
-       
-    optind = args_parse(&args, argc, argv);
-    if (optind == argc || optind < 0) {
-       args_usage("ipkg must have one sub-command argument");
-    }
-
-    cmd_name = argv[optind++];
-
-    err = ipkg_conf_init(&ipkg_conf, &args);
-    if (err) {
-       return err;
-    }
-
-    args_deinit(&args);
-
-    cmd = ipkg_cmd_find(cmd_name);
-    if (cmd == NULL) {
-       fprintf(stderr, "%s: unknown sub-command %s\n", argv[0], cmd_name);
-       args_usage(NULL);
-    }
-
-    if (cmd->requires_args && optind == argc) {
-       fprintf(stderr, "%s: the ``%s'' command requires at least one argument\n",
-               __FUNCTION__, cmd_name);
-       args_usage(NULL);
-    }
-
-    err = ipkg_cmd_exec(cmd, &ipkg_conf, argc - optind, argv + optind);
-
-    if ( err == 0 ) {
-       ipkg_message(ipkg_conf, IPKG_NOTICE, "Succesfully done.\n");
-    } else {
-       ipkg_message(ipkg_conf, IPKG_NOTICE, "Error returned. Return value is %d\n.",err);
-
-}
-
-    }
-    /* XXX: FEATURE request: run ldconfig and/or depmod after package needing them are installed or removed */  
-    // ipkg_global_postinst();
-
-    ipkg_conf_deinit(&ipkg_conf);
-
-    return err;
-}
-
-
-
diff --git a/ipkg.h b/ipkg.h
deleted file mode 100644 (file)
index f679239..0000000
--- a/ipkg.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/* ipkg.h - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#ifndef IPKG_H
-#define IPKG_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#if 0
-#define IPKG_DEBUG_NO_TMP_CLEANUP
-#endif
-
-#include "includes.h"
-#include "ipkg_conf.h"
-#include "ipkg_message.h"
-
-#define IPKG_PKG_EXTENSION ".ipk"
-#define DPKG_PKG_EXTENSION ".deb"
-
-#define IPKG_LEGAL_PKG_NAME_CHARS "abcdefghijklmnopqrstuvwxyz0123456789.+-"
-#define IPKG_PKG_VERSION_SEP_CHAR '_'
-
-#define IPKG_STATE_DIR_PREFIX IPKGLIBDIR"/ipkg"
-#define IPKG_LISTS_DIR_SUFFIX "lists"
-#define IPKG_INFO_DIR_SUFFIX "info"
-#define IPKG_STATUS_FILE_SUFFIX "status"
-
-#define IPKG_BACKUP_SUFFIX "-ipkg.backup"
-
-#define IPKG_LIST_DESCRIPTION_LENGTH 128
-
-enum ipkg_error {
-    IPKG_SUCCESS = 0,
-    IPKG_PKG_DEPS_UNSATISFIED,
-    IPKG_PKG_IS_ESSENTIAL,
-    IPKG_PKG_HAS_DEPENDENTS,
-    IPKG_PKG_HAS_NO_CANDIDATE
-};
-typedef enum ipkg_error ipkg_error_t;
-
-extern int ipkg_state_changed;
-
-
-struct errlist {
-    char * errmsg;
-    struct errlist * next;
-} ;
-
-struct errlist* error_list;
-
-
-#endif
diff --git a/ipkg.h.in b/ipkg.h.in
deleted file mode 100644 (file)
index f679239..0000000
--- a/ipkg.h.in
+++ /dev/null
@@ -1,68 +0,0 @@
-/* ipkg.h - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#ifndef IPKG_H
-#define IPKG_H
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#if 0
-#define IPKG_DEBUG_NO_TMP_CLEANUP
-#endif
-
-#include "includes.h"
-#include "ipkg_conf.h"
-#include "ipkg_message.h"
-
-#define IPKG_PKG_EXTENSION ".ipk"
-#define DPKG_PKG_EXTENSION ".deb"
-
-#define IPKG_LEGAL_PKG_NAME_CHARS "abcdefghijklmnopqrstuvwxyz0123456789.+-"
-#define IPKG_PKG_VERSION_SEP_CHAR '_'
-
-#define IPKG_STATE_DIR_PREFIX IPKGLIBDIR"/ipkg"
-#define IPKG_LISTS_DIR_SUFFIX "lists"
-#define IPKG_INFO_DIR_SUFFIX "info"
-#define IPKG_STATUS_FILE_SUFFIX "status"
-
-#define IPKG_BACKUP_SUFFIX "-ipkg.backup"
-
-#define IPKG_LIST_DESCRIPTION_LENGTH 128
-
-enum ipkg_error {
-    IPKG_SUCCESS = 0,
-    IPKG_PKG_DEPS_UNSATISFIED,
-    IPKG_PKG_IS_ESSENTIAL,
-    IPKG_PKG_HAS_DEPENDENTS,
-    IPKG_PKG_HAS_NO_CANDIDATE
-};
-typedef enum ipkg_error ipkg_error_t;
-
-extern int ipkg_state_changed;
-
-
-struct errlist {
-    char * errmsg;
-    struct errlist * next;
-} ;
-
-struct errlist* error_list;
-
-
-#endif
diff --git a/ipkg_cmd.c b/ipkg_cmd.c
deleted file mode 100644 (file)
index dfe2dc8..0000000
+++ /dev/null
@@ -1,1432 +0,0 @@
-/* ipkg_cmd.c - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#include <string.h>
-
-#include "ipkg.h"
-#include <libgen.h>
-#include <glob.h>
-#include <errno.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <signal.h>
-#include <stdio.h>
-#include <dirent.h>
-
-#include "ipkg_conf.h"
-#include "ipkg_cmd.h"
-#include "ipkg_message.h"
-#include "pkg.h"
-#include "pkg_dest.h"
-#include "pkg_parse.h"
-#include "sprintf_alloc.h"
-#include "pkg.h"
-#include "file_util.h"
-#include "str_util.h"
-#include "libbb/libbb.h"
-
-#include <fnmatch.h>
-
-
-#include "ipkg_download.h"
-#include "ipkg_install.h"
-#include "ipkg_upgrade.h"
-#include "ipkg_remove.h"
-#include "ipkg_configure.h"
-#include "ipkg_message.h"
-
-#ifdef IPKG_LIB
-#include "libipkg.h"
-static void *p_userdata = NULL;
-#endif
-
-static int ipkg_update_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_upgrade_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_list_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_info_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_status_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_install_pending_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_install_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_list_installed_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_remove_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_purge_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_flag_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_files_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_search_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_download_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_depends_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_whatdepends_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_whatdepends_recursively_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_whatsuggests_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_whatrecommends_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_whatprovides_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_whatconflicts_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_whatreplaces_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_compare_versions_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_print_architecture_cmd(ipkg_conf_t *conf, int argc, char **argv);
-static int ipkg_configure_cmd(ipkg_conf_t *conf, int argc, char **argv);
-
-/* XXX: CLEANUP: The usage strings should be incorporated into this
-   array for easier maintenance */
-static ipkg_cmd_t cmds[] = {
-     {"update", 0, (ipkg_cmd_fun_t)ipkg_update_cmd}, 
-     {"upgrade", 0, (ipkg_cmd_fun_t)ipkg_upgrade_cmd},
-     {"list", 0, (ipkg_cmd_fun_t)ipkg_list_cmd},
-     {"list_installed", 0, (ipkg_cmd_fun_t)ipkg_list_installed_cmd},
-     {"info", 0, (ipkg_cmd_fun_t)ipkg_info_cmd},
-     {"flag", 1, (ipkg_cmd_fun_t)ipkg_flag_cmd},
-     {"status", 0, (ipkg_cmd_fun_t)ipkg_status_cmd},
-     {"install_pending", 0, (ipkg_cmd_fun_t)ipkg_install_pending_cmd},
-     {"install", 1, (ipkg_cmd_fun_t)ipkg_install_cmd},
-     {"remove", 1, (ipkg_cmd_fun_t)ipkg_remove_cmd},
-     {"purge", 1, (ipkg_cmd_fun_t)ipkg_purge_cmd},
-     {"configure", 0, (ipkg_cmd_fun_t)ipkg_configure_cmd},
-     {"files", 1, (ipkg_cmd_fun_t)ipkg_files_cmd},
-     {"search", 1, (ipkg_cmd_fun_t)ipkg_search_cmd},
-     {"download", 1, (ipkg_cmd_fun_t)ipkg_download_cmd},
-     {"compare_versions", 1, (ipkg_cmd_fun_t)ipkg_compare_versions_cmd},
-     {"compare-versions", 1, (ipkg_cmd_fun_t)ipkg_compare_versions_cmd},
-     {"print-architecture", 0, (ipkg_cmd_fun_t)ipkg_print_architecture_cmd},
-     {"print_architecture", 0, (ipkg_cmd_fun_t)ipkg_print_architecture_cmd},
-     {"print-installation-architecture", 0, (ipkg_cmd_fun_t)ipkg_print_architecture_cmd},
-     {"print_installation_architecture", 0, (ipkg_cmd_fun_t)ipkg_print_architecture_cmd},
-     {"depends", 1, (ipkg_cmd_fun_t)ipkg_depends_cmd},
-     {"whatdepends", 1, (ipkg_cmd_fun_t)ipkg_whatdepends_cmd},
-     {"whatdependsrec", 1, (ipkg_cmd_fun_t)ipkg_whatdepends_recursively_cmd},
-     {"whatrecommends", 1, (ipkg_cmd_fun_t)ipkg_whatrecommends_cmd},
-     {"whatsuggests", 1, (ipkg_cmd_fun_t)ipkg_whatsuggests_cmd},
-     {"whatprovides", 1, (ipkg_cmd_fun_t)ipkg_whatprovides_cmd},
-     {"whatreplaces", 1, (ipkg_cmd_fun_t)ipkg_whatreplaces_cmd},
-     {"whatconflicts", 1, (ipkg_cmd_fun_t)ipkg_whatconflicts_cmd},
-};
-
-int ipkg_state_changed;
-static void write_status_files_if_changed(ipkg_conf_t *conf)
-{
-     if (ipkg_state_changed && !conf->noaction) {
-         ipkg_message(conf, IPKG_INFO,
-                      "  writing status file\n");
-         ipkg_conf_write_status_files(conf);
-         pkg_write_changed_filelists(conf);
-     } else { 
-         ipkg_message(conf, IPKG_NOTICE, "Nothing to be done\n");
-     }
-}
-
-
-static int num_cmds = sizeof(cmds) / sizeof(ipkg_cmd_t);
-
-ipkg_cmd_t *ipkg_cmd_find(const char *name)
-{
-     int i;
-     ipkg_cmd_t *cmd;
-
-     for (i=0; i < num_cmds; i++) {
-         cmd = &cmds[i];
-         if (strcmp(name, cmd->name) == 0) {
-              return cmd;
-         }
-     }
-
-     return NULL;
-}
-
-#ifdef IPKG_LIB
-int ipkg_cmd_exec(ipkg_cmd_t *cmd, ipkg_conf_t *conf, int argc, const char **argv, void *userdata)
-{
-       int result;
-       p_userdata = userdata;
-      
-
-       result = (cmd->fun)(conf, argc, argv);
-        if ( result == 0 ) {
-           ipkg_message(conf, IPKG_NOTICE, "Successfully terminated.\n");
-        } else {
-           ipkg_message(conf, IPKG_NOTICE, "An error ocurred, return value: %d.\n", result);
-
-        }
-        if ( error_list ) {
-           reverse_error_list(&error_list);
-
-           ipkg_message(conf, IPKG_NOTICE, "Collected errors:\n");
-           /* Here we print the errors collected and free the list */
-           while (error_list != NULL) {
-                 ipkg_message(conf, IPKG_NOTICE, "%s",error_list->errmsg);
-                 error_list = error_list->next;
-
-           }
-           free_error_list(&error_list);
-
-        }
-   
-       p_userdata = NULL;
-       return result;
-}
-#else
-int ipkg_cmd_exec(ipkg_cmd_t *cmd, ipkg_conf_t *conf, int argc, const char **argv)
-{
-     return (cmd->fun)(conf, argc, argv);
-}
-#endif
-
-static int ipkg_update_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int err;
-     int failures;
-     char *lists_dir;
-     pkg_src_list_elt_t *iter;
-     pkg_src_t *src;
-
-    sprintf_alloc(&lists_dir, "%s", conf->restrict_to_default_dest ? conf->default_dest->lists_dir : conf->lists_dir);
-    if (! file_is_dir(lists_dir)) {
-         if (file_exists(lists_dir)) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "%s: ERROR: %s exists, but is not a directory\n",
-                           __FUNCTION__, lists_dir);
-              free(lists_dir);
-              return EINVAL;
-         }
-         err = file_mkdir_hier(lists_dir, 0755);
-         if (err) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "%s: ERROR: failed to make directory %s: %s\n",
-                           __FUNCTION__, lists_dir, strerror(errno));
-              free(lists_dir);
-              return EINVAL;
-         }     
-     } 
-
-     failures = 0;
-     for (iter = conf->pkg_src_list.head; iter; iter = iter->next) {
-         char *url, *list_file_name;
-
-         src = iter->data;
-
-         if (src->extra_data)  /* debian style? */
-             sprintf_alloc(&url, "%s/%s/%s", src->value, src->extra_data, 
-                           src->gzip ? "Packages.gz" : "Packages");
-         else
-             sprintf_alloc(&url, "%s/%s", src->value, src->gzip ? "Packages.gz" : "Packages");
-
-         sprintf_alloc(&list_file_name, "%s/%s", lists_dir, src->name);
-         if (src->gzip) {
-             char *tmp;
-             char *tmp_file_name;
-             FILE *in, *out;
-
-             tmp = strdup ("/tmp/ipkg.XXXXXX");
-
-             if (mkdtemp (tmp) == NULL) {
-                 perror ("mkdtemp");
-                 failures++;
-                 continue;
-             }
-             
-             sprintf_alloc (&tmp_file_name, "%s/%s.gz", tmp, src->name);
-             err = ipkg_download(conf, url, tmp_file_name);
-             if (err == 0) {
-                  ipkg_message (conf, IPKG_NOTICE, "Inflating %s\n", url);
-                  in = fopen (tmp_file_name, "r");
-                  out = fopen (list_file_name, "w");
-                  if (in && out)
-                       unzip (in, out);
-                  else
-                       err = 1;
-                  if (in)
-                       fclose (in);
-                  if (out)
-                       fclose (out);
-                  unlink (tmp_file_name);
-                  rmdir (tmp);
-                  free (tmp);
-             }
-         } else
-             err = ipkg_download(conf, url, list_file_name);
-         if (err) {
-              failures++;
-         } else {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "Updated list of available packages in %s\n",
-                           list_file_name);
-         }
-         free(url);
-         free(list_file_name);
-     }
-     free(lists_dir);
-
-#ifdef CONFIG_CLEAR_SW_INSTALL_FLAG
-#warning here
-     /* clear SW_INSTALL on any package where state is SS_NOT_INSTALLED.
-      * this is a hack to work around poor bookkeeping in old ipkg upgrade code 
-      * -Jamey 3/1/03
-      */
-     {
-         int i;
-         int changed = 0;
-         pkg_vec_t *available = pkg_vec_alloc();
-         pkg_hash_fetch_available(&conf->pkg_hash, available);
-         ipkg_message(conf, IPKG_DEBUG, "Clearing SW_INSTALL for SS_NOT_INSTALLED packages.\n");
-         for (i = 0; i < available->len; i++) {
-              pkg_t *pkg = available->pkgs[i];
-              if (pkg->state_want == SW_INSTALL && pkg->state_status == SS_NOT_INSTALLED) {
-                   ipkg_message(conf, IPKG_DEBUG, "Clearing SW_INSTALL on package %s.\n", pkg->name);
-                   pkg->state_want = SW_UNKNOWN;
-                   changed = 1;
-              }
-         }
-         pkg_vec_free(available);
-         if (changed) {
-              write_status_files_if_changed(conf);
-         }
-     }
-#endif
-
-     return failures;
-}
-
-
-/* scan the args passed and cache the local filenames of the packages */
-int ipkg_multiple_files_scan(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i;
-     int err;
-    
-     /* 
-      * First scan through package names/urls
-      * For any urls, download the packages and install in database.
-      * For any files, install package info in database.
-      */
-     for (i = 0; i < argc; i ++) {
-         char *filename = argv [i];
-         //char *tmp = basename (tmp);
-         //int tmplen = strlen (tmp);
-
-         //if (strcmp (tmp + (tmplen - strlen (IPKG_PKG_EXTENSION)), IPKG_PKG_EXTENSION) != 0)
-         //     continue;
-         //if (strcmp (tmp + (tmplen - strlen (DPKG_PKG_EXTENSION)), DPKG_PKG_EXTENSION) != 0)
-         //     continue;
-       
-          ipkg_message(conf, IPKG_DEBUG2, "Debug mfs: %s  \n",filename );
-
-         err = ipkg_prepare_url_for_install(conf, filename, &argv[i]);
-         if (err)
-           return err;
-     }
-     return 0;
-}
-
-struct ipkg_intercept
-{
-    char *oldpath;
-    char *statedir;
-};
-
-typedef struct ipkg_intercept *ipkg_intercept_t;
-
-ipkg_intercept_t ipkg_prep_intercepts(ipkg_conf_t *conf)
-{
-    ipkg_intercept_t ctx;
-    char *newpath;
-    int gen;
-
-    ctx = malloc (sizeof (*ctx));
-    ctx->oldpath = strdup (getenv ("PATH"));
-
-    sprintf_alloc (&newpath, "%s/ipkg/intercept:%s", DATADIR, ctx->oldpath);
-    setenv ("PATH", newpath, 1);
-    free (newpath);
-    
-    gen = 0;
- retry:
-    sprintf_alloc (&ctx->statedir, "/tmp/ipkg-intercept-%d-%d", getpid (), gen);
-    if (mkdir (ctx->statedir, 0770) < 0) {
-       if (errno == EEXIST) {
-           free (ctx->statedir);
-           gen++;
-           goto retry;
-       }
-       perror (ctx->statedir);
-       return NULL;
-    }
-    setenv ("IPKG_INTERCEPT_DIR", ctx->statedir, 1);
-    return ctx;
-}
-
-int ipkg_finalize_intercepts(ipkg_intercept_t ctx)
-{
-    char *cmd;
-    DIR *dir;
-    int err = 0;
-
-    setenv ("PATH", ctx->oldpath, 1);
-    free (ctx->oldpath);
-
-    dir = opendir (ctx->statedir);
-    if (dir) {
-       struct dirent *de;
-       while (de = readdir (dir), de != NULL) {
-           char *path;
-           
-           if (de->d_name[0] == '.')
-               continue;
-           
-           sprintf_alloc (&path, "%s/%s", ctx->statedir, de->d_name);
-           if (access (path, X_OK) == 0) {
-               if (system (path)) {
-                   err = errno;
-                   perror (de->d_name);
-               }
-           }
-           free (path);
-       }
-    } else
-       perror (ctx->statedir);
-       
-    sprintf_alloc (&cmd, "rm -rf %s", ctx->statedir);
-    system (cmd);
-    free (cmd);
-
-    free (ctx->statedir);
-    free (ctx);
-
-    return err;
-}
-
-int ipkg_configure_packages(ipkg_conf_t *conf, char *pkg_name)
-{
-     pkg_vec_t *all;
-     int i;
-     pkg_t *pkg;
-     ipkg_intercept_t ic;
-     int r, err = 0;
-
-     ipkg_message(conf, IPKG_INFO,
-                 "Configuring unpacked packages\n");
-     fflush( stdout );
-
-     all = pkg_vec_alloc();
-     pkg_hash_fetch_available(&conf->pkg_hash, all);
-
-     ic = ipkg_prep_intercepts (conf);
-    
-     for(i = 0; i < all->len; i++) {
-         pkg = all->pkgs[i];
-
-         if (pkg_name && fnmatch(pkg_name, pkg->name, 0)) 
-              continue;
-
-         if (pkg->state_status == SS_UNPACKED) {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "Configuring %s\n", pkg->name);
-              fflush( stdout );
-              r = ipkg_configure(conf, pkg);
-              if (r == 0) {
-                   pkg->state_status = SS_INSTALLED;
-                   pkg->parent->state_status = SS_INSTALLED;
-                   pkg->state_flag &= ~SF_PREFER;
-              } else {
-                   if (!err)
-                       err = r;
-              }
-         }
-     }
-
-     r = ipkg_finalize_intercepts (ic);
-     if (r && !err)
-        err = r;
-
-     pkg_vec_free(all);
-     return err;
-}
-
-static ipkg_conf_t *global_conf;
-
-static void sigint_handler(int sig)
-{
-     signal(sig, SIG_DFL);
-     ipkg_message(NULL, IPKG_NOTICE,
-                 "ipkg: interrupted. writing out status database\n");
-     write_status_files_if_changed(global_conf);
-     exit(128 + sig);
-}
-
-static int ipkg_install_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i;
-     char *arg;
-     int err=0;
-
-     global_conf = conf;
-     signal(SIGINT, sigint_handler);
-
-     /*
-      * Now scan through package names and install
-      */
-     for (i=0; i < argc; i++) {
-         arg = argv[i];
-
-          ipkg_message(conf, IPKG_DEBUG2, "Debug install_cmd: %s  \n",arg );
-          err = ipkg_prepare_url_for_install(conf, arg, &argv[i]);
-          if (err != EINVAL && err != 0)
-              return err;
-     }
-     pkg_info_preinstall_check(conf);
-
-     for (i=0; i < argc; i++) {
-         arg = argv[i];
-         if (conf->multiple_providers)
-              err = ipkg_install_multi_by_name(conf, arg);
-         else{
-              err = ipkg_install_by_name(conf, arg);
-          }
-         if (err == IPKG_PKG_HAS_NO_CANDIDATE) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "Cannot find package %s.\n"
-                           "Check the spelling or perhaps run 'ipkg update'\n",
-                           arg);
-         }
-     }
-
-     /* recheck to verify that all dependences are satisfied */
-     if (0) ipkg_satisfy_all_dependences(conf);
-
-     ipkg_configure_packages(conf, NULL);
-
-     write_status_files_if_changed(conf);
-
-     return err;
-}
-
-static int ipkg_upgrade_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i;
-     pkg_t *pkg;
-     int err;
-
-     global_conf = conf;
-     signal(SIGINT, sigint_handler);
-
-     if (argc) {
-         for (i=0; i < argc; i++) {
-              char *arg = argv[i];
-
-               err = ipkg_prepare_url_for_install(conf, arg, &arg);
-               if (err != EINVAL && err != 0)
-                   return err;
-         }
-         pkg_info_preinstall_check(conf);
-
-         for (i=0; i < argc; i++) {
-              char *arg = argv[i];
-              if (conf->restrict_to_default_dest) {
-                   pkg = pkg_hash_fetch_installed_by_name_dest(&conf->pkg_hash,
-                                                               argv[i],
-                                                               conf->default_dest);
-                   if (pkg == NULL) {
-                        ipkg_message(conf, IPKG_NOTICE,
-                                     "Package %s not installed in %s\n",
-                                     argv[i], conf->default_dest->name);
-                        continue;
-                   }
-              } else {
-                   pkg = pkg_hash_fetch_installed_by_name(&conf->pkg_hash,
-                                                          argv[i]);
-              }
-              if (pkg)
-                   ipkg_upgrade_pkg(conf, pkg);
-              else {
-                   ipkg_install_by_name(conf, arg);
-               }
-         }
-     } else {
-         pkg_vec_t *installed = pkg_vec_alloc();
-
-         pkg_info_preinstall_check(conf);
-
-         pkg_hash_fetch_all_installed(&conf->pkg_hash, installed);
-         for (i = 0; i < installed->len; i++) {
-              pkg = installed->pkgs[i];
-              ipkg_upgrade_pkg(conf, pkg);
-         }
-         pkg_vec_free(installed);
-     }
-
-     /* recheck to verify that all dependences are satisfied */
-     if (0) ipkg_satisfy_all_dependences(conf);
-
-     ipkg_configure_packages(conf, NULL);
-
-     write_status_files_if_changed(conf);
-
-     return 0;
-}
-
-static int ipkg_download_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i, err;
-     char *arg;
-     pkg_t *pkg;
-
-     pkg_info_preinstall_check(conf);
-     for (i = 0; i < argc; i++) {
-         arg = argv[i];
-
-         pkg = pkg_hash_fetch_best_installation_candidate_by_name(conf, arg);
-         if (pkg == NULL) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "Cannot find package %s.\n"
-                           "Check the spelling or perhaps run 'ipkg update'\n",
-                           arg);
-              continue;
-         }
-
-         err = ipkg_download_pkg(conf, pkg, ".");
-
-         if (err) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "Failed to download %s\n", pkg->name);
-         } else {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "Downloaded %s as %s\n",
-                           pkg->name, pkg->local_filename);
-         }
-     }
-
-     return 0;
-}
-
-
-static int ipkg_list_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i ;
-     pkg_vec_t *available;
-     pkg_t *pkg;
-     char desc_short[IPKG_LIST_DESCRIPTION_LENGTH];
-     char *newline;
-     char *pkg_name = NULL;
-     char *version_str;
-
-     if (argc > 0) {
-         pkg_name = argv[0];
-     }
-     available = pkg_vec_alloc();
-     pkg_hash_fetch_available(&conf->pkg_hash, available);
-     for (i=0; i < available->len; i++) {
-         pkg = available->pkgs[i];
-         /* if we have package name or pattern and pkg does not match, then skip it */
-         if (pkg_name && fnmatch(pkg_name, pkg->name, 0)) 
-              continue;
-         if (pkg->description) {
-              strncpy(desc_short, pkg->description, IPKG_LIST_DESCRIPTION_LENGTH);
-         } else {
-              desc_short[0] = '\0';
-         }
-         desc_short[IPKG_LIST_DESCRIPTION_LENGTH - 1] = '\0';
-         newline = strchr(desc_short, '\n');
-         if (newline) {
-              *newline = '\0';
-         }
-#ifndef IPKG_LIB
-         printf("%s - %s\n", pkg->name, desc_short);
-#else
-         if (ipkg_cb_list) {
-               version_str = pkg_version_str_alloc(pkg);
-               ipkg_cb_list(pkg->name,desc_short,
-                                            version_str,
-                                        pkg->state_status,
-                                        p_userdata);
-               free(version_str);
-         }
-#endif
-     }
-     pkg_vec_free(available);
-
-     return 0;
-}
-
-
-static int ipkg_list_installed_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i ;
-     pkg_vec_t *available;
-     pkg_t *pkg;
-     char desc_short[IPKG_LIST_DESCRIPTION_LENGTH];
-     char *newline;
-     char *pkg_name = NULL;
-     char *version_str;
-
-     if (argc > 0) {
-         pkg_name = argv[0];
-     }
-     available = pkg_vec_alloc();
-     pkg_hash_fetch_all_installed(&conf->pkg_hash, available);
-     for (i=0; i < available->len; i++) {
-         pkg = available->pkgs[i];
-         /* if we have package name or pattern and pkg does not match, then skip it */
-         if (pkg_name && fnmatch(pkg_name, pkg->name, 0)) 
-              continue;
-         if (pkg->description) {
-              strncpy(desc_short, pkg->description, IPKG_LIST_DESCRIPTION_LENGTH);
-         } else {
-              desc_short[0] = '\0';
-         }
-         desc_short[IPKG_LIST_DESCRIPTION_LENGTH - 1] = '\0';
-         newline = strchr(desc_short, '\n');
-         if (newline) {
-              *newline = '\0';
-         }
-#ifndef IPKG_LIB
-         printf("%s - %s\n", pkg->name, desc_short);
-#else
-         if (ipkg_cb_list) {
-               version_str = pkg_version_str_alloc(pkg);
-               ipkg_cb_list(pkg->name,desc_short,
-                                            version_str,
-                                        pkg->state_status,
-                                        p_userdata);
-               free(version_str);
-         }
-#endif
-     }
-
-     return 0;
-}
-
-static int ipkg_info_status_cmd(ipkg_conf_t *conf, int argc, char **argv, int installed_only)
-{
-     int i;
-     pkg_vec_t *available;
-     pkg_t *pkg;
-     char *pkg_name = NULL;
-     char **pkg_fields = NULL;
-     int n_fields = 0;
-     char *buff ; // = (char *)malloc(1);
-
-     if (argc > 0) {
-         pkg_name = argv[0];
-     }
-     if (argc > 1) {
-         pkg_fields = &argv[1];
-         n_fields = argc - 1;
-     }
-
-     available = pkg_vec_alloc();
-     if (installed_only)
-         pkg_hash_fetch_all_installed(&conf->pkg_hash, available);
-     else
-         pkg_hash_fetch_available(&conf->pkg_hash, available);
-     for (i=0; i < available->len; i++) {
-         pkg = available->pkgs[i];
-         if (pkg_name && fnmatch(pkg_name, pkg->name, 0)) {
-              continue;
-         }
-#ifndef IPKG_LIB
-         if (n_fields) {
-              for (j = 0; j < n_fields; j++)
-                   pkg_print_field(pkg, stdout, pkg_fields[j]);
-         } else {
-              pkg_print_info(pkg, stdout);
-         }
-#else
-
-         buff = pkg_formatted_info(pkg);
-          if ( buff ) {
-              if (ipkg_cb_status) ipkg_cb_status(pkg->name,
-                                                 pkg->state_status,
-                                                 buff,
-                                                 p_userdata);
-/* 
-   We should not forget that actually the pointer is allocated. 
-   We need to free it :)  ( Thanks florian for seeing the error )
-*/
-               free(buff);
-          }
-#endif
-         if (conf->verbosity > 1) {
-              conffile_list_elt_t *iter;
-              for (iter = pkg->conffiles.head; iter; iter = iter->next) {
-                   conffile_t *cf = iter->data;
-                   int modified = conffile_has_been_modified(conf, cf);
-                   ipkg_message(conf, IPKG_NOTICE, "conffile=%s md5sum=%s modified=%d\n",
-                                cf->name, cf->value, modified);
-              }
-         }
-     }
-#ifndef IPKG_LIB
-     if (buff)
-         free(buff);
-#endif
-     pkg_vec_free(available);
-
-     return 0;
-}
-
-static int ipkg_info_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_info_status_cmd(conf, argc, argv, 0);
-}
-
-static int ipkg_status_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_info_status_cmd(conf, argc, argv, 1);
-}
-
-static int ipkg_configure_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     
-     int err;
-     if (argc > 0) {
-         char *pkg_name = NULL;
-
-         pkg_name = argv[0];
-
-         err = ipkg_configure_packages (conf, pkg_name);
-     
-     } else {
-         err = ipkg_configure_packages (conf, NULL);
-     }
-
-     write_status_files_if_changed(conf);
-
-     return err;
-}
-
-static int ipkg_install_pending_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i, err;
-     char *globpattern;
-     glob_t globbuf;
-    
-     sprintf_alloc(&globpattern, "%s/*" IPKG_PKG_EXTENSION, conf->pending_dir);
-     err = glob(globpattern, 0, NULL, &globbuf);
-     free(globpattern);
-     if (err) {
-         return 0;
-     }
-
-     ipkg_message(conf, IPKG_NOTICE,
-                 "The following packages in %s will now be installed.\n",
-                 conf->pending_dir);
-     for (i = 0; i < globbuf.gl_pathc; i++) {
-         ipkg_message(conf, IPKG_NOTICE,
-                      "%s%s", i == 0 ? "" : " ", globbuf.gl_pathv[i]);
-     }
-     ipkg_message(conf, IPKG_NOTICE, "\n");
-     for (i = 0; i < globbuf.gl_pathc; i++) {
-         err = ipkg_install_from_file(conf, globbuf.gl_pathv[i]);
-         if (err == 0) {
-              err = unlink(globbuf.gl_pathv[i]);
-              if (err) {
-                   ipkg_message(conf, IPKG_ERROR,
-                                "%s: ERROR: failed to unlink %s: %s\n",
-                                __FUNCTION__, globbuf.gl_pathv[i], strerror(err));
-                   return err;
-              }
-         }
-     }
-     globfree(&globbuf);
-
-     return err;
-}
-
-static int ipkg_remove_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i,a,done;
-     pkg_t *pkg;
-     pkg_t *pkg_to_remove;
-     pkg_vec_t *available;
-     char *pkg_name = NULL;
-     global_conf = conf;
-     signal(SIGINT, sigint_handler);
-
-// ENH: Add the "no pkg removed" just in case.
-
-    done = 0;
-
-     available = pkg_vec_alloc();
-     pkg_info_preinstall_check(conf);
-     if ( argc > 0 ) {
-        pkg_hash_fetch_all_installed(&conf->pkg_hash, available);
-        for (i=0; i < argc; i++) {
-           pkg_name = malloc(strlen(argv[i])+2);
-           strcpy(pkg_name,argv[i]);
-           for (a=0; a < available->len; a++) {
-               pkg = available->pkgs[a];
-              if (pkg_name && fnmatch(pkg_name, pkg->name, 0)) {
-                  continue;
-               }
-               if (conf->restrict_to_default_dest) {
-                   pkg_to_remove = pkg_hash_fetch_installed_by_name_dest(&conf->pkg_hash,
-                                                               pkg->name,
-                                                               conf->default_dest);
-               } else {
-                   pkg_to_remove = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, pkg->name );
-               }
-        
-               if (pkg == NULL) {
-                   ipkg_message(conf, IPKG_ERROR, "Package %s is not installed.\n", pkg->name);
-                   continue;
-               }
-               if (pkg->state_status == SS_NOT_INSTALLED) {    // Added the control, so every already removed package could be skipped
-                   ipkg_message(conf, IPKG_ERROR, "Package seems to be %s not installed (STATUS = NOT_INSTALLED).\n", pkg->name);
-                    continue;
-               }
-               ipkg_remove_pkg(conf, pkg_to_remove,0);
-               done = 1;
-           }
-           free (pkg_name);
-        }
-        pkg_vec_free(available);
-     } else {
-         pkg_vec_t *installed_pkgs = pkg_vec_alloc();
-         int i;
-         int flagged_pkg_count = 0;
-         int removed;
-
-         pkg_hash_fetch_all_installed(&conf->pkg_hash, installed_pkgs);
-
-         for (i = 0; i < installed_pkgs->len; i++) {
-              pkg_t *pkg = installed_pkgs->pkgs[i];
-              if (pkg->state_flag & SF_USER) {
-                   flagged_pkg_count++;
-              } else {
-                   if (!pkg_has_installed_dependents(conf, pkg->parent, pkg, NULL))
-                        ipkg_message(conf, IPKG_NOTICE, "Non-user leaf package: %s\n", pkg->name);
-              }
-         }
-         if (!flagged_pkg_count) {
-              ipkg_message(conf, IPKG_NOTICE, "No packages flagged as installed by user, \n"
-                           "so refusing to uninstall unflagged non-leaf packages\n");
-              return 0;
-         }
-
-         /* find packages not flagged SF_USER (i.e., installed to
-          * satisfy a dependence) and not having any dependents, and
-          * remove them */
-         do {
-              removed = 0;
-              for (i = 0; i < installed_pkgs->len; i++) {
-                   pkg_t *pkg = installed_pkgs->pkgs[i];
-                   if (!(pkg->state_flag & SF_USER)
-                       && !pkg_has_installed_dependents(conf, pkg->parent, pkg, NULL)) {
-                        removed++;
-                        ipkg_message(conf, IPKG_NOTICE, "Removing non-user leaf package %s\n");
-                        ipkg_remove_pkg(conf, pkg,0);
-                         done = 1;
-                   }
-              }
-         } while (removed);
-         pkg_vec_free(installed_pkgs);
-     }
-
-     if ( done == 0 ) 
-        ipkg_message(conf, IPKG_NOTICE, "No packages removed.\n");
-
-     write_status_files_if_changed(conf);
-     return 0;
-}
-
-static int ipkg_purge_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i;
-     pkg_t *pkg;
-
-     global_conf = conf;
-     signal(SIGINT, sigint_handler);
-
-     pkg_info_preinstall_check(conf);
-
-     for (i=0; i < argc; i++) {
-         if (conf->restrict_to_default_dest) {
-              pkg = pkg_hash_fetch_installed_by_name_dest(&conf->pkg_hash,
-                                                          argv[i],
-                                                          conf->default_dest);
-         } else {
-              pkg = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, argv[i]);
-         }
-
-         if (pkg == NULL) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "Package %s is not installed.\n", argv[i]);
-              continue;
-         }
-         ipkg_purge_pkg(conf, pkg);
-     }
-
-     write_status_files_if_changed(conf);
-     return 0;
-}
-
-static int ipkg_flag_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i;
-     pkg_t *pkg;
-     const char *flags = argv[0];
-    
-     global_conf = conf;
-     signal(SIGINT, sigint_handler);
-
-     for (i=1; i < argc; i++) {
-         if (conf->restrict_to_default_dest) {
-              pkg = pkg_hash_fetch_installed_by_name_dest(&conf->pkg_hash,
-                                                          argv[i],
-                                                          conf->default_dest);
-         } else {
-              pkg = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, argv[i]);
-         }
-
-         if (pkg == NULL) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "Package %s is not installed.\n", argv[i]);
-              continue;
-         }
-          if (( strcmp(flags,"hold")==0)||( strcmp(flags,"noprune")==0)||
-              ( strcmp(flags,"user")==0)||( strcmp(flags,"ok")==0)) {
-             pkg->state_flag = pkg_state_flag_from_str(flags);
-          }
-/* pb_ asked this feature 03292004 */
-/* Actually I will use only this two, but this is an open for various status */
-          if (( strcmp(flags,"installed")==0)||( strcmp(flags,"unpacked")==0)){
-             pkg->state_status = pkg_state_status_from_str(flags);
-          }
-         ipkg_state_changed++;
-         ipkg_message(conf, IPKG_NOTICE,
-                      "Setting flags for package %s to %s\n",
-                      pkg->name, flags);
-     }
-
-     write_status_files_if_changed(conf);
-     return 0;
-}
-
-static int ipkg_files_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     pkg_t *pkg;
-     str_list_t *installed_files;
-     str_list_elt_t *iter;
-     char *pkg_version;
-     size_t buff_len = 8192;
-     size_t used_len;
-     char *buff ;
-
-     buff = (char *)malloc(buff_len);
-     if ( buff == NULL ) {
-        fprintf( stderr,"%s: Unable to allocate memory \n",__FUNCTION__);
-        return ENOMEM;
-     }
-     if (argc < 1) {
-         return EINVAL;
-     }
-
-     pkg = pkg_hash_fetch_installed_by_name(&conf->pkg_hash,
-                                           argv[0]);
-     if (pkg == NULL) {
-         ipkg_message(conf, IPKG_ERROR,
-                      "Package %s not installed.\n", argv[0]);
-         return 0;
-     }
-
-     installed_files = pkg_get_installed_files(pkg);
-     pkg_version = pkg_version_str_alloc(pkg);
-
-#ifndef IPKG_LIB
-     printf("Package %s (%s) is installed on %s and has the following files:\n",
-           pkg->name, pkg_version, pkg->dest->name);
-     for (iter = installed_files->head; iter; iter = iter->next) {
-         puts(iter->data);
-     }
-#else
-     if (buff) {
-     try_again:
-         used_len = snprintf(buff, buff_len, "Package %s (%s) is installed on %s and has the following files:\n",
-                             pkg->name, pkg_version, pkg->dest->name) + 1;
-         if (used_len > buff_len) {
-              buff_len *= 2;
-              buff = realloc (buff, buff_len);
-              goto try_again;
-         }
-         for (iter = installed_files->head; iter; iter = iter->next) {
-              used_len += strlen (iter->data) + 1;
-              while (buff_len <= used_len) {
-                   buff_len *= 2;
-                   buff = realloc (buff, buff_len);
-              }
-              strncat(buff, iter->data, buff_len);
-              strncat(buff, "\n", buff_len);
-         } 
-         if (ipkg_cb_list) ipkg_cb_list(pkg->name,
-                                        buff,
-                                        pkg_version_str_alloc(pkg),
-                                        pkg->state_status,
-                                        p_userdata);
-         free(buff);
-     }
-#endif
-
-     free(pkg_version);
-     pkg_free_installed_files(pkg);
-
-     return 0;
-}
-
-static int ipkg_depends_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-
-     if (argc > 0) {
-         pkg_vec_t *available_pkgs = pkg_vec_alloc();
-         const char *rel_str = "depends on";
-         int i;
-     
-         pkg_info_preinstall_check(conf);
-
-         if (conf->query_all)
-              pkg_hash_fetch_available(&conf->pkg_hash, available_pkgs);
-         else
-              pkg_hash_fetch_all_installed(&conf->pkg_hash, available_pkgs);
-         for (i = 0; i < argc; i++) {
-              const char *target = argv[i];
-              int j;
-
-              ipkg_message(conf, IPKG_ERROR, "target=%s\n", target);
-
-              for (j = 0; j < available_pkgs->len; j++) {
-                   pkg_t *pkg = available_pkgs->pkgs[j];
-                   if (fnmatch(target, pkg->name, 0) == 0) {
-                        int k;
-                        int count = pkg->depends_count + pkg->pre_depends_count;
-                        ipkg_message(conf, IPKG_ERROR, "What %s (arch=%s) %s\n",
-                                     target, pkg->architecture, rel_str);
-                        for (k = 0; k < count; k++) {
-                             compound_depend_t *cdepend = &pkg->depends[k];
-                             int l;
-                             for (l = 0; l < cdepend->possibility_count; l++) {
-                                  depend_t *possibility = cdepend->possibilities[l];
-                                  ipkg_message(conf, IPKG_ERROR, "    %s", possibility->pkg->name);
-                                  if (conf->verbosity > 0) {
-                                       // char *ver = abstract_pkg_version_str_alloc(possibility->pkg); 
-                                       ipkg_message(conf, IPKG_NOTICE, " %s", possibility->version);
-                                       if (possibility->version) {
-                                            char *typestr = NULL;
-                                            switch (possibility->constraint) {
-                                            case NONE: typestr = "none"; break;
-                                            case EARLIER: typestr = "<"; break;
-                                            case EARLIER_EQUAL: typestr = "<="; break;
-                                            case EQUAL: typestr = "="; break;
-                                            case LATER_EQUAL: typestr = ">="; break;
-                                            case LATER: typestr = ">"; break;
-                                            }
-                                            ipkg_message(conf, IPKG_NOTICE, " (%s %s)", typestr, possibility->version);
-                                       }
-                                       // free(ver);
-                                  }
-                                  ipkg_message(conf, IPKG_ERROR, "\n");
-                             }
-                        }
-                   }
-              }
-         }
-         pkg_vec_free(available_pkgs);
-     }
-     return 0;
-}
-
-enum what_field_type {
-  WHATDEPENDS,
-  WHATCONFLICTS,
-  WHATPROVIDES,
-  WHATREPLACES,
-  WHATRECOMMENDS,
-  WHATSUGGESTS
-};
-
-static int ipkg_what_depends_conflicts_cmd(ipkg_conf_t *conf, enum what_field_type what_field_type, int recursive, int argc, char **argv)
-{
-
-     if (argc > 0) {
-         pkg_vec_t *available_pkgs = pkg_vec_alloc();
-         const char *rel_str = NULL;
-         int i;
-         int changed;
-
-         switch (what_field_type) {
-         case WHATDEPENDS: rel_str = "depends on"; break;
-         case WHATCONFLICTS: rel_str = "conflicts with"; break;
-         case WHATSUGGESTS: rel_str = "suggests"; break;
-         case WHATRECOMMENDS: rel_str = "recommends"; break;
-         case WHATPROVIDES: rel_str = "provides"; break;
-         case WHATREPLACES: rel_str = "replaces"; break;
-         }
-     
-         if (conf->query_all)
-              pkg_hash_fetch_available(&conf->pkg_hash, available_pkgs);
-         else
-              pkg_hash_fetch_all_installed(&conf->pkg_hash, available_pkgs);
-
-         /* mark the root set */
-         pkg_vec_clear_marks(available_pkgs);
-         ipkg_message(conf, IPKG_NOTICE, "Root set:\n");
-         for (i = 0; i < argc; i++) {
-              const char *dependee_pattern = argv[i];
-              pkg_vec_mark_if_matches(available_pkgs, dependee_pattern);
-         }
-         for (i = 0; i < available_pkgs->len; i++) {
-              pkg_t *pkg = available_pkgs->pkgs[i];
-              if (pkg->state_flag & SF_MARKED) {
-                   /* mark the parent (abstract) package */
-                   pkg_mark_provides(pkg);
-                   ipkg_message(conf, IPKG_NOTICE, "  %s\n", pkg->name);
-              }
-         }
-
-         ipkg_message(conf, IPKG_NOTICE, "What %s root set\n", rel_str);
-         do {
-              int j;
-              changed = 0;
-
-              for (j = 0; j < available_pkgs->len; j++) {
-                   pkg_t *pkg = available_pkgs->pkgs[j];
-                   int k;
-                   int count = ((what_field_type == WHATCONFLICTS)
-                                ? pkg->conflicts_count
-                                : pkg->pre_depends_count + pkg->depends_count + pkg->recommends_count + pkg->suggests_count);
-                   /* skip this package if it is already marked */
-                   if (pkg->parent->state_flag & SF_MARKED) {
-                        continue;
-                   }
-                   for (k = 0; k < count; k++) {
-                        compound_depend_t *cdepend = 
-                             (what_field_type == WHATCONFLICTS) ? &pkg->conflicts[k] : &pkg->depends[k];
-                        int l;
-                        for (l = 0; l < cdepend->possibility_count; l++) {
-                             depend_t *possibility = cdepend->possibilities[l];
-                             if (possibility->pkg->state_flag & SF_MARKED) {
-                                  /* mark the depending package so we won't visit it again */
-                                  pkg->state_flag |= SF_MARKED;
-                                  pkg_mark_provides(pkg);
-                                  changed++;
-
-                                  ipkg_message(conf, IPKG_NOTICE, "    %s", pkg->name);
-                                  if (conf->verbosity > 0) {
-                                       char *ver = pkg_version_str_alloc(pkg); 
-                                       ipkg_message(conf, IPKG_NOTICE, " %s", ver);
-                                       ipkg_message(conf, IPKG_NOTICE, "\t%s %s", rel_str, possibility->pkg->name);
-                                       if (possibility->version) {
-                                            char *typestr = NULL;
-                                            switch (possibility->constraint) {
-                                            case NONE: typestr = "none"; break;
-                                            case EARLIER: typestr = "<"; break;
-                                            case EARLIER_EQUAL: typestr = "<="; break;
-                                            case EQUAL: typestr = "="; break;
-                                            case LATER_EQUAL: typestr = ">="; break;
-                                            case LATER: typestr = ">"; break;
-                                            }
-                                            ipkg_message(conf, IPKG_NOTICE, " (%s %s)", typestr, possibility->version);
-                                       }
-                                       free(ver);
-                                       if (!pkg_dependence_satisfiable(conf, possibility))
-                                            ipkg_message(conf, IPKG_NOTICE, " unsatisfiable");
-                                  }
-                                  ipkg_message(conf, IPKG_NOTICE, "\n");
-                                  goto next_package;
-                             }
-                        }
-                   }
-              next_package:
-                   ;
-              }
-         } while (changed && recursive);
-         pkg_vec_free(available_pkgs);
-     }
-
-     return 0;
-}
-
-int pkg_mark_provides(pkg_t *pkg)
-{
-     int provides_count = pkg->provides_count;
-     abstract_pkg_t **provides = pkg->provides;
-     int i;
-     pkg->parent->state_flag |= SF_MARKED;
-     for (i = 0; i < provides_count; i++) {
-         provides[i]->state_flag |= SF_MARKED;
-     }
-     return 0;
-}
-
-static int ipkg_whatdepends_recursively_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_what_depends_conflicts_cmd(conf, WHATDEPENDS, 1, argc, argv);
-}
-static int ipkg_whatdepends_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_what_depends_conflicts_cmd(conf, WHATDEPENDS, 0, argc, argv);
-}
-
-static int ipkg_whatsuggests_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_what_depends_conflicts_cmd(conf, WHATSUGGESTS, 0, argc, argv);
-}
-
-static int ipkg_whatrecommends_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_what_depends_conflicts_cmd(conf, WHATRECOMMENDS, 0, argc, argv);
-}
-
-static int ipkg_whatconflicts_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_what_depends_conflicts_cmd(conf, WHATCONFLICTS, 0, argc, argv);
-}
-
-static int ipkg_what_provides_replaces_cmd(ipkg_conf_t *conf, enum what_field_type what_field_type, int argc, char **argv)
-{
-
-     if (argc > 0) {
-         pkg_vec_t *available_pkgs = pkg_vec_alloc();
-         const char *rel_str = (what_field_type == WHATPROVIDES ? "provides" : "replaces");
-         int i;
-     
-         pkg_info_preinstall_check(conf);
-
-         if (conf->query_all)
-              pkg_hash_fetch_available(&conf->pkg_hash, available_pkgs);
-         else
-              pkg_hash_fetch_all_installed(&conf->pkg_hash, available_pkgs);
-         for (i = 0; i < argc; i++) {
-              const char *target = argv[i];
-              int j;
-
-              ipkg_message(conf, IPKG_ERROR, "What %s %s\n",
-                           rel_str, target);
-              for (j = 0; j < available_pkgs->len; j++) {
-                   pkg_t *pkg = available_pkgs->pkgs[j];
-                   int k;
-                   int count = (what_field_type == WHATPROVIDES) ? pkg->provides_count : pkg->replaces_count;
-                   for (k = 0; k < count; k++) {
-                        abstract_pkg_t *apkg = 
-                             ((what_field_type == WHATPROVIDES) 
-                              ? pkg->provides[k]
-                              : pkg->replaces[k]);
-                        if (fnmatch(target, apkg->name, 0) == 0) {
-                             ipkg_message(conf, IPKG_ERROR, "    %s", pkg->name);
-                             if (strcmp(target, apkg->name) != 0)
-                                  ipkg_message(conf, IPKG_ERROR, "\t%s %s\n", rel_str, apkg->name);
-                             ipkg_message(conf, IPKG_ERROR, "\n");
-                        }
-                   }
-              }
-         }
-         pkg_vec_free(available_pkgs);
-     }
-     return 0;
-}
-
-static int ipkg_whatprovides_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_what_provides_replaces_cmd(conf, WHATPROVIDES, argc, argv);
-}
-
-static int ipkg_whatreplaces_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     return ipkg_what_provides_replaces_cmd(conf, WHATREPLACES, argc, argv);
-}
-
-static int ipkg_search_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     int i;
-
-     pkg_vec_t *installed;
-     pkg_t *pkg;
-     str_list_t *installed_files;
-     str_list_elt_t *iter;
-     char *installed_file;
-
-     if (argc < 1) {
-         return EINVAL;
-     }
-     installed = pkg_vec_alloc();
-     pkg_hash_fetch_all_installed(&conf->pkg_hash, installed);
-
-     for (i=0; i < installed->len; i++) {
-         pkg = installed->pkgs[i];
-
-         installed_files = pkg_get_installed_files(pkg);
-
-         for (iter = installed_files->head; iter; iter = iter->next) {
-              installed_file = iter->data;
-              if (fnmatch(argv[0], installed_file, 0)==0)  {
-#ifndef IPKG_LIB
-                   printf("%s: %s\n", pkg->name, installed_file);
-#else
-                       if (ipkg_cb_list) ipkg_cb_list(pkg->name, 
-                                                      installed_file, 
-                                                      pkg_version_str_alloc(pkg), 
-                                                      pkg->state_status, p_userdata);
-#endif                    
-              }                
-         }
-
-         pkg_free_installed_files(pkg);
-     }
-
-     /* XXX: CLEANUP: It's not obvious from the name of
-       pkg_hash_fetch_all_installed that we need to call
-       pkg_vec_free to avoid a memory leak. */
-     pkg_vec_free(installed);
-
-     return 0;
-}
-
-static int ipkg_compare_versions_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     if (argc == 3) {
-         /* this is a bit gross */
-         struct pkg p1, p2;
-         parseVersion(&p1, argv[0]); 
-         parseVersion(&p2, argv[2]); 
-         return pkg_version_satisfied(&p1, &p2, argv[1]);
-     } else {
-         ipkg_message(conf, IPKG_ERROR,
-                      "ipkg compare_versions <v1> <op> <v2>\n"
-                      "<op> is one of <= >= << >> =\n");
-         return -1;
-     }
-}
-
-#ifndef HOST_CPU_STR
-#define HOST_CPU_STR__(X) #X
-#define HOST_CPU_STR_(X) HOST_CPU_STR__(X)
-#define HOST_CPU_STR HOST_CPU_STR_(HOST_CPU_FOO)
-#endif
-
-static int ipkg_print_architecture_cmd(ipkg_conf_t *conf, int argc, char **argv)
-{
-     nv_pair_list_elt_t *l;
-
-     l = conf->arch_list.head;
-     while (l) {
-         nv_pair_t *nv = l->data;
-         printf("arch %s %s\n", nv->name, nv->value);
-         l = l->next;
-     }
-     return 0;
-}
-
-
diff --git a/ipkg_cmd.h b/ipkg_cmd.h
deleted file mode 100644 (file)
index 24a5757..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/* ipkg_cmd.h - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#ifndef IPKG_CMD_H
-#define IPKG_CMD_H
-
-typedef int (*ipkg_cmd_fun_t)(ipkg_conf_t *conf, int argc, const char **argv);
-
-struct ipkg_cmd
-{
-    char *name;
-    int requires_args;
-    ipkg_cmd_fun_t fun;
-};
-typedef struct ipkg_cmd ipkg_cmd_t;
-
-ipkg_cmd_t *ipkg_cmd_find(const char *name);
-#ifdef IPKG_LIB
-int ipkg_cmd_exec(ipkg_cmd_t *cmd, ipkg_conf_t *conf, int argc, 
-                  const char **argv, void *userdata);
-#else
-int ipkg_cmd_exec(ipkg_cmd_t *cmd, ipkg_conf_t *conf, int argc, const char **argv);
-#endif
-int ipkg_multiple_files_scan (ipkg_conf_t *conf, int argc, char *argv[]);
-/* install any packges with state_want == SW_INSTALL */
-int ipkg_install_wanted_packages(ipkg_conf_t *conf);
-/* ensure that all dependences are satisfied */
-int ipkg_configure_packages(ipkg_conf_t *conf, char *pkg_name);
-
-int pkg_mark_provides(pkg_t *pkg);
-
-#endif
diff --git a/ipkg_conf.c b/ipkg_conf.c
deleted file mode 100644 (file)
index a75cef7..0000000
+++ /dev/null
@@ -1,717 +0,0 @@
-/* ipkg_conf.c - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#include <glob.h>
-
-#include "ipkg.h"
-#include "ipkg_conf.h"
-
-#include "xregex.h"
-#include "sprintf_alloc.h"
-#include "ipkg_conf.h"
-#include "ipkg_message.h"
-#include "file_util.h"
-#include "str_util.h"
-#include "xsystem.h"
-
-static int ipkg_conf_parse_file(ipkg_conf_t *conf, const char *filename,
-                               pkg_src_list_t *pkg_src_list,
-                               nv_pair_list_t *tmp_dest_nv_pair_list,
-                               char **tmp_lists_dir);
-static int ipkg_init_options_array(const ipkg_conf_t *conf, ipkg_option_t **options);
-static int ipkg_conf_set_option(const ipkg_option_t *options,
-                               const char *name, const char *value);
-static int ipkg_conf_set_default_dest(ipkg_conf_t *conf,
-                                     const char *default_dest_name);
-static int set_and_load_pkg_src_list(ipkg_conf_t *conf,
-                                    pkg_src_list_t *nv_pair_list);
-static int set_and_load_pkg_dest_list(ipkg_conf_t *conf,
-                                     nv_pair_list_t *nv_pair_list, char * lists_dir);
-
-int ipkg_init_options_array(const ipkg_conf_t *conf, ipkg_option_t **options)
-{
-     ipkg_option_t tmp[] = {
-         { "force_defaults", IPKG_OPT_TYPE_BOOL, &conf->force_defaults },
-         { "force_depends", IPKG_OPT_TYPE_BOOL, &conf->force_depends },
-         { "force_overwrite", IPKG_OPT_TYPE_BOOL, &conf->force_overwrite },
-         { "force_downgrade", IPKG_OPT_TYPE_BOOL, &conf->force_downgrade },
-         { "force_reinstall", IPKG_OPT_TYPE_BOOL, &conf->force_reinstall },
-         { "force_space", IPKG_OPT_TYPE_BOOL, &conf->force_space },
-         { "ftp_proxy", IPKG_OPT_TYPE_STRING, &conf->ftp_proxy },
-         { "http_proxy", IPKG_OPT_TYPE_STRING, &conf->http_proxy },
-         { "multiple_providers", IPKG_OPT_TYPE_BOOL, &conf->multiple_providers },
-         { "no_proxy", IPKG_OPT_TYPE_STRING, &conf->no_proxy },
-         { "test", IPKG_OPT_TYPE_INT, &conf->noaction },
-         { "noaction", IPKG_OPT_TYPE_INT, &conf->noaction },
-         { "nodeps", IPKG_OPT_TYPE_BOOL, &conf->nodeps },
-         { "offline_root", IPKG_OPT_TYPE_STRING, &conf->offline_root },
-         { "offline_root_post_script_cmd", IPKG_OPT_TYPE_STRING, &conf->offline_root_post_script_cmd },
-         { "offline_root_pre_script_cmd", IPKG_OPT_TYPE_STRING, &conf->offline_root_pre_script_cmd },
-         { "proxy_passwd", IPKG_OPT_TYPE_STRING, &conf->proxy_passwd },
-         { "proxy_user", IPKG_OPT_TYPE_STRING, &conf->proxy_user },
-         { "query-all", IPKG_OPT_TYPE_BOOL, &conf->query_all },
-         { "verbose-wget", IPKG_OPT_TYPE_BOOL, &conf->verbose_wget },
-         { "verbosity", IPKG_OPT_TYPE_BOOL, &conf->verbosity },
-         { NULL }
-     };
-
-     *options = (ipkg_option_t *)malloc(sizeof(tmp));
-     if ( options == NULL ){
-        fprintf(stderr,"%s: Unable to allocate memory\n",__FUNCTION__);
-        return -1;
-     }
-
-     memcpy(*options, tmp, sizeof(tmp));
-     return 0;
-};
-
-static void ipkg_conf_override_string(char **conf_str, char *arg_str) 
-{
-     if (arg_str) {
-         if (*conf_str) {
-              free(*conf_str);
-         }
-         *conf_str = strdup(arg_str);
-     }
-}
-
-static void ipkg_conf_free_string(char **conf_str)
-{
-     if (*conf_str) {
-         free(*conf_str);
-         *conf_str = NULL;
-     }
-}
-
-int ipkg_conf_init(ipkg_conf_t *conf, const args_t *args)
-{
-     int err;
-     char *tmp_dir_base;
-     nv_pair_list_t tmp_dest_nv_pair_list;
-     char * lists_dir =NULL;
-     glob_t globbuf;
-     char *etc_ipkg_conf_pattern = "/etc/ipkg/*.conf";
-     char *pending_dir  =NULL;
-
-     memset(conf, 0, sizeof(ipkg_conf_t));
-
-     pkg_src_list_init(&conf->pkg_src_list);
-
-     nv_pair_list_init(&tmp_dest_nv_pair_list);
-     pkg_dest_list_init(&conf->pkg_dest_list);
-
-     nv_pair_list_init(&conf->arch_list);
-
-     conf->restrict_to_default_dest = 0;
-     conf->default_dest = NULL;
-
-
-     if (args->tmp_dir)
-         tmp_dir_base = args->tmp_dir;
-     else 
-         tmp_dir_base = getenv("TMPDIR");
-     sprintf_alloc(&conf->tmp_dir, "%s/%s",
-                  tmp_dir_base ? tmp_dir_base : IPKG_CONF_DEFAULT_TMP_DIR_BASE,
-                  IPKG_CONF_TMP_DIR_SUFFIX);
-     conf->tmp_dir = mkdtemp(conf->tmp_dir);
-     if (conf->tmp_dir == NULL) {
-         fprintf(stderr, "%s: Failed to create temporary directory `%s': %s\n",
-                 __FUNCTION__, conf->tmp_dir, strerror(errno));
-         return errno;
-     }
-
-     conf->force_depends = 0;
-     conf->force_defaults = 0;
-     conf->force_overwrite = 0;
-     conf->force_downgrade = 0;
-     conf->force_reinstall = 0;
-     conf->force_space = 0;
-     conf->force_removal_of_essential_packages = 0;
-     conf->force_removal_of_dependent_packages = 0;
-     conf->nodeps = 0;
-     conf->verbose_wget = 0;
-     conf->offline_root = NULL;
-     conf->offline_root_pre_script_cmd = NULL;
-     conf->offline_root_post_script_cmd = NULL;
-     conf->multiple_providers = 0;
-     conf->verbosity = 1;
-     conf->noaction = 0;
-
-     conf->http_proxy = NULL;
-     conf->ftp_proxy = NULL;
-     conf->no_proxy = NULL;
-     conf->proxy_user = NULL;
-     conf->proxy_passwd = NULL;
-
-     pkg_hash_init("pkg-hash", &conf->pkg_hash, IPKG_CONF_DEFAULT_HASH_LEN);
-     hash_table_init("file-hash", &conf->file_hash, IPKG_CONF_DEFAULT_HASH_LEN);
-     hash_table_init("obs-file-hash", &conf->obs_file_hash, IPKG_CONF_DEFAULT_HASH_LEN);
-     lists_dir=(char *)malloc(1);
-     lists_dir[0]='\0';
-     if (args->conf_file) {
-         struct stat stat_buf;
-         err = stat(args->conf_file, &stat_buf);
-         if (err == 0)
-              if (ipkg_conf_parse_file(conf, args->conf_file,
-                                   &conf->pkg_src_list, &tmp_dest_nv_pair_list,&lists_dir)<0) {
-                   /* Memory leakage from ipkg_conf_parse-file */
-                   return -1;
-               }
-                   
-     }
-
-     /* if (!lists_dir ){*/
-     if (strlen(lists_dir)<=1 ){
-        lists_dir = realloc(lists_dir,strlen(IPKG_CONF_LISTS_DIR)+2);
-        sprintf (lists_dir,"%s",IPKG_CONF_LISTS_DIR);
-     }
-
-     if (args->offline_root) {
-            char *tmp = malloc(strlen(lists_dir) + strlen(args->offline_root) + 1);
-            sprintf_alloc(&tmp, "%s/%s",args->offline_root,lists_dir);
-            free(lists_dir);
-            lists_dir = tmp;
-     }
-
-     pending_dir = malloc(strlen(lists_dir)+strlen("/pending")+5);
-     snprintf(pending_dir,strlen(lists_dir)+strlen("/pending") ,"%s%s",lists_dir,"/pending");
-
-     conf->lists_dir = strdup(lists_dir);
-     conf->pending_dir = strdup(pending_dir);
-
-     if (args->offline_root) 
-         sprintf_alloc(&etc_ipkg_conf_pattern, "%s/etc/ipkg/*.conf", args->offline_root);
-     memset(&globbuf, 0, sizeof(globbuf));
-     err = glob(etc_ipkg_conf_pattern, 0, NULL, &globbuf);
-     if (!err) {
-         int i;
-         for (i = 0; i < globbuf.gl_pathc; i++) {
-              if (globbuf.gl_pathv[i]) 
-                   if ( ipkg_conf_parse_file(conf, globbuf.gl_pathv[i], 
-                                        &conf->pkg_src_list, &tmp_dest_nv_pair_list,&lists_dir)<0) {
-                        /* Memory leakage from ipkg_conf_parse-file */
-                        return -1;
-                   }
-         }
-     }
-     globfree(&globbuf);
-
-     /* if no architectures were defined, then default all, noarch, and host architecture */
-     if (nv_pair_list_empty(&conf->arch_list)) {
-         nv_pair_list_append(&conf->arch_list, "all", "1");
-         nv_pair_list_append(&conf->arch_list, "noarch", "1");
-         nv_pair_list_append(&conf->arch_list, HOST_CPU_STR, "10");
-     }
-
-     /* Even if there is no conf file, we'll need at least one dest. */
-     if (tmp_dest_nv_pair_list.head == NULL) {
-         nv_pair_list_append(&tmp_dest_nv_pair_list,
-                             IPKG_CONF_DEFAULT_DEST_NAME,
-                             IPKG_CONF_DEFAULT_DEST_ROOT_DIR);
-     }
-
-     /* After parsing the file, set options from command-line, (so that
-       command-line arguments take precedence) */
-     /* XXX: CLEANUP: The interaction between args.c and ipkg_conf.c
-       really needs to be cleaned up. There is so much duplication
-       right now it is ridiculous. Maybe ipkg_conf_t should just save
-       a pointer to args_t (which could then not be freed), rather
-       than duplicating every field here? */
-     if (args->force_depends) {
-         conf->force_depends = 1;
-     }
-     if (args->force_defaults) {
-         conf->force_defaults = 1;
-     }
-     if (args->force_overwrite) {
-         conf->force_overwrite = 1;
-     }
-     if (args->force_downgrade) {
-         conf->force_downgrade = 1;
-     }
-     if (args->force_reinstall) {
-         conf->force_reinstall = 1;
-     }
-     if (args->force_removal_of_dependent_packages) {
-         conf->force_removal_of_dependent_packages = 1;
-     }
-     if (args->force_removal_of_essential_packages) {
-         conf->force_removal_of_essential_packages = 1;
-     }
-     if (args->nodeps) {
-         conf->nodeps = 1;
-     }
-     if (args->noaction) {
-         conf->noaction = 1;
-     }
-     if (args->query_all) {
-         conf->query_all = 1;
-     }
-     if (args->verbose_wget) {
-         conf->verbose_wget = 1;
-     }
-     if (args->multiple_providers) {
-         conf->multiple_providers = 1;
-     }
-     if (args->verbosity != conf->verbosity) {
-         conf->verbosity = args->verbosity;
-     } 
-
-     ipkg_conf_override_string(&conf->offline_root, 
-                              args->offline_root);
-     ipkg_conf_override_string(&conf->offline_root_pre_script_cmd, 
-                              args->offline_root_pre_script_cmd);
-     ipkg_conf_override_string(&conf->offline_root_post_script_cmd, 
-                              args->offline_root_post_script_cmd);
-
-/* Pigi: added a flag to disable the checking of structures if the command does not need to 
-         read anything from there.
-*/
-     if ( !(args->nocheckfordirorfile)){
-        /* need to run load the source list before dest list -Jamey */
-        if ( !(args->noreadfeedsfile))
-           set_and_load_pkg_src_list(conf, &conf->pkg_src_list);
-   
-        /* Now that we have resolved conf->offline_root, we can commit to
-          the directory names for the dests and load in all the package
-          lists. */
-        set_and_load_pkg_dest_list(conf, &tmp_dest_nv_pair_list,lists_dir);
-   
-        if (args->dest) {
-            err = ipkg_conf_set_default_dest(conf, args->dest);
-            if (err) {
-                 return err;
-            }
-        }
-     }
-     nv_pair_list_deinit(&tmp_dest_nv_pair_list);
-     free(lists_dir);
-     free(pending_dir);
-
-     return 0;
-}
-
-void ipkg_conf_deinit(ipkg_conf_t *conf)
-{
-#ifdef IPKG_DEBUG_NO_TMP_CLEANUP
-#error
-     fprintf(stderr, "%s: Not cleaning up %s since ipkg compiled "
-            "with IPKG_DEBUG_NO_TMP_CLEANUP\n",
-            __FUNCTION__, conf->tmp_dir);
-#else
-     int err;
-
-     err = rmdir(conf->tmp_dir);
-     if (err) {
-         if (errno == ENOTEMPTY) {
-              char *cmd;
-              sprintf_alloc(&cmd, "rm -fr %s\n", conf->tmp_dir);
-              err = xsystem(cmd);
-              free(cmd);
-         }
-         if (err)
-              fprintf(stderr, "WARNING: Unable to remove temporary directory: %s: %s\n", conf->tmp_dir, strerror(errno));
-     }
-#endif /* IPKG_DEBUG_NO_TMP_CLEANUP */
-
-     free(conf->tmp_dir); /*XXX*/
-
-     pkg_src_list_deinit(&conf->pkg_src_list);
-     pkg_dest_list_deinit(&conf->pkg_dest_list);
-     nv_pair_list_deinit(&conf->arch_list);
-     if (&conf->pkg_hash)
-                   pkg_hash_deinit(&conf->pkg_hash);
-     if (&conf->file_hash)
-                   hash_table_deinit(&conf->file_hash);
-     if (&conf->obs_file_hash)
-                   hash_table_deinit(&conf->obs_file_hash);
-
-     ipkg_conf_free_string(&conf->offline_root);
-     ipkg_conf_free_string(&conf->offline_root_pre_script_cmd);
-     ipkg_conf_free_string(&conf->offline_root_post_script_cmd);
-
-     if (conf->verbosity > 1) { 
-         int i;
-         hash_table_t *hashes[] = {
-              &conf->pkg_hash,
-              &conf->file_hash,
-              &conf->obs_file_hash };
-         for (i = 0; i < 3; i++) {
-              hash_table_t *hash = hashes[i];
-              int c = 0;
-              int n_conflicts = 0;
-              int j;
-              for (j = 0; j < hash->n_entries; j++) {
-                   int len = 0;
-                   hash_entry_t *e = &hash->entries[j];
-                   if (e->next)
-                        n_conflicts++;
-                   while (e && e->key) {
-                        len++;
-                        e = e->next;
-                   }
-                   if (len > c) 
-                        c = len;
-              }
-              ipkg_message(conf, IPKG_DEBUG, "hash_table[%s] n_buckets=%d n_elements=%d max_conflicts=%d n_conflicts=%d\n", 
-                           hash->name, hash->n_entries, hash->n_elements, c, n_conflicts);
-              hash_table_deinit(hash);
-         }
-     }
-}
-
-static int ipkg_conf_set_default_dest(ipkg_conf_t *conf,
-                                     const char *default_dest_name)
-{
-     pkg_dest_list_elt_t *iter;
-     pkg_dest_t *dest;
-
-     for (iter = conf->pkg_dest_list.head; iter; iter = iter->next) {
-         dest = iter->data;
-         if (strcmp(dest->name, default_dest_name) == 0) {
-              conf->default_dest = dest;
-              conf->restrict_to_default_dest = 1;
-              return 0;
-         }
-     }
-
-     fprintf(stderr, "ERROR: Unknown dest name: `%s'\n", default_dest_name);
-
-     return 1;
-}
-
-static int set_and_load_pkg_src_list(ipkg_conf_t *conf, pkg_src_list_t *pkg_src_list)
-{
-     pkg_src_list_elt_t *iter;
-     pkg_src_t *src;
-     char *list_file;
-
-     for (iter = pkg_src_list->head; iter; iter = iter->next) {
-          src = iter->data;
-         if (src == NULL) {
-              continue;
-         }
-
-         sprintf_alloc(&list_file, "%s/%s", 
-                         conf->restrict_to_default_dest ? conf->default_dest->lists_dir : conf->lists_dir, 
-                         src->name);
-
-         if (file_exists(list_file)) {
-              pkg_hash_add_from_file(conf, list_file, src, NULL, 0);
-         }
-         free(list_file);
-     }
-
-     return 0;
-}
-
-static int set_and_load_pkg_dest_list(ipkg_conf_t *conf, nv_pair_list_t *nv_pair_list, char *lists_dir )
-{
-     nv_pair_list_elt_t *iter;
-     nv_pair_t *nv_pair;
-     pkg_dest_t *dest;
-     char *root_dir;
-
-     for (iter = nv_pair_list->head; iter; iter = iter->next) {
-         nv_pair = iter->data;
-
-         if (conf->offline_root) {
-              sprintf_alloc(&root_dir, "%s%s", conf->offline_root, nv_pair->value);
-         } else {
-              root_dir = strdup(nv_pair->value);
-         }
-         dest = pkg_dest_list_append(&conf->pkg_dest_list, nv_pair->name, root_dir, lists_dir);
-         free(root_dir);
-         if (dest == NULL) {
-              continue;
-         }
-         if (conf->default_dest == NULL) {
-              conf->default_dest = dest;
-         }
-         if (file_exists(dest->status_file_name)) {
-              pkg_hash_add_from_file(conf, dest->status_file_name,
-                                     NULL, dest, 1);
-         }
-     }
-
-     return 0;
-}
-
-static int ipkg_conf_parse_file(ipkg_conf_t *conf, const char *filename,
-                               pkg_src_list_t *pkg_src_list,
-                               nv_pair_list_t *tmp_dest_nv_pair_list,
-                               char **lists_dir)
-{
-     int err;
-     ipkg_option_t * options;
-     FILE *file = fopen(filename, "r");
-     regex_t valid_line_re, comment_re;
-#define regmatch_size 12
-     regmatch_t regmatch[regmatch_size];
-
-     if (ipkg_init_options_array(conf, &options)<0)
-        return ENOMEM;
-
-     if (file == NULL) {
-         fprintf(stderr, "%s: failed to open %s: %s\n",
-                 __FUNCTION__, filename, strerror(errno));
-         free(options);
-         return errno;
-     }
-     ipkg_message(conf, IPKG_NOTICE, "loading conf file %s\n", filename);
-
-     err = xregcomp(&comment_re, 
-                   "^[[:space:]]*(#.*|[[:space:]]*)$",
-                   REG_EXTENDED);
-     if (err) {
-         free(options);
-         return err;
-     }
-     err = xregcomp(&valid_line_re, "^[[:space:]]*(\"([^\"]*)\"|([^[:space:]]*))[[:space:]]*(\"([^\"]*)\"|([^[:space:]]*))[[:space:]]*(\"([^\"]*)\"|([^[:space:]]*))([[:space:]]+([^[:space:]]+))?[[:space:]]*$", REG_EXTENDED);
-     if (err) {
-         free(options);
-         return err;
-     }
-
-     while(1) {
-         int line_num = 0;
-         char *line;
-         char *type, *name, *value, *extra;
-
-         line = file_read_line_alloc(file);
-         line_num++;
-         if (line == NULL) {
-              break;
-         }
-
-         str_chomp(line);
-
-         if (regexec(&comment_re, line, 0, 0, 0) == 0) {
-              goto NEXT_LINE;
-         }
-
-         if (regexec(&valid_line_re, line, regmatch_size, regmatch, 0) == REG_NOMATCH) {
-              str_chomp(line);
-              fprintf(stderr, "%s:%d: Ignoring invalid line: `%s'\n",
-                      filename, line_num, line);
-              goto NEXT_LINE;
-         }
-
-         /* This has to be so ugly to deal with optional quotation marks */
-         if (regmatch[2].rm_so > 0) {
-              type = strndup(line + regmatch[2].rm_so,
-                             regmatch[2].rm_eo - regmatch[2].rm_so);
-         } else {
-              type = strndup(line + regmatch[3].rm_so,
-                             regmatch[3].rm_eo - regmatch[3].rm_so);
-         }
-         if (regmatch[5].rm_so > 0) {
-              name = strndup(line + regmatch[5].rm_so,
-                             regmatch[5].rm_eo - regmatch[5].rm_so);
-         } else {
-              name = strndup(line + regmatch[6].rm_so,
-                             regmatch[6].rm_eo - regmatch[6].rm_so);
-         }
-         if (regmatch[8].rm_so > 0) {
-              value = strndup(line + regmatch[8].rm_so,
-                              regmatch[8].rm_eo - regmatch[8].rm_so);
-         } else {
-              value = strndup(line + regmatch[9].rm_so,
-                              regmatch[9].rm_eo - regmatch[9].rm_so);
-         }
-         extra = NULL;
-         if (regmatch[11].rm_so > 0) {
-              extra = strndup (line + regmatch[11].rm_so,
-                               regmatch[11].rm_eo - regmatch[11].rm_so);
-         }
-
-         /* We use the tmp_dest_nv_pair_list below instead of
-            conf->pkg_dest_list because we might encounter an
-            offline_root option later and that would invalidate the
-            directories we would have computed in
-            pkg_dest_list_init. (We do a similar thing with
-            tmp_src_nv_pair_list for sake of symmetry.) */
-         if (strcmp(type, "option") == 0) {
-              ipkg_conf_set_option(options, name, value);
-         } else if (strcmp(type, "src") == 0) {
-              if (!nv_pair_list_find(pkg_src_list, name)) {
-                   pkg_src_list_append (pkg_src_list, name, value, extra, 0);
-              } else {
-                   ipkg_message(conf, IPKG_ERROR, "ERROR: duplicate src declaration.  Skipping:\n\t src %s %s\n",
-                                name, value);
-              }
-         } else if (strcmp(type, "src/gz") == 0) {
-              if (!nv_pair_list_find(pkg_src_list, name)) {
-                   pkg_src_list_append (pkg_src_list, name, value, extra, 1);
-              } else {
-                   ipkg_message(conf, IPKG_ERROR, "ERROR: duplicate src declaration.  Skipping:\n\t src %s %s\n",
-                                name, value);
-              }
-         } else if (strcmp(type, "dest") == 0) {
-              nv_pair_list_append(tmp_dest_nv_pair_list, name, value);
-         } else if (strcmp(type, "lists_dir") == 0) {
-              *lists_dir = realloc(*lists_dir,strlen(value)+1);
-               if (*lists_dir == NULL) {
-                   ipkg_message(conf, IPKG_ERROR, "ERROR: Not enough memory\n");
-                   free(options);
-                   return EINVAL;
-               }
-               sprintf (*lists_dir,"%s",value);
-         } else if (strcmp(type, "arch") == 0) {
-              ipkg_message(conf, IPKG_INFO, "supported arch %s priority (%s)\n", name, value);
-              if (!value) {
-                   ipkg_message(conf, IPKG_NOTICE, "defaulting architecture %s priority to 10\n", name);
-                   value = strdup("10");
-              }
-              nv_pair_list_append(&conf->arch_list, strdup(name), strdup(value));
-         } else {
-              fprintf(stderr, "WARNING: Ignoring unknown configuration "
-                      "parameter: %s %s %s\n", type, name, value);
-              free(options);
-              return EINVAL;
-         }
-
-         free(type);
-         free(name);
-         free(value);
-         if (extra)
-              free (extra);
-
-     NEXT_LINE:
-         free(line);
-     }
-
-     free(options);
-     regfree(&comment_re);
-     regfree(&valid_line_re);
-     fclose(file);
-
-     return 0;
-}
-
-static int ipkg_conf_set_option(const ipkg_option_t *options,
-                               const char *name, const char *value)
-{
-     int i = 0;
-     while (options[i].name) {
-         if (strcmp(options[i].name, name) == 0) {
-              switch (options[i].type) {
-              case IPKG_OPT_TYPE_BOOL:
-                   *((int *)options[i].value) = 1;
-                   return 0;
-              case IPKG_OPT_TYPE_INT:
-                   if (value) {
-                        *((int *)options[i].value) = atoi(value);
-                        return 0;
-                   } else {
-                        printf("%s: Option %s need an argument\n",
-                               __FUNCTION__, name);
-                        return EINVAL;
-                   }               
-              case IPKG_OPT_TYPE_STRING:
-                   if (value) {
-                        *((char **)options[i].value) = strdup(value);
-                        return 0;
-                   } else {
-                        printf("%s: Option %s need an argument\n",
-                               __FUNCTION__, name);
-                        return EINVAL;
-                   }
-              }
-         }
-         i++;
-     }
-    
-     fprintf(stderr, "%s: Unrecognized option: %s=%s\n",
-            __FUNCTION__, name, value);
-     return EINVAL;
-}
-
-int ipkg_conf_write_status_files(ipkg_conf_t *conf)
-{
-     pkg_dest_list_elt_t *iter;
-     pkg_dest_t *dest;
-     pkg_vec_t *all;
-     pkg_t *pkg;
-     register int i;
-     int err;
-
-     if (conf->noaction)
-         return 0;
-     for (iter = conf->pkg_dest_list.head; iter; iter = iter->next) {
-         dest = iter->data;
-         dest->status_file = fopen(dest->status_file_tmp_name, "w");
-         if (dest->status_file == NULL) {
-              fprintf(stderr, "%s: Can't open status file: %s for writing: %s\n",
-                      __FUNCTION__, dest->status_file_name, strerror(errno));
-         }
-     }
-
-     all = pkg_vec_alloc();
-     pkg_hash_fetch_available(&conf->pkg_hash, all);
-
-     for(i = 0; i < all->len; i++) {
-         pkg = all->pkgs[i];
-         /* We don't need most uninstalled packages in the status file */
-         if (pkg->state_status == SS_NOT_INSTALLED
-             && (pkg->state_want == SW_UNKNOWN
-                 || pkg->state_want == SW_DEINSTALL
-                 || pkg->state_want == SW_PURGE)) {
-              continue;
-         }
-         if (!pkg) {
-           fprintf(stderr, "Null package\n");
-         }
-         if (pkg->dest == NULL) {
-              fprintf(stderr, "%s: ERROR: Can't write status for "
-                      "package %s since it has a NULL dest\n",
-                      __FUNCTION__, pkg->name);
-              continue;
-         }
-         if (pkg->dest->status_file) {
-              pkg_print_status(pkg, pkg->dest->status_file);
-         }
-     }
-
-     pkg_vec_free(all);
-
-     for (iter = conf->pkg_dest_list.head; iter; iter = iter->next) {
-         dest = iter->data;
-         if (dest->status_file) {
-              err = ferror(dest->status_file);
-              fclose(dest->status_file);
-              dest->status_file = NULL;
-              if (!err) {
-                   file_move(dest->status_file_tmp_name, dest->status_file_name);
-              } else {
-                   fprintf(stderr, "%s: ERROR: An error has occurred writing %s, "
-                           "retaining old %s\n", __FUNCTION__, 
-                           dest->status_file_tmp_name, dest->status_file_name);
-              }
-         }
-     }
-
-     return 0;
-}
-
-
-char *root_filename_alloc(ipkg_conf_t *conf, char *filename)
-{
-     char *root_filename;
-     sprintf_alloc(&root_filename, "%s%s", (conf->offline_root ? conf->offline_root : ""), filename);
-     return root_filename;
-}
diff --git a/ipkg_conf.h b/ipkg_conf.h
deleted file mode 100644 (file)
index 413e61b..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/* ipkg_conf.h - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#ifndef IPKG_CONF_H
-#define IPKG_CONF_H
-
-typedef struct ipkg_conf ipkg_conf_t;
-
-#include "hash_table.h"
-#include "ipkg.h"
-#include "args.h"
-#include "pkg.h"
-#include "pkg_hash.h"
-#include "pkg_src_list.h"
-#include "pkg_dest_list.h"
-#include "nv_pair_list.h"
-
-#define IPKG_CONF_DEFAULT_TMP_DIR_BASE "/tmp"
-#define IPKG_CONF_TMP_DIR_SUFFIX "ipkg-XXXXXX"
-#define IPKG_CONF_LISTS_DIR  IPKG_STATE_DIR_PREFIX "/lists"
-#define IPKG_CONF_PENDING_DIR IPKG_STATE_DIR_PREFIX "/pending"
-
-/* In case the config file defines no dest */
-#define IPKG_CONF_DEFAULT_DEST_NAME "root"
-#define IPKG_CONF_DEFAULT_DEST_ROOT_DIR "/"
-
-#define IPKG_CONF_DEFAULT_HASH_LEN 1024
-
-struct ipkg_conf
-{
-     pkg_src_list_t pkg_src_list;
-     pkg_dest_list_t pkg_dest_list;
-     nv_pair_list_t arch_list;
-
-     int restrict_to_default_dest;
-     pkg_dest_t *default_dest;
-
-     char *tmp_dir;
-     const char *lists_dir;
-     const char *pending_dir;
-
-     /* options */
-     int force_depends;
-     int force_defaults;
-     int force_overwrite;
-     int force_downgrade;
-     int force_reinstall;
-     int force_space;
-     int force_removal_of_dependent_packages;
-     int force_removal_of_essential_packages;
-     int nodeps; /* do not follow dependences */
-     int verbose_wget;
-     int multiple_providers;
-     char *offline_root;
-     char *offline_root_pre_script_cmd;
-     char *offline_root_post_script_cmd;
-     int query_all;
-     int verbosity;
-     int noaction;
-
-     /* proxy options */
-     char *http_proxy;
-     char *ftp_proxy;
-     char *no_proxy;
-     char *proxy_user;
-     char *proxy_passwd;
-
-     hash_table_t pkg_hash;
-     hash_table_t file_hash;
-     hash_table_t obs_file_hash;
-};
-
-enum ipkg_option_type {
-     IPKG_OPT_TYPE_BOOL,
-     IPKG_OPT_TYPE_INT,
-     IPKG_OPT_TYPE_STRING
-};
-typedef enum ipkg_option_type ipkg_option_type_t;
-
-typedef struct ipkg_option ipkg_option_t;
-struct ipkg_option {
-     const char *name;
-     const ipkg_option_type_t type;
-     const void *value;
-};
-
-int ipkg_conf_init(ipkg_conf_t *conf, const args_t *args);
-void ipkg_conf_deinit(ipkg_conf_t *conf);
-
-int ipkg_conf_write_status_files(ipkg_conf_t *conf);
-char *root_filename_alloc(ipkg_conf_t *conf, char *filename);
-
-#endif
diff --git a/ipkg_configure.c b/ipkg_configure.c
deleted file mode 100644 (file)
index 9876bc2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* ipkg_configure.c - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#include "ipkg.h"
-
-#include "ipkg_configure.h"
-
-int ipkg_configure(ipkg_conf_t *conf, pkg_t *pkg)
-{
-    int err;
-
-    /* DPKG_INCOMPATIBILITY:
-       dpkg actually does some conffile handling here, rather than at the
-       end of ipkg_install(). Do we care? */
-    /* DPKG_INCOMPATIBILITY:
-       dpkg actually includes a version number to this script call */
-    err = pkg_run_script(conf, pkg, "postinst", "configure");
-    if (err) {
-       printf("ERROR: %s.postinst returned %d\n", pkg->name, err);
-       return err;
-    }
-
-    ipkg_state_changed++;
-    return 0;
-}
-
diff --git a/ipkg_configure.h b/ipkg_configure.h
deleted file mode 100644 (file)
index 16a4105..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/* ipkg_configure.h - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#ifndef IPKG_CONFIGURE_H
-#define IPKG_CONFIGURE_H
-
-#include "ipkg_conf.h"
-
-int ipkg_configure(ipkg_conf_t *ipkg_conf, pkg_t *pkg);
-
-#endif
diff --git a/ipkg_download.c b/ipkg_download.c
deleted file mode 100644 (file)
index 621ff03..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-/* vi: set noexpandtab sw=4 sts=4: */
-/* ipkg_download.c - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-   Copyright (C) 2008 OpenMoko Inc
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#include <curl/curl.h>
-
-#include "ipkg.h"
-#include "ipkg_download.h"
-#include "ipkg_message.h"
-
-#include "sprintf_alloc.h"
-#include "xsystem.h"
-#include "file_util.h"
-#include "str_util.h"
-
-
-int
-curl_progress_func (void* data,
-                         double t, /* dltotal */
-                         double d, /* dlnow */
-                         double ultotal,
-                         double ulnow)
-{
-    int i;
-    int p = d*100/t;
-    printf ("\r%3d%% |", p);
-    for (i = 1; i < 73; i++)
-    {
-       if (i <= p)
-           printf ("=");
-       else
-           printf ("-");
-    }
-    printf ("|");
-    fflush(stdout);
-    return 0;
-}
-
-int ipkg_download(ipkg_conf_t *conf, const char *src, const char *dest_file_name)
-{
-    int err = 0;
-
-    char *src_basec = strdup(src);
-    char *src_base = basename(src_basec);
-    char *tmp_file_location;
-    char *cmd;
-
-    ipkg_message(conf,IPKG_NOTICE,"Downloading %s\n", src);
-       
-    fflush(stdout);
-    
-    if (str_starts_with(src, "file:")) {
-       int ret;
-       const char *file_src = src + 5;
-       ipkg_message(conf,IPKG_INFO,"Copying %s to %s...", file_src, dest_file_name);
-       ret = file_copy(src + 5, dest_file_name);
-       ipkg_message(conf,IPKG_INFO,"Done\n");
-       return ret;
-    }
-
-    sprintf_alloc(&tmp_file_location, "%s/%s", conf->tmp_dir, src_base);
-    err = unlink(tmp_file_location);
-    if (err && errno != ENOENT) {
-       ipkg_message(conf,IPKG_ERROR, "%s: ERROR: failed to unlink %s: %s\n",
-               __FUNCTION__, tmp_file_location, strerror(errno));
-       free(tmp_file_location);
-       return errno;
-    }
-
-    if (conf->http_proxy) {
-       ipkg_message(conf,IPKG_DEBUG,"Setting environment variable: http_proxy = %s\n", conf->http_proxy);
-       setenv("http_proxy", conf->http_proxy, 1);
-    }
-    if (conf->ftp_proxy) {
-       ipkg_message(conf,IPKG_DEBUG,"Setting environment variable: ftp_proxy = %s\n", conf->ftp_proxy);
-       setenv("ftp_proxy", conf->ftp_proxy, 1);
-    }
-    if (conf->no_proxy) {
-       ipkg_message(conf,IPKG_DEBUG,"Setting environment variable: no_proxy = %s\n", conf->no_proxy);
-       setenv("no_proxy", conf->no_proxy, 1);
-    }
-
-    /* XXX: BUG rewrite to use execvp or else busybox's internal wget -Jamey 7/23/2002 */ 
-#if 0
-    sprintf_alloc(&cmd, "wget --passive-ftp %s %s%s %s%s %s -P %s %s",
-                 (conf->http_proxy || conf->ftp_proxy) ? "--proxy=on" : "",
-                 conf->proxy_user ? "--proxy-user=" : "",
-                 conf->proxy_user ? conf->proxy_user : "",
-                 conf->proxy_passwd ? "--proxy-passwd=" : "",
-                 conf->proxy_passwd ? conf->proxy_passwd : "",
-                 conf->verbose_wget ? "" : "-q",
-                 conf->tmp_dir,
-                 src);
-    err = xsystem(cmd);
-    if (err) {
-       if (err != -1) {
-           ipkg_message(conf,IPKG_ERROR, "%s: ERROR: Command failed with return value %d: `%s'\n",
-                   __FUNCTION__, err, cmd);
-       } 
-       unlink(tmp_file_location);
-       free(tmp_file_location);
-       free(src_basec);
-       free(cmd);
-       return EINVAL;
-    }
-    free(cmd);
-#endif
-    CURL *curl;
-    CURLcode res;
-    FILE * file = fopen (tmp_file_location, "w");
-
-    curl = curl_easy_init ();
-    if (curl)
-    {
-       curl_easy_setopt (curl, CURLOPT_URL, src);
-       curl_easy_setopt (curl, CURLOPT_WRITEDATA, file);
-       curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 0);
-       curl_easy_setopt (curl, CURLOPT_PROGRESSFUNCTION, curl_progress_func);
-       res = curl_easy_perform (curl);
-       curl_easy_cleanup (curl);
-       fclose (file);
-
-    }
-    else
-       return -1;
-
-    printf ("\n");
-
-    err = file_move(tmp_file_location, dest_file_name);
-
-    free(tmp_file_location);
-    free(src_basec);
-
-    if (err) {
-       return err;
-    }
-
-    return 0;
-}
-
-int ipkg_download_pkg(ipkg_conf_t *conf, pkg_t *pkg, const char *dir)
-{
-    int err;
-    char *url;
-
-    if (pkg->src == NULL) {
-       ipkg_message(conf,IPKG_ERROR, "ERROR: Package %s (parent %s) is not available from any configured src.\n",
-               pkg->name, pkg->parent->name);
-       return -1;
-    }
-
-    sprintf_alloc(&url, "%s/%s", pkg->src->value, pkg->filename);
-
-    /* XXX: BUG: The pkg->filename might be something like
-       "../../foo.ipk". While this is correct, and exactly what we
-       want to use to construct url above, here we actually need to
-       use just the filename part, without any directory. */
-    sprintf_alloc(&pkg->local_filename, "%s/%s", dir, pkg->filename);
-
-    err = ipkg_download(conf, url, pkg->local_filename);
-    free(url);
-
-    return err;
-}
-
-/*
- * Downloads file from url, installs in package database, return package name. 
- */
-int ipkg_prepare_url_for_install(ipkg_conf_t *conf, const char *url, char **namep)
-{
-     int err = 0;
-     pkg_t *pkg;
-     pkg = pkg_new();
-     if (pkg == NULL)
-         return ENOMEM;
-
-     if (str_starts_with(url, "http://")
-        || str_starts_with(url, "ftp://")) {
-         char *tmp_file;
-         char *file_basec = strdup(url);
-         char *file_base = basename(file_basec);
-
-         sprintf_alloc(&tmp_file, "%s/%s", conf->tmp_dir, file_base);
-         err = ipkg_download(conf, url, tmp_file);
-         if (err)
-              return err;
-
-         err = pkg_init_from_file(pkg, tmp_file);
-         if (err)
-              return err;
-         pkg->local_filename = strdup(tmp_file);
-
-         free(tmp_file);
-         free(file_basec);
-
-     } else if (strcmp(&url[strlen(url) - 4], IPKG_PKG_EXTENSION) == 0
-               || strcmp(&url[strlen(url) - 4], DPKG_PKG_EXTENSION) == 0) {
-
-         err = pkg_init_from_file(pkg, url);
-         if (err)
-              return err;
-         pkg->local_filename = strdup(url);
-         ipkg_message(conf, IPKG_DEBUG2, "Package %s provided by hand \(%s\).\n", pkg->name,pkg->local_filename);
-          pkg->provided_by_hand = 1;
-
-     } else {
-       pkg_deinit(pkg);
-       free(pkg);
-       return 0;
-     }
-
-     if (!pkg->architecture) {
-         ipkg_message(conf, IPKG_ERROR, "Package %s has no Architecture defined.\n", pkg->name);
-         return -EINVAL;
-     }
-
-     pkg->dest = conf->default_dest;
-     pkg->state_want = SW_INSTALL;
-     pkg->state_flag |= SF_PREFER;
-     pkg = hash_insert_pkg(&conf->pkg_hash, pkg, 1,conf);  
-     if ( pkg == NULL ){
-        fprintf(stderr, "%s : This should never happen. Report this Bug in bugzilla please \n ",__FUNCTION__);
-        return 0;
-     }
-     if (namep) {
-         *namep = strdup(pkg->name);
-     }
-     return 0;
-}
diff --git a/ipkg_download.h b/ipkg_download.h
deleted file mode 100644 (file)
index 9b7374c..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/* ipkg_download.h - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#ifndef IPKG_DOWNLOAD_H
-#define IPKG_DOWNLOAD_H
-
-#include "ipkg_conf.h"
-
-int ipkg_download(ipkg_conf_t *conf, const char *src, const char *dest_file_name);
-int ipkg_download_pkg(ipkg_conf_t *conf, pkg_t *pkg, const char *dir);
-/*
- * Downloads file from url, installs in package database, return package name. 
- */
-int ipkg_prepare_url_for_install(ipkg_conf_t *conf, const char *url, char **namep);
-
-#endif
diff --git a/ipkg_extract_test.c b/ipkg_extract_test.c
deleted file mode 100644 (file)
index 06b8c7d..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include "libbb/libbb.h"
-
-/*
- * build thus: 
-
- * gcc -o ipkg_extract_test ipkg_extract_test.c -I./busybox-0.60.2/libbb -L./busybox-0.60.2 -lbb
- *
- */
-const char * applet_name;
-
-int main(int argc, char * argv[])
-{
-  /*
-   * see libbb.h and let your imagination run wild
-   * or, set the last item below to extract_one_to_buffer, and you get the control file in 
-   * "returned"
-   * or, set the last one to extract_all_to_fs, and, well, guess what happens
-   */
-
-    /* enum extract_functions_e dowhat = extract_control_tar_gz | extract_unconditional | extract_one_to_buffer; */
-    enum extract_functions_e dowhat = extract_control_tar_gz | extract_all_to_fs | extract_preserve_date;
-  char * returned;
-  char * filename;
-  
-  if(argc < 2){
-    fprintf(stderr, "syntax: %s <ipkg file> [<file_to_extract>]\n", argv[0]);
-    exit(0);
-  }
-  
-  if (argc < 3){
-    filename=NULL;
-  } else {
-    filename = argv[2];
-  }
-
-  returned = deb_extract(argv[1], stdout, dowhat, NULL, filename);
-  
-  if(returned)
-    fprintf(stderr, "returned %s\n", returned);
-  else
-    fprintf(stderr, "extract returned nuthin'\n");
-
-  return 0;
-}
diff --git a/ipkg_hash_test.c b/ipkg_hash_test.c
deleted file mode 100644 (file)
index 175106c..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* ipkg_hash_test.c - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#include "ipkg.h"
-
-#include "hash_table.h"
-#include "ipkg_utils.h"
-#include "pkg_hash.h"
-
-int main(int argc, char *argv[])
-{
-     ipkg_conf_t conf;
-     hash_table_t *hash = &conf.pkg_hash;
-     pkg_vec_t * pkg_vec;
-
-    if (argc < 3) {
-       fprintf(stderr, "Usage: %s <pkgs_file1> <pkgs_file2> [pkg_name...]\n", argv[0]);
-       exit(1);
-    }
-    pkg_hash_init("test", hash, 1024);
-
-    pkg_hash_add_from_file(&conf, argv[1], NULL, NULL, 0);
-    pkg_hash_add_from_file(&conf, argv[2], NULL, NULL, 0);
-
-    if (argc < 4) {
-       pkg_print_info( pkg_hash_fetch_by_name_version(hash, "libc6", "2.2.3-2"), stdout);
-       /*      for(i = 0; i < pkg_vec->len; i++)
-               pkg_print(pkg_vec->pkgs[i], stdout);
-       */
-    } else {
-       int i, j, k;
-       char **unresolved;
-
-       pkg_vec_t * dep_vec;
-       for (i = 3; i < argc; i++) {
-           pkg_vec = pkg_vec_fetch_by_name(hash, argv[i]);
-           if (pkg_vec == NULL) {
-               fprintf(stderr, "*** WARNING: Unknown package: %s\n\n", argv[i]);
-               continue;
-           }
-
-           for(j = 0; j < pkg_vec->len; j++){
-               pkg_print_info(pkg_vec->pkgs[j], stdout);
-               dep_vec = pkg_vec_alloc();
-               pkg_hash_fetch_unsatisfied_dependencies(&conf,
-                                                       pkg_vec->pkgs[j],
-                                                       dep_vec,
-                                                       &unresolved);
-               if(dep_vec){
-                   fprintf(stderr, "and the unsatisfied dependencies are:\n");
-                   for(k = 0; k < dep_vec->len; k++){
-                       fprintf(stderr, "%s version %s\n", dep_vec->pkgs[k]->name, dep_vec->pkgs[k]->version);
-                   }
-               }
-               
-               fputs("", stdout);
-               
-           }
-       }
-    }
-
-    pkg_hash_deinit(hash);
-
-    return 0;
-}
diff --git a/ipkg_install.c b/ipkg_install.c
deleted file mode 100644 (file)
index aa48d65..0000000
+++ /dev/null
@@ -1,1942 +0,0 @@
-/* ipkg_install.c - the itsy package management system
-
-   Carl D. Worth
-
-   Copyright (C) 2001 University of Southern California
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public License as
-   published by the Free Software Foundation; either version 2, or (at
-   your option) any later version.
-
-   This program is distributed in the hope that it will be useful, but
-   WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   General Public License for more details.
-*/
-
-#include "ipkg.h"
-#include <errno.h>
-#include <dirent.h>
-#include <glob.h>
-#include <time.h>
-#include <signal.h>
-typedef void (*sighandler_t)(int);
-
-#include "pkg.h"
-#include "pkg_hash.h"
-#include "pkg_extract.h"
-
-#include "ipkg_install.h"
-#include "ipkg_configure.h"
-#include "ipkg_download.h"
-#include "ipkg_remove.h"
-
-#include "ipkg_utils.h"
-#include "ipkg_message.h"
-
-#include "sprintf_alloc.h"
-#include "file_util.h"
-#include "str_util.h"
-#include "xsystem.h"
-#include "user.h"
-
-int satisfy_dependencies_for(ipkg_conf_t *conf, pkg_t *pkg);
-static int verify_pkg_installable(ipkg_conf_t *conf, pkg_t *pkg);
-static int unpack_pkg_control_files(ipkg_conf_t *conf, pkg_t *pkg);
-
-static int prerm_upgrade_old_pkg(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int prerm_upgrade_old_pkg_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int prerm_deconfigure_conflictors(ipkg_conf_t *conf, pkg_t *pkg, pkg_vec_t *conflictors);
-static int prerm_deconfigure_conflictors_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_vec_t *conflictors);
-static int preinst_configure(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int preinst_configure_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int check_data_file_clashes(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int check_data_file_clashes_change(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int check_data_file_clashes_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int backup_modified_conffiles(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int backup_modified_conffiles_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int postrm_upgrade_old_pkg(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int postrm_upgrade_old_pkg_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-
-static int remove_obsolesced_files(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int install_maintainer_scripts(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg);
-static int remove_disappeared(ipkg_conf_t *conf, pkg_t *pkg);
-static int install_data_files(ipkg_conf_t *conf, pkg_t *pkg);
-static int resolve_conffiles(ipkg_conf_t *conf, pkg_t *pkg);
-
-static int cleanup_temporary_files(ipkg_conf_t *conf, pkg_t *pkg);
-
-static int user_prefers_old_conffile(const char *file, const char *backup);
-
-static char *backup_filename_alloc(const char *file_name);
-static int backup_make_backup(ipkg_conf_t *conf, const char *file_name);
-static int backup_exists_for(const char *file_name);
-static int backup_remove(const char *file_name);
-
-
-int ipkg_install_from_file(ipkg_conf_t *conf, const char *filename)
-{
-     int err, cmp;
-     pkg_t *pkg, *old;
-     char *old_version, *new_version;
-
-     pkg = pkg_new();
-     if (pkg == NULL) {
-         return ENOMEM;
-     }
-
-     err = pkg_init_from_file(pkg, filename);
-     if (err) {
-         return err;
-     }
-
-     if (!pkg->architecture) {
-         ipkg_message(conf, IPKG_ERROR, "Package %s has no Architecture defined.\n", pkg->name);
-         return -EINVAL;
-     }
-
-     /* XXX: CLEANUP: hash_insert_pkg has a nasty side effect of possibly
-       freeing the pkg that we pass in. It might be nice to clean this up
-       if possible.  */
-     pkg = hash_insert_pkg(&conf->pkg_hash, pkg, 1,conf);
-     old = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, pkg->name);
-
-     pkg->local_filename = strdup(filename);
-
-     if (old) {
-         old_version = pkg_version_str_alloc(old);
-         new_version = pkg_version_str_alloc(pkg);
-
-         cmp = pkg_compare_versions(old, pkg);
-          if ( (conf->force_downgrade==1) && (cmp > 0) ){     /* We've been asked to allow downgrade  and version is precedent */
-             cmp = -1 ;                                       /* then we force ipkg to downgrade */ 
-                                                              /* We need to use a value < 0 because in the 0 case we are asking to */
-                                                              /* reinstall, and some check could fail asking the "force-reinstall" option */
-          } 
-         if (cmp > 0) {
-                ipkg_message(conf, IPKG_NOTICE,
-                             "Not downgrading package %s on %s from %s to %s.\n",
-                             old->name, old->dest->name, old_version, new_version);
-                pkg->state_want = SW_DEINSTALL;
-                pkg->state_flag |= SF_OBSOLETE;
-                free(old_version);
-                free(new_version);
-                return 0;
-         } else {
-              free(old_version);
-              free(new_version);
-         }
-     }
-
-     ipkg_message(conf, IPKG_DEBUG2,"Function: %s calling ipkg_install_pkg \n",__FUNCTION__);
-     return ipkg_install_pkg(conf, pkg,0);
-}
-
-ipkg_error_t ipkg_install_by_name(ipkg_conf_t *conf, const char *pkg_name)
-{
-     int cmp;
-     pkg_t *old, *new;
-     char *old_version, *new_version;
-
-     ipkg_message(conf, IPKG_DEBUG2, " Getting old  from pkg_hash_fetch \n" );
-     old = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, pkg_name);
-     if ( old ) 
-        ipkg_message(conf, IPKG_DEBUG2, " Old versions from pkg_hash_fetch %s \n",  old->version );
-    
-     ipkg_message(conf, IPKG_DEBUG2, " Getting new  from pkg_hash_fetch \n" );
-     new = pkg_hash_fetch_best_installation_candidate_by_name(conf, pkg_name);
-     if ( new ) 
-        ipkg_message(conf, IPKG_DEBUG2, " New versions from pkg_hash_fetch %s \n",  new->version );
-
-/* Pigi Basically here is broken the version stuff.
-   What's happening is that nothing provide the version to differents 
-   functions, so the returned struct is always the latest.
-   That's why the install by name don't work.
-*/
-     ipkg_message(conf, IPKG_DEBUG2, " Versions from pkg_hash_fetch in %s ", __FUNCTION__ );
-
-     if ( old ) 
-        ipkg_message(conf, IPKG_DEBUG2, " old %s ", old->version );
-     if ( new ) 
-        ipkg_message(conf, IPKG_DEBUG2, " new %s ", new->version );
-     ipkg_message(conf, IPKG_DEBUG2, " \n");
-
-     if (new == NULL) {
-         return IPKG_PKG_HAS_NO_CANDIDATE;
-     }
-
-     new->state_flag |= SF_USER;
-     if (old) {
-         old_version = pkg_version_str_alloc(old);
-         new_version = pkg_version_str_alloc(new);
-
-         cmp = pkg_compare_versions(old, new);
-          if ( (conf->force_downgrade==1) && (cmp > 0) ){     /* We've been asked to allow downgrade  and version is precedent */
-            ipkg_message(conf, IPKG_DEBUG, " Forcing downgrade \n");
-             cmp = -1 ;                                       /* then we force ipkg to downgrade */ 
-                                                              /* We need to use a value < 0 because in the 0 case we are asking to */
-                                                              /* reinstall, and some check could fail asking the "force-reinstall" option */
-          } 
-         ipkg_message(conf, IPKG_DEBUG, 
-                      "Comparing visible versions of pkg %s:"
-                      "\n\t%s is installed "
-                      "\n\t%s is available "
-                      "\n\t%d was comparison result\n",
-                      pkg_name, old_version, new_version, cmp);
-         if (cmp == 0 && !conf->force_reinstall) {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "Package %s (%s) installed in %s is up to date.\n",
-                           old->name, old_version, old->dest->name);
-              free(old_version);
-              free(new_version);
-              return 0;
-         } else if (cmp > 0) {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "Not downgrading package %s on %s from %s to %s.\n",
-                           old->name, old->dest->name, old_version, new_version);
-              free(old_version);
-              free(new_version);
-              return 0;
-         } else if (cmp < 0) {
-              new->dest = old->dest;
-              old->state_want = SW_DEINSTALL;    /* Here probably the problem for bug 1277 */
-         }
-     }
-
-     /* XXX: CLEANUP: The error code of ipkg_install_by_name is really
-       supposed to be an ipkg_error_t, but ipkg_install_pkg could
-       return any kind of integer, (might be errno from a syscall,
-       etc.). This is a real mess and will need to be cleaned up if
-       anyone ever wants to make a nice libipkg. */
-
-     ipkg_message(conf, IPKG_DEBUG2,"Function: %s calling ipkg_install_pkg \n",__FUNCTION__);
-     return ipkg_install_pkg(conf, new,0);
-}
-
-ipkg_error_t ipkg_install_multi_by_name(ipkg_conf_t *conf, const char *pkg_name)
-{
-     abstract_pkg_vec_t *providers = pkg_hash_fetch_all_installation_candidates (&conf->pkg_hash, pkg_name);
-     int i;
-     ipkg_error_t err;
-     abstract_pkg_t *ppkg ;
-
-     if (providers == NULL)
-         return IPKG_PKG_HAS_NO_CANDIDATE;
-
-     for (i = 0; i < providers->len; i++) {
-         ppkg = abstract_pkg_vec_get(providers, i);
-          ipkg_message(conf, IPKG_DEBUG2,"Function: %s calling ipkg_install_by_name %d \n",__FUNCTION__, i);
-         err = ipkg_install_by_name(conf, ppkg->name);
-         if (err)
-              return err;
-/* XXX Maybe ppkg should be freed ? */
-     }
-     return 0;
-}
-
-/*
- * Walk dependence graph starting with pkg, collect packages to be
- * installed into pkgs_needed, in dependence order.
- */
-int pkg_mark_dependencies_for_installation(ipkg_conf_t *conf, pkg_t *pkg, pkg_vec_t *pkgs_needed)
-{
-     int i, err;
-     pkg_vec_t *depends = pkg_vec_alloc();
-     char **unresolved = NULL;
-     int ndepends;
-
-     ndepends = pkg_hash_fetch_unsatisfied_dependencies(conf, 
-                                                       pkg, depends, 
-                                                       &unresolved);
-
-     if (unresolved) {
-         ipkg_message(conf, IPKG_ERROR,
-                      "%s: Cannot satisfy the following dependencies for %s:\n\t",
-                      conf->force_depends ? "Warning" : "ERROR", pkg->name);
-         while (*unresolved) {
-              ipkg_message(conf, IPKG_ERROR, " %s", *unresolved);
-              unresolved++;
-         }
-         ipkg_message(conf, IPKG_ERROR, "\n");
-         if (! conf->force_depends) {
-              ipkg_message(conf, IPKG_INFO,
-                           "This could mean that your package list is out of date or that the packages\n"
-                           "mentioned above do not yet exist (try 'ipkg update'). To proceed in spite\n"
-                           "of this problem try again with the '-force-depends' option.\n");
-              pkg_vec_free(depends);
-              return IPKG_PKG_DEPS_UNSATISFIED;
-         }
-     }
-
-     if (ndepends <= 0) {
-         pkg_vec_free(depends);
-         return 0;
-     }
-
-     for (i = 0; i < depends->len; i++) {
-         pkg_t *dep = depends->pkgs[i];
-         /* The package was uninstalled when we started, but another
-            dep earlier in this loop may have depended on it and pulled
-            it in, so check first. */
-         if ((dep->state_status != SS_INSTALLED)
-             && (dep->state_status != SS_UNPACKED)
-             && (dep->state_want != SW_INSTALL)) {
-
-              /* Mark packages as to-be-installed */
-              dep->state_want = SW_INSTALL;
-
-              /* Dependencies should be installed the same place as pkg */
-              if (dep->dest == NULL) {
-                   dep->dest = pkg->dest;
-              }
-
-              err = pkg_mark_dependencies_for_installation(conf, dep, pkgs_needed);
-              if (err) {
-                   pkg_vec_free(depends);
-                   return err;
-              }
-         }
-     }
-     if (pkgs_needed)
-         pkg_vec_insert(pkgs_needed, pkg);
-
-     pkg_vec_free(depends);
-
-     return 0;
-}
-
-int name_mark_dependencies_for_installation(ipkg_conf_t *conf, const char *pkg_name, pkg_vec_t *pkgs_needed)
-{
-     int cmp;
-     pkg_t *old, *new;
-     char *old_version, *new_version;
-
-     old = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, pkg_name);
-    
-     new = pkg_hash_fetch_best_installation_candidate_by_name(conf, pkg_name);
-     if (new == NULL) {
-         return IPKG_PKG_HAS_NO_CANDIDATE;
-     }
-     if (old) {
-         old_version = pkg_version_str_alloc(old);
-         new_version = pkg_version_str_alloc(new);
-
-         cmp = pkg_compare_versions(old, new);
-          if ( (conf->force_downgrade==1) && (cmp > 0) ){     /* We've been asked to allow downgrade  and version is precedent */
-           ipkg_message(conf, IPKG_DEBUG, " Forcing downgrade ");
-             cmp = -1 ;                                       /* then we force ipkg to downgrade */ 
-                                                              /* We need to use a value < 0 because in the 0 case we are asking to */
-                                                              /* reinstall, and some check could fail asking the "force-reinstall" option */
-          } 
-         ipkg_message(conf, IPKG_DEBUG, 
-                      "comparing visible versions of pkg %s:"
-                      "\n\t%s is installed "
-                      "\n\t%s is available "
-                      "\n\t%d was comparison result\n",
-                      pkg_name, old_version, new_version, cmp);
-         if (cmp == 0 && !conf->force_reinstall) {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "Package %s (%s) installed in %s is up to date.\n",
-                           old->name, old_version, old->dest->name);
-              free(old_version);
-              free(new_version);
-              return 0;
-         } else if (cmp > 0) {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "Not downgrading package %s on %s from %s to %s.\n",
-                           old->name, old->dest->name, old_version, new_version);
-              free(old_version);
-              free(new_version);
-              return 0;
-         } else if (cmp < 0) {
-              new->dest = old->dest;
-              old->state_want = SW_DEINSTALL;
-              old->state_flag |= SF_OBSOLETE;
-         }
-     }
-     return pkg_mark_dependencies_for_installation(conf, new, pkgs_needed);
-}
-
-\f
-
-int satisfy_dependencies_for(ipkg_conf_t *conf, pkg_t *pkg)
-{
-     int i, err;
-     pkg_vec_t *depends = pkg_vec_alloc();
-     pkg_t *dep;
-     char **unresolved = NULL;
-     int ndepends;
-
-     ndepends = pkg_hash_fetch_unsatisfied_dependencies(conf, 
-                                                       pkg, depends, 
-                                                       &unresolved);
-
-     if (unresolved) {
-         ipkg_message(conf, IPKG_ERROR,
-                      "%s: Cannot satisfy the following dependencies for %s:\n\t",
-                      conf->force_depends ? "Warning" : "ERROR", pkg->name);
-         while (*unresolved) {
-              ipkg_message(conf, IPKG_ERROR, " %s", *unresolved);
-              unresolved++;
-         }
-         ipkg_message(conf, IPKG_ERROR, "\n");
-         if (! conf->force_depends) {
-              ipkg_message(conf, IPKG_INFO,
-                           "This could mean that your package list is out of date or that the packages\n"
-                           "mentioned above do not yet exist (try 'ipkg update'). To proceed in spite\n"
-                           "of this problem try again with the '-force-depends' option.\n");
-              pkg_vec_free(depends);
-              return IPKG_PKG_DEPS_UNSATISFIED;
-         }
-     }
-
-     if (ndepends <= 0) {
-         return 0;
-     }
-
-     /* Mark packages as to-be-installed */
-     for (i=0; i < depends->len; i++) {
-         /* Dependencies should be installed the same place as pkg */
-         if (depends->pkgs[i]->dest == NULL) {
-              depends->pkgs[i]->dest = pkg->dest;
-         }
-         depends->pkgs[i]->state_want = SW_INSTALL;
-     }
-
-     for (i = 0; i < depends->len; i++) {
-         dep = depends->pkgs[i];
-         /* The package was uninstalled when we started, but another
-            dep earlier in this loop may have depended on it and pulled
-            it in, so check first. */
-         if ((dep->state_status != SS_INSTALLED)
-             && (dep->state_status != SS_UNPACKED)) {
-               ipkg_message(conf, IPKG_DEBUG2,"Function: %s calling ipkg_install_pkg \n",__FUNCTION__);
-              err = ipkg_install_pkg(conf, dep,0);
-              if (err) {
-                   pkg_vec_free(depends);
-                   return err;
-              }
-         }
-     }
-
-     pkg_vec_free(depends);
-
-     return 0;
-}
-
-
-/* check all packages have their dependences satisfied, e.g., in case an upgraded package split */ 
-int ipkg_satisfy_all_dependences(ipkg_conf_t *conf)
-{
-     if (conf->nodeps == 0) {
-         int i;
-         pkg_vec_t *installed = pkg_vec_alloc();
-         pkg_hash_fetch_all_installed(&conf->pkg_hash, installed);
-         for (i = 0; i < installed->len; i++) {
-              pkg_t *pkg = installed->pkgs[i];
-              satisfy_dependencies_for(conf, pkg);
-         }
-         pkg_vec_free(installed);
-     }
-     return 0;
-}
-
-\f
-
-static int check_conflicts_for(ipkg_conf_t *conf, pkg_t *pkg)
-{
-     int i;
-     pkg_vec_t *conflicts = NULL;
-     int level;
-     const char *prefix;
-     if (conf->force_depends) {
-         level = IPKG_NOTICE;
-         prefix = "Warning";
-     } else {
-         level = IPKG_ERROR;
-         prefix = "ERROR";
-     }
-
-     if (!conf->force_depends)
-         conflicts = (pkg_vec_t *)pkg_hash_fetch_conflicts(&conf->pkg_hash, pkg);
-
-     if (conflicts) {
-         ipkg_message(conf, level,
-                      "%s: The following packages conflict with %s:\n\t", prefix, pkg->name);
-         i = 0;
-         while (i < conflicts->len)
-              ipkg_message(conf, level, " %s", conflicts->pkgs[i++]->name);
-         ipkg_message(conf, level, "\n");
-         pkg_vec_free(conflicts);
-         return IPKG_PKG_DEPS_UNSATISFIED;
-     }
-     return 0;
-}
-
-static int update_file_ownership(ipkg_conf_t *conf, pkg_t *new_pkg, pkg_t *old_pkg)
-{
-     str_list_t *new_list = pkg_get_installed_files(new_pkg);
-     str_list_elt_t *iter;
-
-     for (iter = new_list->head; iter; iter = iter->next) {
-         char *new_file = iter->data;
-         pkg_t *owner = file_hash_get_file_owner(conf, new_file);
-         if (!new_file)
-              ipkg_message(conf, IPKG_ERROR, "Null new_file for new_pkg=%s\n", new_pkg->name);
-         if (!owner || (owner == old_pkg))
-              file_hash_set_file_owner(conf, new_file, new_pkg);
-     }
-     if (old_pkg) {
-         str_list_t *old_list = pkg_get_installed_files(old_pkg);
-         for (iter = old_list->head; iter; iter = iter->next) {
-              char *old_file = iter->data;
-              pkg_t *owner = file_hash_get_file_owner(conf, old_file);
-              if (owner == old_pkg) {
-                   /* obsolete */
-                   hash_table_insert(&conf->obs_file_hash, old_file, old_pkg);
-              }
-         }
-     }
-     return 0;
-}
-
-static int verify_pkg_installable(ipkg_conf_t *conf, pkg_t *pkg)
-{
-    /* XXX: FEATURE: Anything else needed here? Maybe a check on free space? */
-
-    /* sma 6.20.02:  yup; here's the first bit */
-    /* 
-     * XXX: BUG easy for cworth
-     * 1) please point the call below to the correct current root destination
-     * 2) we need to resolve how to check the required space for a pending pkg, 
-     *    my diddling with the .ipk file size below isn't going to cut it.
-     * 3) return a proper error code instead of 1
-     */
-     int comp_size, blocks_available;
-    
-     if (!conf->force_space && pkg->installed_size != NULL) {
-         blocks_available = get_available_blocks(conf->default_dest->root_dir);
-
-         comp_size = strtoul(pkg->installed_size, NULL, 0);
-         /* round up a blocks count without doing fancy-but-slow casting jazz */ 
-         comp_size = (int)((comp_size + 1023) / 1024);
-
-         if (comp_size >= blocks_available) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "Only have %d available blocks on filesystem %s, pkg %s needs %d\n", 
-                           blocks_available, conf->default_dest->root_dir, pkg->name, comp_size);
-              return ENOSPC;
-         }
-     }
-     return 0;
-}
-
-static int unpack_pkg_control_files(ipkg_conf_t *conf, pkg_t *pkg)
-{
-     int err;
-     char *conffiles_file_name;
-     char *root_dir;
-     FILE *conffiles_file;
-
-     sprintf_alloc(&pkg->tmp_unpack_dir, "%s/%s-XXXXXX", conf->tmp_dir, pkg->name);
-
-     pkg->tmp_unpack_dir = mkdtemp(pkg->tmp_unpack_dir);
-     if (pkg->tmp_unpack_dir == NULL) {
-         ipkg_message(conf, IPKG_ERROR,
-                      "%s: Failed to create temporary directory '%s': %s\n",
-                      __FUNCTION__, pkg->tmp_unpack_dir, strerror(errno));
-         return errno;
-     }
-
-     err = pkg_extract_control_files_to_dir(pkg, pkg->tmp_unpack_dir);
-     if (err) {
-         return err;
-     }
-
-     /* XXX: CLEANUP: There might be a cleaner place to read in the
-       conffiles. Seems like I should be able to get everything to go
-       through pkg_init_from_file. If so, maybe it would make sense to
-       move all of unpack_pkg_control_files to that function. */
-
-     /* Don't need to re-read conffiles if we already have it */
-     if (pkg->conffiles.head) {
-         return 0;
-     }
-
-     sprintf_alloc(&conffiles_file_name, "%s/conffiles", pkg->tmp_unpack_dir);
-     if (! file_exists(conffiles_file_name)) {
-         free(conffiles_file_name);
-         return 0;
-     }
-    
-     conffiles_file = fopen(conffiles_file_name, "r");
-     if (conffiles_file == NULL) {
-         fprintf(stderr, "%s: failed to open %s: %s\n",
-                 __FUNCTION__, conffiles_file_name, strerror(errno));
-         free(conffiles_file_name);
-         return errno;
-     }
-     free(conffiles_file_name);
-
-     while (1) {
-         char *cf_name;
-         char *cf_name_in_dest;
-
-         cf_name = file_read_line_alloc(conffiles_file);
-         if (cf_name == NULL) {
-              break;
-         }
-         str_chomp(cf_name);
-         if (cf_name[0] == '\0') {
-              continue;
-         }
-
-         /* Prepend dest->root_dir to conffile name.
-            Take pains to avoid multiple slashes. */
-         root_dir = pkg->dest->root_dir;
-         if (conf->offline_root)
-              /* skip the offline_root prefix */
-              root_dir = pkg->dest->root_dir + strlen(conf->offline_root);
-         sprintf_alloc(&cf_name_in_dest, "%s%s", root_dir,
-                       cf_name[0] == '/' ? (cf_name + 1) : cf_name);
-
-         /* Can't get an md5sum now, (file isn't extracted yet).
-            We'll wait until resolve_conffiles */
-         conffile_list_append(&pkg->conffiles, cf_name_in_dest, NULL);
-
-         free(cf_name);
-         free(cf_name_in_dest);
-     }
-
-     fclose(conffiles_file);
-
-     return 0;
-}
-
-/* returns number of installed replacees */
-int pkg_get_installed_replacees(ipkg_conf_t *conf, pkg_t *pkg, pkg_vec_t *installed_replacees)
-{
-     abstract_pkg_t **replaces = pkg->replaces;
-     int replaces_count = pkg->replaces_count;
-     int i, j;
-     for (i = 0; i < replaces_count; i++) {
-         abstract_pkg_t *ab_pkg = replaces[i];
-         pkg_vec_t *pkg_vec = ab_pkg->pkgs;
-         if (pkg_vec) {
-              for (j = 0; j < pkg_vec->len; j++) {
-                   pkg_t *replacee = pkg_vec->pkgs[j];
-                   if (!pkg_conflicts(pkg, replacee))
-                        continue;
-                   if (replacee->state_status == SS_INSTALLED) {
-                        pkg_vec_insert(installed_replacees, replacee);
-                   }
-              }
-         }
-     }
-     return installed_replacees->len;
-}
-
-int pkg_remove_installed_replacees(ipkg_conf_t *conf, pkg_vec_t *replacees)
-{
-     int i;
-     int replaces_count = replacees->len;
-     for (i = 0; i < replaces_count; i++) {
-         pkg_t *replacee = replacees->pkgs[i];
-         int err;
-         replacee->state_flag |= SF_REPLACE; /* flag it so remove won't complain */
-         err = ipkg_remove_pkg(conf, replacee,0);
-         if (err)
-              return err;
-     }
-     return 0;
-}
-
-/* to unwind the removal: make sure they are installed */
-int pkg_remove_installed_replacees_unwind(ipkg_conf_t *conf, pkg_vec_t *replacees)
-{
-     int i, err;
-     int replaces_count = replacees->len;
-     for (i = 0; i < replaces_count; i++) {
-         pkg_t *replacee = replacees->pkgs[i];
-         if (replacee->state_status != SS_INSTALLED) {
-               ipkg_message(conf, IPKG_DEBUG2,"Function: %s calling ipkg_install_pkg \n",__FUNCTION__);
-              err = ipkg_install_pkg(conf, replacee,0);
-              if (err)
-                   return err;
-         }
-     }
-     return 0;
-}
-
-int caught_sigint = 0;
-static void ipkg_install_pkg_sigint_handler(int sig)
-{
-     caught_sigint = sig;
-}
-
-/* compares versions of pkg and old_pkg, returns 0 if OK to proceed with installation of pkg, 1 otherwise */
-static int ipkg_install_check_downgrade(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg, int message)
-{        
-     if (old_pkg) {
-          char message_out[15];
-         char *old_version = pkg_version_str_alloc(old_pkg);
-         char *new_version = pkg_version_str_alloc(pkg);
-         int cmp = pkg_compare_versions(old_pkg, pkg);
-         int rc = 0;
-
-          memset(message_out,'\x0',15);
-          strncpy (message_out,"Upgrading ",strlen("Upgrading ")); 
-          if ( (conf->force_downgrade==1) && (cmp > 0) ){     /* We've been asked to allow downgrade  and version is precedent */
-             cmp = -1 ;                                       /* then we force ipkg to downgrade */ 
-             strncpy (message_out,"Downgrading ",strlen("Downgrading "));         /* We need to use a value < 0 because in the 0 case we are asking to */
-                                                              /* reinstall, and some check could fail asking the "force-reinstall" option */
-          } 
-
-         if (cmp > 0) {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "Not downgrading package %s on %s from %s to %s.\n",
-                           old_pkg->name, old_pkg->dest->name, old_version, new_version);
-              rc = 1;
-         } else if (cmp < 0) {
-              ipkg_message(conf, IPKG_NOTICE,
-                           "%s%s on %s from %s to %s...\n",
-                           message_out, pkg->name, old_pkg->dest->name, old_version, new_version);
-              pkg->dest = old_pkg->dest;
-              rc = 0;
-         } else /* cmp == 0 */ {
-              if (conf->force_reinstall) {
-                   ipkg_message(conf, IPKG_NOTICE,
-                                "Reinstalling %s (%s) on %s...\n",
-                                pkg->name, new_version, old_pkg->dest->name);
-                   pkg->dest = old_pkg->dest;
-                   rc = 0;
-              } else {
-                   ipkg_message(conf, IPKG_NOTICE,
-                                "Not installing %s (%s) on %s -- already installed.\n",
-                                pkg->name, new_version, old_pkg->dest->name);
-                   rc = 1;
-              }
-         } 
-         free(old_version);
-         free(new_version);
-         return rc;
-     } else {
-      char message_out[15] ;
-      memset(message_out,'\x0',15);
-      if ( message ) 
-          strncpy( message_out,"Upgrading ",strlen("Upgrading ") );
-      else
-          strncpy( message_out,"Installing ",strlen("Installing ") );
-         char *version = pkg_version_str_alloc(pkg);
-      
-         ipkg_message(conf, IPKG_NOTICE,
-                      "%s%s (%s) to %s...\n", message_out,
-                      pkg->name, version, pkg->dest->name);
-         free(version);
-         return 0;
-     }
-}
-
-/* and now the meat... */
-int ipkg_install_pkg(ipkg_conf_t *conf, pkg_t *pkg, int from_upgrade)
-{
-     int err = 0;
-     int message = 0;
-     pkg_t *old_pkg = NULL;
-     pkg_vec_t *replacees;
-     abstract_pkg_t *ab_pkg = NULL;
-     int old_state_flag;
-     char* file_md5;
-
-    
-     if ( from_upgrade ) 
-        message = 1;            /* Coming from an upgrade, and should change the output message */
-
-     if (!pkg) {
-         ipkg_message(conf, IPKG_ERROR,
-                      "INTERNAL ERROR: null pkg passed to ipkg_install_pkg\n");
-         return -EINVAL;
-     }
-
-     ipkg_message(conf, IPKG_DEBUG2, "Function: %s calling pkg_arch_supported %s \n", __FUNCTION__, __FUNCTION__);
-
-     if (!pkg_arch_supported(conf, pkg)) {
-         ipkg_message(conf, IPKG_ERROR, "INTERNAL ERROR: architecture %s for pkg %s is unsupported.\n",
-                      pkg->architecture, pkg->name);
-         return -EINVAL;
-     }
-     if (pkg->state_status == SS_INSTALLED && conf->force_reinstall == 0 && conf->nodeps == 0) {
-         err = satisfy_dependencies_for(conf, pkg);
-         if (err) { return err; }
-
-         ipkg_message(conf, IPKG_NOTICE,
-                      "Package %s is already installed in %s.\n", 
-                      pkg->name, pkg->dest->name);
-         return 0;
-     }
-
-     if (pkg->dest == NULL) {
-         pkg->dest = conf->default_dest;
-     }
-
-     old_pkg = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, pkg->name);
-
-     err = ipkg_install_check_downgrade(conf, pkg, old_pkg, message);
-     if (err) { return err; }
-
-     pkg->state_want = SW_INSTALL;
-     if (old_pkg){                          
-         old_pkg->state_want = SW_DEINSTALL; /* needed for check_data_file_clashes of dependences */
-     }
-
-
-     /* Abhaya: conflicts check */
-     err = check_conflicts_for(conf, pkg);
-     if (err) { return err; }
-    
-     /* this setup is to remove the upgrade scenario in the end when
-       installing pkg A, A deps B & B deps on A. So both B and A are
-       installed. Then A's installation is started resulting in an
-       uncecessary upgrade */ 
-     if (pkg->state_status == SS_INSTALLED
-        && conf->force_reinstall == 0) return 0;
-    
-     err = verify_pkg_installable(conf, pkg);
-     if (err) { return err; }
-
-     if (pkg->local_filename == NULL) {
-         err = ipkg_download_pkg(conf, pkg, conf->tmp_dir);
-         if (err) {
-              ipkg_message(conf, IPKG_ERROR,
-                           "Failed to download %s. Perhaps you need to run 'ipkg update'?\n",
-                           pkg->name);
-              return err;
-         }
-     }
-
-/* Check for md5 values */
-     if (pkg->md5sum)
-     {
-         file_md5 = file_md5sum_alloc(pkg->local_filename);
-         if (strcmp(file_md5, pkg->md5sum))
-         {
-              ipkg_message(conf, IPKG_ERROR,
-                           "Package %s md5sum mismatch. Either the ipkg or the package index are corrupt. Try 'ipkg update'.\n",
-                           pkg->name);
-              free(file_md5);
-              return err;
-         }
-         free(file_md5);
-     }
-
-     if (pkg->tmp_unpack_dir == NULL) {
-         unpack_pkg_control_files(conf, pkg);
-     }
-
-     /* We should update the filelist here, so that upgrades of packages that split will not fail. -Jamey 27-MAR-03 */
-/* Pigi: check if it will pass from here when replacing. It seems to fail */
-/* That's rather strange that files don't change owner. Investigate !!!!!!*/
-     err = update_file_ownership(conf, pkg, old_pkg);
-     if (err) { return err; }
-
-     if (conf->nodeps == 0) {
-         err = satisfy_dependencies_for(conf, pkg);
-         if (err) { return err; }
-     }
-
-     replacees = pkg_vec_alloc();
-     pkg_get_installed_replacees(conf, pkg, replacees);
-
-     /* this next section we do with SIGINT blocked to prevent inconsistency between ipkg database and filesystem */
-     {
-         sigset_t newset, oldset;
-         sighandler_t old_handler = NULL;
-         int use_signal = 0;
-         caught_sigint = 0;
-         if (use_signal) {
-              old_handler = signal(SIGINT, ipkg_install_pkg_sigint_handler);
-         } else {
-              sigemptyset(&newset);
-              sigaddset(&newset, SIGINT);
-              sigprocmask(SIG_BLOCK, &newset, &oldset);
-         }
-
-         ipkg_state_changed++;
-         pkg->state_flag |= SF_FILELIST_CHANGED;
-
-         /* XXX: BUG: we really should treat replacement more like an upgrade
-          *      Instead, we're going to remove the replacees 
-          */
-         err = pkg_remove_installed_replacees(conf, replacees);
-         if (err) goto UNWIND_REMOVE_INSTALLED_REPLACEES;
-
-         err = prerm_upgrade_old_pkg(conf, pkg, old_pkg);
-         if (err) goto UNWIND_PRERM_UPGRADE_OLD_PKG;
-
-         err = prerm_deconfigure_conflictors(conf, pkg, replacees);
-         if (err) goto UNWIND_PRERM_DECONFIGURE_CONFLICTORS;
-
-         err = preinst_configure(conf, pkg, old_pkg);
-         if (err) goto UNWIND_PREINST_CONFIGURE;
-
-         err = backup_modified_conffiles(conf, pkg, old_pkg);
-         if (err) goto UNWIND_BACKUP_MODIFIED_CONFFILES;
-
-         err = check_data_file_clashes(conf, pkg, old_pkg);
-         if (err) goto UNWIND_CHECK_DATA_FILE_CLASHES;
-
-         err = postrm_upgrade_old_pkg(conf, pkg, old_pkg);
-         if (err) goto UNWIND_POSTRM_UPGRADE_OLD_PKG;
-
-         if (conf->noaction) return 0;
-
-         /* point of no return: no unwinding after this */
-         if (old_pkg && !conf->force_reinstall) {
-              old_pkg->state_want = SW_DEINSTALL;
-
-              if (old_pkg->state_flag & SF_NOPRUNE) {
-                   ipkg_message(conf, IPKG_INFO,
-                                "  not removing obsolesced files because package marked noprune\n");
-              } else {
-                   ipkg_message(conf, IPKG_INFO,
-                                "  removing obsolesced files\n");
-                   remove_obsolesced_files(conf, pkg, old_pkg);
-              }
-               /* removing files from old package, to avoid ghost files */ 
-               remove_data_files_and_list(conf, old_pkg);
-/* Pigi : It should be better to remove also maintainer and postrem scripts here, just in case*/
-               remove_maintainer_scripts_except_postrm(conf, old_pkg);
-               remove_postrm(conf, old_pkg);
-/* Pigi */
-
-         }
-
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  installing maintainer scripts\n");
-         install_maintainer_scripts(conf, pkg, old_pkg);
-
-         /* the following just returns 0 */
-         remove_disappeared(conf, pkg);
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  installing data files\n");
-         install_data_files(conf, pkg);
-
-/* read comments from function for detail but I will execute this here as all other tests are ok.*/
-         err = check_data_file_clashes_change(conf, pkg, old_pkg);
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  resolving conf files\n");
-         resolve_conffiles(conf, pkg);
-
-         pkg->state_status = SS_UNPACKED;
-         old_state_flag = pkg->state_flag;
-         pkg->state_flag &= ~SF_PREFER;
-         ipkg_message(conf, IPKG_DEBUG, "   pkg=%s old_state_flag=%x state_flag=%x\n", pkg->name, old_state_flag, pkg->state_flag);
-
-         if (old_pkg && !conf->force_reinstall) {
-              old_pkg->state_status = SS_NOT_INSTALLED;
-         }
-
-         time(&pkg->installed_time);
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  cleanup temp files\n");
-         cleanup_temporary_files(conf, pkg);
-
-         ab_pkg = pkg->parent;
-         if (ab_pkg)
-              ab_pkg->state_status = pkg->state_status;
-
-         ipkg_message(conf, IPKG_INFO, "Done.\n");
-
-         if (use_signal)
-              signal(SIGINT, old_handler);
-         else
-              sigprocmask(SIG_UNBLOCK, &newset, &oldset);
-
-         return 0;
-     
-
-     UNWIND_POSTRM_UPGRADE_OLD_PKG:
-         postrm_upgrade_old_pkg_unwind(conf, pkg, old_pkg);
-     UNWIND_CHECK_DATA_FILE_CLASHES:
-         check_data_file_clashes_unwind(conf, pkg, old_pkg);
-     UNWIND_BACKUP_MODIFIED_CONFFILES:
-         backup_modified_conffiles_unwind(conf, pkg, old_pkg);
-     UNWIND_PREINST_CONFIGURE:
-         preinst_configure_unwind(conf, pkg, old_pkg);
-     UNWIND_PRERM_DECONFIGURE_CONFLICTORS:
-         prerm_deconfigure_conflictors_unwind(conf, pkg, replacees);
-     UNWIND_PRERM_UPGRADE_OLD_PKG:
-         prerm_upgrade_old_pkg_unwind(conf, pkg, old_pkg);
-     UNWIND_REMOVE_INSTALLED_REPLACEES:
-         pkg_remove_installed_replacees_unwind(conf, replacees);
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  cleanup temp files\n");
-         cleanup_temporary_files(conf, pkg);
-
-         ipkg_message(conf, IPKG_INFO,
-                      "Failed.\n");
-         if (use_signal)
-              signal(SIGINT, old_handler);
-         else
-              sigprocmask(SIG_UNBLOCK, &newset, &oldset);
-
-         return err;
-     }
-}
-
-static int prerm_upgrade_old_pkg(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     /* DPKG_INCOMPATIBILITY:
-       dpkg does some things here that we don't do yet. Do we care?
-       
-       1. If a version of the package is already installed, call
-          old-prerm upgrade new-version
-       2. If the script runs but exits with a non-zero exit status
-          new-prerm failed-upgrade old-version
-          Error unwind, for both the above cases:
-          old-postinst abort-upgrade new-version
-     */
-     return 0;
-}
-
-static int prerm_upgrade_old_pkg_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     /* DPKG_INCOMPATIBILITY:
-       dpkg does some things here that we don't do yet. Do we care?
-       (See prerm_upgrade_old_package for details)
-     */
-     return 0;
-}
-
-static int prerm_deconfigure_conflictors(ipkg_conf_t *conf, pkg_t *pkg, pkg_vec_t *conflictors)
-{
-     /* DPKG_INCOMPATIBILITY:
-       dpkg does some things here that we don't do yet. Do we care?
-       2. If a 'conflicting' package is being removed at the same time:
-               1. If any packages depended on that conflicting package and
-                  --auto-deconfigure is specified, call, for each such package:
-                  deconfigured's-prerm deconfigure \
-                  in-favour package-being-installed version \
-                  removing conflicting-package version
-               Error unwind:
-                  deconfigured's-postinst abort-deconfigure \
-                  in-favour package-being-installed-but-failed version \
-                  removing conflicting-package version
-
-                  The deconfigured packages are marked as requiring
-                  configuration, so that if --install is used they will be
-                  configured again if possible.
-               2. To prepare for removal of the conflicting package, call:
-                  conflictor's-prerm remove in-favour package new-version
-               Error unwind:
-                  conflictor's-postinst abort-remove in-favour package new-version
-     */
-     return 0;
-}
-
-static int prerm_deconfigure_conflictors_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_vec_t *conflictors)
-{
-     /* DPKG_INCOMPATIBILITY: dpkg does some things here that we don't
-       do yet. Do we care?  (See prerm_deconfigure_conflictors for
-       details) */
-     return 0;
-}
-
-static int preinst_configure(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     int err;
-     char *preinst_args;
-
-     if (old_pkg) {
-         char *old_version = pkg_version_str_alloc(old_pkg);
-         sprintf_alloc(&preinst_args, "upgrade %s", old_version);
-         free(old_version);
-     } else if (pkg->state_status == SS_CONFIG_FILES) {
-         char *pkg_version = pkg_version_str_alloc(pkg);
-         sprintf_alloc(&preinst_args, "install %s", pkg_version);
-         free(pkg_version);
-     } else {
-         preinst_args = strdup("install");
-     }
-
-     err = pkg_run_script(conf, pkg, "preinst", preinst_args);
-     if (err) {
-         ipkg_message(conf, IPKG_ERROR,
-                      "Aborting installation of %s\n", pkg->name);
-         return 1;
-     }
-
-     free(preinst_args);
-
-     return 0;
-}
-
-static int preinst_configure_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     /* DPKG_INCOMPATIBILITY:
-       dpkg does the following error unwind, should we?
-       pkg->postrm abort-upgrade old-version
-       OR pkg->postrm abort-install old-version
-       OR pkg->postrm abort-install
-     */
-     return 0;
-}
-
-static int backup_modified_conffiles(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     int err;
-     conffile_list_elt_t *iter;
-     conffile_t *cf;
-
-     if (conf->noaction) return 0;
-
-     /* Backup all modified conffiles */
-     if (old_pkg) {
-         for (iter = old_pkg->conffiles.head; iter; iter = iter->next) {
-              char *cf_name;
-              
-              cf = iter->data;
-              cf_name = root_filename_alloc(conf, cf->name);
-
-              /* Don't worry if the conffile is just plain gone */
-              if (file_exists(cf_name) && conffile_has_been_modified(conf, cf)) {
-                   err = backup_make_backup(conf, cf_name);
-                   if (err) {
-                        return err;
-                   }
-              }
-              free(cf_name);
-         }
-     }
-
-     /* Backup all conffiles that were not conffiles in old_pkg */
-     for (iter = pkg->conffiles.head; iter; iter = iter->next) {
-         char *cf_name;
-         cf = iter->data;
-         cf_name = root_filename_alloc(conf, cf->name);
-         /* Ignore if this was a conffile in old_pkg as well */
-         if (pkg_get_conffile(old_pkg, cf->name)) {
-              continue;
-         }
-
-         if (file_exists(cf_name) && (! backup_exists_for(cf_name))) {
-              err = backup_make_backup(conf, cf_name);
-              if (err) {
-                   return err;
-              }
-         }
-         free(cf_name);
-     }
-
-     return 0;
-}
-
-static int backup_modified_conffiles_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     conffile_list_elt_t *iter;
-
-     if (old_pkg) {
-         for (iter = old_pkg->conffiles.head; iter; iter = iter->next) {
-              backup_remove(iter->data->name);
-         }
-     }
-
-     for (iter = pkg->conffiles.head; iter; iter = iter->next) {
-         backup_remove(iter->data->name);
-     }
-
-     return 0;
-}
-
-
-static int check_data_file_clashes(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     /* DPKG_INCOMPATIBILITY:
-       ipkg takes a slightly different approach than dpkg at this
-       point.  dpkg installs each file in the new package while
-       creating a backup for any file that is replaced, (so that it
-       can unwind if necessary).  To avoid complexity and redundant
-       storage, ipkg doesn't do any installation until later, (at the
-       point at which dpkg removes the backups.
-       
-       But, we do have to check for data file clashes, since after
-       installing a package with a file clash, removing either of the
-       packages involved in the clash has the potential to break the
-       other package.
-     */
-     str_list_t *files_list;
-     str_list_elt_t *iter;
-
-     int clashes = 0;
-
-     files_list = pkg_get_installed_files(pkg);
-     for (iter = files_list->head; iter; iter = iter->next) {
-         char *root_filename;
-         char *filename = iter->data;
-         root_filename = root_filename_alloc(conf, filename);
-         if (file_exists(root_filename) && (! file_is_dir(root_filename))) {
-              pkg_t *owner;
-              pkg_t *obs;
-              /* Pre-existing conffiles are OK */
-              /* @@@@ should have way to check that it is a conffile -Jamey */
-              if (backup_exists_for(root_filename)) {
-                   continue;
-              }
-
-              /* Pre-existing files are OK if force-overwrite was asserted. */ 
-              if (conf->force_overwrite) {
-                   /* but we need to change who owns this file */
-                   file_hash_set_file_owner(conf, filename, pkg);
-                   continue;
-              }
-
-              owner = file_hash_get_file_owner(conf, filename);
-
-              /* Pre-existing files are OK if owned by the pkg being upgraded. */
-              if (owner && old_pkg) {
-                   if (strcmp(owner->name, old_pkg->name) == 0) {
-                        continue;
-                   }
-              }
-
-              /* Pre-existing files are OK if owned by a package replaced by new pkg. */
-              if (owner) {
-                    ipkg_message(conf, IPKG_DEBUG2, "Checking for replaces for %s in package %s\n", filename, owner->name);
-                   if (pkg_replaces(pkg, owner)) {
-                        continue;
-                   }
-/* If the file that would be installed is owned by the same package, ( as per a reinstall or similar )
-   then it's ok to overwrite. */
-                    if (strcmp(owner->name,pkg->name)==0){
-                        ipkg_message(conf, IPKG_INFO, "Replacing pre-existing file %s owned by package %s\n", filename, owner->name);
-                        continue;
-                    }
-              }
-
-              /* Pre-existing files are OK if they are obsolete */
-              obs = hash_table_get(&conf->obs_file_hash, filename);
-              if (obs) {
-                   ipkg_message(conf, IPKG_INFO, "Pre-exiting file %s is obsolete.  obs_pkg=%s\n", filename, obs->name);
-                   continue;
-              }
-
-              /* We have found a clash. */
-              ipkg_message(conf, IPKG_ERROR,
-                           "Package %s wants to install file %s\n"
-                           "\tBut that file is already provided by package ",
-                           pkg->name, filename);
-              if (owner) {
-                   ipkg_message(conf, IPKG_ERROR,
-                                "%s\n", owner->name);
-              } else {
-                   ipkg_message(conf, IPKG_ERROR,
-                                "<no package>\nPlease move this file out of the way and try again.\n");
-              }
-              clashes++;
-         }
-         free(root_filename);
-     }
-     pkg_free_installed_files(pkg);
-
-     return clashes;
-}
-
-static int check_data_file_clashes_change(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-    /* Basically that's the worst hack I could do to be able to change ownership of
-       file list, but, being that we have no way to unwind the mods, due to structure
-       of hash table, probably is the quickest hack too, whishing it would not slow-up thing too much.
-       What we do here is change the ownership of file in hash if a replace ( or similar events
-       happens )
-       Only the action that are needed to change name should be considered.
-       @@@ To change after 1.0 release.
-     */
-     str_list_t *files_list;
-     str_list_elt_t *iter;
-
-     int clashes = 0;
-
-     files_list = pkg_get_installed_files(pkg);
-     for (iter = files_list->head; iter; iter = iter->next) {
-         char *root_filename;
-         char *filename = iter->data;
-         root_filename = root_filename_alloc(conf, filename);
-         if (file_exists(root_filename) && (! file_is_dir(root_filename))) {
-              pkg_t *owner;
-
-              if (conf->force_overwrite) {
-                   /* but we need to change who owns this file */
-                   file_hash_set_file_owner(conf, filename, pkg);
-                   continue;
-              }
-
-              owner = file_hash_get_file_owner(conf, filename);
-
-              /* Pre-existing files are OK if owned by a package replaced by new pkg. */
-              if (owner) {
-                   if (pkg_replaces(pkg, owner)) {
-/* It's now time to change the owner of that file. 
-   It has been "replaced" from the new "Replaces", then I need to inform lists file about that.  */
-                        ipkg_message(conf, IPKG_INFO, "Replacing pre-existing file %s owned by package %s\n", filename, owner->name);
-                        file_hash_set_file_owner(conf, filename, pkg);
-                        continue;
-                   }
-              }
-
-         }
-         free(root_filename);
-     }
-     pkg_free_installed_files(pkg);
-
-     return clashes;
-}
-
-static int check_data_file_clashes_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     /* Nothing to do since check_data_file_clashes doesn't change state */
-     return 0;
-}
-
-static int postrm_upgrade_old_pkg(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     /* DPKG_INCOMPATIBILITY: dpkg does the following here, should we?
-       1. If the package is being upgraded, call
-          old-postrm upgrade new-version
-       2. If this fails, attempt:
-          new-postrm failed-upgrade old-version
-       Error unwind, for both cases:
-          old-preinst abort-upgrade new-version    */
-     return 0;
-}
-
-static int postrm_upgrade_old_pkg_unwind(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     /* DPKG_INCOMPATIBILITY:
-       dpkg does some things here that we don't do yet. Do we care?
-       (See postrm_upgrade_old_pkg for details)
-     */
-    return 0;
-}
-
-static int remove_obsolesced_files(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     int err;
-     str_list_t *old_files;
-     str_list_elt_t *of;
-     str_list_t *new_files;
-     str_list_elt_t *nf;
-
-     if (old_pkg == NULL) {
-         return 0;
-     }
-
-     old_files = pkg_get_installed_files(old_pkg);
-     new_files = pkg_get_installed_files(pkg);
-
-     for (of = old_files->head; of; of = of->next) {
-         pkg_t *owner;
-         char *old, *new;
-         old = of->data;
-         for (nf = new_files->head; nf; nf = nf->next) {
-              new = nf->data;
-              if (strcmp(old, new) == 0) {
-                   goto NOT_OBSOLETE;
-              }
-         }
-         if (file_is_dir(old)) {
-              continue;
-         }
-         owner = file_hash_get_file_owner(conf, old);
-         if (owner != old_pkg) {
-              /* in case obsolete file no longer belongs to old_pkg */
-              continue;
-         }
-         /* old file is obsolete */
-         ipkg_message(conf, IPKG_INFO,
-                      "    removing obsolete file %s\n", old);
-         if (!conf->noaction) {
-              err = unlink(old);
-              if (err) {
-                   ipkg_message(conf, IPKG_ERROR, "    Warning: remove %s failed: %s\n", old,
-                                strerror(errno));
-              }
-         }
-
-     NOT_OBSOLETE:
-         ;
-     }
-
-     pkg_free_installed_files(old_pkg);
-     pkg_free_installed_files(pkg);
-
-     return 0;
-}
-
-static int remove_obsolete_maintainer_scripts(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     int i;
-     int err = 0;
-     char *globpattern;
-     glob_t globbuf;
-     if (0) {
-         if (!pkg->dest) {
-              ipkg_message(conf, IPKG_ERROR, "%s: no dest for package %s\n", __FUNCTION__, pkg->name);
-              return -1;
-         }
-         sprintf_alloc(&globpattern, "%s/%s.*", pkg->dest->info_dir, pkg->name);
-         err = glob(globpattern, 0, NULL, &globbuf);
-         free(globpattern);
-         if (err) {
-              return err;
-         }
-         /* XXXX this should perhaps only remove the ones that are not overwritten in new package.  Jamey 11/11/2003 */
-         for (i = 0; i < globbuf.gl_pathc; i++) {
-              ipkg_message(conf, IPKG_DEBUG, "Removing control file %s from old_pkg %s\n",
-                           globbuf.gl_pathv[i], old_pkg->name);
-              if (!conf->noaction)
-                   unlink(globbuf.gl_pathv[i]);
-         }
-         globfree(&globbuf);
-     }
-     return err;
-}
-
-static int install_maintainer_scripts(ipkg_conf_t *conf, pkg_t *pkg, pkg_t *old_pkg)
-{
-     int ret;
-     char *prefix;
-
-     if (old_pkg)
-         remove_obsolete_maintainer_scripts(conf, pkg, old_pkg);
-     sprintf_alloc(&prefix, "%s.", pkg->name);
-     ret = pkg_extract_control_files_to_dir_with_prefix(pkg,
-                                                       pkg->dest->info_dir,
-                                                       prefix);
-     free(prefix);
-     return ret;
-}
-
-static int remove_disappeared(ipkg_conf_t *conf, pkg_t *pkg)
-{
-     /* DPKG_INCOMPATIBILITY:
-       This is a fairly sophisticated dpkg operation. Shall we
-       skip it? */
-     
-     /* Any packages all of whose files have been overwritten during the
-       installation, and which aren't required for dependencies, are
-       considered to have been removed. For each such package
-       1. disappearer's-postrm disappear overwriter overwriter-version
-       2. The package's maintainer scripts are removed
-       3. It is noted in the status database as being in a sane state,
-           namely not installed (any conffiles it may have are ignored,
-          rather than being removed by dpkg). Note that disappearing
-          packages do not have their prerm called, because dpkg doesn't
-          know in advance that the package is going to vanish.
-     */
-     return 0;
-}
-
-static int install_data_files(ipkg_conf_t *conf, pkg_t *pkg)
-{
-     int err;
-
-     /* ipkg takes a slightly different approach to data file backups
-       than dpkg. Rather than removing backups at this point, we
-       actually do the data file installation now. See comments in
-       check_data_file_clashes() for more details. */
-    
-     ipkg_message(conf, IPKG_INFO,
-                 "    extracting data files to %s\n", pkg->dest->root_dir);
-     err = pkg_extract_data_files_to_dir(pkg, pkg->dest->root_dir);
-     if (err) {
-         return err;
-     }
-
-     /* XXX: BUG or FEATURE : We are actually loosing the Essential flag,
-        so we can't save ourself from removing important packages
-        At this point we (should) have extracted the .control file, so it
-        would be a good idea to reload the data in it, and set the Essential 
-        state in *pkg. From now on the Essential is back in status file and
-        we can protect again.
-        We should operate this way:
-        fopen the file ( pkg->dest->root_dir/pkg->name.control )
-        check for "Essential" in it 
-        set the value in pkg->essential.
-        This new routine could be useful also for every other flag
-        Pigi: 16/03/2004 */
-     set_flags_from_control(conf, pkg) ;
-     
-     ipkg_message(conf, IPKG_DEBUG, "    Calling pkg_write_filelist from %s\n", __FUNCTION__);
-     err = pkg_write_filelist(conf, pkg);
-     if (err)
-         return err;
-
-     /* XXX: FEATURE: ipkg should identify any files which existed
-       before installation and which were overwritten, (see
-       check_data_file_clashes()). What it must do is remove any such
-       files from the filelist of the old package which provided the
-       file. Otherwise, if the old package were removed at some point
-       it would break the new package. Removing the new package will
-       also break the old one, but this cannot be helped since the old
-       package's file has already been deleted. This is the importance
-       of check_data_file_clashes(), and only allowing ipkg to install
-       a clashing package with a user force. */
-
-     return 0;
-}
-
-static int resolve_conffiles(ipkg_conf_t *conf, pkg_t *pkg)
-{
-     conffile_list_elt_t *iter;
-     conffile_t *cf;
-     char *cf_backup;
-
-    char *md5sum;
-
-    
-     if (conf->noaction) return 0;
-
-     for (iter = pkg->conffiles.head; iter; iter = iter->next) {
-         char *root_filename;
-         cf = iter->data;
-         root_filename = root_filename_alloc(conf, cf->name);
-
-         /* Might need to initialize the md5sum for each conffile */
-         if (cf->value == NULL) {
-              cf->value = file_md5sum_alloc(root_filename);
-         }
-
-         if (!file_exists(root_filename)) {
-              free(root_filename);
-              continue;
-         }
-
-         cf_backup = backup_filename_alloc(root_filename);
-
-
-         if (file_exists(cf_backup)) {
- /* Let's compute md5 to test if files are changed */
-             md5sum = file_md5sum_alloc(cf_backup);
-               if (strcmp( cf->value,md5sum) != 0 ) {
-                 if (conf->force_defaults
-                     || user_prefers_old_conffile(cf->name, cf_backup) ) {
-                      rename(cf_backup, root_filename);
-                 }
-              }
-              unlink(cf_backup);
-              free(md5sum);
-         }
-
-         free(cf_backup);
-         free(root_filename);
-     }
-
-     return 0;
-}
-
-static int user_prefers_old_conffile(const char *file_name, const char *backup)
-{
-     char *response;
-     const char *short_file_name;
-
-     short_file_name = strrchr(file_name, '/');
-     if (short_file_name) {
-         short_file_name++;
-     } else {
-         short_file_name = file_name;
-     }
-
-     while (1) {
-         response = get_user_response("    Configuration file '%s'\n"
-                                      "    ==> File on system created by you or by a script.\n"
-                                      "    ==> File also in package provided by package maintainer.\n"
-                                      "       What would you like to do about it ?  Your options are:\n"
-                                      "        Y or I  : install the package maintainer's version\n"
-                                      "        N or O  : keep your currently-installed version\n"
-                                      "          D     : show the differences between the versions (if diff is installed)\n"
-                                      "     The default action is to keep your current version.\n"
-                                      "    *** %s (Y/I/N/O/D) [default=N] ? ", file_name, short_file_name);
-         if (strcmp(response, "y") == 0
-             || strcmp(response, "i") == 0
-             || strcmp(response, "yes") == 0) {
-              free(response);
-              return 0;
-         }
-
-         if (strcmp(response, "d") == 0) {
-              char *cmd;
-
-              free(response);
-              /* XXX: BUG rewrite to use exec or busybox's internal diff */
-              sprintf_alloc(&cmd, "diff -u %s %s", backup, file_name);
-              xsystem(cmd);
-              free(cmd);
-              printf("    [Press ENTER to continue]\n");
-              response = file_read_line_alloc(stdin);
-              free(response);
-              continue;
-         }
-
-         free(response);
-         return 1;
-     }
-}
-
-/* XXX: CLEANUP: I'd like to move all of the code for
-   creating/cleaning pkg->tmp_unpack_dir directly into pkg.c. (Then,
-   it would make sense to cleanup pkg->tmp_unpack_dir directly from
-   pkg_deinit for example). */
-static int cleanup_temporary_files(ipkg_conf_t *conf, pkg_t *pkg)
-{
-     DIR *tmp_dir;
-     struct dirent *dirent;
-     char *tmp_file;
-
-#ifdef IPKG_DEBUG_NO_TMP_CLEANUP
-#error
-     ipkg_message(conf, IPKG_DEBUG,
-                 "%s: Not cleaning up %s since ipkg compiled with IPKG_DEBUG_NO_TMP_CLEANUP\n",
-                 __FUNCTION__, pkg->tmp_unpack_dir);
-     return 0;
-#endif
-
-     if (pkg->tmp_unpack_dir && file_is_dir(pkg->tmp_unpack_dir)) {
-         tmp_dir = opendir(pkg->tmp_unpack_dir);
-         if (tmp_dir) {
-              while (1) {
-                   dirent = readdir(tmp_dir);
-                   if (dirent == NULL) {
-                        break;
-                   }
-                   sprintf_alloc(&tmp_file, "%s/%s",
-                                 pkg->tmp_unpack_dir, dirent->d_name);
-                   if (! file_is_dir(tmp_file)) {
-                        unlink(tmp_file);
-                   }
-                   free(tmp_file);
-              }
-              closedir(tmp_dir);
-              rmdir(pkg->tmp_unpack_dir);
-              free(pkg->tmp_unpack_dir);
-              pkg->tmp_unpack_dir = NULL;
-         }
-     }
-
-     ipkg_message(conf, IPKG_INFO, "cleanup_temporary_files: pkg=%s local_filename=%s tmp_dir=%s\n",
-                 pkg->name, pkg->local_filename, conf->tmp_dir);
-     if (pkg->local_filename && strncmp(pkg->local_filename, conf->tmp_dir, strlen(conf->tmp_dir)) == 0) {
-         unlink(pkg->local_filename);
-         free(pkg->local_filename);
-         pkg->local_filename = NULL;
-     }
-
-     return 0;
-}
-
-static char *backup_filename_alloc(const char *file_name)
-{
-     char *backup;
-
-     sprintf_alloc(&backup, "%s%s", file_name, IPKG_BACKUP_SUFFIX);
-
-     return backup;
-}
-
-int backup_make_backup(ipkg_conf_t *conf, const char *file_name)
-{
-     int err;
-     char *backup;
-    
-     backup = backup_filename_alloc(file_name);
-     err = file_copy(file_name, backup);
-     if (err) {
-         ipkg_message(conf, IPKG_ERROR,
-                      "%s: Failed to copy %s to %s\n",
-                      __FUNCTION__, file_name, backup);
-     }
-
-     free(backup);
-
-     return err;
-}
-
-static int backup_exists_for(const char *file_name)
-{
-     int ret;
-     char *backup;
-
-     backup = backup_filename_alloc(file_name);
-
-     ret = file_exists(backup);
-
-     free(backup);
-
-     return ret;
-}
-
-static int backup_remove(const char *file_name)
-{
-     char *backup;
-
-     backup = backup_filename_alloc(file_name);
-     unlink(backup);
-     free(backup);
-
-     return 0;
-}
-
-\f
-
-#ifdef CONFIG_IPKG_PROCESS_ACTIONS
-
-int ipkg_remove_packages(ipkg_conf_t *conf, pkg_vec_t *pkgs_to_remove) 
-{
-     /* first, remove the packages that need removing */
-     for (i = 0 ; i < pkgs_to_remove->len; i++ ) {
-         pkg_t *pkg = pkgs_to_remove->pkgs[i];
-         err = ipkg_remove_pkg(conf, pkg,0);
-         if (err) return err;
-     }
-     return 0;
-}
-
-int ipkg_process_actions_sanity_check(ipkg_conf_t *conf, pkg_vec_t *pkgs_to_remove, pkg_vec_t *pkgs_superseded, pkg_vec_t *pkgs_to_install)
-{
-     int i;
-     /* now one more pass checking on the ones that need to be installed */
-     for (i = 0 ; i < pkgs_to_install->len; i++ ) {
-         pkg_t *pkg = pkgs_to_install->pkgs[i];
-         if (pkg->dest == NULL)
-              pkg->dest = conf->default_dest;
-
-         pkg->state_want = SW_INSTALL;
-
-         /* Abhaya: conflicts check */
-         err = check_conflicts_for(conf, pkg);
-         if (err) { return err; }
-     }
-     return 0;
-}
-
-int ipkg_process_actions_unpack_packages(ipkg_conf_t *conf, pkg_vec_t *pkgs_to_remove, pkg_vec_t *pkgs_to_install)
-{
-     int i;
-     /* now one more pass checking on the ones that need to be installed */
-     for (i = 0 ; i < pkgs_to_install->len; i++ ) {
-         pkg_t *pkg = pkgs_to_install->pkgs[i];
-
-         /* XXX: FEATURE: Need to really support Provides/Replaces: here at some point */
-         pkg_vec_t *replacees = pkg_vec_alloc();
-         pkg_get_installed_replacees(conf, pkg, replacees);
-
-         /* XXX: BUG: we really should treat replacement more like an upgrade
-          *      Instead, we're going to remove the replacees 
-          */
-         err = pkg_remove_installed_replacees(conf, replacees);
-         if (err) return err;
-         pkg->state_flag |= SF_REMOVED_REPLACEES;
-     }
-     return 0;
-}
-
-int ipkg_process_actions_unpack_packages(ipkg_conf_t *conf, pkg_vec_t *pkgs_to_remove, pkg_vec_t *pkgs_to_install)
-{
-     int i;
-     /* now one more pass checking on the ones that need to be installed */
-     for (i = 0 ; i < pkgs_to_install->len; i++ ) {
-         pkg_t *pkg = pkgs_to_install->pkgs[i];
-         if (pkg->local_filename == NULL) {
-              err = ipkg_download_pkg(conf, pkg, conf->tmp_dir);
-              if (err) {
-                   ipkg_message(conf, IPKG_ERROR,
-                                "Failed to download %s. Perhaps you need to run 'ipkg update'?\n",
-                                pkg->name);
-                   return err;
-              }
-         }
-         if (pkg->tmp_unpack_dir == NULL) {
-              err = unpack_pkg_control_files(conf, pkg);
-              if (err) return err;
-         }
-     }
-     return 0;
-}
-
-int ipkg_process_actions_prerm(ipkg_conf_t *conf, pkg_vec_t *pkgs_to_install)
-{
-     int i;
-     /* now one more pass checking on the ones that need to be installed */
-     for (i = 0 ; i < pkgs_to_install->len; i++ ) {
-         pkg_t *pkg = pkgs_to_install->pkgs[i];
-         pkg_t *old_pkg = pkg->old_pkg;
-
-         err = prerm_upgrade_old_pkg(conf, pkg, old_pkg);
-         if (err) return err;
-
-         err = prerm_deconfigure_conflictors(conf, pkg, replacees);
-         if (err) return err;
-
-         err = preinst_configure(conf, pkg, old_pkg);
-         if (err) return err;
-
-         err = backup_modified_conffiles(conf, pkg, old_pkg);
-         if (err) return err;
-
-         err = postrm_upgrade_old_pkg(conf, pkg, old_pkg);
-         if (err) return err;
-     }
-     return 0;
-}
-
-int ipkg_process_actions_install(ipkg_conf_t *conf, pkg_vec_t *pkgs_to_install)
-{
-     int i;
-     /* now one more pass checking on the ones that need to be installed */
-     for (i = 0 ; i < pkgs_to_install->len; i++ ) {
-         pkg_t *pkg = pkgs_to_install->pkgs[i];
-         pkg_t *old_pkg = pkg->old_pkg;
-
-         if (old_pkg) {
-              old_pkg->state_want = SW_DEINSTALL;
-
-              if (old_pkg->state_flag & SF_NOPRUNE) {
-                   ipkg_message(conf, IPKG_INFO,
-                                "  not removing obsolesced files because package marked noprune\n");
-              } else {
-                   ipkg_message(conf, IPKG_INFO,
-                                "  removing obsolesced files\n");
-                   remove_obsolesced_files(conf, pkg, old_pkg);
-              }
-         }
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  installing maintainer scripts\n");
-         install_maintainer_scripts(conf, pkg, old_pkg);
-
-         /* the following just returns 0 */
-         remove_disappeared(conf, pkg);
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  installing data files\n");
-         install_data_files(conf, pkg);
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  resolving conf files\n");
-         resolve_conffiles(conf, pkg);
-
-         pkg->state_status = SS_UNPACKED;
-
-         if (old_pkg) {
-              old_pkg->state_status = SS_NOT_INSTALLED;
-         }
-
-         time(&pkg->installed_time);
-
-         ipkg_message(conf, IPKG_INFO,
-                      "  cleanup temp files\n");
-         cleanup_temporary_files(conf, pkg);
-
-         if (pkg->parent)
-              pkg->parent->state_status = pkg->state_status;
-     }
-     return 0;
-}
-
-int ipkg_process_actions_unwind_prerm(ipkg_conf_t *conf, pkg_vec_t *pkgs_to_install)
-{
-     int i;
-     /* now one more pass checking on the ones that need to be installed */
-     for (i = 0 ; i < pkgs_to_install->len; i++ ) {
-         pkg_t *pkg = pkgs_to_install->pkgs[i];
-         pkg_t *old_pkg = pkg->old_pkg;
-
-         if (old_pkg) {
-              if (old_pkg->state_flags & SF_POSTRM_UPGRADE)
-                   postrm_upgrade_old_pkg_unwind(conf, pkg, old_pkg);
-              if (old_pkg->state_flags & SF_CHECK_DATA_FILE_CLASHES)
-                   check_data_file_clashes_unwind(conf, pkg, old_pkg);
-              if (old_pkg->state_flags & SF_BACKUP_MODIFIED_CONFFILES)
-                   backup_modified_conffiles_unwind(conf, pkg, old_pkg);
-              if (old_pkg->state_flags & SF_PREINST_CONFIGURE)
-                   preinst_configure_unwind(conf, pkg, old_pkg);
-              if (old_pkg->state_flags & SF_DECONFIGURE_CONFLICTORS)
-                   prerm_deconfigure_conflictors_unwind(conf, pkg, replacees);
-              if (old_pkg->state_flags & SF_PRERM_UPGRADE)
-                   prerm_upgrade_old_pkg_unwind(conf, pkg, old_pkg);
-
-              if (old_pkg->state_flags & SF_REMOVED_REPLACEES)
-                   remove_installed_replacees_unwind(conf, pkg, old_pkg);
-
-         }
-     }
-     return 0;
-}
-
-/* 
- * Perform all the actions.
- *
- * pkgs_to_remove are packages marked for removal.
- * pkgs_superseded are the old packages being replaced by upgrades.
- *
- * Assumes pkgs_to_install includes all dependences, recursively, sorted in installable order.
- */
-int ipkg_process_actions(ipkg_conf_t *conf, pkg_vec_t *pkgs_to_remove, pkg_vec_t *pkgs_superseded, pkg_vec_t *pkgs_to_install)
-{
-     int err;
-     int i;
-
-     err = ipkg_remove_packages(conf, pkgs_to_remove);
-     if (err) return err;
-
-     err = ipkg_process_actions_sanity_check(conf, pkgs_superseded, pkgs_to_install);
-     if (err) return err;
-
-     err = ipkg_process_actions_remove_replacees(conf, pkgs_to_install);
-     if (err) goto UNWIND;
-
-     /* @@@@ look at ipkg_install_pkg for handling replacements */
-     err = ipkg_process_actions_unpack_packages(conf, pkgs_to_install);
-     if (err) goto UNWIND;
-
-     /* 
-      * Now that we have the packages unpacked, we can look for data
-      * file clashes.  First, we mark the files from the superseded
-      * packages as obsolete.  Then we scan the files in
-      * pkgs_to_install, and only complain about clashes with
-      * non-obsolete files.
-      */
-
- &