diff options
-rw-r--r-- | classes/opie.bbclass | 2 | ||||
-rw-r--r-- | conf/distro/angstrom-2006.9.conf | 4 | ||||
-rw-r--r-- | conf/distro/angstrom.conf | 2 | ||||
-rw-r--r-- | conf/distro/jlime-donkey.conf | 24 | ||||
-rw-r--r-- | conf/machine/include/handheld-common.conf | 2 | ||||
-rw-r--r-- | conf/machine/include/zaurus-clamshell-2.4.conf | 2 | ||||
-rw-r--r-- | conf/machine/include/zaurus-clamshell-2.6.conf | 2 | ||||
-rw-r--r-- | files/device_table-jlime.txt | 21 | ||||
-rw-r--r-- | packages/angstrom/task-angstrom.bb | 112 | ||||
-rw-r--r-- | packages/autoconf/autoconf-2.59/sizeof_types.patch | 2 | ||||
-rw-r--r-- | packages/autoconf/autoconf-native_2.59.bb | 2 | ||||
-rw-r--r-- | packages/autoconf/autoconf_2.59.bb | 2 | ||||
-rw-r--r-- | packages/ctorrent/ctorrent.inc | 3 | ||||
-rw-r--r-- | packages/ctorrent/ctorrent_1.3.4.bb | 2 | ||||
-rw-r--r-- | packages/ctorrent/files/extended_ctorrent.diff | 14406 | ||||
-rw-r--r-- | packages/cyrus-sasl/cyrus-sasl-2.1.19/client.c.patch | 11 | ||||
-rw-r--r-- | packages/cyrus-sasl/cyrus-sasl_2.1.19.bb | 3 | ||||
-rw-r--r-- | packages/debianutils/debianutils_2.16.1.bb | 1 | ||||
-rw-r--r-- | packages/efl++/efl++-fb_cvs.bb | 9 | ||||
-rw-r--r-- | packages/efl++/efl++-x11_cvs.bb | 10 | ||||
-rw-r--r-- | packages/efl++/efl++.inc | 2 | ||||
-rw-r--r-- | packages/fbreader/fbreader_0.7.3d.bb | 3 | ||||
-rw-r--r-- | packages/fluxbox/.mtn2git_empty (renamed from packages/libopie/libopie2-1.2.1/.mtn2git_empty) | 0 | ||||
-rw-r--r-- | packages/fluxbox/fluxbox-gpe/.mtn2git_empty (renamed from packages/opie-aboutapplet/opie-aboutapplet-1.2.1/.mtn2git_empty) | 0 | ||||
-rw-r--r-- | packages/fluxbox/fluxbox-gpe/apps.gpe | 57 | ||||
-rw-r--r-- | packages/fluxbox/fluxbox-gpe/fluxbox-gpe-session | 30 | ||||
-rw-r--r-- | packages/fluxbox/fluxbox-gpe/fluxbox-gpe.session | 9 | ||||
-rw-r--r-- | packages/fluxbox/fluxbox-gpe/gpe-init.patch | 121 | ||||
-rw-r--r-- | packages/fluxbox/fluxbox-gpe/style.gpe-default | 137 | ||||
-rw-r--r-- | packages/fluxbox/fluxbox-gpe_1.0rc.bb | 77 | ||||
-rw-r--r-- | packages/gcc/gcc_4.1.1.bb | 1 | ||||
-rw-r--r-- | packages/glib-1.2/glib-1.2-1.2.10/glib-config-use-pkg-config | 24 | ||||
-rw-r--r-- | packages/guile/files/.mtn2git_empty (renamed from packages/opie-button-settings/opie-button-settings-1.2.1/.mtn2git_empty) | 0 | ||||
-rw-r--r-- | packages/guile/files/configure-lossage.patch (renamed from packages/guile/configure-lossage.patch) | 0 | ||||
-rw-r--r-- | packages/guile/files/gcc4.patch | 16 | ||||
-rw-r--r-- | packages/guile/guile_1.6.4.bb | 14 | ||||
-rw-r--r-- | packages/icecast/icecast_2.2.0.bb | 6 | ||||
-rw-r--r-- | packages/ipkg-utils/ipkg-utils-native/.mtn2git_empty (renamed from packages/qt/qt4-x11-free-4.1.1/.mtn2git_empty) | 0 | ||||
-rw-r--r-- | packages/ipkg-utils/ipkg-utils-native/ipkg-utils-fix.patch | 17 | ||||
-rw-r--r-- | packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb | 3 | ||||
-rw-r--r-- | packages/ipkg/ipkg-native_0.99.163.bb | 9 | ||||
-rw-r--r-- | packages/ircp/ircp_0.3.bb | 2 | ||||
-rw-r--r-- | packages/libaal/libaal_1.0.4.bb | 2 | ||||
-rw-r--r-- | packages/libmailwrapper/libmailwrapper_1.2.2.bb (renamed from packages/libmailwrapper/libmailwrapper_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/libopie/libopie2-1.2.1/openzaurus-branding.patch | 11 | ||||
-rw-r--r-- | packages/libopie/libopie2_1.2.2.bb (renamed from packages/libopie/libopie2_1.2.1.bb) | 2 | ||||
-rw-r--r-- | packages/libopieobex/libopieobex0_1.2.2.bb (renamed from packages/libopieobex/libopieobex0_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/libopieobex/libopieobex0_cvs.bb | 1 | ||||
-rw-r--r-- | packages/libopietooth/libopietooth1_1.2.2.bb (renamed from packages/libopietooth/libopietooth1_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/libqpe/libqpe-opie/0905_datebookmonth.patch | 23 | ||||
-rw-r--r-- | packages/libqpe/libqpe-opie_1.2.2.bb (renamed from packages/libqpe/libqpe-opie_1.2.1.bb) | 5 | ||||
-rw-r--r-- | packages/libqpe/libqpe-opie_cvs.bb | 3 | ||||
-rw-r--r-- | packages/libqtaux/libqtaux2_1.2.2.bb (renamed from packages/libqtaux/libqtaux2_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/linux/ep93xx-kernel_2.6.17.1.bb | 6 | ||||
-rw-r--r-- | packages/linux/linux-jlime-sh3_2.6.16.20.bb | 12 | ||||
-rw-r--r-- | packages/linux/linux-openzaurus-2.6.17/defconfig-collie | 394 | ||||
-rw-r--r-- | packages/linux/linux-openzaurus_2.6.17.bb | 27 | ||||
-rw-r--r-- | packages/linux/linux-titan-sh4-2.6.16/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/linux/linux-titan-sh4-2.6.16/titan-config | 1530 | ||||
-rw-r--r-- | packages/linux/linux-titan-sh4-2.6.16/titan-flash.patch | 3157 | ||||
-rw-r--r-- | packages/linux/linux-titan-sh4_2.6.16.bb | 52 | ||||
-rw-r--r-- | packages/mc/mc_4.6.1.bb | 42 | ||||
-rw-r--r-- | packages/mdadm/mdadm.inc | 3 | ||||
-rw-r--r-- | packages/mdadm/mdadm_1.12.0.bb | 2 | ||||
-rw-r--r-- | packages/meta/jlime-opie.bb | 68 | ||||
-rw-r--r-- | packages/meta/slugos-packages.bb | 4 | ||||
-rw-r--r-- | packages/meta/task-bootstrap-unionroot.bb | 2 | ||||
-rw-r--r-- | packages/misc-binary-only/acx-firmware_1.0.bb | 4 | ||||
-rw-r--r-- | packages/mplayer/mplayer-1.0pre8/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/mplayer/mplayer-1.0pre8/libmpcodecs-ogg-include.patch | 13 | ||||
-rw-r--r-- | packages/mplayer/mplayer-1.0pre8/libmpdemux-ogg-include.patch | 13 | ||||
-rw-r--r-- | packages/mplayer/mplayer_1.0pre8.bb | 4 | ||||
-rw-r--r-- | packages/musicpd/mpd-alsa_0.11.5.bb | 10 | ||||
-rw-r--r-- | packages/musicpd/mpd_0.11.5.bb | 10 | ||||
-rw-r--r-- | packages/mutt/mutt-1.5.4i/keymap.h.patch | 11 | ||||
-rw-r--r-- | packages/mutt/mutt_1.5.4i.bb | 2 | ||||
-rw-r--r-- | packages/mutt/mutt_1.5.9i.bb | 1 | ||||
-rw-r--r-- | packages/opie-aboutapplet/opie-aboutapplet-1.2.1/add-hrw-to-authors.patch | 18 | ||||
-rw-r--r-- | packages/opie-aboutapplet/opie-aboutapplet-1.2.1/opie-1.2.1.patch | 18 | ||||
-rw-r--r-- | packages/opie-aboutapplet/opie-aboutapplet_1.2.1.bb | 7 | ||||
-rw-r--r-- | packages/opie-aboutapplet/opie-aboutapplet_1.2.2.bb | 4 | ||||
-rw-r--r-- | packages/opie-addressbook/opie-addressbook_1.2.2.bb (renamed from packages/opie-addressbook/opie-addressbook_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-advancedfm/opie-advancedfm_1.2.2.bb (renamed from packages/opie-advancedfm/opie-advancedfm_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-alarm/opie-alarm_1.2.2.bb (renamed from packages/opie-alarm/opie-alarm_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-appearance/opie-appearance_1.2.2.bb (renamed from packages/opie-appearance/opie-appearance_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-aqpkg/opie-aqpkg_1.2.2.bb (renamed from packages/opie-aqpkg/opie-aqpkg_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-autorotateapplet/opie-autorotateapplet_1.2.2.bb (renamed from packages/opie-autorotateapplet/opie-autorotateapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-backgammon/opie-backgammon_1.2.2.bb (renamed from packages/opie-backgammon/opie-backgammon_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-backup/opie-backup_1.2.2.bb (renamed from packages/opie-backup/opie-backup_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-bartender/opie-bartender_1.2.2.bb (renamed from packages/opie-bartender/opie-bartender_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-batteryapplet/opie-batteryapplet_1.2.2.bb (renamed from packages/opie-batteryapplet/opie-batteryapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-batteryapplet/opie-batteryapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-bluepin/opie-bluepin_1.2.2.bb (renamed from packages/opie-bluepin/opie-bluepin_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-bluetoothapplet/opie-bluetoothapplet_1.2.2.bb (renamed from packages/opie-bluetoothapplet/opie-bluetoothapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.2.bb (renamed from packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-bounce/opie-bounce_1.2.2.bb (renamed from packages/opie-bounce/opie-bounce_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-brightnessapplet/opie-brightnessapplet_1.2.2.bb (renamed from packages/opie-brightnessapplet/opie-brightnessapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-button-settings/opie-button-settings-1.2.1/1624-bugfix.patch | 25 | ||||
-rw-r--r-- | packages/opie-button-settings/opie-button-settings.inc | 2 | ||||
-rw-r--r-- | packages/opie-button-settings/opie-button-settings_1.2.1.bb | 8 | ||||
-rw-r--r-- | packages/opie-button-settings/opie-button-settings_1.2.2.bb | 6 | ||||
-rw-r--r-- | packages/opie-buzzword/opie-buzzword_1.2.2.bb (renamed from packages/opie-buzzword/opie-buzzword_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-calculator/opie-calculator_1.2.2.bb (renamed from packages/opie-calculator/opie-calculator_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-camera/opie-camera_1.2.2.bb (renamed from packages/opie-camera/opie-camera_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-cardmon/opie-cardmon_1.2.2.bb (renamed from packages/opie-cardmon/opie-cardmon_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-checkbook/opie-checkbook_1.2.2.bb (renamed from packages/opie-checkbook/opie-checkbook_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-citytime/opie-citytime_1.2.2.bb (renamed from packages/opie-citytime/opie-citytime_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-clipboardapplet/opie-clipboardapplet_1.2.2.bb (renamed from packages/opie-clipboardapplet/opie-clipboardapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-clipboardapplet/opie-clipboardapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-clock/opie-clock_1.2.2.bb (renamed from packages/opie-clock/opie-clock_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-clockapplet/opie-clockapplet_1.2.2.bb (renamed from packages/opie-clockapplet/opie-clockapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-clockapplet/opie-clockapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-confeditor/opie-confeditor_1.2.2.bb (renamed from packages/opie-confeditor/opie-confeditor_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-console/opie-console_1.2.2.bb (renamed from packages/opie-console/opie-console_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-dagger/opie-dagger_1.2.2.bb (renamed from packages/opie-dagger/opie-dagger_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-dasher/opie-dasher_1.2.2.bb (renamed from packages/opie-dasher/opie-dasher_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-datebook-birthdayplugin/opie-datebook-birthdayplugin_1.2.2.bb (renamed from packages/opie-datebook-birthdayplugin/opie-datebook-birthdayplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-datebook-chrisholidayplugin/opie-datebook-chrisholidayplugin_1.2.2.bb (renamed from packages/opie-datebook-chrisholidayplugin/opie-datebook-chrisholidayplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-datebook-nationalholidayplugin/opie-datebook-nationalholidayplugin_1.2.2.bb (renamed from packages/opie-datebook-nationalholidayplugin/opie-datebook-nationalholidayplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-datebook/opie-datebook_1.2.2.bb (renamed from packages/opie-datebook/opie-datebook_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-deco-flat/opie-deco-flat_1.2.2.bb (renamed from packages/opie-deco-flat/opie-deco-flat_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-deco-liquid/opie-deco-liquid_1.2.2.bb (renamed from packages/opie-deco-liquid/opie-deco-liquid_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-deco-polished/opie-deco-polished_1.2.2.bb (renamed from packages/opie-deco-polished/opie-deco-polished_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-doctab/opie-doctab_1.2.2.bb (renamed from packages/opie-doctab/opie-doctab_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-drawpad/opie-drawpad_1.2.2.bb (renamed from packages/opie-drawpad/opie-drawpad_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-dvorak/opie-dvorak_1.2.2.bb (renamed from packages/opie-dvorak/opie-dvorak_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-embeddedkonsole/opie-embeddedkonsole_1.2.2.bb (renamed from packages/opie-embeddedkonsole/opie-embeddedkonsole_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-euroconv/opie-euroconv_1.2.2.bb (renamed from packages/opie-euroconv/opie-euroconv_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-examples-python/opie-examples-python_1.2.2.bb (renamed from packages/opie-examples-python/opie-examples-python_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-examples-python/opie-examples-python_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-examples/opie-examples_1.2.2.bb (renamed from packages/opie-examples/opie-examples_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-eye/opie-eye_1.2.2.bb (renamed from packages/opie-eye/opie-eye_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-fifteen/opie-fifteen_1.2.2.bb (renamed from packages/opie-fifteen/opie-fifteen_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-formatter/opie-formatter_1.2.2.bb (renamed from packages/opie-formatter/opie-formatter_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-freetype/opie-freetype_1.2.2.bb (renamed from packages/opie-freetype/opie-freetype_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-ftp/opie-ftp_1.2.2.bb (renamed from packages/opie-ftp/opie-ftp_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-ftplib/opie-ftplib_1.2.2.bb (renamed from packages/opie-ftplib/opie-ftplib_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-go/opie-go_1.2.2.bb (renamed from packages/opie-go/opie-go_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-gutenbrowser/opie-gutenbrowser_1.2.2.bb (renamed from packages/opie-gutenbrowser/opie-gutenbrowser_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-handwriting/opie-handwriting_1.2.2.bb (renamed from packages/opie-handwriting/opie-handwriting_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-help-en/opie-help-en_1.2.2.bb (renamed from packages/opie-help-en/opie-help-en_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-help-en/opie-help-en_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-helpbrowser/opie-helpbrowser_1.2.2.bb (renamed from packages/opie-helpbrowser/opie-helpbrowser_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-homeapplet/opie-homeapplet_1.2.2.bb (renamed from packages/opie-homeapplet/opie-homeapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-i18n/opie-i18n_1.2.2.bb (renamed from packages/opie-i18n/opie-i18n_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-i18n/opie-i18n_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-i18n/opie-lrelease-native_1.2.2.bb (renamed from packages/opie-i18n/opie-lrelease-native_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-i18n/opie-lrelease-native_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-i18n/opie-lupdate-native_1.2.2.bb (renamed from packages/opie-i18n/opie-lupdate-native_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-i18n/opie-lupdate-native_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-icon-reload/opie-icon-reload_1.2.2.bb (renamed from packages/opie-icon-reload/opie-icon-reload_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-icon-reload/opie-icon-reload_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-irc/opie-irc_1.2.2.bb (renamed from packages/opie-irc/opie-irc_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-irdaapplet/opie-irdaapplet_1.2.2.bb (renamed from packages/opie-irdaapplet/opie-irdaapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-irdaapplet/opie-irdaapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-jumpx/opie-jumpx_1.2.2.bb (renamed from packages/opie-jumpx/opie-jumpx_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-kbill/opie-kbill_1.2.2.bb (renamed from packages/opie-kbill/opie-kbill_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-kcheckers/opie-kcheckers_1.2.2.bb (renamed from packages/opie-kcheckers/opie-kcheckers_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-keyboard/opie-keyboard_1.2.2.bb (renamed from packages/opie-keyboard/opie-keyboard_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-keypebble/opie-keypebble_1.2.2.bb (renamed from packages/opie-keypebble/opie-keypebble_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-keytabs/opie-keytabs_1.2.2.bb (renamed from packages/opie-keytabs/opie-keytabs_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-keytabs/opie-keytabs_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-keyview/opie-keyview_1.2.2.bb (renamed from packages/opie-keyview/opie-keyview_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-kjumpx/opie-kjumpx_1.2.2.bb (renamed from packages/opie-kjumpx/opie-kjumpx_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-kpacman/opie-kpacman_1.2.2.bb (renamed from packages/opie-kpacman/opie-kpacman_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-language/opie-language_1.2.2.bb (renamed from packages/opie-language/opie-language_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-launcher-settings/opie-launcher-settings_1.2.2.bb (renamed from packages/opie-launcher-settings/opie-launcher-settings_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-libqrsync/opie-libqrsync_1.2.2.bb (renamed from packages/opie-libqrsync/opie-libqrsync_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-light-and-power/opie-light-and-power_1.2.2.bb (renamed from packages/opie-light-and-power/opie-light-and-power_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-lockapplet/opie-lockapplet_1.2.2.bb (renamed from packages/opie-lockapplet/opie-lockapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-lockapplet/opie-lockapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-login/opie-login_1.2.2.bb (renamed from packages/opie-login/opie-login_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-logoutapplet/opie-logoutapplet_1.2.2.bb (renamed from packages/opie-logoutapplet/opie-logoutapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mail/opie-mail_1.2.2.bb (renamed from packages/opie-mail/opie-mail_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mailapplet/opie-mailapplet_1.2.2.bb (renamed from packages/opie-mailapplet/opie-mailapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.2.bb (renamed from packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.2.bb (renamed from packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.2.bb (renamed from packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.2.bb (renamed from packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb (renamed from packages/opie-mediaplayer1/opie-mediaplayer1_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_1.2.2.bb (renamed from packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_1.2.2.bb (renamed from packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_1.2.2.bb (renamed from packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_1.2.2.bb (renamed from packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2_1.2.2.bb (renamed from packages/opie-mediaplayer2/opie-mediaplayer2_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb | 3 | ||||
-rw-r--r-- | packages/opie-mediummount/opie-mediummount_1.2.2.bb (renamed from packages/opie-mediummount/opie-mediummount_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-memoryapplet/opie-memoryapplet_1.2.2.bb (renamed from packages/opie-memoryapplet/opie-memoryapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-memoryapplet/opie-memoryapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-mindbreaker/opie-mindbreaker_1.2.2.bb (renamed from packages/opie-mindbreaker/opie-mindbreaker_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-minesweep/opie-minesweep_1.2.2.bb (renamed from packages/opie-minesweep/opie-minesweep_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-multikey/opie-multikey_1.2.2.bb (renamed from packages/opie-multikey/opie-multikey_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-multikeyapplet/opie-multikeyapplet_1.2.2.bb (renamed from packages/opie-multikeyapplet/opie-multikeyapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-multikeyapplet/opie-multikeyapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-networkapplet/opie-networkapplet_1.2.2.bb (renamed from packages/opie-networkapplet/opie-networkapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-networksettings/opie-networksettings_1.2.2.bb (renamed from packages/opie-networksettings/opie-networksettings_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-notesapplet/opie-notesapplet_1.2.2.bb (renamed from packages/opie-notesapplet/opie-notesapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-odict/opie-odict_1.2.2.bb (renamed from packages/opie-odict/opie-odict_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-oxygen/opie-oxygen_1.2.2.bb (renamed from packages/opie-oxygen/opie-oxygen_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-oyatzee/opie-oyatzee_1.2.2.bb (renamed from packages/opie-oyatzee/opie-oyatzee_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-packagemanager/opie-packagemanager_1.2.2.bb (renamed from packages/opie-packagemanager/opie-packagemanager_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-parashoot/opie-parashoot_1.2.2.bb (renamed from packages/opie-parashoot/opie-parashoot_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-pcmciaapplet/opie-pcmciaapplet_1.2.2.bb (renamed from packages/opie-pcmciaapplet/opie-pcmciaapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-pickboard/opie-pickboard_1.2.2.bb (renamed from packages/opie-pickboard/opie-pickboard_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-pics/opie-pics_1.2.2.bb (renamed from packages/opie-pics/opie-pics_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-pics/opie-pics_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-pimconverter/opie-pimconverter_1.2.2.bb (renamed from packages/opie-pimconverter/opie-pimconverter_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-pimconverter/opie-pimconverter_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-powerchord/opie-powerchord_1.2.2.bb (renamed from packages/opie-powerchord/opie-powerchord_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_1.2.2.bb (renamed from packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-qasteroids/opie-qasteroids_1.2.2.bb (renamed from packages/opie-qasteroids/opie-qasteroids_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-qcop/opie-qcop_1.2.2.bb (renamed from packages/opie-qcop/opie-qcop_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-qss/opie-qss_1.2.2.bb (renamed from packages/opie-qss/opie-qss_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-quicklauncher/opie-quicklauncher_1.2.2.bb (renamed from packages/opie-quicklauncher/opie-quicklauncher_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-rdesktop/opie-rdesktop_1.2.2.bb (renamed from packages/opie-rdesktop/opie-rdesktop_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-reader/opie-reader_1.2.2.bb (renamed from packages/opie-reader/opie-reader_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-recorder/opie-recorder_1.2.2.bb (renamed from packages/opie-recorder/opie-recorder_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-remote/opie-remote_1.2.2.bb (renamed from packages/opie-remote/opie-remote_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-restartapplet/opie-restartapplet2_1.2.2.bb (renamed from packages/opie-restartapplet/opie-restartapplet2_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-restartapplet/opie-restartapplet_1.2.2.bb (renamed from packages/opie-restartapplet/opie-restartapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-restartapplet2/opie-restartapplet2_1.2.2.bb (renamed from packages/opie-restartapplet2/opie-restartapplet2_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-rotateapplet/opie-rotateapplet_1.2.2.bb (renamed from packages/opie-rotateapplet/opie-rotateapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-screenshotapplet/opie-screenshotapplet_1.2.2.bb (renamed from packages/opie-screenshotapplet/opie-screenshotapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-screenshotapplet/opie-screenshotapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-search/opie-search_1.2.2.bb (renamed from packages/opie-search/opie-search_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-security/opie-security_1.2.2.bb (renamed from packages/opie-security/opie-security_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-security/opie-security_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-securityplugins/opie-securityplugin-blueping_1.2.2.bb (renamed from packages/opie-securityplugins/opie-securityplugin-blueping_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-securityplugins/opie-securityplugin-dummy_1.2.2.bb (renamed from packages/opie-securityplugins/opie-securityplugin-dummy_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-securityplugins/opie-securityplugin-notice_1.2.2.bb (renamed from packages/opie-securityplugins/opie-securityplugin-notice_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-securityplugins/opie-securityplugin-pin_1.2.2.bb (renamed from packages/opie-securityplugins/opie-securityplugin-pin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-sfcave/opie-sfcave_1.2.2.bb (renamed from packages/opie-sfcave/opie-sfcave_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-sh-snes/opie-sh-snes_1.2.2.bb (renamed from packages/opie-sh-snes/opie-sh-snes_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-sh-snes/opie-sh-snes_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-sh/opie-sh_1.2.2.bb (renamed from packages/opie-sh/opie-sh_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-sheet/opie-sheet_1.2.2.bb (renamed from packages/opie-sheet/opie-sheet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-snake/opie-snake_1.2.2.bb (renamed from packages/opie-snake/opie-snake_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-solitaire/opie-solitaire_1.2.2.bb (renamed from packages/opie-solitaire/opie-solitaire_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-sounds/opie-sounds_1.2.2.bb (renamed from packages/opie-sounds/opie-sounds_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-sounds/opie-sounds_cvs.bb | 2 | ||||
-rw-r--r-- | packages/opie-sshkeys/opie-sshkeys_1.2.2.bb (renamed from packages/opie-sshkeys/opie-sshkeys_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-stumbler/opie-stumbler_1.2.2.bb (renamed from packages/opie-stumbler/opie-stumbler_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-style-flat/opie-style-flat_1.2.2.bb (renamed from packages/opie-style-flat/opie-style-flat_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-style-fresh/opie-style-fresh_1.2.2.bb (renamed from packages/opie-style-fresh/opie-style-fresh_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-style-liquid/opie-style-liquid_1.2.2.bb (renamed from packages/opie-style-liquid/opie-style-liquid_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-style-metal/opie-style-metal_1.2.2.bb (renamed from packages/opie-style-metal/opie-style-metal_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-style-phase/opie-style-phase_1.2.2.bb (renamed from packages/opie-style-phase/opie-style-phase_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-style-web/opie-style-web_1.2.2.bb (renamed from packages/opie-style-web/opie-style-web_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-suspendapplet/opie-suspendapplet_1.2.2.bb (renamed from packages/opie-suspendapplet/opie-suspendapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-symlinker/opie-symlinker_1.2.2.bb (renamed from packages/opie-symlinker/opie-symlinker_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-sysinfo/opie-sysinfo_1.2.2.bb (renamed from packages/opie-sysinfo/opie-sysinfo_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-systemtime/opie-systemtime_1.2.2.bb (renamed from packages/opie-systemtime/opie-systemtime_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-tableviewer/opie-tableviewer_1.2.2.bb (renamed from packages/opie-tableviewer/opie-tableviewer_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-taskbar/opie-taskbar.inc | 11 | ||||
-rw-r--r-- | packages/opie-taskbar/opie-taskbar/c7x0/qpe-suspend-resume | 33 | ||||
-rw-r--r-- | packages/opie-taskbar/opie-taskbar_1.2.2.bb (renamed from packages/opie-taskbar/opie-taskbar_1.2.1.bb) | 3 | ||||
-rw-r--r-- | packages/opie-taskbar/opie-taskbar_cvs.bb | 3 | ||||
-rw-r--r-- | packages/opie-tetrix/opie-tetrix_1.2.2.bb (renamed from packages/opie-tetrix/opie-tetrix_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-textedit/opie-textedit_1.2.2.bb (renamed from packages/opie-textedit/opie-textedit_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-theme/opie-theme_1.2.2.bb (renamed from packages/opie-theme/opie-theme_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-tictac/opie-tictac_1.2.2.bb (renamed from packages/opie-tictac/opie-tictac_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-tinykate/opie-tinykate_1.2.2.bb (renamed from packages/opie-tinykate/opie-tinykate_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-today-addressbookplugin/opie-today-addressbookplugin_1.2.2.bb (renamed from packages/opie-today-addressbookplugin/opie-today-addressbookplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-today-datebookplugin/opie-today-datebookplugin_1.2.2.bb (renamed from packages/opie-today-datebookplugin/opie-today-datebookplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-today-fortuneplugin/opie-today-fortuneplugin_1.2.2.bb (renamed from packages/opie-today-fortuneplugin/opie-today-fortuneplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-today-mailplugin/opie-today-mailplugin_1.2.2.bb (renamed from packages/opie-today-mailplugin/opie-today-mailplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-today-stocktickerplugin/opie-today-stocktickerplugin_1.2.2.bb (renamed from packages/opie-today-stocktickerplugin/opie-today-stocktickerplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-today-todolistplugin/opie-today-todolistplugin_1.2.2.bb (renamed from packages/opie-today-todolistplugin/opie-today-todolistplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-today-weatherplugin/opie-today-weatherplugin_1.2.2.bb (renamed from packages/opie-today-weatherplugin/opie-today-weatherplugin_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-today/opie-today_1.2.2.bb (renamed from packages/opie-today/opie-today_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-todo/opie-todo_1.2.2.bb (renamed from packages/opie-todo/opie-todo_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-tonleiter/opie-tonleiter_1.2.2.bb (renamed from packages/opie-tonleiter/opie-tonleiter_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-unikeyboard/opie-unikeyboard_1.2.2.bb (renamed from packages/opie-unikeyboard/opie-unikeyboard_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-usermanager/opie-usermanager_1.2.2.bb (renamed from packages/opie-usermanager/opie-usermanager_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-vmemo-settings/opie-vmemo-settings_1.2.2.bb (renamed from packages/opie-vmemo-settings/opie-vmemo-settings_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-vmemo/opie-vmemo_1.2.2.bb (renamed from packages/opie-vmemo/opie-vmemo_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-volumeapplet/opie-volumeapplet_1.2.2.bb (renamed from packages/opie-volumeapplet/opie-volumeapplet_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-volumeapplet/opie-volumeapplet_cvs.bb | 1 | ||||
-rw-r--r-- | packages/opie-vtapplet/opie-vtapplet_1.2.2.bb (renamed from packages/opie-vtapplet/opie-vtapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-wellenreiter/opie-wellenreiter_1.2.2.bb (renamed from packages/opie-wellenreiter/opie-wellenreiter_1.2.1.bb) | 1 | ||||
-rw-r--r-- | packages/opie-wirelessapplet/opie-wirelessapplet_1.2.2.bb (renamed from packages/opie-wirelessapplet/opie-wirelessapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-wordgame/opie-wordgame_1.2.2.bb (renamed from packages/opie-wordgame/opie-wordgame_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-write/opie-write_1.2.2.bb (renamed from packages/opie-write/opie-write_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-zkbapplet/opie-zkbapplet_1.2.2.bb (renamed from packages/opie-zkbapplet/opie-zkbapplet_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-zlines/opie-zlines_1.2.2.bb (renamed from packages/opie-zlines/opie-zlines_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-zsafe/opie-zsafe_1.2.2.bb (renamed from packages/opie-zsafe/opie-zsafe_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/opie-zsame/opie-zsame_1.2.2.bb (renamed from packages/opie-zsame/opie-zsame_1.2.1.bb) | 0 | ||||
-rw-r--r-- | packages/perl/perl-5.8.7/config.sh-sh3-linux | 22 | ||||
-rw-r--r-- | packages/psmisc/psmisc-21.8/libintl-link.patch | 29 | ||||
-rw-r--r-- | packages/psmisc/psmisc_21.8.bb | 7 | ||||
-rw-r--r-- | packages/pvrusb2-mci/files/.mtn2git_empty | 0 | ||||
-rwxr-xr-x | packages/pvrusb2-mci/files/firmware.hotplug | 61 | ||||
-rwxr-xr-x | packages/pvrusb2-mci/files/hotplug.functions | 193 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free-4.1.1/configurable-cpu-extensions.patch | 34 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free-4.1.1/cross-compile.patch | 159 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free-4.1.1/fix-mkspecs.patch | 102 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free-4.1.1/fix-resinit-declaration.patch | 16 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free-4.1.1/gcc4_1.patch | 50 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free-4.1.1/no-qmake.patch | 16 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free-4.1.1/no-tools.patch | 16 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free-4.1.2/fix-asm-constraints.patch | 16 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free_4.1.1.bb | 138 | ||||
-rw-r--r-- | packages/qt/qt4-x11-free_4.1.2.bb | 27 | ||||
-rw-r--r-- | packages/qte/qte-2.3.10/suspend-resume-hooks.patch | 28 | ||||
-rw-r--r-- | packages/qte/qte-mt-static_2.3.10.bb | 2 | ||||
-rw-r--r-- | packages/qte/qte-mt_2.3.10.bb | 2 | ||||
-rw-r--r-- | packages/qte/qte_2.3.10.bb | 2 | ||||
-rw-r--r-- | packages/radlib/files/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/radlib/files/Makefile.am.patch | 24 | ||||
-rw-r--r-- | packages/radlib/radlib-common.inc | 3 | ||||
-rw-r--r-- | packages/radlib/radlib-mysql_2.6.2.bb | 2 | ||||
-rw-r--r-- | packages/radlib/radlib_2.6.2.bb | 2 | ||||
-rw-r--r-- | packages/radlib/x | 1 | ||||
-rw-r--r-- | packages/reiser4progs/files/key_large.c.patch | 20 | ||||
-rw-r--r-- | packages/reiser4progs/files/key_short.c.patch | 20 | ||||
-rw-r--r-- | packages/reiser4progs/files/oid40.c.patch | 11 | ||||
-rw-r--r-- | packages/reiser4progs/reiser4progs_1.0.4.bb | 7 | ||||
-rw-r--r-- | packages/samba/samba-essential_3.0.20.bb | 4 | ||||
-rw-r--r-- | packages/scummvm/files/gcc-4.x.x-accept.patch | 11 | ||||
-rw-r--r-- | packages/scummvm/files/sh3-arch-0.9.0+.patch | 18 | ||||
-rw-r--r-- | packages/scummvm/files/sh3-linux-new-arch.patch | 18 | ||||
-rw-r--r-- | packages/scummvm/files/tail-obselete-fix.patch | 11 | ||||
-rw-r--r-- | packages/scummvm/scummvm.inc | 3 | ||||
-rw-r--r-- | packages/scummvm/scummvm_0.6.1b.bb | 6 | ||||
-rw-r--r-- | packages/scummvm/scummvm_0.9.0.bb | 10 | ||||
-rw-r--r-- | packages/suspend-desktop/suspend-desktop_1.0.bb | 8 | ||||
-rw-r--r-- | packages/sword/sword_1.5.8.bb | 16 | ||||
-rw-r--r-- | packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.1_2.3.0.bb | 6 | ||||
-rw-r--r-- | packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.3.0.bb | 6 | ||||
-rw-r--r-- | packages/sylpheed/sylpheed-claws-plugin-rssyl-0.5_2.3.0.bb | 6 | ||||
-rw-r--r-- | packages/sylpheed/sylpheed-claws_2.3.1.bb | 35 | ||||
-rw-r--r-- | packages/wireless-tools/wireless-tools_29-pre10.bb | 42 | ||||
-rw-r--r-- | packages/wlan-ng/wlan-ng-modules-0.2.3/config.in | 6 | ||||
-rw-r--r-- | packages/wlan-ng/wlan-ng-modules-0.2.3/modules-symvers.patch | 75 | ||||
-rw-r--r-- | packages/wlan-ng/wlan-ng-modules.inc | 1 | ||||
-rw-r--r-- | packages/wlan-ng/wlan-ng-modules_0.2.3.bb | 3 | ||||
-rw-r--r-- | packages/wview/files/.mtn2git_empty | 0 | ||||
-rw-r--r-- | packages/wview/files/Makefile.am.patch | 24 | ||||
-rw-r--r-- | packages/wview/wview-common.inc | 5 | ||||
-rw-r--r-- | packages/wview/wview-sim_3.1.3.bb | 2 | ||||
-rw-r--r-- | packages/wview/wview-vpro_3.1.3.bb | 2 | ||||
-rw-r--r-- | packages/wview/wview-wxt510_3.1.3.bb | 2 | ||||
-rw-r--r-- | packages/xinetd/xinetd/service.c.patch | 24 | ||||
-rw-r--r-- | packages/xinetd/xinetd_2.3.13.bb | 3 | ||||
-rw-r--r-- | packages/zile/zile_2.2.15.bb | 11 | ||||
-rw-r--r-- | site/arm-linux | 6 | ||||
-rw-r--r-- | site/armeb-linux | 3 | ||||
-rw-r--r-- | site/armeb-linux-uclibc | 3 | ||||
-rw-r--r-- | site/sh4-linux-uclibc | 5 |
355 files changed, 20684 insertions, 1471 deletions
diff --git a/classes/opie.bbclass b/classes/opie.bbclass index 47f364a644..6430d46d6a 100644 --- a/classes/opie.bbclass +++ b/classes/opie.bbclass @@ -18,7 +18,7 @@ inherit palmtop # Note that when CVS changes to 1.2.2, the dash # should be removed from OPIE_CVS_PV to convert # to the standardised version format -OPIE_CVS_PV = "1.2.1+cvs-${SRCDATE}" +OPIE_CVS_PV = "1.2.2+cvs-${SRCDATE}" DEPENDS_prepend = "${@["libopie2 ", ""][(bb.data.getVar('PN', d, 1) == 'libopie2')]}" diff --git a/conf/distro/angstrom-2006.9.conf b/conf/distro/angstrom-2006.9.conf index 86f3eaa1fb..be7241b0de 100644 --- a/conf/distro/angstrom-2006.9.conf +++ b/conf/distro/angstrom-2006.9.conf @@ -22,8 +22,8 @@ FEED_URIS += " \ # ${MACHINE}##${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/${MACHINE} \ # updates##${ANGSTROM_URI}/releases/${DISTRO_VERSION}/feed/updates" -SRCDATE = "20060518" -SRCDATE_handhelds-pxa-2.6 = "20060622" +SRCDATE = "20060630" +#SRCDATE_handhelds-pxa-2.6 = "20060622" CVS_TARBALL_STASH = "\ http://ewi546.ewi.utwente.nl/mirror/www.openzaurus.org/official/unstable/3.5.4/sources/ \ diff --git a/conf/distro/angstrom.conf b/conf/distro/angstrom.conf index d30fcd3cca..b368405939 100644 --- a/conf/distro/angstrom.conf +++ b/conf/distro/angstrom.conf @@ -23,7 +23,7 @@ ENABLE_BINARY_LOCALE_GENERATION ?= "" #Use the ARM EABI when building for an ARM cpu. We can't use overrides #here because this breaks all places where ":=" is used. #if you want to build using uclibc, specify "-uclibcgnueabi" -TARGET_VENDOR = "${@['','-angstrom'][bb.data.getVar('TARGET_ARCH',d,1)=='arm']}" +TARGET_VENDOR = "-angstrom" TARGET_OS = "linux${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1)=='arm']}" #uclibc (needs gcc 4.1.1 or newer) #TARGET_OS = "linux${@['','-uclibcgnueabi'][bb.data.getVar('TARGET_ARCH',d,1)=='arm']}" diff --git a/conf/distro/jlime-donkey.conf b/conf/distro/jlime-donkey.conf index c351d841d0..a103ddaf7c 100644 --- a/conf/distro/jlime-donkey.conf +++ b/conf/distro/jlime-donkey.conf @@ -6,24 +6,28 @@ DISTRO_NAME = "jlime" DISTRO_VERSION = "donkey" -export FEED_URLS_jlime = "donkey##http://www.jlime.com/downloads/Releases/donkey/${TARGET_ARCH}/feed/" +export FEED_URLS_jlime = "donkey##http://www.jlime.com/downloads/releases/donkey/${TARGET_ARCH}/feed/" #<> #<> We will set CVS DATE when things are known to work. #<> -#SRCDATE = "20060516" +SRCDATE = "20060627" PREFERRED_PROVIDERS = "virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial" -PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross" -PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross" -PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}libc-for-gcc:glibc" +PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc:gcc-cross" +PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}g++:gcc-cross" +PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}libc-for-gcc:glibc" + +#<> We want this so we can crosscompile the kernel using gcc 3.4.3 +#<> Also, select version of modules (and kernel) +#<> +PREFERRED_PROVIDERS += "virtual/${TARGET_PREFIX}gcc-3.4.4:gcc-cross-kernel" PREFERRED_PROVIDER_virtual/kernel = "linux-jlime-${TARGET_ARCH}" -PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive" -PREFERRED_VERSION_kernel-modules = "2.6.16.20" #<> #<>We want kdrive as our default X-Server. #<> -PREFERRED_PROVIDER_xserver = "xserver-kdrive" +PREFERRED_PROVIDER_xserver = "xserver-kdrive" +PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive" #<> #<>Setting Preferred Binutils,gcc,glibc and linux-libc-headers @@ -67,9 +71,9 @@ TARGET_OS = "linux" #<> #<> BOOTSTRAP_EXTRA_RDEPENDS += "pcmciautils ncurses nano wireless-tools console-tools coreutils udev \ - e2tools e2fsprogs" + e2tools e2fsprogs kernel-modules" BOOTSTRAP_EXTRA_DEPENDS += "pcmciautils ncurses nano wireless-tools console-tools coreutils udev \ - e2tools e2fsprogs" + e2tools e2fsprogs kernel-modules" #<> #<>What Opie version should we use. diff --git a/conf/machine/include/handheld-common.conf b/conf/machine/include/handheld-common.conf index f8767d2ddf..9ac43d84e9 100644 --- a/conf/machine/include/handheld-common.conf +++ b/conf/machine/include/handheld-common.conf @@ -18,6 +18,6 @@ input uinput \ # Configuration bits for "generic handheld" BOOTSTRAP_EXTRA_RDEPENDS += "${PCMCIA_MANAGER} apm apmd network-suspend-scripts" -BOOTSTRAP_EXTRA_RRECOMMENDS += "ppp wireless-tools irda-utils openswan wpa-supplicant-nossl lrzsz ppp-dialin ${@linux_module_packages('${HANDHELD_MODULES}', d)}" +BOOTSTRAP_EXTRA_RRECOMMENDS += "ppp wireless-tools irda-utils wpa-supplicant-nossl lrzsz ppp-dialin ${@linux_module_packages('${HANDHELD_MODULES}', d)}" INHERIT += "linux_modules" diff --git a/conf/machine/include/zaurus-clamshell-2.4.conf b/conf/machine/include/zaurus-clamshell-2.4.conf index b2ca8370e7..5c8fce4398 100644 --- a/conf/machine/include/zaurus-clamshell-2.4.conf +++ b/conf/machine/include/zaurus-clamshell-2.4.conf @@ -11,7 +11,7 @@ PREFERRED_VERSION_orinoco-modules = "0.13e" BOOTSTRAP_EXTRA_RDEPENDS += "kernel hostap-modules-cs orinoco-modules-cs sharp-sdmmc-support \ pcmcia-cs apmd apm wireless-tools keymaps irda-utils hostap-utils prism3-firmware prism3-support \ -wpa-supplicant-nossl ppp ppp-dialin openswan" +wpa-supplicant-nossl ppp ppp-dialin " # Misc Modules BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-net-fd kernel-module-registers" diff --git a/conf/machine/include/zaurus-clamshell-2.6.conf b/conf/machine/include/zaurus-clamshell-2.6.conf index 97030e66a7..8c91a7b29a 100644 --- a/conf/machine/include/zaurus-clamshell-2.6.conf +++ b/conf/machine/include/zaurus-clamshell-2.6.conf @@ -8,7 +8,7 @@ PCMCIA_MANAGER ?= "pcmciautils" BOOTSTRAP_EXTRA_RDEPENDS += "kernel udev sysfsutils spectrum-fw \ ${PCMCIA_MANAGER} apm wireless-tools irda-utils udev-utils keymaps hostap-utils prism3-firmware prism3-support \ -ppp ppp-dialin openswan wpa-supplicant-nossl alsa-utils-alsactl alsa-utils-alsamixer module-init-tools alsa-conf zaurusd" +ppp ppp-dialin wpa-supplicant-nossl alsa-utils-alsactl alsa-utils-alsamixer module-init-tools alsa-conf zaurusd" # Ethernet modules BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-pcnet-cs" diff --git a/files/device_table-jlime.txt b/files/device_table-jlime.txt new file mode 100644 index 0000000000..c0a219f006 --- /dev/null +++ b/files/device_table-jlime.txt @@ -0,0 +1,21 @@ +/dev/initctl p 600 0 0 - - - - +/dev/dsp c 644 0 0 14 3 - - - +/dev/apm_bios c 660 0 46 10 134 - - - +/dev/fb0 c 600 0 0 29 0 - - - +/dev/hda b 660 0 6 3 0 - - - +/dev/hda b 660 0 6 3 1 1 1 20 +/dev/kmem c 640 0 15 1 2 - - - +/dev/mem c 640 0 15 1 1 - - - +/dev/null c 666 0 0 1 3 - - - +/dev/ram b 640 0 0 1 0 0 1 4 +/dev/tty c 662 0 5 5 0 - - - +/dev/tty c 666 0 5 4 0 0 1 9 +/dev/ttyS c 640 0 5 4 64 0 1 1 +/dev/ttySA c 640 0 5 204 5 0 1 1 +/dev/zero c 644 0 0 1 5 - - +/dev/mtd c 660 0 6 90 0 0 2 8 +/dev/mtdblock b 640 0 0 31 0 0 1 8 +/dev/console c 662 0 5 5 1 - - +/bin/tinylogin f 4755 0 0 - - - - +/bin/mount f 4755 0 0 - - - - +/bin/umount f 4755 0 0 - - - - diff --git a/packages/angstrom/task-angstrom.bb b/packages/angstrom/task-angstrom.bb new file mode 100644 index 0000000000..c7323314db --- /dev/null +++ b/packages/angstrom/task-angstrom.bb @@ -0,0 +1,112 @@ +DESCRIPTION = "Task packages for the Angstrom distribution" +PR = "r0" +ALLOW_EMPTY = "1" + +PACKAGES = "\ + angstrom-X-base-depends \ + angsgrom-gpe-task-base \ + angstrom-gpe-task-settings \ + angstrom-gpe-task-pim \ + angstrom-gpe-task-apps \ + angstgrom-gpe-task-games \ + angstrom-task-office \ + angstrom-task-printing \ + angstrom-task-sectest" + +RDEPENDS_angstrom-X-base-depends := "\ + diet-x11 \ + virtual/xserver" + +RDEPENDS_angstrom-gpe-task-base := "\ + matchbox \ + xcursor-transparent-theme \ + rxvt-unicode \ + matchbox-themes-gtk \ + xst \ + xhost \ + xrdb \ + gpe-soundserver \ + ttf-dejavu \ + gpe-dm \ + gpe-login \ + gpe-session-scripts \ + gpe-icons \ + gpe-confd \ + gpe-autostarter \ + libgtkstylus \ + libgtkinput \ + suspend-desktop \ + teleport \ + xauth \ + gdk-pixbuf-loader-png \ + gdk-pixbuf-loader-xpm \ + gdk-pixbuf-loader-jpeg \ + pango-module-basic-x \ + pango-module-basic-fc" + +RDEPENDS_angstrom-gpe-task-pim := "\ + gpe-timesheet \ + gpe-todo \ + gpe-calendar \ + gpe-contacts \ + gpesyncd" + +RDEPENDS_angstrom-gpe-task-settings := "\ + matchbox-panel-manager \ + gpe-su \ + gpe-conf \ + gpe-package \ + gpe-shield \ + gpe-taskmanager \ + minilite \ + minimix \ + xmonobut" + +RDEPENDS_angstrom-gpe-task-apps := "\ + gpe-edit \ + gpe-gallery \ + gpe-calculator \ + gpe-clock \ + gpe-plucker \ + gpe-terminal \ + gpe-watch \ + gpe-what \ + matchbox-panel-hacks \ + gpe-aerial \ + gpe-soundbite \ + rosetta \ + gpe-screenshot \ + gpe-windowlist" + +RDEPENDS_angstrom-gpe-task-games := "\ + gpe-go \ + gpe-lights \ + gpe-othello \ + gpe-tetris \ + gsoko \ + xdemineur" + +RDEPENDS_angstrom-task-office := "\ + gnumeric \ + abiword \ + imposter \ + evince \ + gqview" + +RDEPENDS_angstrom-task-printing := "\ + cups \ + gnome-cups-manager" + +RDEPENDS_angstrom-task-sectest := "\ + nmap \ + ettercap \ + stunnel \ + curl \ + dsniff \ + prismstumbler \ + tcpdump \ + kismet \ + hydra \ + thcrut \ + driftnet \ + miniclipboard" diff --git a/packages/autoconf/autoconf-2.59/sizeof_types.patch b/packages/autoconf/autoconf-2.59/sizeof_types.patch index 9a6e47453e..0f1e0d1fee 100644 --- a/packages/autoconf/autoconf-2.59/sizeof_types.patch +++ b/packages/autoconf/autoconf-2.59/sizeof_types.patch @@ -36,7 +36,7 @@ +[ +if test "$AS_TR_SH([ac_cv_type_$1])" = yes; then +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([AC_INCLUDES_DEFAULT([$3])], -+ [static const $1 x[[256]];])], ++ [extern void dummy($1); static const $1 x[[256]]; dummy(x);])], + [ + AS_TR_SH([ac_cv_sizeof_$1])=`$SIZE conftest.$ac_objext | tail -n 1 | $AWK '{print [$]3/256}'` + ], diff --git a/packages/autoconf/autoconf-native_2.59.bb b/packages/autoconf/autoconf-native_2.59.bb index 21a2002453..aac4b67ada 100644 --- a/packages/autoconf/autoconf-native_2.59.bb +++ b/packages/autoconf/autoconf-native_2.59.bb @@ -2,7 +2,7 @@ SECTION = "devel" include autoconf_${PV}.bb DEPENDS = "m4-native gnu-config-native" RDEPENDS_${PN} = "m4-native gnu-config-native" -RRECOMMENDS_${PN} = "automake-native" +RRECOMMENDS_${PN} = "" S = "${WORKDIR}/autoconf-${PV}" FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/autoconf-${PV}" diff --git a/packages/autoconf/autoconf_2.59.bb b/packages/autoconf/autoconf_2.59.bb index 3cc962da01..505b2bec9e 100644 --- a/packages/autoconf/autoconf_2.59.bb +++ b/packages/autoconf/autoconf_2.59.bb @@ -6,7 +6,7 @@ SECTION = "devel" DEPENDS += "m4-native" RDEPENDS_${PN} = "m4 gnu-config" RRECOMMENDS_${PN} = "automake" -PR = "r4" +PR = "r5" SRC_URI = "${GNU_MIRROR}/autoconf/autoconf-${PV}.tar.bz2 \ file://program_prefix.patch;patch=1 \ diff --git a/packages/ctorrent/ctorrent.inc b/packages/ctorrent/ctorrent.inc index 67f270c0ba..a6a2f8bc35 100644 --- a/packages/ctorrent/ctorrent.inc +++ b/packages/ctorrent/ctorrent.inc @@ -1,5 +1,6 @@ DESCRIPTION = "CTorrent is a console BitTorrent client written in the C \ -programming language." +programming language. This version is with the extensions from \ +http://www.rahul.net/dholmes/ctorrent/ (dnh2 + vfat patch)" DEPENDS = "openssl" LICENSE = "GPL" SECTION = "network" diff --git a/packages/ctorrent/ctorrent_1.3.4.bb b/packages/ctorrent/ctorrent_1.3.4.bb index d2b02e8748..561bd0d432 100644 --- a/packages/ctorrent/ctorrent_1.3.4.bb +++ b/packages/ctorrent/ctorrent_1.3.4.bb @@ -1,4 +1,4 @@ include ctorrent.inc -PR = "r5" +PR = "r6" SRC_URI += "file://extended_ctorrent.diff;patch=1" diff --git a/packages/ctorrent/files/extended_ctorrent.diff b/packages/ctorrent/files/extended_ctorrent.diff index d35c434d07..ca016fe037 100644 --- a/packages/ctorrent/files/extended_ctorrent.diff +++ b/packages/ctorrent/files/extended_ctorrent.diff @@ -1,17 +1,1531 @@ -Only in ctorrent-1.3.4: README-DNH.TXT -diff -u ctorrent-1.3.4.orig/btconfig.cpp ctorrent-1.3.4/btconfig.cpp ---- ctorrent-1.3.4.orig/btconfig.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btconfig.cpp 2005-08-11 23:45:29.424694440 +0200 -@@ -1,6 +1,7 @@ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/aclocal.m4 ctorrent-1.3.4/aclocal.m4 +--- ctorrent-1.3.4.sav/aclocal.m4 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/aclocal.m4 2006-06-28 19:30:02.000000000 +0200 +@@ -1,6 +1,6 @@ +-# generated automatically by aclocal 1.7.6 -*- Autoconf -*- ++# generated automatically by aclocal 1.9.1 -*- Autoconf -*- + +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 + # Free Software Foundation, Inc. + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -11,132 +11,9 @@ + # even the implied warranty of MERCHANTABILITY or FITNESS FOR A + # PARTICULAR PURPOSE. + +-# Do all the work for Automake. -*- Autoconf -*- +- +-# This macro actually does too much some checks are only needed if +-# your package does certain things. But this isn't really a big deal. +- +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, 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. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 10 +- +-AC_PREREQ([2.54]) +- +-# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +-# the ones we care about. +-m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +- +-# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +-# AM_INIT_AUTOMAKE([OPTIONS]) +-# ----------------------------------------------- +-# The call with PACKAGE and VERSION arguments is the old style +-# call (pre autoconf-2.50), which is being phased out. PACKAGE +-# and VERSION should now be passed to AC_INIT and removed from +-# the call to AM_INIT_AUTOMAKE. +-# We support both call styles for the transition. After +-# the next Automake release, Autoconf can make the AC_INIT +-# arguments mandatory, and then we can depend on a new Autoconf +-# release and drop the old call support. +-AC_DEFUN([AM_INIT_AUTOMAKE], +-[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +- AC_REQUIRE([AC_PROG_INSTALL])dnl +-# test to see if srcdir already configured +-if test "`cd $srcdir && pwd`" != "`pwd`" && +- test -f $srcdir/config.status; then +- AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +-fi +- +-# test whether we have cygpath +-if test -z "$CYGPATH_W"; then +- if (cygpath --version) >/dev/null 2>/dev/null; then +- CYGPATH_W='cygpath -w' +- else +- CYGPATH_W=echo +- fi +-fi +-AC_SUBST([CYGPATH_W]) +- +-# Define the identity of the package. +-dnl Distinguish between old-style and new-style calls. +-m4_ifval([$2], +-[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +- AC_SUBST([PACKAGE], [$1])dnl +- AC_SUBST([VERSION], [$2])], +-[_AM_SET_OPTIONS([$1])dnl +- AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl +- AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl +- +-_AM_IF_OPTION([no-define],, +-[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) +- AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +- +-# Some tools Automake needs. +-AC_REQUIRE([AM_SANITY_CHECK])dnl +-AC_REQUIRE([AC_ARG_PROGRAM])dnl +-AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +-AM_MISSING_PROG(AUTOCONF, autoconf) +-AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +-AM_MISSING_PROG(AUTOHEADER, autoheader) +-AM_MISSING_PROG(MAKEINFO, makeinfo) +-AM_MISSING_PROG(AMTAR, tar) +-AM_PROG_INSTALL_SH +-AM_PROG_INSTALL_STRIP +-# We need awk for the "check" target. The system "awk" is bad on +-# some platforms. +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([AC_PROG_MAKE_SET])dnl +-AC_REQUIRE([AM_SET_LEADING_DOT])dnl +- +-_AM_IF_OPTION([no-dependencies],, +-[AC_PROVIDE_IFELSE([AC_PROG_CC], +- [_AM_DEPENDENCIES(CC)], +- [define([AC_PROG_CC], +- defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +-AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [_AM_DEPENDENCIES(CXX)], +- [define([AC_PROG_CXX], +- defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +-]) +-]) +- +- +-# When config.status generates a header, we must update the stamp-h file. +-# This file resides in the same directory as the config header +-# that is generated. The stamp files are numbered to have different names. +- +-# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +-# loop where config.status creates the headers, so we can generate +-# our stamp files there. +-AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +-[# Compute $1's index in $config_headers. +-_am_stamp_count=1 +-for _am_header in $config_headers :; do +- case $_am_header in +- $1 | $1:* ) +- break ;; +- * ) +- _am_stamp_count=`expr $_am_stamp_count + 1` ;; +- esac +-done +-echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) +- +-# Copyright 2002 Free Software Foundation, Inc. ++# -*- Autoconf -*- ++# Copyright (C) 2002, 2003 Free Software Foundation, Inc. ++# Generated from amversion.in; do not edit by hand. + + # 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 +@@ -156,18 +33,18 @@ + # ---------------------------- + # Automake X.Y traces this macro to ensure aclocal.m4 has been + # generated from the m4 files accompanying Automake X.Y. +-AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) ++AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) + + # AM_SET_CURRENT_AUTOMAKE_VERSION + # ------------------------------- + # Call AM_AUTOMAKE_VERSION so it can be traced. + # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. + AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +- [AM_AUTOMAKE_VERSION([1.7.6])]) ++ [AM_AUTOMAKE_VERSION([1.9.1])]) + +-# Helper functions for option handling. -*- Autoconf -*- ++# AM_AUX_DIR_EXPAND + +-# Copyright 2001, 2002 Free Software Foundation, Inc. ++# Copyright (C) 2001, 2003 Free Software Foundation, 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 +@@ -184,36 +61,54 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + +-# serial 2 +- +-# _AM_MANGLE_OPTION(NAME) +-# ----------------------- +-AC_DEFUN([_AM_MANGLE_OPTION], +-[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +- +-# _AM_SET_OPTION(NAME) +-# ------------------------------ +-# Set option NAME. Presently that only means defining a flag for this option. +-AC_DEFUN([_AM_SET_OPTION], +-[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) +- +-# _AM_SET_OPTIONS(OPTIONS) +-# ---------------------------------- +-# OPTIONS is a space-separated list of Automake options. +-AC_DEFUN([_AM_SET_OPTIONS], +-[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +- +-# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +-# ------------------------------------------- +-# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +-AC_DEFUN([_AM_IF_OPTION], +-[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +- ++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets ++# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to ++# `$srcdir', `$srcdir/..', or `$srcdir/../..'. + # +-# Check to make sure that the build environment is sane. ++# Of course, Automake must honor this variable whenever it calls a ++# tool from the auxiliary directory. The problem is that $srcdir (and ++# therefore $ac_aux_dir as well) can be either absolute or relative, ++# depending on how configure is run. This is pretty annoying, since ++# it makes $ac_aux_dir quite unusable in subdirectories: in the top ++# source directory, any form will work fine, but in subdirectories a ++# relative path needs to be adjusted first. ++# ++# $ac_aux_dir/missing ++# fails when called from a subdirectory if $ac_aux_dir is relative ++# $top_srcdir/$ac_aux_dir/missing ++# fails if $ac_aux_dir is absolute, ++# fails when called from a subdirectory in a VPATH build with ++# a relative $ac_aux_dir ++# ++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir ++# are both prefixed by $srcdir. In an in-source build this is usually ++# harmless because $srcdir is `.', but things will broke when you ++# start a VPATH build or use an absolute $srcdir. ++# ++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, ++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: ++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` ++# and then we would define $MISSING as ++# MISSING="\${SHELL} $am_aux_dir/missing" ++# This will work as long as MISSING is not called from configure, because ++# unfortunately $(top_srcdir) has no meaning in configure. ++# However there are other variables, like CC, which are often used in ++# configure, and could therefore not use this "fixed" $ac_aux_dir. + # ++# Another solution, used here, is to always expand $ac_aux_dir to an ++# absolute PATH. The drawback is that using absolute paths prevent a ++# configured tree to be moved without reconfiguration. ++ ++AC_DEFUN([AM_AUX_DIR_EXPAND], ++[dnl Rely on autoconf to set up CDPATH properly. ++AC_PREREQ([2.50])dnl ++# expand $ac_aux_dir to an absolute path ++am_aux_dir=`cd $ac_aux_dir && pwd` ++]) + +-# Copyright 1996, 1997, 2000, 2001 Free Software Foundation, Inc. ++# AM_CONDITIONAL -*- Autoconf -*- ++ ++# Copyright (C) 1997, 2000, 2001, 2003, 2004 Free Software Foundation, 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 +@@ -230,53 +125,34 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + +-# serial 3 +- +-# AM_SANITY_CHECK +-# --------------- +-AC_DEFUN([AM_SANITY_CHECK], +-[AC_MSG_CHECKING([whether build environment is sane]) +-# Just in case +-sleep 1 +-echo timestamp > conftest.file +-# Do `set' in a subshell so we don't clobber the current shell's +-# arguments. Must try -L first in case configure is actually a +-# symlink; some systems play weird games with the mod time of symlinks +-# (eg FreeBSD returns the mod time of the symlink's containing +-# directory). +-if ( +- set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` +- if test "$[*]" = "X"; then +- # -L didn't work. +- set X `ls -t $srcdir/configure conftest.file` +- fi +- rm -f conftest.file +- if test "$[*]" != "X $srcdir/configure conftest.file" \ +- && test "$[*]" != "X conftest.file $srcdir/configure"; then +- +- # If neither matched, then we have a broken ls. This can happen +- # if, for instance, CONFIG_SHELL is bash and it inherits a +- # broken ls alias from the environment. This has actually +- # happened. Such a system could not be considered "sane". +- AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +-alias in your environment]) +- fi ++# serial 6 + +- test "$[2]" = conftest.file +- ) +-then +- # Ok. +- : ++# AM_CONDITIONAL(NAME, SHELL-CONDITION) ++# ------------------------------------- ++# Define a conditional. ++AC_DEFUN([AM_CONDITIONAL], ++[AC_PREREQ(2.52)dnl ++ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], ++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl ++AC_SUBST([$1_TRUE]) ++AC_SUBST([$1_FALSE]) ++if $2; then ++ $1_TRUE= ++ $1_FALSE='#' + else +- AC_MSG_ERROR([newly created file is older than distributed files! +-Check your system clock]) ++ $1_TRUE='#' ++ $1_FALSE= + fi +-AC_MSG_RESULT(yes)]) +- +-# -*- Autoconf -*- ++AC_CONFIG_COMMANDS_PRE( ++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then ++ AC_MSG_ERROR([[conditional "$1" was never defined. ++Usually this means the macro was only invoked conditionally.]]) ++fi])]) + ++# serial 7 -*- Autoconf -*- + +-# Copyright 1997, 1999, 2000, 2001 Free Software Foundation, Inc. ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 ++# Free Software Foundation, 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 +@@ -293,220 +169,12 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + +-# serial 3 + +-# AM_MISSING_PROG(NAME, PROGRAM) +-# ------------------------------ +-AC_DEFUN([AM_MISSING_PROG], +-[AC_REQUIRE([AM_MISSING_HAS_RUN]) +-$1=${$1-"${am_missing_run}$2"} +-AC_SUBST($1)]) +- +- +-# AM_MISSING_HAS_RUN +-# ------------------ +-# Define MISSING if not defined so far and test if it supports --run. +-# If it does, set am_missing_run to use it, otherwise, to nothing. +-AC_DEFUN([AM_MISSING_HAS_RUN], +-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +-# Use eval to expand $SHELL +-if eval "$MISSING --run true"; then +- am_missing_run="$MISSING --run " +-else +- am_missing_run= +- AC_MSG_WARN([`missing' script is too old or missing]) +-fi +-]) +- +-# AM_AUX_DIR_EXPAND +- +-# Copyright 2001 Free Software Foundation, 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. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +-# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +-# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +-# +-# Of course, Automake must honor this variable whenever it calls a +-# tool from the auxiliary directory. The problem is that $srcdir (and +-# therefore $ac_aux_dir as well) can be either absolute or relative, +-# depending on how configure is run. This is pretty annoying, since +-# it makes $ac_aux_dir quite unusable in subdirectories: in the top +-# source directory, any form will work fine, but in subdirectories a +-# relative path needs to be adjusted first. +-# +-# $ac_aux_dir/missing +-# fails when called from a subdirectory if $ac_aux_dir is relative +-# $top_srcdir/$ac_aux_dir/missing +-# fails if $ac_aux_dir is absolute, +-# fails when called from a subdirectory in a VPATH build with +-# a relative $ac_aux_dir +-# +-# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +-# are both prefixed by $srcdir. In an in-source build this is usually +-# harmless because $srcdir is `.', but things will broke when you +-# start a VPATH build or use an absolute $srcdir. +-# +-# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +-# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +-# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +-# and then we would define $MISSING as +-# MISSING="\${SHELL} $am_aux_dir/missing" +-# This will work as long as MISSING is not called from configure, because +-# unfortunately $(top_srcdir) has no meaning in configure. +-# However there are other variables, like CC, which are often used in +-# configure, and could therefore not use this "fixed" $ac_aux_dir. +-# +-# Another solution, used here, is to always expand $ac_aux_dir to an +-# absolute PATH. The drawback is that using absolute paths prevent a +-# configured tree to be moved without reconfiguration. +- +-# Rely on autoconf to set up CDPATH properly. +-AC_PREREQ([2.50]) +- +-AC_DEFUN([AM_AUX_DIR_EXPAND], [ +-# expand $ac_aux_dir to an absolute path +-am_aux_dir=`cd $ac_aux_dir && pwd` +-]) +- +-# AM_PROG_INSTALL_SH +-# ------------------ +-# Define $install_sh. +- +-# Copyright 2001 Free Software Foundation, 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. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-AC_DEFUN([AM_PROG_INSTALL_SH], +-[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +-install_sh=${install_sh-"$am_aux_dir/install-sh"} +-AC_SUBST(install_sh)]) +- +-# AM_PROG_INSTALL_STRIP +- +-# Copyright 2001 Free Software Foundation, 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. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# One issue with vendor `install' (even GNU) is that you can't +-# specify the program used to strip binaries. This is especially +-# annoying in cross-compiling environments, where the build's strip +-# is unlikely to handle the host's binaries. +-# Fortunately install-sh will honor a STRIPPROG variable, so we +-# always use install-sh in `make install-strip', and initialize +-# STRIPPROG with the value of the STRIP variable (set by the user). +-AC_DEFUN([AM_PROG_INSTALL_STRIP], +-[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +-# Installed binaries are usually stripped using `strip' when the user +-# run `make install-strip'. However `strip' might not be the right +-# tool to use in cross-compilation environments, therefore Automake +-# will honor the `STRIP' environment variable to overrule this program. +-dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +-if test "$cross_compiling" != no; then +- AC_CHECK_TOOL([STRIP], [strip], :) +-fi +-INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" +-AC_SUBST([INSTALL_STRIP_PROGRAM])]) +- +-# -*- Autoconf -*- +-# Copyright (C) 2003 Free Software Foundation, 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. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +-# serial 1 +- +-# Check whether the underlying file-system supports filenames +-# with a leading dot. For instance MS-DOS doesn't. +-AC_DEFUN([AM_SET_LEADING_DOT], +-[rm -rf .tst 2>/dev/null +-mkdir .tst 2>/dev/null +-if test -d .tst; then +- am__leading_dot=. +-else +- am__leading_dot=_ +-fi +-rmdir .tst 2>/dev/null +-AC_SUBST([am__leading_dot])]) +- +-# serial 5 -*- Autoconf -*- +- +-# Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, 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. +- +-# You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +-# 02111-1307, USA. +- +- +-# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +-# written in clear, in which case automake, when reading aclocal.m4, +-# will think it sees a *use*, and therefore will trigger all it's +-# C support machinery. Also note that it means that autoscan, seeing +-# CC etc. in the Makefile, will ask for an AC_PROG_CC use... ++# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be ++# written in clear, in which case automake, when reading aclocal.m4, ++# will think it sees a *use*, and therefore will trigger all it's ++# C support machinery. Also note that it means that autoscan, seeing ++# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + + +@@ -568,7 +236,9 @@ + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c +- : > sub/conftst$i.h ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +@@ -596,9 +266,14 @@ + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings +- # (even with -Werror). So we grep stderr for any message +- # that says an option was ignored. +- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi +@@ -632,8 +307,8 @@ + # ------------ + AC_DEFUN([AM_DEP_TRACK], + [AC_ARG_ENABLE(dependency-tracking, +-[ --disable-dependency-tracking Speeds up one-time builds +- --enable-dependency-tracking Do not reject slow dependency extractors]) ++[ --disable-dependency-tracking speeds up one-time build ++ --enable-dependency-tracking do not reject slow dependency extractors]) + if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +@@ -644,7 +319,8 @@ + + # Generate code to set up dependency tracking. -*- Autoconf -*- + +-# Copyright 1999, 2000, 2001, 2002 Free Software Foundation, Inc. ++# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 ++# Free Software Foundation, 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 +@@ -680,27 +356,21 @@ + else + continue + fi +- grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue +@@ -726,9 +396,13 @@ + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) + ]) + +-# Check to see how 'make' treats includes. -*- Autoconf -*- ++# Do all the work for Automake. -*- Autoconf -*- + +-# Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. ++# This macro actually does too much some checks are only needed if ++# your package does certain things. But this isn't really a big deal. ++ ++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 ++# Free Software Foundation, 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 +@@ -745,43 +419,223 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + +-# serial 2 ++# serial 11 + +-# AM_MAKE_INCLUDE() +-# ----------------- +-# Check to see how make treats includes. +-AC_DEFUN([AM_MAKE_INCLUDE], +-[am_make=${MAKE-make} +-cat > confinc << 'END' +-am__doit: +- @echo done +-.PHONY: am__doit +-END +-# If we don't find an include directive, just comment out the code. +-AC_MSG_CHECKING([for style of include used by $am_make]) +-am__include="#" +-am__quote= +-_am_result=none +-# First try GNU make style include. +-echo "include confinc" > confmf +-# We grep out `Entering directory' and `Leaving directory' +-# messages which can occur if `w' ends up in MAKEFLAGS. +-# In particular we don't look at `^make:' because GNU make might +-# be invoked under some other name (usually "gmake"), in which +-# case it prints its new name instead of `make'. +-if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then +- am__include=include +- am__quote= +- _am_result=GNU +-fi +-# Now try BSD make style include. +-if test "$am__include" = "#"; then +- echo '.include "confinc"' > confmf +- if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then +- am__include=.include +- am__quote="\"" +- _am_result=BSD +- fi ++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) ++# AM_INIT_AUTOMAKE([OPTIONS]) ++# ----------------------------------------------- ++# The call with PACKAGE and VERSION arguments is the old style ++# call (pre autoconf-2.50), which is being phased out. PACKAGE ++# and VERSION should now be passed to AC_INIT and removed from ++# the call to AM_INIT_AUTOMAKE. ++# We support both call styles for the transition. After ++# the next Automake release, Autoconf can make the AC_INIT ++# arguments mandatory, and then we can depend on a new Autoconf ++# release and drop the old call support. ++AC_DEFUN([AM_INIT_AUTOMAKE], ++[AC_PREREQ([2.58])dnl ++dnl Autoconf wants to disallow AM_ names. We explicitly allow ++dnl the ones we care about. ++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl ++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl ++AC_REQUIRE([AC_PROG_INSTALL])dnl ++# test to see if srcdir already configured ++if test "`cd $srcdir && pwd`" != "`pwd`" && ++ test -f $srcdir/config.status; then ++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) ++fi ++ ++# test whether we have cygpath ++if test -z "$CYGPATH_W"; then ++ if (cygpath --version) >/dev/null 2>/dev/null; then ++ CYGPATH_W='cygpath -w' ++ else ++ CYGPATH_W=echo ++ fi ++fi ++AC_SUBST([CYGPATH_W]) ++ ++# Define the identity of the package. ++dnl Distinguish between old-style and new-style calls. ++m4_ifval([$2], ++[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl ++ AC_SUBST([PACKAGE], [$1])dnl ++ AC_SUBST([VERSION], [$2])], ++[_AM_SET_OPTIONS([$1])dnl ++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl ++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl ++ ++_AM_IF_OPTION([no-define],, ++[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) ++ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl ++ ++# Some tools Automake needs. ++AC_REQUIRE([AM_SANITY_CHECK])dnl ++AC_REQUIRE([AC_ARG_PROGRAM])dnl ++AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) ++AM_MISSING_PROG(AUTOCONF, autoconf) ++AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) ++AM_MISSING_PROG(AUTOHEADER, autoheader) ++AM_MISSING_PROG(MAKEINFO, makeinfo) ++AM_PROG_INSTALL_SH ++AM_PROG_INSTALL_STRIP ++AC_REQUIRE([AM_PROG_MKDIR_P])dnl ++# We need awk for the "check" target. The system "awk" is bad on ++# some platforms. ++AC_REQUIRE([AC_PROG_AWK])dnl ++AC_REQUIRE([AC_PROG_MAKE_SET])dnl ++AC_REQUIRE([AM_SET_LEADING_DOT])dnl ++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], ++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], ++ [_AM_PROG_TAR([v7])])]) ++_AM_IF_OPTION([no-dependencies],, ++[AC_PROVIDE_IFELSE([AC_PROG_CC], ++ [_AM_DEPENDENCIES(CC)], ++ [define([AC_PROG_CC], ++ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl ++AC_PROVIDE_IFELSE([AC_PROG_CXX], ++ [_AM_DEPENDENCIES(CXX)], ++ [define([AC_PROG_CXX], ++ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl ++]) ++]) ++ ++ ++# When config.status generates a header, we must update the stamp-h file. ++# This file resides in the same directory as the config header ++# that is generated. The stamp files are numbered to have different names. ++ ++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the ++# loop where config.status creates the headers, so we can generate ++# our stamp files there. ++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], ++[# Compute $1's index in $config_headers. ++_am_stamp_count=1 ++for _am_header in $config_headers :; do ++ case $_am_header in ++ $1 | $1:* ) ++ break ;; ++ * ) ++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; ++ esac ++done ++echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) ++ ++# AM_PROG_INSTALL_SH ++# ------------------ ++# Define $install_sh. ++ ++# Copyright (C) 2001, 2003 Free Software Foundation, 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. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++# 02111-1307, USA. ++ ++AC_DEFUN([AM_PROG_INSTALL_SH], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++install_sh=${install_sh-"$am_aux_dir/install-sh"} ++AC_SUBST(install_sh)]) ++ ++# -*- Autoconf -*- ++# Copyright (C) 2003 Free Software Foundation, 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. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++# 02111-1307, USA. ++ ++# serial 1 ++ ++# Check whether the underlying file-system supports filenames ++# with a leading dot. For instance MS-DOS doesn't. ++AC_DEFUN([AM_SET_LEADING_DOT], ++[rm -rf .tst 2>/dev/null ++mkdir .tst 2>/dev/null ++if test -d .tst; then ++ am__leading_dot=. ++else ++ am__leading_dot=_ ++fi ++rmdir .tst 2>/dev/null ++AC_SUBST([am__leading_dot])]) ++ ++# Check to see how 'make' treats includes. -*- Autoconf -*- ++ ++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, 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. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++# 02111-1307, USA. ++ ++# serial 2 ++ ++# AM_MAKE_INCLUDE() ++# ----------------- ++# Check to see how make treats includes. ++AC_DEFUN([AM_MAKE_INCLUDE], ++[am_make=${MAKE-make} ++cat > confinc << 'END' ++am__doit: ++ @echo done ++.PHONY: am__doit ++END ++# If we don't find an include directive, just comment out the code. ++AC_MSG_CHECKING([for style of include used by $am_make]) ++am__include="#" ++am__quote= ++_am_result=none ++# First try GNU make style include. ++echo "include confinc" > confmf ++# We grep out `Entering directory' and `Leaving directory' ++# messages which can occur if `w' ends up in MAKEFLAGS. ++# In particular we don't look at `^make:' because GNU make might ++# be invoked under some other name (usually "gmake"), in which ++# case it prints its new name instead of `make'. ++if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then ++ am__include=include ++ am__quote= ++ _am_result=GNU ++fi ++# Now try BSD make style include. ++if test "$am__include" = "#"; then ++ echo '.include "confinc"' > confmf ++ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then ++ am__include=.include ++ am__quote="\"" ++ _am_result=BSD ++ fi + fi + AC_SUBST([am__include]) + AC_SUBST([am__quote]) +@@ -789,9 +643,10 @@ + rm -f confinc confmf + ]) + +-# AM_CONDITIONAL -*- Autoconf -*- ++# -*- Autoconf -*- ++ + +-# Copyright 1997, 2000, 2001 Free Software Foundation, Inc. ++# Copyright (C) 1997, 1999, 2000, 2001, 2003 Free Software Foundation, 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 +@@ -808,28 +663,358 @@ + # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + # 02111-1307, USA. + +-# serial 5 ++# serial 3 + +-AC_PREREQ(2.52) ++# AM_MISSING_PROG(NAME, PROGRAM) ++# ------------------------------ ++AC_DEFUN([AM_MISSING_PROG], ++[AC_REQUIRE([AM_MISSING_HAS_RUN]) ++$1=${$1-"${am_missing_run}$2"} ++AC_SUBST($1)]) + +-# AM_CONDITIONAL(NAME, SHELL-CONDITION) +-# ------------------------------------- +-# Define a conditional. +-AC_DEFUN([AM_CONDITIONAL], +-[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], +- [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +-AC_SUBST([$1_TRUE]) +-AC_SUBST([$1_FALSE]) +-if $2; then +- $1_TRUE= +- $1_FALSE='#' ++ ++# AM_MISSING_HAS_RUN ++# ------------------ ++# Define MISSING if not defined so far and test if it supports --run. ++# If it does, set am_missing_run to use it, otherwise, to nothing. ++AC_DEFUN([AM_MISSING_HAS_RUN], ++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl ++test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" ++# Use eval to expand $SHELL ++if eval "$MISSING --run true"; then ++ am_missing_run="$MISSING --run " + else +- $1_TRUE='#' +- $1_FALSE= ++ am_missing_run= ++ AC_MSG_WARN([`missing' script is too old or missing]) + fi +-AC_CONFIG_COMMANDS_PRE( +-[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then +- AC_MSG_ERROR([conditional "$1" was never defined. +-Usually this means the macro was only invoked conditionally.]) +-fi])]) ++]) ++ ++# AM_PROG_MKDIR_P ++# --------------- ++# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. ++ ++# Copyright (C) 2003, 2004 Free Software Foundation, 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. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++# 02111-1307, USA. ++ ++# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories ++# created by `make install' are always world readable, even if the ++# installer happens to have an overly restrictive umask (e.g. 077). ++# This was a mistake. There are at least two reasons why we must not ++# use `-m 0755': ++# - it causes special bits like SGID to be ignored, ++# - it may be too restrictive (some setups expect 775 directories). ++# ++# Do not use -m 0755 and let people choose whatever they expect by ++# setting umask. ++# ++# We cannot accept any implementation of `mkdir' that recognizes `-p'. ++# Some implementations (such as Solaris 8's) are not thread-safe: if a ++# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' ++# concurrently, both version can detect that a/ is missing, but only ++# one can create it and the other will error out. Consequently we ++# restrict ourselves to GNU make (using the --version option ensures ++# this.) ++AC_DEFUN([AM_PROG_MKDIR_P], ++[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then ++ # We used to keeping the `.' as first argument, in order to ++ # allow $(mkdir_p) to be used without argument. As in ++ # $(mkdir_p) $(somedir) ++ # where $(somedir) is conditionally defined. However this is wrong ++ # for two reasons: ++ # 1. if the package is installed by a user who cannot write `.' ++ # make install will fail, ++ # 2. the above comment should most certainly read ++ # $(mkdir_p) $(DESTDIR)$(somedir) ++ # so it does not work when $(somedir) is undefined and ++ # $(DESTDIR) is not. ++ # To support the latter case, we have to write ++ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), ++ # so the `.' trick is pointless. ++ mkdir_p='mkdir -p --' ++else ++ # On NextStep and OpenStep, the `mkdir' command does not ++ # recognize any option. It will interpret all options as ++ # directories to create, and then abort because `.' already ++ # exists. ++ for d in ./-p ./--version; ++ do ++ test -d $d && rmdir $d ++ done ++ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. ++ if test -f "$ac_aux_dir/mkinstalldirs"; then ++ mkdir_p='$(mkinstalldirs)' ++ else ++ mkdir_p='$(install_sh) -d' ++ fi ++fi ++AC_SUBST([mkdir_p])]) ++ ++# Helper functions for option handling. -*- Autoconf -*- ++ ++# Copyright (C) 2001, 2002, 2003 Free Software Foundation, 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. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++# 02111-1307, USA. ++ ++# serial 2 ++ ++# _AM_MANGLE_OPTION(NAME) ++# ----------------------- ++AC_DEFUN([_AM_MANGLE_OPTION], ++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) ++ ++# _AM_SET_OPTION(NAME) ++# ------------------------------ ++# Set option NAME. Presently that only means defining a flag for this option. ++AC_DEFUN([_AM_SET_OPTION], ++[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) ++ ++# _AM_SET_OPTIONS(OPTIONS) ++# ---------------------------------- ++# OPTIONS is a space-separated list of Automake options. ++AC_DEFUN([_AM_SET_OPTIONS], ++[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) ++ ++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) ++# ------------------------------------------- ++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. ++AC_DEFUN([_AM_IF_OPTION], ++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) ++ ++# ++# Check to make sure that the build environment is sane. ++# ++ ++# Copyright (C) 1996, 1997, 2000, 2001, 2003 Free Software Foundation, 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. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++# 02111-1307, USA. ++ ++# serial 3 ++ ++# AM_SANITY_CHECK ++# --------------- ++AC_DEFUN([AM_SANITY_CHECK], ++[AC_MSG_CHECKING([whether build environment is sane]) ++# Just in case ++sleep 1 ++echo timestamp > conftest.file ++# Do `set' in a subshell so we don't clobber the current shell's ++# arguments. Must try -L first in case configure is actually a ++# symlink; some systems play weird games with the mod time of symlinks ++# (eg FreeBSD returns the mod time of the symlink's containing ++# directory). ++if ( ++ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` ++ if test "$[*]" = "X"; then ++ # -L didn't work. ++ set X `ls -t $srcdir/configure conftest.file` ++ fi ++ rm -f conftest.file ++ if test "$[*]" != "X $srcdir/configure conftest.file" \ ++ && test "$[*]" != "X conftest.file $srcdir/configure"; then ++ ++ # If neither matched, then we have a broken ls. This can happen ++ # if, for instance, CONFIG_SHELL is bash and it inherits a ++ # broken ls alias from the environment. This has actually ++ # happened. Such a system could not be considered "sane". ++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken ++alias in your environment]) ++ fi ++ ++ test "$[2]" = conftest.file ++ ) ++then ++ # Ok. ++ : ++else ++ AC_MSG_ERROR([newly created file is older than distributed files! ++Check your system clock]) ++fi ++AC_MSG_RESULT(yes)]) ++ ++# AM_PROG_INSTALL_STRIP ++ ++# Copyright (C) 2001, 2003 Free Software Foundation, 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. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++# 02111-1307, USA. ++ ++# One issue with vendor `install' (even GNU) is that you can't ++# specify the program used to strip binaries. This is especially ++# annoying in cross-compiling environments, where the build's strip ++# is unlikely to handle the host's binaries. ++# Fortunately install-sh will honor a STRIPPROG variable, so we ++# always use install-sh in `make install-strip', and initialize ++# STRIPPROG with the value of the STRIP variable (set by the user). ++AC_DEFUN([AM_PROG_INSTALL_STRIP], ++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl ++# Installed binaries are usually stripped using `strip' when the user ++# run `make install-strip'. However `strip' might not be the right ++# tool to use in cross-compilation environments, therefore Automake ++# will honor the `STRIP' environment variable to overrule this program. ++dnl Don't test for $cross_compiling = yes, because it might be `maybe'. ++if test "$cross_compiling" != no; then ++ AC_CHECK_TOOL([STRIP], [strip], :) ++fi ++INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" ++AC_SUBST([INSTALL_STRIP_PROGRAM])]) ++ ++# Check how to create a tarball. -*- Autoconf -*- ++ ++# Copyright (C) 2004 Free Software Foundation, 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. ++ ++# You should have received a copy of the GNU General Public License ++# along with this program; if not, write to the Free Software ++# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ++# 02111-1307, USA. ++ ++# serial 1 ++ ++ ++# _AM_PROG_TAR(FORMAT) ++# -------------------- ++# Check how to create a tarball in format FORMAT. ++# FORMAT should be one of `v7', `ustar', or `pax'. ++# ++# Substitute a variable $(am__tar) that is a command ++# writing to stdout a FORMAT-tarball containing the directory ++# $tardir. ++# tardir=directory && $(am__tar) > result.tar ++# ++# Substitute a variable $(am__untar) that extract such ++# a tarball read from stdin. ++# $(am__untar) < result.tar ++AC_DEFUN([_AM_PROG_TAR], ++[# Always define AMTAR for backward compatibility. ++AM_MISSING_PROG([AMTAR], [tar]) ++m4_if([$1], [v7], ++ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], ++ [m4_case([$1], [ustar],, [pax],, ++ [m4_fatal([Unknown tar format])]) ++AC_MSG_CHECKING([how to create a $1 tar archive]) ++# Loop over all known methods to create a tar archive until one works. ++_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' ++_am_tools=${am_cv_prog_tar_$1-$_am_tools} ++# Do not fold the above two line into one, because Tru64 sh and ++# Solaris sh will not grok spaces in the rhs of `-'. ++for _am_tool in $_am_tools ++do ++ case $_am_tool in ++ gnutar) ++ for _am_tar in tar gnutar gtar; ++ do ++ AM_RUN_LOG([$_am_tar --version]) && break ++ done ++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' ++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' ++ am__untar="$_am_tar -xf -" ++ ;; ++ plaintar) ++ # Must skip GNU tar: if it does not support --format= it doesn't create ++ # ustar tarball either. ++ (tar --version) >/dev/null 2>&1 && continue ++ am__tar='tar chf - "$$tardir"' ++ am__tar_='tar chf - "$tardir"' ++ am__untar='tar xf -' ++ ;; ++ pax) ++ am__tar='pax -L -x $1 -w "$$tardir"' ++ am__tar_='pax -L -x $1 -w "$tardir"' ++ am__untar='pax -r' ++ ;; ++ cpio) ++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' ++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' ++ am__untar='cpio -i -H $1 -d' ++ ;; ++ none) ++ am__tar=false ++ am__tar_=false ++ am__untar=false ++ ;; ++ esac ++ ++ # If the value was cached, stop now. We just wanted to have am__tar ++ # and am__untar set. ++ test -n "${am_cv_prog_tar_$1}" && break ++ ++ # tar/untar a dummy directory, and stop if the command works ++ rm -rf conftest.dir ++ mkdir conftest.dir ++ echo GrepMe > conftest.dir/file ++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) ++ rm -rf conftest.dir ++ if test -s conftest.tar; then ++ AM_RUN_LOG([$am__untar <conftest.tar]) ++ grep GrepMe conftest.dir/file >/dev/null 2>&1 && break ++ fi ++done ++rm -rf conftest.dir ++ ++AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) ++AC_MSG_RESULT([$am_cv_prog_tar_$1])]) ++AC_SUBST([am__tar]) ++AC_SUBST([am__untar]) ++]) # _AM_PROG_TAR + +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/bencode.cpp ctorrent-1.3.4/bencode.cpp +--- ctorrent-1.3.4.sav/bencode.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/bencode.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -1,6 +1,6 @@ ++#include "./def.h" + #include <sys/types.h> + +-#include "./def.h" + #include "bencode.h" + + #ifndef WINDOWS +@@ -29,7 +29,7 @@ + return keylen; + } + +-size_t buf_int(const char *b,size_t len,char beginchar,char endchar,size_t *pi) ++size_t buf_long(const char *b,size_t len,char beginchar,char endchar,int64_t *pi) + { + const char *p = b; + const char *psave; +@@ -46,12 +46,26 @@ + if(!len || MAX_INT_SIZ < (p - psave) || *p != endchar) return 0; + + if( pi ){ +- if( beginchar ) *pi = (size_t)strtol(b + 1,(char**) 0,10); +- else *pi=(size_t)strtol(b,(char**) 0,10); ++ if( beginchar ) *pi = strtoll(b + 1,(char**) 0,10); ++ else *pi=strtoll(b,(char**) 0,10); + } + return (size_t)( p - b + 1 ); + } + ++size_t buf_int(const char *b,size_t len,char beginchar,char endchar,size_t *pi) ++{ ++ size_t r; ++ ++ if( pi ){ ++ int64_t pl; ++ r = buf_long(b,len,beginchar,endchar,&pl); ++ *pi = (size_t) pl; ++ }else{ ++ r = buf_long(b,len,beginchar,endchar,(int64_t*) 0); ++ } ++ return r; ++} ++ + size_t buf_str(const char *b,size_t len,const char **pstr,size_t* slen) + { + size_t rl,sl; +@@ -69,7 +83,7 @@ + + size_t decode_int(const char *b,size_t len) + { +- return(buf_int(b,len,'i','e',(size_t*) 0)); ++ return(buf_long(b,len,'i','e',(int64_t*) 0)); + } + + size_t decode_str(const char *b,size_t len) +@@ -136,7 +150,7 @@ + } + } + +-size_t decode_query(const char *b,size_t len,const char *keylist,const char **ps,size_t *pi,int method) ++size_t decode_query(const char *b,size_t len,const char *keylist,const char **ps,size_t *pi,int64_t *pl,int method) + { + size_t pos; + char kl[KEYNAME_LISTSIZ]; +@@ -147,8 +161,9 @@ + case QUERY_STR: return(buf_str(b + pos,len - pos, ps, pi)); + case QUERY_INT: return(buf_int(b + pos,len - pos, 'i', 'e', pi)); + case QUERY_POS: +- if(pi) *pi = decode_rev(b + pos, len - pos, (const char*) 0); +- return pos; ++ if(pi) *pi = decode_rev(b + pos, len - pos, (const char*) 0); ++ return pos; ++ case QUERY_LONG: return(buf_long(b + pos,len - pos, 'i', 'e', pl)); + default: return 0; + } + } +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/bencode.h ctorrent-1.3.4/bencode.h +--- ctorrent-1.3.4.sav/bencode.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/bencode.h 2006-06-28 19:30:02.000000000 +0200 +@@ -13,7 +13,9 @@ + #define QUERY_STR 0 + #define QUERY_INT 1 + #define QUERY_POS 2 ++#define QUERY_LONG 3 + ++size_t buf_long(const char *b,size_t len,char beginchar,char endchar,int64_t *pi); + size_t buf_int(const char *b,size_t len,char beginchar,char endchar,size_t *pi); + size_t buf_str(const char *b,size_t len,const char **pstr,size_t* slen); + size_t decode_int(const char *b,size_t len); +@@ -21,7 +23,7 @@ + size_t decode_dict(const char *b,size_t len,const char *keylist); + size_t decode_list(const char *b,size_t len,const char *keylist); + size_t decode_rev(const char *b,size_t len,const char *keylist); +-size_t decode_query(const char *b,size_t len,const char *keylist,const char **ps,size_t *pi,int method); ++size_t decode_query(const char *b,size_t len,const char *keylist,const char **ps,size_t *pi,int64_t *pl,int method); + size_t decode_list2path(const char *b, size_t n, char *pathname); + size_t bencode_buf(const char *str,size_t len,FILE *fp); + size_t bencode_str(const char *str, FILE *fp); +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/bitfield.cpp ctorrent-1.3.4/bitfield.cpp +--- ctorrent-1.3.4.sav/bitfield.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/bitfield.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -143,8 +143,8 @@ + size_t s = nset; + for( ; i < nbytes - 1; i++ ) b[i] = ~b[i]; + +- if( nbits % nbytes ){ +- for( i = 8 * (nbytes - 1); i < nbits; i++ ) if( _isset(i) ) UnSet(i); else Set(i); ++ if( nbits % 8 ){ ++ for( i = 8 * (nbytes - 1); i < nbits; i++ ) if( _isset(i) ) UnSet(i); else _set(i); + }else + b[nbytes - 1] = ~b[nbytes - 1]; + +@@ -152,6 +152,16 @@ + } + } + ++// _set() sets the bit but doesn't increment nset or set the isfull case. ++// Use instead of Set() when you know nset is incorrect and will be corrected ++// afterward (as in Invert or by _recalc), ++// and either bitfield won't get full or you'll _recalc() afterward to fix it. ++void BitField::_set(size_t idx) ++{ ++ if( idx < nbits && !_isfull() && !_isset(idx) ) ++ b[idx / 8] |= BIT_HEX[idx % 8]; ++} ++ + void BitField::Comb(const BitField &bf) + { + size_t i; +@@ -167,7 +177,10 @@ + { + size_t i; + char c; +- if( bf.nset != 0 ){ ++ if( _isfull_sp(bf) ){ ++ SetAll(); ++ Invert(); ++ }else if( bf.nset != 0 ){ + if( nset >= nbits ){ + b = new unsigned char[nbytes]; + #ifndef WINDOWS +@@ -184,6 +197,26 @@ + } + } + ++void BitField::And(const BitField &bf) ++{ ++ size_t i; ++ ++ if( bf.nset == 0 ){ ++ SetAll(); ++ Invert(); ++ }else if( !_isfull_sp(bf) ){ ++ if( nset >= nbits ){ ++ b = new unsigned char[nbytes]; ++#ifndef WINDOWS ++ if( !b ) throw 9; ++#endif ++ _setall(b); ++ } ++ for(i = 0; i < nbytes; i++) b[i] &= bf.b[i]; ++ _recalc(); ++ } ++} ++ + size_t BitField::Random() const + { + size_t idx; +@@ -300,3 +333,4 @@ + fclose(fp); + return -1; + } ++ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/bitfield.h ctorrent-1.3.4/bitfield.h +--- ctorrent-1.3.4.sav/bitfield.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/bitfield.h 2006-06-28 19:30:02.000000000 +0200 +@@ -14,6 +14,7 @@ + + inline void _recalc(); + inline void _setall(unsigned char* buf); ++ inline void _set(size_t idx); + + public: + BitField(); +@@ -40,6 +41,7 @@ + void Comb(const BitField &bf); + void Except(const BitField &bf); + void Invert(); ++ void And(const BitField &bf); + + int WriteToFile(const char *fname); + int SetReferFile(const char *fname); +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btconfig.cpp ctorrent-1.3.4/btconfig.cpp +--- ctorrent-1.3.4.sav/btconfig.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btconfig.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -1,19 +1,23 @@ #include <sys/types.h> -size_t cfg_req_slice_size = 32768; -+//size_t cfg_req_slice_size = 32768; +size_t cfg_req_slice_size = 16384; ++size_t cfg_req_queue_length = 74; size_t cfg_cache_size = 16; -@@ -11,7 +12,8 @@ + size_t cfg_max_peers = 100; +-size_t cfg_min_peers = 40; ++size_t cfg_min_peers = 1; + ++unsigned long cfg_listen_ip = 0; + int cfg_listen_port = 0; int cfg_max_listen_port = 2706; int cfg_min_listen_port = 2106; @@ -20,21 +1534,55 @@ diff -u ctorrent-1.3.4.orig/btconfig.cpp ctorrent-1.3.4/btconfig.cpp +int cfg_max_bandwidth_up = -1; time_t cfg_seed_hours = 72; ++double cfg_seed_ratio = 0; -@@ -25,6 +27,8 @@ + // arguments global value + char *arg_metainfo_file = (char*) 0; +@@ -25,6 +29,12 @@ unsigned char arg_flg_check_only = 0; unsigned char arg_flg_exam_only = 0; unsigned char arg_flg_make_torrent = 0; -+unsigned char arg_file_to_download = 0; ++size_t arg_file_to_download = 0; +unsigned char arg_verbose = 0; size_t arg_piece_length = 262144; char *arg_announce = (char*) 0; -diff -u ctorrent-1.3.4.orig/btconfig.h ctorrent-1.3.4/btconfig.h ---- ctorrent-1.3.4.orig/btconfig.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btconfig.h 2005-08-11 23:45:29.425694288 +0200 -@@ -22,6 +22,8 @@ ++ ++char *arg_ctcs = (char*) 0; ++int cfg_exit_zero_peers = 0; ++ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btconfig.h ctorrent-1.3.4/btconfig.h +--- ctorrent-1.3.4.sav/btconfig.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btconfig.h 2006-06-28 19:30:02.000000000 +0200 +@@ -4,24 +4,32 @@ + extern size_t cfg_req_slice_size; + + #define MAX_METAINFO_FILESIZ 4194304 +-#define cfg_max_slice_size 131072 +-#define cfg_req_queue_length 64 ++// According to specs the max slice size is 128K. But most clients do not ++// accept a value that large, so we limit to 64K. Note that there is a ++// comparison in RequestQueue::IsValidRequest() (see btrequest.cpp) that ++// doubles the value so that we will accept a request for 128K. ++#define cfg_max_slice_size 65536 ++extern size_t cfg_req_queue_length; + #define MAX_PF_LEN 8 + #define PEER_ID_LEN 20 +-#define PEER_PFX "-CT1304-" ++#define PEER_PFX "-CD0200-" + + extern size_t cfg_cache_size; + + extern size_t cfg_max_peers; + extern size_t cfg_min_peers; + ++extern unsigned long cfg_listen_ip; + extern int cfg_listen_port; + extern int cfg_max_listen_port; + extern int cfg_min_listen_port; + extern time_t cfg_seed_hours; ++extern double cfg_seed_ratio; extern int cfg_max_bandwidth; +extern int cfg_max_bandwidth_down; @@ -42,27 +1590,76 @@ diff -u ctorrent-1.3.4.orig/btconfig.h ctorrent-1.3.4/btconfig.h // arguments global value extern char *arg_metainfo_file; -@@ -33,6 +35,8 @@ +@@ -33,7 +41,12 @@ extern unsigned char arg_flg_check_only; extern unsigned char arg_flg_exam_only; extern unsigned char arg_flg_make_torrent; -+extern unsigned char arg_file_to_download; ++extern size_t arg_file_to_download; +extern unsigned char arg_verbose; extern size_t arg_piece_length; extern char *arg_announce; -diff -u ctorrent-1.3.4.orig/btcontent.cpp ctorrent-1.3.4/btcontent.cpp ---- ctorrent-1.3.4.orig/btcontent.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btcontent.cpp 2005-08-11 23:45:29.425694288 +0200 -@@ -23,6 +23,7 @@ ++ ++extern char *arg_ctcs; ++extern int cfg_exit_zero_peers; + #endif +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btcontent.cpp ctorrent-1.3.4/btcontent.cpp +--- ctorrent-1.3.4.sav/btcontent.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btcontent.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -9,8 +9,12 @@ + #else + #include <unistd.h> + #include <sys/param.h> ++#if defined(HAVE_LIBCRYPT) || defined(HAVE_LIBMD) || defined(HAVE_LIBCRYPTO) ++#include <sha.h> ++#elif defined(HAVE_LIBSSL) + #include <openssl/sha.h> + #endif ++#endif + + #include <time.h> + #include <sys/stat.h> +@@ -23,10 +27,15 @@ #include "bencode.h" #include "peer.h" #include "httpencode.h" +#include "tracker.h" ++ ++#if defined(USE_STANDALONE_SHA1) ++#include "sha1.h" ++#endif + +-#define meta_str(keylist,pstr,pint) decode_query(b,flen,(keylist),(pstr),(pint),QUERY_STR) +-#define meta_int(keylist,pint) decode_query(b,flen,(keylist),(const char**) 0,(pint),QUERY_INT) +-#define meta_pos(keylist) decode_query(b,flen,(keylist),(const char**) 0,(size_t*) 0,QUERY_POS) ++#define meta_str(keylist,pstr,pint) decode_query(b,flen,(keylist),(pstr),(pint),(int64_t*) 0,QUERY_STR) ++#define meta_int(keylist,pint) decode_query(b,flen,(keylist),(const char**) 0,(pint),(int64_t*) 0,QUERY_INT) ++#define meta_pos(keylist) decode_query(b,flen,(keylist),(const char**) 0,(size_t*) 0,(int64_t*) 0,QUERY_POS) - #define meta_str(keylist,pstr,pint) decode_query(b,flen,(keylist),(pstr),(pint),QUERY_STR) - #define meta_int(keylist,pint) decode_query(b,flen,(keylist),(const char**) 0,(pint),QUERY_INT) -@@ -53,6 +54,7 @@ + #define CACHE_FIT(ca,roff,rlen) \ + (max_u_int64_t((ca)->bc_off,(roff)) <= \ +@@ -38,6 +47,12 @@ + + static void Sha1(char *ptr,size_t len,unsigned char *dm) + { ++#if defined(USE_STANDALONE_SHA1) ++ SHA1_CTX context; ++ SHA1Init(&context); ++ SHA1Update(&context,(unsigned char*)ptr,len); ++ SHA1Final(dm,&context); ++#else + #ifdef WINDOWS + ; + #else +@@ -46,6 +61,7 @@ + SHA1_Update(&context,(unsigned char*)ptr,len); + SHA1_Final(dm,&context); + #endif ++#endif + } + + btContent::btContent() +@@ -53,6 +69,7 @@ m_announce = global_piece_buffer = (char*) 0; m_hash_table = (unsigned char *) 0; pBF = (BitField*) 0; @@ -70,15 +1667,54 @@ diff -u ctorrent-1.3.4.orig/btcontent.cpp ctorrent-1.3.4/btcontent.cpp m_create_date = m_seed_timestamp = (time_t) 0; time(&m_start_timestamp); m_cache = (BTCACHE*) 0; -@@ -226,6 +228,7 @@ +@@ -121,7 +138,8 @@ + m_piece_length *= 65536; + } + +- if( !m_piece_length || m_piece_length > cfg_req_queue_length * cfg_req_slice_size ) ++ // This is really just a sanity check on the piece length to create. ++ if( !m_piece_length || m_piece_length > 4096*1024 ) + m_piece_length = 262144; + + m_announce = ann_url; +@@ -209,26 +227,24 @@ + if(!meta_int("info|piece length",&m_piece_length)) ERR_RETURN(); + m_npieces = m_hashtable_length / 20; + +- if( m_piece_length > cfg_max_slice_size * cfg_req_queue_length ){ +- fprintf(stderr,"error, piece length too long[%u]. please recompile CTorrent with a larger cfg_max_slice_size in <btconfig.h>.\n", m_piece_length); +- ERR_RETURN(); +- } ++ cfg_req_queue_length = (m_piece_length / cfg_req_slice_size) * 2 - 1; + + if( m_piece_length < cfg_req_slice_size ) + cfg_req_slice_size = m_piece_length; +- else{ +- for( ;(m_piece_length / cfg_req_slice_size) >= cfg_req_queue_length; ){ +- cfg_req_slice_size *= 2; +- if( cfg_req_slice_size > cfg_max_slice_size ) ERR_RETURN(); +- } +- } + if( m_btfiles.BuildFromMI(b, flen, saveas) < 0) ERR_RETURN(); delete []b; +- PrintOut(); + b = (char *)0; - PrintOut(); - if( arg_flg_exam_only ) return 0; -@@ -242,6 +245,17 @@ +- if( arg_flg_exam_only ) return 0; ++ if( arg_flg_exam_only ){ ++ PrintOut(); ++ return 0; ++ }else{ ++ arg_flg_exam_only = 1; ++ PrintOut(); ++ arg_flg_exam_only = 0; ++ } + + if( ( r = m_btfiles.CreateFiles() ) < 0) ERR_RETURN(); + +@@ -242,6 +258,17 @@ if( !pBF ) ERR_RETURN(); #endif @@ -96,7 +1732,54 @@ diff -u ctorrent-1.3.4.orig/btcontent.cpp ctorrent-1.3.4/btcontent.cpp m_left_bytes = m_btfiles.GetTotalLength() / m_piece_length; if( m_btfiles.GetTotalLength() % m_piece_length ) m_left_bytes++; if( m_left_bytes != m_npieces ) ERR_RETURN(); -@@ -309,7 +323,8 @@ +@@ -252,13 +279,13 @@ + + if( !arg_flg_check_only ){ + if( pBF->SetReferFile(arg_bitfield_file) >= 0){ +- size_t idx; +- r = 0; +- for( idx = 0; idx < m_npieces; idx++ ) +- if( pBF->IsSet(idx) ) m_left_bytes -= GetPieceLength(idx); ++ size_t idx; ++ r = 0; ++ for( idx = 0; idx < m_npieces; idx++ ) ++ if( pBF->IsSet(idx) ) m_left_bytes -= GetPieceLength(idx); + } + else{ +- fprintf(stderr,"warn, couldn't set bit field refer file %s.\n",arg_bitfield_file); ++ fprintf(stderr,"warn, couldn't set bit field refer file %s.\n",arg_bitfield_file); + } + } + +@@ -271,7 +298,9 @@ + CheckExist(); + } + +- printf("Already/Total: %u/%u\n",pBF->Count(),m_npieces); ++ PrintOut(); ++ printf("Already/Total: %u/%u (%d%%)\n",pBF->Count(),m_npieces, ++ 100 * pBF->Count() / m_npieces); + + if( arg_flg_check_only ){ + if( arg_bitfield_file ) pBF->WriteToFile(arg_bitfield_file); +@@ -285,11 +314,11 @@ + memset(ptr,0,8); // reserved set zero. + + { // peer id +- char *sptr = arg_user_agent; +- char *dptr = (char *)m_shake_buffer + 48; +- char *eptr = dptr + PEER_ID_LEN; +- while (*sptr) *dptr++ = *sptr++; +- while (dptr < eptr) *dptr++ = (unsigned char)random(); ++ char *sptr = arg_user_agent; ++ char *dptr = (char *)m_shake_buffer + 48; ++ char *eptr = dptr + PEER_ID_LEN; ++ while (*sptr) *dptr++ = *sptr++; ++ while (dptr < eptr) *dptr++ = (unsigned char)random(); + } + return 0; + } +@@ -309,7 +338,8 @@ ssize_t btContent::ReadSlice(char *buf,size_t idx,size_t off,size_t len) { @@ -106,7 +1789,62 @@ diff -u ctorrent-1.3.4.orig/btcontent.cpp ctorrent-1.3.4/btcontent.cpp if( !m_cache_size ) return m_btfiles.IO(buf, offset, len, 0); else{ -@@ -405,7 +420,11 @@ +@@ -322,16 +352,16 @@ + for( ; len && p && CACHE_FIT(p, offset, len);){ + flg_rescan = 0; + if( offset < p->bc_off ){ +- len2 = p->bc_off - offset; +- if( CacheIO(buf, offset, len2, 0) < 0) return -1; +- flg_rescan = 1; ++ len2 = p->bc_off - offset; ++ if( CacheIO(buf, offset, len2, 0) < 0) return -1; ++ flg_rescan = 1; + }else if( offset > p->bc_off ){ +- len2 = p->bc_off + p->bc_len - offset; +- if( len2 > len ) len2 = len; +- memcpy(buf, p->bc_buf + offset - p->bc_off, len2); ++ len2 = p->bc_off + p->bc_len - offset; ++ if( len2 > len ) len2 = len; ++ memcpy(buf, p->bc_buf + offset - p->bc_off, len2); + }else{ +- len2 = (len > p->bc_len) ? p->bc_len : len; +- memcpy(buf, p->bc_buf, len2); ++ len2 = (len > p->bc_len) ? p->bc_len : len; ++ memcpy(buf, p->bc_buf, len2); + } + + buf += len2; +@@ -339,14 +369,14 @@ + len -= len2; + + if( len ){ +- if( flg_rescan ){ +- for( p = m_cache; +- p && (offset + len) > p->bc_off && !CACHE_FIT(p,offset,len); +- p = p->bc_next) ; +- }else{ +- time(&p->bc_last_timestamp); +- p = p->bc_next; +- } ++ if( flg_rescan ){ ++ for( p = m_cache; ++ p && (offset + len) > p->bc_off && !CACHE_FIT(p,offset,len); ++ p = p->bc_next) ; ++ }else{ ++ time(&p->bc_last_timestamp); ++ p = p->bc_next; ++ } + } + }// end for; + +@@ -399,13 +429,17 @@ + if( p->bc_f_flush ){ + p->bc_f_flush = 0; + if(m_btfiles.IO(p->bc_buf, p->bc_off, p->bc_len, 1) < 0) +- fprintf(stderr,"warn, write file failed while flush cache.\n"); ++ fprintf(stderr,"warn, write file failed while flush cache.\n"); + } + } ssize_t btContent::WriteSlice(char *buf,size_t idx,size_t off,size_t len) { @@ -119,20 +1857,73 @@ diff -u ctorrent-1.3.4.orig/btcontent.cpp ctorrent-1.3.4/btcontent.cpp if( !m_cache_size ) return m_btfiles.IO(buf, offset, len, 1); else{ -@@ -514,9 +533,9 @@ +@@ -418,18 +452,18 @@ + for( ; len && p && CACHE_FIT(p, offset, len);){ + flg_rescan = 0; + if( offset < p->bc_off ){ +- len2 = p->bc_off - offset; +- if( CacheIO(buf, offset, len2, 1) < 0) return -1; +- flg_rescan = 1; ++ len2 = p->bc_off - offset; ++ if( CacheIO(buf, offset, len2, 1) < 0) return -1; ++ flg_rescan = 1; + }else if( offset > p->bc_off ){ +- len2 = p->bc_off + p->bc_len - offset; +- if( len2 > len ) len2 = len; +- memcpy(p->bc_buf + offset - p->bc_off, buf, len2); +- p->bc_f_flush = 1; ++ len2 = p->bc_off + p->bc_len - offset; ++ if( len2 > len ) len2 = len; ++ memcpy(p->bc_buf + offset - p->bc_off, buf, len2); ++ p->bc_f_flush = 1; + }else{ +- len2 = (len > p->bc_len) ? p->bc_len : len; +- memcpy(p->bc_buf, buf, len2); +- p->bc_f_flush = 1; ++ len2 = (len > p->bc_len) ? p->bc_len : len; ++ memcpy(p->bc_buf, buf, len2); ++ p->bc_f_flush = 1; + } + + buf += len2; +@@ -437,12 +471,12 @@ + len -= len2; + + if( len ){ +- if( flg_rescan ){ +- for( p = m_cache; p && (offset + len) > p->bc_off && !CACHE_FIT(p,offset,len); p = p->bc_next) ; +- }else{ +- time(&p->bc_last_timestamp); +- p = p->bc_next; +- } ++ if( flg_rescan ){ ++ for( p = m_cache; p && (offset + len) > p->bc_off && !CACHE_FIT(p,offset,len); p = p->bc_next) ; ++ }else{ ++ time(&p->bc_last_timestamp); ++ p = p->bc_next; ++ } + } + }// end for; + +@@ -514,12 +548,12 @@ if( !percent ) percent = 1; for( ; idx < m_npieces; idx++){ - if( GetHashValue(idx, md) == 0 && memcmp(md, m_hash_table + idx * 20, 20) == 0){ - m_left_bytes -= GetPieceLength(idx); - pBF->Set(idx); -+ if( GetHashValue(idx, md) == 0 && memcmp(md, m_hash_table + idx * 20, 20) == 0){ ++ if( GetHashValue(idx, md) == 0 && memcmp(md, m_hash_table + idx * 20, 20) == 0){ + m_left_bytes -= GetPieceLength(idx); + pBF->Set(idx); } - if(idx % percent == 0){ - printf("\rCheck exist: %d/%d",idx,pBF->NBits()); -@@ -575,7 +594,6 @@ +- if(idx % percent == 0){ +- printf("\rCheck exist: %d/%d",idx,pBF->NBits()); ++ if(idx % percent == 0 || idx == m_npieces-1){ ++ printf("\rCheck exist: %d/%d",idx+1,pBF->NBits()); + fflush(stdout); + } + } +@@ -575,7 +609,6 @@ fprintf(stderr,"warn,piece %d hash check failed.\n",idx); return 0; } @@ -140,21 +1931,39 @@ diff -u ctorrent-1.3.4.orig/btcontent.cpp ctorrent-1.3.4/btcontent.cpp pBF->Set(idx); m_left_bytes -= GetPieceLength(idx); return 1; -@@ -592,6 +610,7 @@ +@@ -590,8 +623,10 @@ + + int btContent::SeedTimeout(const time_t *pnow) { ++ u_int64_t dl; if( pBF->IsFull() ){ if( !m_seed_timestamp ){ -+ Tracker.Reset(15); ++ Tracker.Reset(1); Self.ResetDLTimer(); Self.ResetULTimer(); ReleaseHashTable(); -@@ -605,3 +624,13 @@ +@@ -599,9 +634,27 @@ + FlushCache(); + printf("\nDownload complete.\n"); + printf("Total time used: %lu minutes.\n",(*pnow - m_start_timestamp) / 60); +- printf("Seed for other %lu hours.\n\n", cfg_seed_hours); ++ printf("Seed for other %lu hours", cfg_seed_hours); ++ if(cfg_seed_ratio) printf(" or to ratio of %f", cfg_seed_ratio); ++ printf(".\n\n"); + } +- if( (*pnow - m_seed_timestamp) >= (cfg_seed_hours * 60 * 60) ) return 1; ++ dl = (Self.TotalDL() > 0) ? Self.TotalDL() : GetTotalFilesLength(); ++ if( (cfg_seed_ratio == 0 && cfg_seed_hours == 0) || ++ (cfg_seed_hours > 0 && ++ (*pnow - m_seed_timestamp) >= (cfg_seed_hours * 60 * 60)) || ++ (cfg_seed_ratio > 0 && ++ cfg_seed_ratio <= Self.TotalUL() / dl) ) return 1; } return 0; } + + -+size_t btContent::getFilePieces(unsigned char nfile){ ++size_t btContent::getFilePieces(size_t nfile){ + return m_btfiles.getFilePieces(nfile); +} + @@ -162,10 +1971,22 @@ diff -u ctorrent-1.3.4.orig/btcontent.cpp ctorrent-1.3.4/btcontent.cpp +void btContent::SetFilter(){ + m_btfiles.SetFilter(arg_file_to_download,pBFilter,m_piece_length); +} -diff -u ctorrent-1.3.4.orig/btcontent.h ctorrent-1.3.4/btcontent.h ---- ctorrent-1.3.4.orig/btcontent.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btcontent.h 2005-08-11 23:45:29.426694136 +0200 -@@ -60,6 +60,7 @@ ++ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btcontent.h ctorrent-1.3.4/btcontent.h +--- ctorrent-1.3.4.sav/btcontent.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btcontent.h 2006-06-28 19:30:02.000000000 +0200 +@@ -1,9 +1,8 @@ + #ifndef BTCONTENT_H + #define BTCONTENT_H + +-#include <sys/types.h> +- + #include "def.h" ++#include <sys/types.h> + + #include <stdio.h> + #include "bitfield.h" +@@ -60,6 +59,7 @@ public: BitField *pBF; @@ -173,30 +1994,90 @@ diff -u ctorrent-1.3.4.orig/btcontent.h ctorrent-1.3.4/btcontent.h char *global_piece_buffer; btContent(); -@@ -93,6 +94,11 @@ +@@ -93,6 +93,15 @@ int PrintOut(); int SeedTimeout(const time_t *pnow); + + -+ void SetFilter(); -+ size_t getFilePieces(unsigned char nfile); ++ void SetFilter(); ++ void SetTmpFilter(int nfile, BitField *pFilter) { m_btfiles.SetFilter(nfile, pFilter, m_piece_length); } ++ size_t getFilePieces(size_t nfile); + ++ BTFILE *GetNextFile(BTFILE *file) { return m_btfiles.GetNextFile(file); } ++ time_t GetStartTime() { return m_start_timestamp; } ++ time_t GetSeedTime() { return m_seed_timestamp; } }; extern btContent BTCONTENT; -diff -u ctorrent-1.3.4.orig/btfiles.cpp ctorrent-1.3.4/btfiles.cpp ---- ctorrent-1.3.4.orig/btfiles.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btfiles.cpp 2005-08-11 23:45:29.426694136 +0200 -@@ -105,6 +105,7 @@ - pos = (size_t) (off - (n - pbf->bf_length)); +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btfiles.cpp ctorrent-1.3.4/btfiles.cpp +--- ctorrent-1.3.4.sav/btfiles.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btfiles.cpp 2006-06-28 19:30:13.000000000 +0200 +@@ -8,8 +8,12 @@ + #include <unistd.h> + #include <dirent.h> + #include <sys/param.h> ++#if defined(HAVE_LIBCRYPT) || defined(HAVE_LIBMD) || defined(HAVE_LIBCRYPTO) ++#include <sha.h> ++#elif defined(HAVE_LIBSSL) + #include <openssl/sha.h> + #endif ++#endif + + #include <time.h> + #include <sys/stat.h> +@@ -19,6 +23,9 @@ + #include <errno.h> + + #include "bencode.h" ++#include "btconfig.h" ++#include "btcontent.h" ++#include "bitfield.h" + + #define MAX_OPEN_FILES 20 + +@@ -66,7 +73,7 @@ + for(pbf_n = m_btfhead; pbf_n ; pbf_n = pbf_n->bf_next){ + if(!pbf_n->bf_flag_opened) continue; // file not been opened. + if( !pbf_close || pbf_n->bf_last_timestamp < pbf_close->bf_last_timestamp) +- pbf_close = pbf_n; ++ pbf_close = pbf_n; + } + if(!pbf_close || fclose(pbf_close->bf_fp) < 0) return -1; + pbf_close->bf_flag_opened = 0; +@@ -90,7 +97,7 @@ + ssize_t btFiles::IO(char *buf, u_int64_t off, size_t len, const int iotype) + { + u_int64_t n = 0; +- size_t pos,nio; ++ off_t pos,nio; + BTFILE *pbf = m_btfhead; + + if( ( off + (u_int64_t)len ) > m_total_files_length) return -1; +@@ -102,16 +109,21 @@ + + if( !pbf ) return -1; + +- pos = (size_t) (off - (n - pbf->bf_length)); ++ pos = off - (n - pbf->bf_length); for(; len ;){ + if( !pbf->bf_flag_opened ){ if( _btf_open(pbf) < 0 ) return -1; } -@@ -119,6 +120,7 @@ + + if( m_flag_automanage ) time(&pbf->bf_last_timestamp); + ++#ifdef HAVE_FSEEKO ++ if( fseeko(pbf->bf_fp,pos,SEEK_SET) < 0) return -1; ++#else + if( fseek(pbf->bf_fp,(long) pos,SEEK_SET) < 0) return -1; ++#endif + + nio = (len < pbf->bf_length - pos) ? len : (pbf->bf_length - pos); + +@@ -119,6 +131,7 @@ if( 1 != fread(buf,nio,1,pbf->bf_fp) ) return -1; }else{ if( 1 != fwrite(buf,nio,1,pbf->bf_fp) ) return -1; @@ -204,7 +2085,31 @@ diff -u ctorrent-1.3.4.orig/btfiles.cpp ctorrent-1.3.4/btfiles.cpp } len -= nio; -@@ -169,7 +171,7 @@ +@@ -149,14 +162,21 @@ + return 0; + } + +-int btFiles::_btf_ftruncate(int fd,size_t length) ++int btFiles::_btf_ftruncate(int fd,int64_t length) + { + #ifdef WINDOWS + char c = (char)0; + if(lseek(fd,length - 1, SEEK_SET) < 0 ) return -1; + return write(fd, &c, 1); + #else +- return ftruncate(fd,length); ++ // ftruncate() not allowed on [v]fat under linux ++ int retval = ftruncate(fd,length); ++ if( retval < 0 ) { ++ char c = (char)0; ++ if(lseek(fd,length - 1, SEEK_SET) < 0 ) return -1; ++ return write(fd, &c, 1); ++ } ++ else return retval; + #endif + } + +@@ -169,7 +189,7 @@ DIR *dp; BTFILE *pbf; @@ -213,7 +2118,58 @@ diff -u ctorrent-1.3.4.orig/btfiles.cpp ctorrent-1.3.4/btfiles.cpp if( cur_path ){ strcpy(fn, full_cur); -@@ -293,7 +295,7 @@ +@@ -185,12 +205,12 @@ + while( (struct dirent*) 0 != (dirp = readdir(dp)) ){ + + if( 0 == strcmp(dirp->d_name, ".") || +- 0 == strcmp(dirp->d_name, "..") ) continue; ++ 0 == strcmp(dirp->d_name, "..") ) continue; + + if( cur_path ){ + if(MAXPATHLEN < snprintf(fn, MAXPATHLEN, "%s%c%s", cur_path, PATH_SP, dirp->d_name)){ +- fprintf(stderr,"error, pathname too long\n"); +- return -1; ++ fprintf(stderr,"error, pathname too long\n"); ++ return -1; + } + }else{ + strcpy(fn, dirp->d_name); +@@ -232,7 +252,7 @@ + return 0; + } + +-int btFiles::_btf_creat_by_path(const char *pathname, size_t file_length) ++int btFiles::_btf_creat_by_path(const char *pathname, int64_t file_length) + { + struct stat sb; + int fd; +@@ -251,17 +271,17 @@ + *p = '\0'; + if(stat(sp,&sb) < 0){ + if( ENOENT == errno ){ +- if( !last ){ ++ if( !last ){ + #ifdef WINDOWS +- if(mkdir(sp) < 0) break; ++ if(mkdir(sp) < 0) break; + #else +- if(mkdir(sp,0755) < 0) break; ++ if(mkdir(sp,0755) < 0) break; + #endif +- }else{ +- if((fd = creat(sp,0644)) < 0) { last = 0; break; } +- if(file_length && _btf_ftruncate(fd, file_length) < 0){close(fd); last = 0; break;} +- close(fd); +- } ++ }else{ ++ if((fd = creat(sp,0644)) < 0) { last = 0; break; } ++ if(file_length && _btf_ftruncate(fd, file_length) < 0){close(fd); last = 0; break;} ++ close(fd); ++ } + }else{last = 0; break;} + } + if( !last ){ *p = PATH_SP; pnext = p + 1;} +@@ -293,7 +313,7 @@ m_btfhead = pbf; }else if( S_IFDIR & sb.st_mode ){ char wd[MAXPATHLEN]; @@ -222,7 +2178,135 @@ diff -u ctorrent-1.3.4.orig/btfiles.cpp ctorrent-1.3.4/btfiles.cpp m_directory = new char[strlen(pathname) + 1]; #ifndef WINDOWS if( !m_directory ) return -1; -@@ -488,3 +490,54 @@ +@@ -319,20 +339,21 @@ + char path[MAXPATHLEN]; + const char *s, *p; + size_t r,q,n; +- if( !decode_query(metabuf, metabuf_len, "info|name",&s,&q,QUERY_STR) || ++ int64_t t; ++ if( !decode_query(metabuf, metabuf_len, "info|name",&s,&q,(int64_t*) 0,QUERY_STR) || + MAXPATHLEN <= q) return -1; + + memcpy(path, s, q); + path[q] = '\0'; + +- r = decode_query(metabuf,metabuf_len,"info|files",(const char**) 0, &q,QUERY_POS); ++ r = decode_query(metabuf,metabuf_len,"info|files",(const char**) 0, &q,(int64_t*) 0,QUERY_POS); + + if( r ){ + BTFILE *pbf_last = (BTFILE*) 0; + BTFILE *pbf = (BTFILE*) 0; + size_t dl; + if( decode_query(metabuf,metabuf_len,"info|length", +- (const char**) 0,(size_t*) 0,QUERY_INT) ) ++ (const char**) 0,(size_t*) 0,(int64_t*) 0,QUERY_LONG) ) + return -1; + + if( saveas ){ +@@ -355,14 +376,14 @@ + for(; q && 'e' != *p; p += dl, q -= dl){ + if(!(dl = decode_dict(p, q, (const char*) 0)) ) return -1; + if( !decode_query(p, dl, "length", (const char**) 0, +- &r,QUERY_INT) ) return -1; ++ (size_t*) 0,&t,QUERY_LONG) ) return -1; + pbf = _new_bfnode(); + #ifndef WINDOWS + if( !pbf ) return -1; + #endif +- pbf->bf_length = r; +- m_total_files_length += r; +- r = decode_query(p, dl, "path", (const char **) 0, &n,QUERY_POS); ++ pbf->bf_length = t; ++ m_total_files_length += t; ++ r = decode_query(p, dl, "path", (const char **) 0, &n,(int64_t*) 0,QUERY_POS); + if( !r ) return -1; + if(!decode_list2path(p + r, n, path)) return -1; + pbf->bf_filename = new char[strlen(path) + 1]; +@@ -375,13 +396,13 @@ + } + }else{ + if( !decode_query(metabuf,metabuf_len,"info|length", +- (const char**) 0,(size_t*) &q,QUERY_INT) ) ++ (const char**) 0,(size_t*) 0,&t,QUERY_LONG) ) + return -1; + m_btfhead = _new_bfnode(); + #ifndef WINDOWS + if( !m_btfhead) return -1; + #endif +- m_btfhead->bf_length = m_total_files_length = q; ++ m_btfhead->bf_length = m_total_files_length = t; + if( saveas ){ + m_btfhead->bf_filename = new char[strlen(saveas) + 1]; + #ifndef WINDOWS +@@ -409,31 +430,31 @@ + for(; pbt; pbt = pbt->bf_next){ + if( m_directory ){ + if( MAXPATHLEN <= snprintf(fn, MAXPATHLEN, "%s%c%s", m_directory, PATH_SP, pbt->bf_filename) ) +- return -1; ++ return -1; + }else{ + strcpy(fn, pbt->bf_filename); + } + + if(stat(fn ,&sb) < 0){ + if(ENOENT == errno){ +- if( !_btf_creat_by_path(fn,pbt->bf_length)){ +- fprintf(stderr,"error, create file %s failed.\n",fn); +- return -1; +- } ++ if( !_btf_creat_by_path(fn,pbt->bf_length)){ ++ fprintf(stderr,"error, create file %s failed.\n",fn); ++ return -1; ++ } + }else{ +- fprintf(stderr,"error, couldn't create file %s\n", fn); +- return -1; ++ fprintf(stderr,"error, couldn't create file %s\n", fn); ++ return -1; + } + }else{ + if( !check_exist) check_exist = 1; + if( !(S_IFREG & sb.st_mode) ){ +- fprintf(stderr,"error, file %s not a regular file.\n", fn); +- return -1; ++ fprintf(stderr,"error, file %s not a regular file.\n", fn); ++ return -1; + } + if(sb.st_size != pbt->bf_length){ +- fprintf(stderr,"error, file %s 's size not match. must be %u\n", +- fn, pbt->bf_length); +- return -1; ++ fprintf(stderr,"error, file %s 's size not match. must be %u\n", ++ fn, pbt->bf_length); ++ return -1; + } + } + } //end for +@@ -445,10 +466,21 @@ + BTFILE *p = m_btfhead; + size_t id = 1; + printf("FILES INFO\n"); ++ BitField tmpBitField, tmpFilter; + if(m_directory) printf("Directory: %s\n",m_directory); + for( ; p ; p = p->bf_next ){ +- printf("<%d> %c%s [%u]\n",id++, +- m_directory ? '\t': ' ',p->bf_filename, p->bf_length); ++ printf("<%d> %c%s [%llu]",id, ++ m_directory ? '\t': ' ',p->bf_filename, p->bf_length); ++ if( !arg_flg_exam_only ){ ++ BTCONTENT.SetTmpFilter(id, &tmpFilter); ++ tmpBitField = *BTCONTENT.pBF; ++ tmpBitField.Except(tmpFilter); ++ printf(" %u/%u (%d%%)", ++ tmpBitField.Count(), BTCONTENT.getFilePieces(id), ++ 100 * tmpBitField.Count() / BTCONTENT.getFilePieces(id)); ++ } ++ ++id; ++ printf("\n"); + } + printf("Total: %lu MB\n\n",(unsigned long)(m_total_files_length / 1024 / 1024)); + } +@@ -488,3 +520,73 @@ } return 1; } @@ -244,22 +2328,25 @@ diff -u ctorrent-1.3.4.orig/btfiles.cpp ctorrent-1.3.4/btfiles.cpp + size_t start,stop; + start = sizeBuffer/pieceLength; + stop = (sizeBuffer+p->bf_length)/pieceLength; -+ printf ("\rDownloading file: <%d> %s \nPieces: %d - %d (%d)\n",nfile,p->bf_filename,start,stop,stop-start+1); ++ // This "if" cuts down on false prints with CTCS. ++ if(arg_file_to_download == nfile){ ++ printf ("\rDownloading file: <%d> %s \nPieces: %d - %d (%d)\n",nfile,p->bf_filename,start,stop,stop-start+1); ++ } + p->bf_npieces = stop-start+1; + for(index=sizeBuffer/pieceLength;index<=(sizeBuffer+p->bf_length)/pieceLength;index++){ -+ pFilter->UnSet(index); ++ pFilter->UnSet(index); + } + } + sizeBuffer+=(u_int64_t) p->bf_length; + } -+ if(nfile>=id){ ++ if(nfile>=id || nfile==0){ + printf("\nEnd of files list. Resuming normal behaviour\n"); + pFilter->Invert(); + arg_file_to_download = 0; + } +} + -+size_t btFiles::getFilePieces(unsigned char nfile) ++size_t btFiles::getFilePieces(size_t nfile) +{ + //returns the pieces of the file already gotten + @@ -274,66 +2361,201 @@ diff -u ctorrent-1.3.4.orig/btfiles.cpp ctorrent-1.3.4/btfiles.cpp +return 0; +} + ++BTFILE *btFiles::GetNextFile(BTFILE *file) ++{ ++ static BTFILE *p = m_btfhead; + ++ if( 0==file ) p = m_btfhead; ++ else if( p==file ){ ++ p = p->bf_next; ++ }else{ ++ for( p=m_btfhead; p && (p != file); p = p->bf_next); ++ if( 0==p ){ ++ p = m_btfhead; ++ }else{ ++ p = p->bf_next; ++ } ++ } ++ return p; ++} + + -diff -u ctorrent-1.3.4.orig/btfiles.h ctorrent-1.3.4/btfiles.h ---- ctorrent-1.3.4.orig/btfiles.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btfiles.h 2005-08-11 23:45:29.427693984 +0200 -@@ -3,6 +3,10 @@ - +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btfiles.h ctorrent-1.3.4/btfiles.h +--- ctorrent-1.3.4.sav/btfiles.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btfiles.h 2006-06-28 19:30:02.000000000 +0200 +@@ -1,18 +1,22 @@ + #ifndef BTFILES_H + #define BTFILES_H + ++#include "./def.h" #include <sys/types.h> #include <stdio.h> +-#include "./def.h" + +#include "bitfield.h" -+extern unsigned char arg_file_to_download; -+ - #include "./def.h" typedef struct _btfile{ -@@ -14,6 +18,8 @@ + char *bf_filename; // full path of file. +- size_t bf_length; //single file length limits to 4 GB ++ u_int64_t bf_length; + FILE *bf_fp; - size_t bf_completed; // already downloaded length + time_t bf_last_timestamp; // last io timestamp. -+ size_t bf_npieces; //number of pieces +- size_t bf_completed; // already downloaded length ++ u_int64_t bf_completed; // already downloaded length + ++ size_t bf_npieces; //number of pieces + unsigned char bf_flag_opened:1; unsigned char bf_flag_need:1; - unsigned char bf_reserved:6; -@@ -53,6 +59,10 @@ +@@ -36,8 +40,8 @@ + + BTFILE* _new_bfnode(); + int _btf_open(BTFILE *sbf_p); +- int _btf_ftruncate(int fd,size_t length); +- int _btf_creat_by_path(const char *pathname, size_t file_length); ++ int _btf_ftruncate(int fd,int64_t length); ++ int _btf_creat_by_path(const char *pathname, int64_t file_length); + int _btf_destroy(); + int _btf_recurses_directory(const char *cur_path, BTFILE *lastnode); + +@@ -53,9 +57,14 @@ u_int64_t GetTotalLength() const { return m_total_files_length; } ssize_t IO(char *buf, u_int64_t off, size_t len, const int iotype); size_t FillMetaInfo(FILE* fp); + + void SetFilter(int nfile, BitField *pFilter,size_t pieceLength); -+ size_t getFilePieces(unsigned char nfile); ++ size_t getFilePieces(size_t nfile); + #ifndef WINDOWS void PrintOut(); #endif -diff -u ctorrent-1.3.4.orig/btrequest.cpp ctorrent-1.3.4/btrequest.cpp ---- ctorrent-1.3.4.orig/btrequest.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btrequest.cpp 2005-08-11 23:45:29.427693984 +0200 -@@ -44,6 +44,58 @@ - rq.rq_head = (PSLICE) 0; ++ BTFILE *GetNextFile(BTFILE *file); + }; + + #endif +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btrequest.cpp ctorrent-1.3.4/btrequest.cpp +--- ctorrent-1.3.4.sav/btrequest.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btrequest.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -24,24 +24,179 @@ + RequestQueue::RequestQueue() + { + rq_head = (PSLICE) 0; ++ rq_send = rq_head; + } + + void RequestQueue::Empty() + { + if(rq_head) _empty_slice_list(&rq_head); ++ rq_send = rq_head; } -+int RequestQueue::CopyShuffle(RequestQueue &rq) + void RequestQueue::SetHead(PSLICE ps) + { + if( rq_head ) _empty_slice_list(&rq_head); + rq_head = ps; ++ rq_send = rq_head; + } + + void RequestQueue::operator=(RequestQueue &rq) + { ++ PSLICE n, u = (PSLICE) 0; ++ size_t idx; ++ int flag = 0; ++ + if( rq_head ) _empty_slice_list(&rq_head); + rq_head = rq.rq_head; +- rq.rq_head = (PSLICE) 0; ++ rq_send = rq_head; ++ ++ // Reassign only the first piece represented in the queue. ++ n = rq_head; ++ idx = n->index; ++ for( ; n ; u = n,n = u->next){ ++ if( rq.rq_send == n ) flag = 1; ++ if( n->index != idx ) break; ++ } ++ if(n){ ++ u->next = (PSLICE) 0; ++ rq.rq_head = n; ++ if(flag) rq.rq_send = rq.rq_head; ++ }else{ ++ rq.rq_head = (PSLICE) 0; ++ rq.rq_send = rq.rq_head; ++ } ++} ++ ++int RequestQueue::Copy(RequestQueue *prq) +{ -+ PSLICE ps; ++ PSLICE n, u=(PSLICE)0, ps; ++ size_t idx; + -+ if( rq_head ) _empty_slice_list(&rq_head); -+ -+ if( rq.IsEmpty() ) return 0; -+ for (ps = rq.GetHead(); ps; ps = ps->next) { -+ if (random()&01) { -+ if (Add(ps->index, ps->offset, ps->length) < 0) return -1; ++ if( prq->IsEmpty() ) return 0; ++ ++ ps = prq->GetHead(); ++ idx = ps->index; ++ for ( ; ps; ps = ps->next) { ++ if( ps->index != idx ) break; ++ if( Add(ps->index, ps->offset, ps->length) < 0 ) return -1; ++ } ++ return 0; ++} ++ ++int RequestQueue::CopyShuffle(RequestQueue *prq, size_t piece) ++{ ++ PSLICE n, u=(PSLICE)0, ps, start; ++ size_t idx; ++ unsigned long rndbits; ++ int i=0; ++ ++ if( prq->IsEmpty() ) return 0; ++ ++ n = rq_head; ++ for( ; n ; u = n,n = u->next); // move to end ++ ++ ps = prq->GetHead(); ++ for ( ; ps && ps->index != piece; ps = ps->next); ++ start = ps; ++ ++ idx = ps->index; ++ ++ // First, skip to the slices that haven't been sent to the original peer. ++ if( prq->rq_send && prq->rq_send->index == idx ){ ++ ps = prq->rq_send; ++ for ( ; ps; ps = ps->next){ ++ if( ps->index != idx ) break; ++ if( !i-- ){ ++ rndbits = random(); ++ i = 30; ++ } ++ if( (rndbits>>=1)&01 ){ ++ if( Add(ps->index, ps->offset, ps->length) < 0 ) return -1; ++ } ++ else if( Insert(u, ps->index, ps->offset, ps->length) < 0 ) return -1; + } -+ else if (Insert(ps->index, ps->offset, ps->length) < 0) return -1; ++ if(u) n = u->next; ++ else n = rq_head; ++ for( ; n ; u = n,n = u->next); // move to end ++ } ++ ++ // Now put the already-requested slices at the end. ++ ps = start; ++ for ( ; ps && ps != prq->rq_send; ps = ps->next){ ++ if( ps->index != idx ) break; ++ if( !i-- ){ ++ rndbits = random(); ++ i = 30; ++ } ++ if( (rndbits>>=1)&01 ){ ++ if( Add(ps->index, ps->offset, ps->length) < 0 ) return -1; ++ } ++ else if( Insert(u, ps->index, ps->offset, ps->length) < 0 ) return -1; + } + return 0; +} + ++// Counts all queued slices. +size_t RequestQueue::Qsize() +{ + size_t cnt = 0; @@ -344,7 +2566,25 @@ diff -u ctorrent-1.3.4.orig/btrequest.cpp ctorrent-1.3.4/btrequest.cpp + return cnt; +} + -+int RequestQueue::Insert(size_t idx,size_t off,size_t len) ++// Counts only slices from one piece. ++size_t RequestQueue::Qlen(size_t piece) ++{ ++ size_t cnt = 0; ++ PSLICE n = rq_head; ++ PSLICE u = (PSLICE) 0; ++ size_t idx; ++ ++ for ( ; n && n->index != piece; n = n->next); ++ ++ if(n) idx = n->index; ++ for( ; n ; u = n,n = u->next){ ++ if( n->index != idx ) break; ++ cnt++; ++ } ++ return cnt; ++} ++ ++int RequestQueue::Insert(PSLICE ps,size_t idx,size_t off,size_t len) +{ + size_t cnt = 0; + PSLICE n = rq_head; @@ -360,31 +2600,230 @@ diff -u ctorrent-1.3.4.orig/btrequest.cpp ctorrent-1.3.4/btrequest.cpp + if( !n ) return -1; +#endif + -+ n->next = rq_head; + n->index = idx; + n->offset = off; + n->length = len; + -+ rq_head = n; ++ // ps is the slice to insert after; if 0, insert at the head. ++ if(ps){ ++ n->next = ps->next; ++ ps->next = n; ++ if( rq_send == n->next ) rq_send = n; ++ }else{ ++ n->next = rq_head; ++ rq_head = n; ++ rq_send = rq_head; ++ } ++ ++ return 0; + } + + int RequestQueue::Add(size_t idx,size_t off,size_t len) +@@ -64,8 +219,33 @@ + n->index = idx; + n->offset = off; + n->length = len; ++ n->reqtime = (time_t) 0; ++ ++ if( u ) u->next = n; ++ else{ ++ rq_head = n; ++ rq_send = rq_head; ++ } + +- if( u ) u->next = n; else rq_head = n; ++ if( !rq_send ) rq_send = n; + + return 0; +} + - int RequestQueue::Add(size_t idx,size_t off,size_t len) ++int RequestQueue::Append(PSLICE ps) ++{ ++ size_t cnt = 0; ++ PSLICE n = rq_head; ++ PSLICE u = (PSLICE) 0; ++ ++ for( ; n ; u = n,n = u->next) cnt++; // move to end ++ ++ if( cnt >= cfg_req_queue_length ) return -1; // already full ++ ++ if(u) u->next = ps; ++ else rq_head = ps; ++ ++ if( !rq_send ) rq_send = ps; + + return 0; + } +@@ -82,11 +262,41 @@ + if( !n ) return -1; /* not found */ + + if( u ) u->next = n->next; else rq_head = n->next; ++ if( rq_send == n ) rq_send = n->next; + delete n; + + return 0; + } + ++int RequestQueue::HasIdx(size_t idx) ++{ ++ PSLICE n = rq_head; ++ ++ for( ; n ; n = n->next){ ++ if(n->index == idx) break; ++ } ++ ++ return n ? 1 : 0; ++} ++ ++time_t RequestQueue::GetReqTime(size_t idx,size_t off,size_t len) ++{ ++ PSLICE n = rq_head; ++ ++ for( ; n ; n = n->next){ ++ if(n->index == idx && n->offset == off && n->length == len ) break; ++ } ++ ++ if( !n ) return -1; /* not found */ ++ ++ return n->reqtime; ++} ++ ++void RequestQueue::SetReqTime(PSLICE n,time_t t) ++{ ++ n->reqtime = t; ++} ++ + int RequestQueue::Pop(size_t *pidx,size_t *poff,size_t *plen) + { + PSLICE n; +@@ -99,6 +309,7 @@ + if(poff) *poff = rq_head->offset; + if(plen) *plen = rq_head->length; + ++ if( rq_send == rq_head ) rq_send = n; + delete rq_head; + + rq_head = n; +@@ -121,8 +332,6 @@ + { + size_t i,off,len,ns; + +- if( rq_head ) _empty_slice_list(&rq_head); +- + ns = NSlices(idx); + + for( i = off = 0; i < ns; i++){ +@@ -154,9 +363,11 @@ + int RequestQueue::IsValidRequest(size_t idx,size_t off,size_t len) { - size_t cnt = 0; -@@ -231,3 +283,33 @@ + return ( idx < BTCONTENT.GetNPieces() && +- len && +- (off + len) <= BTCONTENT.GetPieceLength(idx) && +- len <= cfg_max_slice_size) ? ++ len && ++ (off + len) <= BTCONTENT.GetPieceLength(idx) && ++// len <= cfg_max_slice_size) ? ++ // See note for cfg_max_slice_size in btconfig.h ++ len <= 2 * cfg_max_slice_size) ? + 1 : 0; + } + +@@ -196,20 +407,51 @@ + + int PendingQueue::Pending(RequestQueue *prq) + { +- int i = 0; ++ int i = 0, j = 0; ++ PSLICE n, u = (PSLICE) 0; ++ size_t idx, off, len; ++ RequestQueue tmprq; + + if( pq_count >= PENDING_QUEUE_SIZE ){ + prq->Empty(); + return -1; } ++ if( prq->Qlen(prq->GetRequestIdx()) >= ++ BTCONTENT.GetPieceLength() / cfg_req_slice_size ){ ++ // This shortcut relies on the fact that we don't add to a queue if it ++ // already contains a full piece. ++ prq->Empty(); ++ return 0; ++ } + +- for( ; i < PENDING_QUEUE_SIZE; i++) ++ for( ; i < PENDING_QUEUE_SIZE; i++){ + if(pending_array[i] == (PSLICE) 0){ +- pending_array[i] = prq->GetHead(); +- prq->Release(); +- pq_count++; +- break; ++ // Don't add a piece to Pending more than once. ++ if(!j) j = i; ++ }else if(prq->GetRequestIdx() == pending_array[i]->index){ ++ while( !prq->IsEmpty() && ++ prq->GetRequestIdx() == pending_array[i]->index ) ++ prq->Pop(&idx,&off,&len); ++ if( prq->IsEmpty() ) return 0; ++ i = 0; + } ++ } ++ i = j; ++ pending_array[i] = prq->GetHead(); ++ prq->Release(); ++ pq_count++; ++ ++ // If multiple pieces are queued, break up the queue separately. ++ n = pending_array[i]; ++ idx = n->index; ++ for( ; n ; u = n, n = u->next) ++ if( n->index != idx ) break; ++ if(n){ ++ u->next = (PSLICE) 0; ++ tmprq.SetHead(n); ++ Pending(&tmprq); ++ tmprq.Release(); ++ } + return 0; } +@@ -218,16 +460,57 @@ + { + int i = 0; + size_t sc = pq_count; ++ size_t idx; + for( ; i < PENDING_QUEUE_SIZE && sc; i++){ + if( pending_array[i] != (PSLICE) 0){ ++ if( bf.IsSet(pending_array[i]->index) && ++ !prq->HasIdx(pending_array[i]->index) ){ ++ idx = pending_array[i]->index; ++ prq->Append(pending_array[i]); ++ pending_array[i] = (PSLICE) 0; ++ pq_count--; ++ Delete(idx); // delete any copies from Pending ++ break; ++ } + sc--; +- if( bf.IsSet(pending_array[i]->index) ){ +- prq->SetHead(pending_array[i]); +- pending_array[i] = (PSLICE) 0; +- pq_count--; +- break; ++ } ++ } ++ // Return value now indicates whether a piece was assigned. ++ return sc; ++} + ++// This routine should no longer be necessary, but keeping it as a failsafe. +int PendingQueue::Delete(size_t idx) +{ + int i = 0; + for ( ; i < PENDING_QUEUE_SIZE && pq_count; i++){ + if( (PSLICE) 0 != pending_array[i] && idx == pending_array[i]->index){ -+ delete pending_array[i]; -+ pending_array[i] = (PSLICE) 0; ++ if(arg_verbose) fprintf(stderr, "PQD found %d\n", (int)idx); ++ _empty_slice_list(&(pending_array[i])); ++ pq_count--; ++ break; + } + } + return 0; @@ -399,31 +2838,77 @@ diff -u ctorrent-1.3.4.orig/btrequest.cpp ctorrent-1.3.4/btrequest.cpp + //check if off & len match any slice + //remove the slice if so + rq.SetHead(pending_array[i]); -+ if( rq.Remove(idx, off, len) == 0 ) ++ if( rq.Remove(idx, off, len) == 0 ){ + pending_array[i] = rq.GetHead(); ++ if( (PSLICE) 0 == pending_array[i] ) pq_count--; ++ i = PENDING_QUEUE_SIZE; // exit loop + } + rq.Release(); -+ } -+ } -+ return 0; -+} + } + } + return 0; + } + -diff -u ctorrent-1.3.4.orig/btrequest.h ctorrent-1.3.4/btrequest.h ---- ctorrent-1.3.4.orig/btrequest.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btrequest.h 2005-08-11 23:45:29.427693984 +0200 -@@ -31,9 +31,12 @@ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btrequest.h ctorrent-1.3.4/btrequest.h +--- ctorrent-1.3.4.sav/btrequest.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btrequest.h 2006-06-28 19:30:02.000000000 +0200 +@@ -2,6 +2,7 @@ + #define SLICE_H + + #include <sys/types.h> ++#include <time.h> + #include "btcontent.h" + #include "bitfield.h" + +@@ -9,6 +10,7 @@ + size_t index; + size_t offset; + size_t length; ++ time_t reqtime; + struct _slice *next; + }SLICE,*PSLICE; + +@@ -17,6 +19,7 @@ + private: + PSLICE rq_head; + public: ++ PSLICE rq_send; // next slice to request + + RequestQueue(); + ~RequestQueue(); +@@ -24,18 +27,30 @@ + void Empty(); + + void SetHead(PSLICE ps); ++ void SetNextSend(PSLICE ps) { rq_send = ps; } + PSLICE GetHead() const { return rq_head; } ++ PSLICE NextSend() const { return rq_send; } + size_t GetRequestIdx(){ return rq_head ? rq_head->index : BTCONTENT.GetNPieces(); } + size_t GetRequestLen(){ return rq_head ? rq_head->length : 0; } +- void Release(){ rq_head = (PSLICE) 0; } ++ void Release(){ rq_head = rq_send = (PSLICE) 0; } int IsValidRequest(size_t idx,size_t off,size_t len); void operator=(RequestQueue &rq); -+ int CopyShuffle(RequestQueue &rq); ++ int Copy(RequestQueue *prq); ++ int CopyShuffle(RequestQueue *prq, size_t piece); + size_t Qsize(); ++ size_t Qlen(size_t piece); int IsEmpty() const { return rq_head ? 0 : 1; } -+ int Insert(size_t idx,size_t off,size_t len); ++ int Insert(PSLICE ps,size_t idx,size_t off,size_t len); int Add(size_t idx,size_t off,size_t len); ++ int Append(PSLICE ps); int Remove(size_t idx,size_t off,size_t len); ++ int HasIdx(size_t idx); ++ time_t GetReqTime(size_t idx,size_t off,size_t len); ++ void SetReqTime(PSLICE n,time_t t); ++ -@@ -60,6 +63,8 @@ + int Pop(size_t *pidx,size_t *poff,size_t *plen); + int Peek(size_t *pidx,size_t *poff,size_t *plen) const; +@@ -60,6 +75,8 @@ int Pending(RequestQueue *prq); int ReAssign(RequestQueue *prq, BitField &bf); int Exist(size_t idx); @@ -432,9 +2917,9 @@ diff -u ctorrent-1.3.4.orig/btrequest.h ctorrent-1.3.4/btrequest.h }; extern PendingQueue PENDINGQUEUE; -diff -u ctorrent-1.3.4.orig/btstream.cpp ctorrent-1.3.4/btstream.cpp ---- ctorrent-1.3.4.orig/btstream.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/btstream.cpp 2005-08-11 23:45:29.428693832 +0200 +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/btstream.cpp ctorrent-1.3.4/btstream.cpp +--- ctorrent-1.3.4.sav/btstream.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/btstream.cpp 2006-06-28 19:30:02.000000000 +0200 @@ -1,5 +1,6 @@ #include <arpa/inet.h> #include "btstream.h" @@ -442,7 +2927,7 @@ diff -u ctorrent-1.3.4.orig/btstream.cpp ctorrent-1.3.4/btstream.cpp #include "msgencode.h" #include "btconfig.h" -@@ -11,7 +12,8 @@ +@@ -11,22 +12,21 @@ ssize_t btStream::Send_State(unsigned char state) { char msg[H_BASE_LEN + 4]; @@ -450,9 +2935,10 @@ diff -u ctorrent-1.3.4.orig/btstream.cpp ctorrent-1.3.4/btstream.cpp + + set_nl(msg, H_BASE_LEN); msg[4] = (char)state; - return out_buffer.PutFlush(sock,msg,H_BASE_LEN + 4); +- return out_buffer.PutFlush(sock,msg,H_BASE_LEN + 4); ++ return out_buffer.Put(sock,msg,H_BASE_LEN + 4); } -@@ -19,12 +21,10 @@ + ssize_t btStream::Send_Have(size_t idx) { char msg[H_HAVE_LEN + 4]; @@ -465,9 +2951,19 @@ diff -u ctorrent-1.3.4.orig/btstream.cpp ctorrent-1.3.4/btstream.cpp - *p = htonl(idx); + set_nl(msg + 5, idx); - return out_buffer.PutFlush(sock,msg,H_HAVE_LEN + 4); +- return out_buffer.PutFlush(sock,msg,H_HAVE_LEN + 4); ++ return out_buffer.Put(sock,msg,H_HAVE_LEN + 4); } -@@ -43,14 +43,12 @@ + + ssize_t btStream::Send_Bitfield(char *bit_buf,size_t len) +@@ -37,20 +37,18 @@ + if(r < 0) return r; + r = out_buffer.Put(sock,(char*)&t,1); + if(r < 0) return r; +- return out_buffer.PutFlush(sock,bit_buf,len); ++ return out_buffer.Put(sock,bit_buf,len); + } + ssize_t btStream::Send_Cancel(size_t idx,size_t off,size_t len) { char msg[H_CANCEL_LEN + 4]; @@ -486,7 +2982,7 @@ diff -u ctorrent-1.3.4.orig/btstream.cpp ctorrent-1.3.4/btstream.cpp return out_buffer.Put(sock,msg,H_CANCEL_LEN + 4); } -@@ -72,14 +70,12 @@ +@@ -72,21 +70,19 @@ ssize_t btStream::Send_Request(size_t idx, size_t off,size_t len) { char msg[H_REQUEST_LEN + 4]; @@ -505,6 +3001,14 @@ diff -u ctorrent-1.3.4.orig/btstream.cpp ctorrent-1.3.4/btstream.cpp return out_buffer.Put(sock,msg,H_REQUEST_LEN + 4); } + ssize_t btStream::Send_Keepalive() + { + size_t i = 0; +- return out_buffer.PutFlush(sock,(char*)&i,4); ++ return out_buffer.Put(sock,(char*)&i,4); + } + + int btStream::HaveMessage() @@ -94,7 +90,7 @@ // if message arrived. size_t r; @@ -514,14 +3018,4710 @@ diff -u ctorrent-1.3.4.orig/btstream.cpp ctorrent-1.3.4/btstream.cpp if( (cfg_max_slice_size + H_PIECE_LEN + 4) < r) return -1; //message too long if( (r + 4) <= in_buffer.Count() ) return 1; } -diff -u ctorrent-1.3.4.orig/ctorrent.cpp ctorrent-1.3.4/ctorrent.cpp ---- ctorrent-1.3.4.orig/ctorrent.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/ctorrent.cpp 2005-08-11 23:45:29.428693832 +0200 -@@ -87,9 +87,13 @@ - Tracker.Initial(); +@@ -113,5 +109,5 @@ + + ssize_t btStream::Send_Buffer(char *buf, size_t len) + { +- return out_buffer.PutFlush(sock,buf,len); ++ return out_buffer.Put(sock,buf,len); + } +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/bttime.h ctorrent-1.3.4/bttime.h +--- ctorrent-1.3.4.sav/bttime.h 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/bttime.h 2006-06-28 19:30:02.000000000 +0200 +@@ -0,0 +1,7 @@ ++#ifndef BTTIME_H ++#define BTTIME_H ++ ++extern time_t now; ++ ++#endif ++ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/bufio.cpp ctorrent-1.3.4/bufio.cpp +--- ctorrent-1.3.4.sav/bufio.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/bufio.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -61,7 +61,7 @@ + #ifndef WINDOWS + if(errno == EINTR) continue; + #endif +- return (EWOULDBLOCK == errno) ? (ssize_t)t : -1; ++ return (EWOULDBLOCK == errno || EAGAIN == errno) ? (ssize_t)t : -1; + }else if( 0 == r ){ + return t; // no possible??? + }else{ +@@ -83,7 +83,7 @@ + #ifndef WINDOWS + if(errno == EINTR) continue; + #endif +- return (EWOULDBLOCK == errno) ? (ssize_t)t : -1; ++ return (EWOULDBLOCK == errno || EAGAIN == errno) ? (ssize_t)t : -1; + }else if( 0 == r ){ + f_socket_remote_closed = 1; + return t; //connection closed by remote. +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/bufio.h ctorrent-1.3.4/bufio.h +--- ctorrent-1.3.4.sav/bufio.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/bufio.h 2006-06-28 19:30:02.000000000 +0200 +@@ -1,8 +1,8 @@ + #ifndef BUFIO_H + #define BUFIO_H + +-#include <sys/types.h> + #include "def.h" ++#include <sys/types.h> + + #ifdef WINDOWS + #include <Winsock2.h> +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/ChangeLog ctorrent-1.3.4/ChangeLog +--- ctorrent-1.3.4.sav/ChangeLog 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/ChangeLog 2006-06-28 19:30:02.000000000 +0200 +@@ -1 +1,379 @@ +-*EMPTY* ++ ++ Enhanced CTorrent Change Log ++ _________________________________________________________________ ++ ++ Changes for "dnh2" Release ++ ++ Patches ++ * The following patches or their functionality are incorporated: ++ 1380164 [dnh1.2] ++ 1357832 [invert] (included in dnh1.2) ++ 1352866 [dnh1.1] ++ 1266767 [passkey2] ++ 1239547 [dnh1] ++ 1170457 [standalone-sha1] Added as a fallback case in configure if ++ OpenSSL is not found. To force it to be used, define ++ USE_STANDALONE_SHA1 in config.h (after running configure). ++ 1164454 [ip] ++ 1119610 [vfat] This bug appears to be linux-specific; I've tried ++ to handle it in a more general way that may apply to similar ++ situations on other platforms and filesystems, but I have limited ++ capability to test this. ++ 1067196 [lfs] This is the large-file support that many have asked ++ for. ++ ++ Optimization ++ * Use fewer call to random() by shifting the previously unused bits. ++ * Time() calls have been greatly reduced; a global timestamp ++ variable "now" is set once per main loop interation and referenced ++ in functions that need a timestamp (except the caching I/O ++ routines which were left alone). ++ * Overall current bandwidth rates are now computed only once per ++ main loop and referenced in any routines that evaluate or control ++ bandwidth. ++ * Avoid flushing peer output buffers except in SendModule. This ++ allows for some consolidation of messages to reduce network ++ overhead. ++ ++ Code Fixes ++ * Fixed use of cfg_req_queue_length to be the actual queue size ++ (queue was half of this value). ++ * Fixed: "peer is" verbose output could fubar the terminal. ++ * Formatting: Replaced indentation tabs with spaces for consistency. ++ ++ Operational Enhancements ++ * Improved piece selection methods to include rarity as a factor. ++ This is not strictly "rarest-first", as we do not make a ++ comprehensive effort to find the "rarest" piece or rank pieces by ++ rarity. Rather, we use a more efficient compromise and try to find ++ the set of pieces that have "trade value" (another peer needs ++ them) and make a random choice from that set. Here is the current ++ preference order used in each mode: ++ Trade Value is defined as: ++ 1. Piece that only this peer has (not considering other ++ seeders), that a peer in which we're interested needs. ++ 2. Piece that not every peer in which we're interested has. ++ 3. Piece that only this peer has (not considering other ++ seeders). ++ 4. Piece that not every peer has. ++ Normal Mode ++ 1. Piece we tried to get from another peer but stopped due to ++ choking or lost connection. (We have part of the piece ++ already.) ++ 2. Piece most recently acquired by the peer (possibly/probably ++ rare). ++ 3. Piece with trade value. ++ 4. Any piece not yet requested. ++ Initial-piece Mode ++ 1. Piece with trade value which is already in progress. ++ 2. Piece with trade value that more than one peer has. ++ 3. Piece with trade value. ++ 4. Any piece not yet requested. ++ Endgame Mode ++ 1. Piece with trade value which is already in progress, of which ++ we have the least amount. ++ 2. Piece already in progress of which we have the least amount. ++ * Advanced request queueing system. ++ + Instead of requesting all of the slices for a piece at one ++ time, we now measure latency to the peer and send requests ++ based on how long it takes the data to arrive. This avoids ++ wasting upload banwidth by having too many outstanding ++ requests: If we get choked or lose the connection, the extra ++ requests were wasted; in initial or endgame modes, more ++ requests would have to be cancelled when we completed the ++ piece. ++ + A new piece will be queued for download when there is space ++ in the queue and we've requested the slices that have been ++ queued already. We also don't wait for the current piece to ++ complete before sending requests for a new piece. This helps ++ to maintain a continuous flow of data in the download ++ pipeline. ++ + When duplicating a request in initial or endgame mode, slices ++ that have already been requested are queued last. ++ * Don't send HAVE messages to seeders (to save UL bandwidth). ++ + Since we maintain interested state, and know the peer is a ++ seeder, we'll do the right thing when we become a seeder. ++ + Not sending HAVE to all peers (leechers) that already have ++ the piece is a bad idea IMO. If everyone takes the same ++ attitude, none of us will know when another becomes a seeder ++ and connections will remain open/occupied. ++ + We do send a HAVE to seeders upon completing our first piece ++ so that we don't continue to appear empty. ++ * Endgame strategy is used in get1file mode to complete the file. ++ * Queue management: ++ + Don't accept requests from choked peers. ++ + Discard peer's reponse_q when we choke them. ++ + Don't send cancels when we get choked (according to spec & ++ discussions). ++ + Don't put full piece queues in pending. ++ + Move closing peer's request queue to pending instead of ++ discarding it. ++ * Prefer uploading to or downloading from a peer after we skip them ++ due to bandwidth limiting. This is done via the g_next_up and ++ g_defer_up global variables in peer.cpp (for UL; s/up/dn for the ++ DL versions). The peerlist Sort() function and peer "click" ++ variables have been removed since they are not needed with this ++ feature. ++ ++ Options & Features ++ * The -c option now reports file completion status. ++ + As a side effect the metainfo details are printed twice. This ++ allows you to view the torrent contents while pieces are ++ being verified. ++ + Total percentage completion is also added to the output. ++ * "-E" option to seed to a specified UL:DL ratio. Seeding will stop ++ when this ratio or the timeout (-e) is reached. If CTorrent starts ++ as a seeder, the ratio is interpreted as UL:[torrent size]. ++ * If "-e 0" is specified (explicitly) and -E is used, there will be ++ no timeout; seeding will continue until the ratio is reached. ++ * The "-m" option previously didn't do anything, and it isn't clear ++ what it was originally going to do. Now the default value is 1, ++ and CTorrent will try to maintain at least this many peers by ++ contacting the tracker early if the peer count falls below this ++ value. This feature was present in release dnh1 but the value was ++ not changeable. ++ Actually it seems likely that this was to be number of peers that ++ the client would try to obtain (by initiating connections), as the ++ "official" client does; this is mentioned as a note in the online ++ specification. I don't really see the value in that though. That ++ said, the option as implemented here should rarely be used. It ++ might be useful only with torrents that have significantly more ++ than max_peers total peers and use a long tracker update interval ++ (such that you tend to drop a lot of peers betwen updates). ++ * "-z" option to set the slice size (the unit of a request, i.e. the ++ discrete amount of data that will be requested from a peer at one ++ time). The slice size now defaults to 16K regardless of the piece ++ length. Request queue size is computed and set based on the slice ++ size, as it now affects only system resources (though not a lot) ++ and not the way that requests are sent. ++ * Add support for "key" and "trackerid" tracker interaction ++ parameters. ++ * Support/display tracker warning message ++ * Now able to handle torrents with more than 255 files. ++ * Support for [1]CTorrent Control Server, an application and ++ protocol for monitoring and managing multiple Enhanced CTorrent ++ clients. The "-S" option is used to connect to CTCS, as in "-S ++ localhost:2780" if CTCS is listening at port 2780 on the local ++ system. Appending a colon ("-S localhost:2780:") will prompt for a ++ password to authenticate with CTCS. ++ ++ Peer Handling ++ * Count immediate choke-unchoke (either order) as an error (two ++ errors actually, since it's so wasteful). ++ It may be that some clients do this to stimulate the peer when ++ they think it hasn't responded to their last unchoke (due to high ++ latency). It would be better for them to just repeat the unchoke ++ rather than choke-unchoke, as by choking they will cause the peer ++ to send the requests again. ++ * Detect unresponsive peer connections and try to fix them or ++ disconnect them. Basically, if a peer doesn't respond to our ++ request in a reasonable time then we first assume that our request ++ was lost in transmission; if it happens again then we assume the ++ connection is unreliable. ++ * Handle peers that suppress HAVE messages so we don't always think ++ that they're empty (and thus give them preferential treatment for ++ uploading). If we've sent the peer an amount of data equivalent to ++ two pieces, assume that they now have at least one complete piece. ++ _________________________________________________________________ ++ ++ Changes for "dnh1.2" Release ++ ++ These are just corrections to the previous release that I felt were ++ necessary. Much more improvement is coming in the dnh2 release. ++ ++ Bug/code fixes ++ * Bitfield::Invert patch [1357832 on sourceforge] described below. ++ * Fixed "piece length too long" check to reflect the actual queue ++ length used. ++ * Accept 128K slice size for peer requests. ++ * "Return" keyword in Random_init() removed due to potential compile ++ error. ++ * Modified longer-wait test in the optimistic unchoke routine to ++ consider whether the peer is currently choked. ++ _________________________________________________________________ ++ ++ Bitfield::Invert bug ++ ++ There is a bug in the Bitfield::Invert() function that affects the ++ ctorrent-1.3.4 base code as well as releases dnh1 and dnh1.1. This can ++ cause the application to fail (segmentation fault) or may affect ++ downloading of all pieces of the torrent. A patch is available in the ++ Download secion. ++ _________________________________________________________________ ++ ++ Changes for "dnh1.1" Release ++ ++ These are just corrections to the previous release that I felt were ++ necessary. Much more improvement is coming in the next release. ++ ++ Bug/code fixes ++ * Peer count would increase on each tracker update if there were no ++ seeders. ++ * RequestQueue::CopyShuffle() changed to use a pointer argument. ++ * Fixed some incorrectness in PendingQueue::Delete() and ++ PendingQueue::DeleteSlice() which could cause a memory leak. ++ * Fixed random-chance inversion bug in PeerList::UnChokeCheck() ++ affecting choice for optimistic unchoking. ++ ++ Improvements ++ * Move StopDLTimer() call from RequestPiece() to RequestCheck(), ++ which could occasionally affect peer download rate measurement. ++ * Most clients do not like a slice size of 128K even though it is ++ the max allowed by the BT specification. Changed max slice size to ++ 64K. Note that the maximum piece length is 2MB (2097152); if you ++ need to download a torrent with a larger piece size you can change ++ the value of cfg_req_queue_length in btconfig.h from 64 to 128. ++ * Contact tracker immediately upon becoming (or starting as) a ++ seeder. ++ * Changed SendModule() to send only one slice at a time. This will ++ help with fairly distributing upload bandwidth among the unchoked ++ peers. ++ * Changed default peer ID prefix to '-CD0101-', indicating ++ CTorrent-dnh1.1 release. ++ _________________________________________________________________ ++ ++ Changes for "dnh1" Release ++ ++ This is the first release. "dnh" identifies this patchset, and "1" ++ indicates release version 1 of the patchset. ++ ++ Patches ++ * Incorporates the following patches. The number is the Request ID ++ from the [2]SourceForge patches page, which you can reference for ++ the details of each patch. The name in brackets is the name of the ++ patch file or a name I chose to refer to the patch. Some of these ++ names are used below (in brackets) to describe a fix or change to ++ a particular patch. ++ 1042808 [getcwd] (incorporated in get1file patch) ++ 1084776 [passkey] (incorporated in udlimit patch) ++ 1109266 [align] ++ 1109287 [tracker/tracker2] ++ 1114197 [fmt] (incorporated in get1file patch) ++ 1114364 [resetdl] ++ 1116448 [get1file] ++ 1118597 [crash] ++ 1119467 [stall] ++ 1119492 [rate] ++ 1119497 [flush] ++ 1119519 [opt] ++ 1119689 [status] ++ 1124342 [udlimit] ++ ++ Download performance ++ * If a peer socket is ready for reading and writing, perform both. ++ Previously the cases were exclusive, with preference given to ++ reading. ++ * Download requests are now made to peers when they are ready for ++ writing (in addition to the existing event-driven cases). This ++ fixes peer stalls when a request couldn't be sent in an ++ event-triggered case due to bandwidth limiting or other ++ circumstances. ++ * Additional tests added so that the above request checking doesn't ++ create hard loops. ++ ++ Bandwidth measurement/management ++ * [rate] Bandwidth reporting is now not capped. Also, only the time ++ used for the samples taken is used in the calculation rather than ++ the maximum interval (this affects rate calculation for individual ++ peers). ++ * Additional upload and download bandwidth limit checks added so ++ that bw management is more accurate. ++ * Corrected condition inversion bug in Rate::StopTimer(), which ++ affects peer rate calculations. ++ ++ Peer count ++ * Request our max number of peers from the tracker each time rather ++ than just taking the tracker's default, so we can try to fill up. ++ * The tracker will be contacted early if all peers disconnect so ++ that we can actively try to establish some more peer connections. ++ To avoid hammering the tracker, we must have at least one peer for ++ 15 seconds in order for this to be invoked. ++ * Some clients use nonzero bytes in the "reserved" part of the ++ handshake. Added code to ignore the reserved bytes if the rest of ++ the handshake is as expected. This includes Azureus 2300 thru 2304 ++ (latest) which gives 0x80 as the first reserved byte and BitComet ++ which gives 0x6578 ("ex") as the first two bytes. ++ * Update peer's timestamp on any message, not just keepalives. Any ++ receipt of data from a peer now resets its timeout, preventing ++ early disconnect. ++ ++ Parallel requests ++ * Initial-piece and endgame cases have been improved so that pieces ++ will be requested from multiple peers. Cancels are sent as slices ++ (subpieces) are received. This endgame strategy is described in ++ the BitTorrent online spec. The startup strategy is also described ++ in posts and facilitates obtaining a single piece more rapidly in ++ order to obtain some trade value. In initial mode, the piece of ++ which we need the least parts is targeted. In endgame mode, the ++ piece of which we need the most parts is targeted. Slices that are ++ cancelled are also removed from the "pending" queue, as are pieces ++ that are completed. ++ * When duplicating a piece request, the slice request order is also ++ shuffled in order to minimize duplication of effort. ++ ++ Tracker info ++ * [status] Seems to be missing tracker.cpp diff. Added code to get ++ tracker's total peers, but not all trackers report these fields in ++ the normal response. Also added code to count successful updates ++ from the tracker. ++ * Added tracker connection state to status line (when ++ connecting/connected). ++ ++ Tracker contact ++ * When interrupting (ctrl-C), connect to the tracker immediately ++ rather than waiting 15 seconds. ++ * Contact tracker "soon" after transitioning to seeder state. ++ ++ Peer interaction ++ * Manage our interested state for each peer dynamically as content ++ changes. ++ * Unchoking ++ + Use the peer's interested state (confirming via the bitfield ++ that it needs our data) to consider unchoking. Using only the ++ bitfield could cause us to waste an upload slot on a peer ++ that doesn't have all content but isn't interested (like a ++ single-file downloader). ++ + Choke peers that become uninterested or don't need our data. ++ + Try unchoking new peers only as slots open or the optimistic ++ unchoke rotates. Unchoking too many peers can temporarily ++ reduce per-peer upload rates, which would make uploading to ++ us unappealing for good peers. ++ + In a tie for download speed, prefer to unchoke the peer to ++ whom we've uploaded the least data relative to what we've ++ downloaded from him. ++ * Optimistic unchoking ++ + Fixed condition inversion bug causing opt unchoking to occur ++ too often. ++ + A peer who has no pieces is now preferred 75% vs. a peer who ++ already has at least one piece, in order to help the new peer ++ become productive. This is documented in the online spec. ++ + Set peer's last-unchoke-time when choking the peer to get ++ better rotation of the optimistic unchoke. The value is now ++ the last time that a peer was in the unchoked state rather ++ than the time of the last unchoke event. ++ ++ Miscellaneous items ++ * [tracker] Fixed normal program end (stop) process, which was ++ crashing. ++ * [get1file] Restore compact tracker response support. ++ * [get1file] Made display of the status line info dependent on ++ whether the option is in use. ++ * [get1file] Apply the filter when checking for what we need from a ++ peer instead of when recording what the peer has; this prevents ++ stalls when we move on to the next file. Update interested state ++ for each peer when we begin a new file. Also move the file-done ++ check into the piece completion code and check whether the next ++ file(s) has also been completed. ++ * Reduced the slice size from 32K to 16K (same as BT & Azureus). ++ This provides more precise DL rate measurement, and helps insure ++ that we receive a productive amount of data (i.e. a complete ++ slice) even if we are unchoked by a peer for only one cycle. See ++ [3]http://groups.yahoo.com/group/BitTorrent/message/1260 for more ++ discussion/analysis on this. ++ * Added -v (verbose) option for additional debugging output. ++ ++References ++ ++ 1. http://www.rahul.net/dholmes/ctorrent/ctcs.html ++ 2. http://sourceforge.net/tracker/?atid=598034&group_id=91688&func=browse ++ 3. http://groups.yahoo.com/group/BitTorrent/message/1260 +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/config.h.in ctorrent-1.3.4/config.h.in +--- ctorrent-1.3.4.sav/config.h.in 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/config.h.in 2006-06-28 19:30:02.000000000 +0200 +@@ -10,6 +10,9 @@ + /* Define to 1 if you have the <fcntl.h> header file. */ + #undef HAVE_FCNTL_H + ++/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ ++#undef HAVE_FSEEKO ++ + /* Define to 1 if you have the `ftruncate' function. */ + #undef HAVE_FTRUNCATE + +@@ -31,6 +34,9 @@ + /* Define to 1 if you have the `crypt' library (-lcrypt). */ + #undef HAVE_LIBCRYPT + ++/* Define to 1 if you have the `crypto' library (-lcrypto). */ ++#undef HAVE_LIBCRYPTO ++ + /* Define to 1 if you have the `md' library (-lmd). */ + #undef HAVE_LIBMD + +@@ -107,6 +113,9 @@ + /* Define to 1 if you have the `strtol' function. */ + #undef HAVE_STRTOL + ++/* Define to 1 if you have the `strtoll' function. */ ++#undef HAVE_STRTOLL ++ + /* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. + */ + #undef HAVE_SYS_DIR_H +@@ -164,15 +173,29 @@ + /* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ + #undef TIME_WITH_SYS_TIME + ++/* Define to 1 to use the Steve Reid's public-domain SHA-1 code. */ ++#undef USE_STANDALONE_SHA1 ++ + /* Version number of package */ + #undef VERSION + ++/* Number of bits in a file offset, on hosts where this is settable. */ ++#undef _FILE_OFFSET_BITS ++ ++/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ ++#undef _LARGEFILE_SOURCE ++ ++/* Define for large files, on AIX-style hosts. */ ++#undef _LARGE_FILES ++ + /* Define to empty if `const' does not conform to ANSI C. */ + #undef const + +-/* Define as `__inline' if that's what the C compiler calls it, or to nothing +- if it is not supported. */ ++/* Define to `__inline__' or `__inline' if that's what the C compiler ++ calls it, or to nothing if 'inline' is not supported under any name. */ ++#ifndef __cplusplus + #undef inline ++#endif + + /* Define to `unsigned' if <sys/types.h> does not define. */ + #undef size_t +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/configure ctorrent-1.3.4/configure +--- ctorrent-1.3.4.sav/configure 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/configure 2006-06-28 19:30:02.000000000 +0200 +@@ -1,11 +1,10 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.57 for CTorrent devel. ++# Generated by GNU Autoconf 2.59 for CTorrent dnh2. + # +-# Report bugs to <bsdi@sina.com>. ++# Report bugs to <dholmes@ct.boxmail.com>. + # +-# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +-# Free Software Foundation, Inc. ++# Copyright (C) 2003 Free Software Foundation, Inc. + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. + ## --------------------- ## +@@ -22,9 +21,10 @@ + elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix + fi ++DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset + else + as_unset=false +@@ -43,7 +43,7 @@ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME + do +- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var +@@ -220,16 +220,17 @@ + if mkdir -p . 2>/dev/null; then + as_mkdir_p=: + else ++ test -d ./-p && rmdir ./-p + as_mkdir_p=false + fi + + as_executable_p="test -f" + + # Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + + # Sed expression to map a string onto a valid variable name. +-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + # IFS +@@ -268,9 +269,9 @@ + # Identity of this package. + PACKAGE_NAME='CTorrent' + PACKAGE_TARNAME='ctorrent' +-PACKAGE_VERSION='devel' +-PACKAGE_STRING='CTorrent devel' +-PACKAGE_BUGREPORT='bsdi@sina.com' ++PACKAGE_VERSION='dnh2' ++PACKAGE_STRING='CTorrent dnh2' ++PACKAGE_BUGREPORT='dholmes@ct.boxmail.com' + + ac_unique_file="ctorrent.cpp" + # Factoring default headers for most tests. +@@ -310,7 +311,7 @@ + # include <unistd.h> + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE am__leading_dot CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LIBOBJS LTLIBOBJS' ++ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar CXX CXXFLAGS LDFLAGS CPPFLAGS ac_ct_CXX EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CC CFLAGS ac_ct_CC CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP LIBOBJS LTLIBOBJS' + ac_subst_files='' + + # Initialize some variables set by options. +@@ -669,7 +670,7 @@ + + # Be sure to have absolute paths. + for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++ localstatedir libdir includedir oldincludedir infodir mandir + do + eval ac_val=$`echo $ac_var` + case $ac_val in +@@ -709,10 +710,10 @@ + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || + $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$0" : 'X\(//\)[^/]' \| \ +- X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(//\)[^/]' \| \ ++ X"$0" : 'X\(//\)$' \| \ ++ X"$0" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$0" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -787,7 +788,7 @@ + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +-\`configure' configures CTorrent devel to adapt to many kinds of systems. ++\`configure' configures CTorrent dnh2 to adapt to many kinds of systems. + + Usage: $0 [OPTION]... [VAR=VALUE]... + +@@ -812,9 +813,9 @@ + cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX +- [$ac_default_prefix] ++ [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX +- [PREFIX] ++ [PREFIX] + + By default, \`make install' will install all the files in + \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +@@ -849,15 +850,16 @@ + + if test -n "$ac_init_help"; then + case $ac_init_help in +- short | recursive ) echo "Configuration of CTorrent devel:";; ++ short | recursive ) echo "Configuration of CTorrent dnh2:";; + esac + cat <<\_ACEOF + + Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +- --disable-dependency-tracking Speeds up one-time builds +- --enable-dependency-tracking Do not reject slow dependency extractors ++ --disable-dependency-tracking speeds up one-time build ++ --enable-dependency-tracking do not reject slow dependency extractors ++ --disable-largefile omit support for large files + + Some influential environment variables: + CXX C++ compiler command +@@ -873,7 +875,7 @@ + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. + +-Report bugs to <bsdi@sina.com>. ++Report bugs to <dholmes@ct.boxmail.com>. + _ACEOF + fi + +@@ -907,12 +909,45 @@ + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; + esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` ++ ++# Do not use `cd foo && pwd` to compute absolute paths, because ++# the directories may not exist. ++case `pwd` in ++.) ac_abs_builddir="$ac_dir";; ++*) ++ case "$ac_dir" in ++ .) ac_abs_builddir=`pwd`;; ++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ++ *) ac_abs_builddir=`pwd`/"$ac_dir";; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_builddir=${ac_top_builddir}.;; ++*) ++ case ${ac_top_builddir}. in ++ .) ac_abs_top_builddir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_srcdir=$ac_srcdir;; ++*) ++ case $ac_srcdir in ++ .) ac_abs_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_srcdir=$ac_top_srcdir;; ++*) ++ case $ac_top_srcdir in ++ .) ac_abs_top_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ++ esac;; ++esac + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style configure. +@@ -923,7 +958,7 @@ + echo + $SHELL $ac_srcdir/configure --help=recursive + elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then ++ test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else +@@ -936,11 +971,10 @@ + test -n "$ac_init_help" && exit 0 + if $ac_init_version; then + cat <<\_ACEOF +-CTorrent configure devel +-generated by GNU Autoconf 2.57 ++CTorrent configure dnh2 ++generated by GNU Autoconf 2.59 + +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +-Free Software Foundation, Inc. ++Copyright (C) 2003 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF +@@ -951,8 +985,8 @@ + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + +-It was created by CTorrent $as_me devel, which was +-generated by GNU Autoconf 2.57. Invocation command line was ++It was created by CTorrent $as_me dnh2, which was ++generated by GNU Autoconf 2.59. Invocation command line was + + $ $0 $@ + +@@ -1029,19 +1063,19 @@ + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then +- ac_must_keep_next=false # Got value, back to normal. ++ ac_must_keep_next=false # Got value, back to normal. + else +- case $ac_arg in +- *=* | --config-cache | -C | -disable-* | --disable-* \ +- | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ +- | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ +- | -with-* | --with-* | -without-* | --without-* | --x) +- case "$ac_configure_args0 " in +- "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; +- esac +- ;; +- -* ) ac_must_keep_next=true ;; +- esac ++ case $ac_arg in ++ *=* | --config-cache | -C | -disable-* | --disable-* \ ++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ++ | -with-* | --with-* | -without-* | --without-* | --x) ++ case "$ac_configure_args0 " in ++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ++ esac ++ ;; ++ -* ) ac_must_keep_next=true ;; ++ esac + fi + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. +@@ -1075,12 +1109,12 @@ + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ +- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ++ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; + } +@@ -1109,7 +1143,7 @@ + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi +@@ -1128,7 +1162,7 @@ + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 +- rm -f core core.* *.core && ++ rm -f core *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +@@ -1208,7 +1242,7 @@ + # value. + ac_cache_corrupted=false + for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" +@@ -1225,13 +1259,13 @@ + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then +- { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 ++ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 + echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} +- { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 ++ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 + echo "$as_me: former value: $ac_old_val" >&2;} +- { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 ++ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 + echo "$as_me: current value: $ac_new_val" >&2;} +- ac_cache_corrupted=: ++ ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. +@@ -1287,7 +1321,7 @@ + + + +-am__api_version="1.7" ++am__api_version="1.9" + ac_aux_dir= + for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f $ac_dir/install-sh; then +@@ -1324,6 +1358,7 @@ + # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag + # AFS /usr/afsws/bin/install, which mishandles nonexistent args + # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" ++# OS/2's system install, which has a completely different semantic + # ./install, which can be erroneously created by make from ./install.sh. + echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 + echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +@@ -1340,6 +1375,7 @@ + case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ++ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. +@@ -1347,20 +1383,20 @@ + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then +- if test $ac_prog = install && +- grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # AIX install. It has an incompatible calling convention. +- : +- elif test $ac_prog = install && +- grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +- # program-specific install script used by HP pwplus--don't use. +- : +- else +- ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" +- break 3 +- fi +- fi ++ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then ++ if test $ac_prog = install && ++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # AIX install. It has an incompatible calling convention. ++ : ++ elif test $ac_prog = install && ++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then ++ # program-specific install script used by HP pwplus--don't use. ++ : ++ else ++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" ++ break 3 ++ fi ++ fi + done + done + ;; +@@ -1448,7 +1484,6 @@ + program_transform_name=`echo $program_transform_name | sed -f conftest.sed` + rm conftest.sed + +- + # expand $ac_aux_dir to an absolute path + am_aux_dir=`cd $ac_aux_dir && pwd` + +@@ -1462,6 +1497,39 @@ + echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + fi + ++if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then ++ # We used to keeping the `.' as first argument, in order to ++ # allow $(mkdir_p) to be used without argument. As in ++ # $(mkdir_p) $(somedir) ++ # where $(somedir) is conditionally defined. However this is wrong ++ # for two reasons: ++ # 1. if the package is installed by a user who cannot write `.' ++ # make install will fail, ++ # 2. the above comment should most certainly read ++ # $(mkdir_p) $(DESTDIR)$(somedir) ++ # so it does not work when $(somedir) is undefined and ++ # $(DESTDIR) is not. ++ # To support the latter case, we have to write ++ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), ++ # so the `.' trick is pointless. ++ mkdir_p='mkdir -p --' ++else ++ # On NextStep and OpenStep, the `mkdir' command does not ++ # recognize any option. It will interpret all options as ++ # directories to create, and then abort because `.' already ++ # exists. ++ for d in ./-p ./--version; ++ do ++ test -d $d && rmdir $d ++ done ++ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. ++ if test -f "$ac_aux_dir/mkinstalldirs"; then ++ mkdir_p='$(mkinstalldirs)' ++ else ++ mkdir_p='$(install_sh) -d' ++ fi ++fi ++ + for ac_prog in gawk mawk nawk awk + do + # Extract the first word of "$ac_prog", so it can be a program name with args. +@@ -1504,7 +1572,7 @@ + + echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 + echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +-set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` ++set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` + if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1540,7 +1608,7 @@ + fi + rmdir .tst 2>/dev/null + +- # test to see if srcdir already configured ++# test to see if srcdir already configured + if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +@@ -1560,7 +1628,7 @@ + + # Define the identity of the package. + PACKAGE=ctorrent +- VERSION=devel ++ VERSION=dnh2 + + + cat >>confdefs.h <<_ACEOF +@@ -1588,9 +1656,6 @@ + + MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - signal(SIGPIPE,SIG_IGN); +- +-AMTAR=${AMTAR-"${am_missing_run}tar"} +- + install_sh=${install_sh-"$am_aux_dir/install-sh"} + + # Installed binaries are usually stripped using `strip' when the user +@@ -1683,6 +1748,13 @@ + + # We need awk for the "check" target. The system "awk" is bad on + # some platforms. ++# Always define AMTAR for backward compatibility. ++ ++AMTAR=${AMTAR-"${am_missing_run}tar"} ++ ++am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ++ ++ + + + +@@ -1806,7 +1878,6 @@ + (exit $ac_status); } + + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -1826,8 +1897,8 @@ + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:$LINENO: checking for C++ compiler default output" >&5 +-echo $ECHO_N "checking for C++ compiler default output... $ECHO_C" >&6 ++echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 ++echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6 + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 +@@ -1847,23 +1918,23 @@ + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; ++ ;; + conftest.$ac_ext ) +- # This is the source file. +- ;; ++ # This is the source file. ++ ;; + [ab].out ) +- # We found the default executable, but exeext='' is most +- # certainly right. +- break;; ++ # We found the default executable, but exeext='' is most ++ # certainly right. ++ break;; + *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext +- break;; ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ # FIXME: I believe we export ac_cv_exeext for Libtool, ++ # but it would be cool to find out if it's true. Does anybody ++ # maintain Libtool? --akim. ++ export ac_cv_exeext ++ break;; + * ) +- break;; ++ break;; + esac + done + else +@@ -1937,8 +2008,8 @@ + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext +- break;; ++ export ac_cv_exeext ++ break;; + * ) break;; + esac + done +@@ -1963,7 +2034,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2014,7 +2084,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2034,11 +2103,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_cxx_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -2051,7 +2130,7 @@ + + ac_compiler_gnu=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + + fi +@@ -2067,7 +2146,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2084,11 +2162,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_cxx_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -2101,7 +2189,7 @@ + + ac_cv_prog_cxx_g=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 + echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 +@@ -2121,8 +2209,7 @@ + fi + fi + for ac_declaration in \ +- ''\ +- '#include <stdlib.h>' \ ++ '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ +@@ -2130,14 +2217,13 @@ + 'void exit (int);' + do + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <stdlib.h> + $ac_declaration ++#include <stdlib.h> + int + main () + { +@@ -2148,11 +2234,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_cxx_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -2165,9 +2261,8 @@ + + continue + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2184,11 +2279,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_cxx_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -2200,7 +2305,7 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done + rm -f conftest* + if test -n "$ac_declaration"; then +@@ -2321,7 +2426,9 @@ + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c +- : > sub/conftst$i.h ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +@@ -2349,9 +2456,14 @@ + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings +- # (even with -Werror). So we grep stderr for any message +- # that says an option was ignored. +- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi +@@ -2723,7 +2835,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2743,11 +2854,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -2760,7 +2881,7 @@ + + ac_compiler_gnu=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +@@ -2776,7 +2897,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2793,11 +2913,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -2810,7 +2940,7 @@ + + ac_cv_prog_cc_g=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 + echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 +@@ -2837,7 +2967,6 @@ + ac_cv_prog_cc_stdc=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2865,6 +2994,16 @@ + va_end (v); + return s; + } ++ ++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has ++ function prototypes and stuff, but not '\xHH' hex character constants. ++ These don't provoke an error unfortunately, instead are silently treated ++ as 'x'. The following induces an error, until -std1 is added to get ++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an ++ array size at least. It's necessary to write '\x00'==0 to get something ++ that's true only with -std1. */ ++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -2891,11 +3030,21 @@ + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -2908,7 +3057,7 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext ++rm -f conftest.err conftest.$ac_objext + done + rm -f conftest.$ac_ext conftest.$ac_objext + CC=$ac_save_CC +@@ -2936,19 +3085,28 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ +- ''\ +- '#include <stdlib.h>' \ ++ '' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ +@@ -2956,14 +3114,13 @@ + 'void exit (int);' + do + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +-#include <stdlib.h> + $ac_declaration ++#include <stdlib.h> + int + main () + { +@@ -2974,11 +3131,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -2991,9 +3158,8 @@ + + continue + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3010,11 +3176,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3026,7 +3202,7 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done + rm -f conftest* + if test -n "$ac_declaration"; then +@@ -3040,7 +3216,7 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -3088,7 +3264,9 @@ + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c +- : > sub/conftst$i.h ++ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with ++ # Solaris 8's {/usr,}/bin/sh. ++ touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + +@@ -3116,9 +3294,14 @@ + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings +- # (even with -Werror). So we grep stderr for any message +- # that says an option was ignored. +- if grep 'ignoring option' conftest.err >/dev/null 2>&1; then :; else ++ # or remarks (even with -Werror). So we grep stderr for any message ++ # that says an option was ignored or not supported. ++ # When given -MP, icc 7.0 and 7.1 complain thusly: ++ # icc: Command line warning: ignoring option '-M'; no argument required ++ # The diagnosis changed in icc 8.0: ++ # icc: Command line remark: option '-MP' not supported ++ if (grep 'ignoring option' conftest.err || ++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi +@@ -3161,7 +3344,6 @@ + ac_check_lib_save_LIBS=$LIBS + LIBS="-lssl $LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3185,11 +3367,21 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++ (eval $ac_link) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3202,7 +3394,8 @@ + + ac_cv_lib_ssl_SHA1_Init=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi + echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SHA1_Init" >&5 +@@ -3224,7 +3417,6 @@ + ac_check_lib_save_LIBS=$LIBS + LIBS="-lcrypt $LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3248,11 +3440,21 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++ (eval $ac_link) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3265,7 +3467,8 @@ + + ac_cv_lib_crypt_SHA1_Init=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi + echo "$as_me:$LINENO: result: $ac_cv_lib_crypt_SHA1_Init" >&5 +@@ -3279,6 +3482,79 @@ + + else + ++echo "$as_me:$LINENO: checking for SHA1_Init in -lcrypto" >&5 ++echo $ECHO_N "checking for SHA1_Init in -lcrypto... $ECHO_C" >&6 ++if test "${ac_cv_lib_crypto_SHA1_Init+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_check_lib_save_LIBS=$LIBS ++LIBS="-lcrypto $LIBS" ++cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++/* Override any gcc2 internal prototype to avoid an error. */ ++#ifdef __cplusplus ++extern "C" ++#endif ++/* We use char because int might match the return type of a gcc2 ++ builtin and then its argument prototype would still apply. */ ++char SHA1_Init (); ++int ++main () ++{ ++SHA1_Init (); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_lib_crypto_SHA1_Init=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_lib_crypto_SHA1_Init=no ++fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++LIBS=$ac_check_lib_save_LIBS ++fi ++echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_SHA1_Init" >&5 ++echo "${ECHO_T}$ac_cv_lib_crypto_SHA1_Init" >&6 ++if test $ac_cv_lib_crypto_SHA1_Init = yes; then ++ cat >>confdefs.h <<_ACEOF ++#define HAVE_LIBCRYPTO 1 ++_ACEOF ++ ++ LIBS="-lcrypto $LIBS" ++ ++else ++ + echo "$as_me:$LINENO: checking for SHA1_Init in -lmd" >&5 + echo $ECHO_N "checking for SHA1_Init in -lmd... $ECHO_C" >&6 + if test "${ac_cv_lib_md_SHA1_Init+set}" = set; then +@@ -3287,7 +3563,6 @@ + ac_check_lib_save_LIBS=$LIBS + LIBS="-lmd $LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3311,11 +3586,21 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++ (eval $ac_link) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3328,7 +3613,8 @@ + + ac_cv_lib_md_SHA1_Init=no + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi + echo "$as_me:$LINENO: result: $ac_cv_lib_md_SHA1_Init" >&5 +@@ -3341,9 +3627,13 @@ + LIBS="-lmd $LIBS" + + else +- { { echo "$as_me:$LINENO: error: error, Please install OpenSSL first!" >&5 +-echo "$as_me: error: error, Please install OpenSSL first!" >&2;} +- { (exit 1); exit 1; }; } ++ ++cat >>confdefs.h <<\_ACEOF ++#define USE_STANDALONE_SHA1 ++_ACEOF ++ ++fi ++ + fi + + fi +@@ -3366,7 +3656,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3386,11 +3675,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3403,7 +3702,7 @@ + + eval "$as_ac_Header=no" + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 + echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +@@ -3426,7 +3725,6 @@ + ac_func_search_save_LIBS=$LIBS + ac_cv_search_opendir=no + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3450,11 +3748,21 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++ (eval $ac_link) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3466,12 +3774,12 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test "$ac_cv_search_opendir" = no; then + for ac_lib in dir; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3495,11 +3803,21 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++ (eval $ac_link) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3512,7 +3830,8 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + done + fi + LIBS=$ac_func_search_save_LIBS +@@ -3533,7 +3852,6 @@ + ac_func_search_save_LIBS=$LIBS + ac_cv_search_opendir=no + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3557,11 +3875,21 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++ (eval $ac_link) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3573,12 +3901,12 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + if test "$ac_cv_search_opendir" = no; then + for ac_lib in x; do + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3602,11 +3930,21 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++ (eval $ac_link) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3619,7 +3957,8 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + done + fi + LIBS=$ac_func_search_save_LIBS +@@ -3661,7 +4000,6 @@ + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3672,7 +4010,7 @@ + #else + # include <assert.h> + #endif +- Syntax error ++ Syntax error + _ACEOF + if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +@@ -3684,6 +4022,7 @@ + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag ++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +@@ -3704,7 +4043,6 @@ + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3722,6 +4060,7 @@ + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag ++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +@@ -3768,7 +4107,6 @@ + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3779,7 +4117,7 @@ + #else + # include <assert.h> + #endif +- Syntax error ++ Syntax error + _ACEOF + if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +@@ -3791,6 +4129,7 @@ + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag ++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +@@ -3811,7 +4150,6 @@ + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3829,6 +4167,7 @@ + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag ++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +@@ -3889,7 +4228,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3910,11 +4248,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -3927,12 +4275,11 @@ + + ac_cv_header_stdc=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3954,7 +4301,6 @@ + if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3979,7 +4325,6 @@ + : + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -3991,9 +4336,9 @@ + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) + #else + # define ISLOWER(c) \ +- (('a' <= (c) && (c) <= 'i') \ +- || ('j' <= (c) && (c) <= 'r') \ +- || ('s' <= (c) && (c) <= 'z')) ++ (('a' <= (c) && (c) <= 'i') \ ++ || ('j' <= (c) && (c) <= 'r') \ ++ || ('s' <= (c) && (c) <= 'z')) + # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) + #endif + +@@ -4004,7 +4349,7 @@ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) +- || toupper (i) != TOUPPER (i)) ++ || toupper (i) != TOUPPER (i)) + exit(2); + exit (0); + } +@@ -4029,7 +4374,7 @@ + ( exit $ac_status ) + ac_cv_header_stdc=no + fi +-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + fi + fi +@@ -4054,7 +4399,7 @@ + + + for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +- inttypes.h stdint.h unistd.h ++ inttypes.h stdint.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` + echo "$as_me:$LINENO: checking for $ac_header" >&5 +@@ -4063,7 +4408,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4075,11 +4419,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4092,7 +4446,7 @@ + + eval "$as_ac_Header=no" + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 + echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +@@ -4135,7 +4489,6 @@ + echo "$as_me:$LINENO: checking $ac_header usability" >&5 + echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4146,16 +4499,26 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 +@@ -4163,7 +4526,7 @@ + + ac_header_compiler=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 + echo "${ECHO_T}$ac_header_compiler" >&6 + +@@ -4171,7 +4534,6 @@ + echo "$as_me:$LINENO: checking $ac_header presence" >&5 + echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4189,6 +4551,7 @@ + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag ++ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +@@ -4208,33 +4571,32 @@ + echo "${ECHO_T}$ac_header_preproc" >&6 + + # So? What about this header? +-case $ac_header_compiler:$ac_header_preproc in +- yes:no ) ++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in ++ yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 + echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------ ## +-## Report this to bug-autoconf@gnu.org. ## +-## ------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 ++echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ++ ac_header_preproc=yes + ;; +- no:yes ) ++ no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 + echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} +- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 ++echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 ++echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 ++echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 + echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} ++ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 ++echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +-## ------------------------------------ ## +-## Report this to bug-autoconf@gnu.org. ## +-## ------------------------------------ ## ++## ------------------------------------- ## ++## Report this to dholmes@ct.boxmail.com ## ++## ------------------------------------- ## + _ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 +@@ -4245,7 +4607,7 @@ + if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- eval "$as_ac_Header=$ac_header_preproc" ++ eval "$as_ac_Header=\$ac_header_preproc" + fi + echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 + echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +@@ -4268,7 +4630,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4331,11 +4692,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4348,7 +4719,7 @@ + + ac_cv_c_const=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 + echo "${ECHO_T}$ac_cv_c_const" >&6 +@@ -4368,7 +4739,6 @@ + ac_cv_c_inline=no + for ac_kw in inline __inline__ __inline; do + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4383,11 +4753,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4399,23 +4779,27 @@ + sed 's/^/| /' conftest.$ac_ext >&5 + + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + done + + fi + echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 + echo "${ECHO_T}$ac_cv_c_inline" >&6 ++ ++ + case $ac_cv_c_inline in + inline | yes) ;; +- no) +-cat >>confdefs.h <<\_ACEOF +-#define inline +-_ACEOF +- ;; +- *) cat >>confdefs.h <<_ACEOF +-#define inline $ac_cv_c_inline ++ *) ++ case $ac_cv_c_inline in ++ no) ac_val=;; ++ *) ac_val=$ac_cv_c_inline;; ++ esac ++ cat >>confdefs.h <<_ACEOF ++#ifndef __cplusplus ++#define inline $ac_val ++#endif + _ACEOF +- ;; ++ ;; + esac + + echo "$as_me:$LINENO: checking for size_t" >&5 +@@ -4424,7 +4808,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4444,11 +4827,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4461,7 +4854,7 @@ + + ac_cv_type_size_t=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 + echo "${ECHO_T}$ac_cv_type_size_t" >&6 +@@ -4481,7 +4874,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4502,11 +4894,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4519,7 +4921,7 @@ + + ac_cv_header_time=no + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_header_time" >&5 + echo "${ECHO_T}$ac_cv_header_time" >&6 +@@ -4541,7 +4943,6 @@ + else + ac_pattern="Autoconf.*'x'" + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4561,7 +4962,6 @@ + + if test $ac_cv_prog_gcc_traditional = no; then + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4594,13 +4994,12 @@ + ac_cv_func_memcmp_working=no + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ +- ++$ac_includes_default + int + main () + { +@@ -4619,12 +5018,12 @@ + int i; + for (i = 0; i < 4; i++) + { +- char *a = foo + i; +- char *b = bar + i; +- strcpy (a, "--------01111111"); +- strcpy (b, "--------10000000"); +- if (memcmp (a, b, 16) >= 0) +- exit (1); ++ char *a = foo + i; ++ char *b = bar + i; ++ strcpy (a, "--------01111111"); ++ strcpy (b, "--------10000000"); ++ if (memcmp (a, b, 16) >= 0) ++ exit (1); + } + exit (0); + } +@@ -4653,12 +5052,19 @@ + ( exit $ac_status ) + ac_cv_func_memcmp_working=no + fi +-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + fi + echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5 + echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6 +-test $ac_cv_func_memcmp_working = no && LIBOBJS="$LIBOBJS memcmp.$ac_objext" ++test $ac_cv_func_memcmp_working = no && case $LIBOBJS in ++ "memcmp.$ac_objext" | \ ++ *" memcmp.$ac_objext" | \ ++ "memcmp.$ac_objext "* | \ ++ *" memcmp.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" ;; ++esac ++ + + echo "$as_me:$LINENO: checking return type of signal handlers" >&5 + echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 +@@ -4666,7 +5072,6 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4693,11 +5098,21 @@ + _ACEOF + rm -f conftest.$ac_objext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++ (eval $ac_compile) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest.$ac_objext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4710,7 +5125,7 @@ + + ac_cv_type_signal=int + fi +-rm -f conftest.$ac_objext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: $ac_cv_type_signal" >&5 + echo "${ECHO_T}$ac_cv_type_signal" >&6 +@@ -4732,7 +5147,6 @@ + ac_cv_func_lstat_dereferences_slashed_symlink=no + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4744,8 +5158,8 @@ + { + struct stat sbuf; + /* Linux will dereference the symlink and fail. +- That is better in the sense that it means we will not +- have to compile and use the lstat wrapper. */ ++ That is better in the sense that it means we will not ++ have to compile and use the lstat wrapper. */ + exit (lstat ("conftest.sym/", &sbuf) ? 0 : 1); + ; + return 0; +@@ -4771,7 +5185,7 @@ + ( exit $ac_status ) + ac_cv_func_lstat_dereferences_slashed_symlink=no + fi +-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + else + # If the `ln -s' command failed, then we probably don't even +@@ -4792,7 +5206,14 @@ + + + if test $ac_cv_func_lstat_dereferences_slashed_symlink = no; then +- LIBOBJS="$LIBOBJS lstat.$ac_objext" ++ case $LIBOBJS in ++ "lstat.$ac_objext" | \ ++ *" lstat.$ac_objext" | \ ++ "lstat.$ac_objext "* | \ ++ *" lstat.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS lstat.$ac_objext" ;; ++esac ++ + fi + + echo "$as_me:$LINENO: checking whether stat accepts an empty string" >&5 +@@ -4804,7 +5225,6 @@ + ac_cv_func_stat_empty_string_bug=yes + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -4840,13 +5260,20 @@ + ( exit $ac_status ) + ac_cv_func_stat_empty_string_bug=no + fi +-rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi + fi + echo "$as_me:$LINENO: result: $ac_cv_func_stat_empty_string_bug" >&5 + echo "${ECHO_T}$ac_cv_func_stat_empty_string_bug" >&6 + if test $ac_cv_func_stat_empty_string_bug = yes; then +- LIBOBJS="$LIBOBJS stat.$ac_objext" ++ case $LIBOBJS in ++ "stat.$ac_objext" | \ ++ *" stat.$ac_objext" | \ ++ "stat.$ac_objext "* | \ ++ *" stat.$ac_objext "* ) ;; ++ *) LIBOBJS="$LIBOBJS stat.$ac_objext" ;; ++esac ++ + + cat >>confdefs.h <<_ACEOF + #define HAVE_STAT_EMPTY_STRING_BUG 1 +@@ -4871,7 +5298,8 @@ + + + +-for ac_func in ftruncate gethostbyname gettimeofday getwd inet_ntoa memchr memmove memset mkdir select socket strchr strerror strncasecmp strstr strtol strnstr ++ ++for ac_func in ftruncate gethostbyname gettimeofday getwd inet_ntoa memchr memmove memset mkdir select socket strchr strerror strncasecmp strstr strtol strtoll strnstr + do + as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` + echo "$as_me:$LINENO: checking for $ac_func" >&5 +@@ -4880,21 +5308,28 @@ + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +-#line $LINENO "configure" + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ ++/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func. ++ For example, HP-UX 11i <limits.h> declares gettimeofday. */ ++#define $ac_func innocuous_$ac_func ++ + /* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer <limits.h> to <assert.h> if __STDC__ is defined, since + <limits.h> exists even on freestanding compilers. */ ++ + #ifdef __STDC__ + # include <limits.h> + #else + # include <assert.h> + #endif ++ ++#undef $ac_func ++ + /* Override any gcc2 internal prototype to avoid an error. */ + #ifdef __cplusplus + extern "C" +@@ -4925,11 +5360,21 @@ + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++ (eval $ac_link) 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && +- { ac_try='test -s conftest$ac_exeext' ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? +@@ -4942,7 +5387,8 @@ + + eval "$as_ac_var=no" + fi +-rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext + fi + echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_var'}'`" >&5 + echo "${ECHO_T}`eval echo '${'$as_ac_var'}'`" >&6 +@@ -4955,6 +5401,547 @@ + done + + ++# Enable/check large file support ++# Check whether --enable-largefile or --disable-largefile was given. ++if test "${enable_largefile+set}" = set; then ++ enableval="$enable_largefile" ++ ++fi; ++if test "$enable_largefile" != no; then ++ ++ echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 ++echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 ++if test "${ac_cv_sys_largefile_CC+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_cv_sys_largefile_CC=no ++ if test "$GCC" != yes; then ++ ac_save_CC=$CC ++ while :; do ++ # IRIX 6.2 and later do not support large files by default, ++ # so use the C compiler's -n32 option if that helps. ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <sys/types.h> ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++ rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ break ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++fi ++rm -f conftest.err conftest.$ac_objext ++ CC="$CC -n32" ++ rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_sys_largefile_CC=' -n32'; break ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++fi ++rm -f conftest.err conftest.$ac_objext ++ break ++ done ++ CC=$ac_save_CC ++ rm -f conftest.$ac_ext ++ fi ++fi ++echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 ++echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 ++ if test "$ac_cv_sys_largefile_CC" != no; then ++ CC=$CC$ac_cv_sys_largefile_CC ++ fi ++ ++ echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 ++echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 ++if test "${ac_cv_sys_file_offset_bits+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ while :; do ++ ac_cv_sys_file_offset_bits=no ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <sys/types.h> ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ break ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#define _FILE_OFFSET_BITS 64 ++#include <sys/types.h> ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_sys_file_offset_bits=64; break ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ break ++done ++fi ++echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 ++echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 ++if test "$ac_cv_sys_file_offset_bits" != no; then ++ ++cat >>confdefs.h <<_ACEOF ++#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits ++_ACEOF ++ ++fi ++rm -f conftest* ++ echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 ++echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 ++if test "${ac_cv_sys_large_files+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ while :; do ++ ac_cv_sys_large_files=no ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <sys/types.h> ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ break ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#define _LARGE_FILES 1 ++#include <sys/types.h> ++ /* Check that off_t can represent 2**63 - 1 correctly. ++ We can't simply define LARGE_OFF_T to be 9223372036854775807, ++ since some C++ compilers masquerading as C compilers ++ incorrectly reject 9223372036854775807. */ ++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) ++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 ++ && LARGE_OFF_T % 2147483647 == 1) ++ ? 1 : -1]; ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_sys_large_files=1; break ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ break ++done ++fi ++echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 ++echo "${ECHO_T}$ac_cv_sys_large_files" >&6 ++if test "$ac_cv_sys_large_files" != no; then ++ ++cat >>confdefs.h <<_ACEOF ++#define _LARGE_FILES $ac_cv_sys_large_files ++_ACEOF ++ ++fi ++rm -f conftest* ++fi ++ ++echo "$as_me:$LINENO: checking for _LARGEFILE_SOURCE value needed for large files" >&5 ++echo $ECHO_N "checking for _LARGEFILE_SOURCE value needed for large files... $ECHO_C" >&6 ++if test "${ac_cv_sys_largefile_source+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ while :; do ++ ac_cv_sys_largefile_source=no ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <stdio.h> ++int ++main () ++{ ++return !fseeko; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ break ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#define _LARGEFILE_SOURCE 1 ++#include <stdio.h> ++int ++main () ++{ ++return !fseeko; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ++ (eval $ac_compile) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest.$ac_objext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_sys_largefile_source=1; break ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++fi ++rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ break ++done ++fi ++echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_source" >&5 ++echo "${ECHO_T}$ac_cv_sys_largefile_source" >&6 ++if test "$ac_cv_sys_largefile_source" != no; then ++ ++cat >>confdefs.h <<_ACEOF ++#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source ++_ACEOF ++ ++fi ++rm -f conftest* ++ ++# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug ++# in glibc 2.1.3, but that breaks too many other things. ++# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. ++echo "$as_me:$LINENO: checking for fseeko" >&5 ++echo $ECHO_N "checking for fseeko... $ECHO_C" >&6 ++if test "${ac_cv_func_fseeko+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++#include <stdio.h> ++int ++main () ++{ ++return fseeko && fseeko (stdin, 0, 0); ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext conftest$ac_exeext ++if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ++ (eval $ac_link) 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && ++ { ac_try='test -z "$ac_c_werror_flag" ++ || test ! -s conftest.err' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; } && ++ { ac_try='test -s conftest$ac_exeext' ++ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ++ (eval $ac_try) 2>&5 ++ ac_status=$? ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); }; }; then ++ ac_cv_func_fseeko=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ac_cv_func_fseeko=no ++fi ++rm -f conftest.err conftest.$ac_objext \ ++ conftest$ac_exeext conftest.$ac_ext ++fi ++echo "$as_me:$LINENO: result: $ac_cv_func_fseeko" >&5 ++echo "${ECHO_T}$ac_cv_func_fseeko" >&6 ++if test $ac_cv_func_fseeko = yes; then ++ ++cat >>confdefs.h <<\_ACEOF ++#define HAVE_FSEEKO 1 ++_ACEOF ++ ++fi ++ ++ + ac_config_files="$ac_config_files Makefile" + cat >confcache <<\_ACEOF + # This file is a shell script that caches the results of configure +@@ -4984,13 +5971,13 @@ + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ +- "s/'/'\\\\''/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ++ "s/'/'\\\\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; + } | +@@ -5020,13 +6007,13 @@ + # trailing colons and then remove the whole line if VPATH becomes empty + # (actually we leave an empty line to preserve line numbers). + if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ + s/:*\$(srcdir):*/:/; + s/:*\${srcdir}:*/:/; + s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; ++s/^\([^=]*=[ ]*\):*/\1/; + s/:*$//; +-s/^[^=]*=[ ]*$//; ++s/^[^=]*=[ ]*$//; + }' + fi + +@@ -5037,7 +6024,7 @@ + for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` ++ sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +@@ -5102,9 +6089,10 @@ + elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix + fi ++DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. +-if (FOO=FOO; unset FOO) >/dev/null 2>&1; then ++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset + else + as_unset=false +@@ -5123,7 +6111,7 @@ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME + do +- if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then ++ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var +@@ -5302,16 +6290,17 @@ + if mkdir -p . 2>/dev/null; then + as_mkdir_p=: + else ++ test -d ./-p && rmdir ./-p + as_mkdir_p=false + fi + + as_executable_p="test -f" + + # Sed expression to map a string onto a valid CPP name. +-as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" ++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + + # Sed expression to map a string onto a valid variable name. +-as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" ++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + # IFS +@@ -5337,8 +6326,8 @@ + } >&5 + cat >&5 <<_CSEOF + +-This file was extended by CTorrent $as_me devel, which was +-generated by GNU Autoconf 2.57. Invocation command line was ++This file was extended by CTorrent $as_me dnh2, which was ++generated by GNU Autoconf 2.59. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -5382,9 +6371,9 @@ + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] +- instantiate the configuration file FILE ++ instantiate the configuration file FILE + --header=FILE[:TEMPLATE] +- instantiate the configuration header FILE ++ instantiate the configuration header FILE + + Configuration files: + $config_files +@@ -5400,12 +6389,11 @@ + + cat >>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ +-CTorrent config.status devel +-configured by $0, generated by GNU Autoconf 2.57, ++CTorrent config.status dnh2 ++configured by $0, generated by GNU Autoconf 2.59, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +-Free Software Foundation, Inc. ++Copyright (C) 2003 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." + srcdir=$srcdir +@@ -5610,14 +6598,17 @@ + s,@AUTOMAKE@,$AUTOMAKE,;t t + s,@AUTOHEADER@,$AUTOHEADER,;t t + s,@MAKEINFO@,$MAKEINFO,;t t +-s,@AMTAR@,$AMTAR,;t t + s,@install_sh@,$install_sh,;t t + s,@STRIP@,$STRIP,;t t + s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t + s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t ++s,@mkdir_p@,$mkdir_p,;t t + s,@AWK@,$AWK,;t t + s,@SET_MAKE@,$SET_MAKE,;t t + s,@am__leading_dot@,$am__leading_dot,;t t ++s,@AMTAR@,$AMTAR,;t t ++s,@am__tar@,$am__tar,;t t ++s,@am__untar@,$am__untar,;t t + s,@CXX@,$CXX,;t t + s,@CXXFLAGS@,$CXXFLAGS,;t t + s,@LDFLAGS@,$LDFLAGS,;t t +@@ -5673,9 +6664,9 @@ + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" ++ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" ++ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end +@@ -5693,21 +6684,21 @@ + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; ++ cat >$tmp/stdin ++ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ++ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; ++ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || + $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -5723,10 +6714,10 @@ + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || + $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -5764,12 +6755,45 @@ + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; + esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` ++ ++# Do not use `cd foo && pwd` to compute absolute paths, because ++# the directories may not exist. ++case `pwd` in ++.) ac_abs_builddir="$ac_dir";; ++*) ++ case "$ac_dir" in ++ .) ac_abs_builddir=`pwd`;; ++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ++ *) ac_abs_builddir=`pwd`/"$ac_dir";; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_builddir=${ac_top_builddir}.;; ++*) ++ case ${ac_top_builddir}. in ++ .) ac_abs_top_builddir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_srcdir=$ac_srcdir;; ++*) ++ case $ac_srcdir in ++ .) ac_abs_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_srcdir=$ac_top_srcdir;; ++*) ++ case $ac_top_srcdir in ++ .) ac_abs_top_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ++ esac;; ++esac + + + case $INSTALL in +@@ -5791,7 +6815,7 @@ + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | +- sed 's,.*/,,'` by configure." ++ sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. +@@ -5800,24 +6824,24 @@ + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 ++ # Absolute (can't be DOS-style, as IFS=:) ++ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 + echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } +- echo $f;; ++ echo "$f";; + *) # Relative +- if test -f "$f"; then +- # Build tree +- echo $f +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo $srcdir/$f +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 ++ if test -f "$f"; then ++ # Build tree ++ echo "$f" ++ elif test -f "$srcdir/$f"; then ++ # Source tree ++ echo "$srcdir/$f" ++ else ++ # /dev/null tree ++ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 + echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } +- fi;; ++ fi;; + esac + done` || { (exit 1); exit 1; } + _ACEOF +@@ -5859,12 +6883,12 @@ + # NAME is the cpp macro being defined and VALUE is the value it is being given. + # + # ac_d sets the value in "#define NAME VALUE" lines. +-ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +-ac_dB='[ ].*$,\1#\2' ++ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ++ac_dB='[ ].*$,\1#\2' + ac_dC=' ' + ac_dD=',;t' + # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +-ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ++ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' + ac_uB='$,\1#\2define\3' + ac_uC=' ' + ac_uD=',;t' +@@ -5873,11 +6897,11 @@ + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; ++ cat >$tmp/stdin ++ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ++ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; ++ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + +@@ -5891,28 +6915,29 @@ + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) +- # Absolute (can't be DOS-style, as IFS=:) +- test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 ++ # Absolute (can't be DOS-style, as IFS=:) ++ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 + echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } +- echo $f;; ++ # Do quote $f, to prevent DOS paths from being IFS'd. ++ echo "$f";; + *) # Relative +- if test -f "$f"; then +- # Build tree +- echo $f +- elif test -f "$srcdir/$f"; then +- # Source tree +- echo $srcdir/$f +- else +- # /dev/null tree +- { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 ++ if test -f "$f"; then ++ # Build tree ++ echo "$f" ++ elif test -f "$srcdir/$f"; then ++ # Source tree ++ echo "$srcdir/$f" ++ else ++ # /dev/null tree ++ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 + echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } +- fi;; ++ fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. +- sed 's/[ ]*$//' $ac_file_inputs >$tmp/in ++ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + + _ACEOF + +@@ -5935,9 +6960,9 @@ + s,[\\$`],\\&,g + t clear + : clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp ++s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp + t end +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp ++s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp + : end + _ACEOF + # If some macros were called several times there might be several times +@@ -5951,13 +6976,13 @@ + # example, in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + cat >>conftest.undefs <<\_ACEOF +-s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, ++s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, + _ACEOF + + # Break up conftest.defines because some shells have a limit on the size + # of here documents, and old seds have small limits too (100 cmds). + echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +-echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS ++echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS + echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS + echo ' :' >>$CONFIG_STATUS + rm -f conftest.tail +@@ -5966,7 +6991,7 @@ + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. +- echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS ++ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS +@@ -5993,7 +7018,7 @@ + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <<CEOF' >>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' +- echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS ++ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS +@@ -6027,10 +7052,10 @@ + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || + $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_file" : 'X\(//\)[^/]' \| \ +- X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$ac_file" : 'X\(//\)[^/]' \| \ ++ X"$ac_file" : 'X\(//\)$' \| \ ++ X"$ac_file" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -6046,10 +7071,10 @@ + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || + $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -6081,10 +7106,10 @@ + done + echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || + $as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X$ac_file : 'X\(//\)[^/]' \| \ +- X$ac_file : 'X\(//\)$' \| \ +- X$ac_file : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X$ac_file : 'X\(//\)[^/]' \| \ ++ X$ac_file : 'X\(//\)$' \| \ ++ X$ac_file : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -6103,16 +7128,41 @@ + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || + $as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$ac_dest" : 'X\(//\)[^/]' \| \ +- X"$ac_dest" : 'X\(//\)$' \| \ +- X"$ac_dest" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$ac_dest" : 'X\(//\)[^/]' \| \ ++ X"$ac_dest" : 'X\(//\)$' \| \ ++ X"$ac_dest" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` ++ { if $as_mkdir_p; then ++ mkdir -p "$ac_dir" ++ else ++ as_dir="$ac_dir" ++ as_dirs= ++ while test ! -d "$as_dir"; do ++ as_dirs="$as_dir $as_dirs" ++ as_dir=`(dirname "$as_dir") 2>/dev/null || ++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || ++echo X"$as_dir" | ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } ++ /^X\(\/\/\)[^/].*/{ s//\1/; q; } ++ /^X\(\/\/\)$/{ s//\1/; q; } ++ /^X\(\/\).*/{ s//\1/; q; } ++ s/.*/./; q'` ++ done ++ test ! -n "$as_dirs" || mkdir $as_dirs ++ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 ++echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ++ { (exit 1); exit 1; }; }; } ++ + ac_builddir=. + + if test "$ac_dir" != .; then +@@ -6138,12 +7188,45 @@ + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; + esac +-# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +-# absolute. +-ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +-ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +-ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +-ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` ++ ++# Do not use `cd foo && pwd` to compute absolute paths, because ++# the directories may not exist. ++case `pwd` in ++.) ac_abs_builddir="$ac_dir";; ++*) ++ case "$ac_dir" in ++ .) ac_abs_builddir=`pwd`;; ++ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ++ *) ac_abs_builddir=`pwd`/"$ac_dir";; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_builddir=${ac_top_builddir}.;; ++*) ++ case ${ac_top_builddir}. in ++ .) ac_abs_top_builddir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ++ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_srcdir=$ac_srcdir;; ++*) ++ case $ac_srcdir in ++ .) ac_abs_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ++ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ++ esac;; ++esac ++case $ac_abs_builddir in ++.) ac_abs_top_srcdir=$ac_top_srcdir;; ++*) ++ case $ac_top_srcdir in ++ .) ac_abs_top_srcdir=$ac_abs_builddir;; ++ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ++ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ++ esac;; ++esac + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +@@ -6161,10 +7244,10 @@ + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || + $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$mf" : 'X\(//\)[^/]' \| \ +- X"$mf" : 'X\(//\)$' \| \ +- X"$mf" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$mf" : 'X\(//\)[^/]' \| \ ++ X"$mf" : 'X\(//\)$' \| \ ++ X"$mf" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -6174,36 +7257,30 @@ + else + continue + fi +- grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue +- # Extract the definition of DEP_FILES from the Makefile without +- # running `make'. +- DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` ++ # Extract the definition of DEPDIR, am__include, and am__quote ++ # from the Makefile without running `make'. ++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue ++ am__include=`sed -n 's/^am__include = //p' < "$mf"` ++ test -z "am__include" && continue ++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it +- U=`sed -n -e '/^U = / s///p' < "$mf"` +- test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" +- # We invoke sed twice because it is the simplest approach to +- # changing $(DEPDIR) to its actual value in the expansion. +- for file in `sed -n -e ' +- /^DEP_FILES = .*\\\\$/ { +- s/^DEP_FILES = // +- :loop +- s/\\\\$// +- p +- n +- /\\\\$/ b loop +- p +- } +- /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ ++ U=`sed -n 's/^U = //p' < "$mf"` ++ # Find all dependency output files, they are included files with ++ # $(DEPDIR) in their names. We invoke sed twice because it is the ++ # simplest approach to changing $(DEPDIR) to its actual value in the ++ # expansion. ++ for file in `sed -n " ++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`(dirname "$file") 2>/dev/null || + $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$file" : 'X\(//\)[^/]' \| \ +- X"$file" : 'X\(//\)$' \| \ +- X"$file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$file" : 'X\(//\)[^/]' \| \ ++ X"$file" : 'X\(//\)$' \| \ ++ X"$file" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +@@ -6219,10 +7296,10 @@ + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || + $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +- X"$as_dir" : 'X\(//\)[^/]' \| \ +- X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$as_dir" : 'X\(//\)[^/]' \| \ ++ X"$as_dir" : 'X\(//\)$' \| \ ++ X"$as_dir" : 'X\(/\)' \| \ ++ . : '\(.\)' 2>/dev/null || + echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/configure.ac ctorrent-1.3.4/configure.ac +--- ctorrent-1.3.4.sav/configure.ac 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/configure.ac 2006-06-28 19:30:02.000000000 +0200 +@@ -1,6 +1,6 @@ + # Process this file with autoconf to produce a configure script. +-AC_INIT([CTorrent], [devel], [bsdi@sina.com]) +-AM_INIT_AUTOMAKE(ctorrent,devel) ++AC_INIT([CTorrent], [dnh2], [dholmes@ct.boxmail.com]) ++AM_INIT_AUTOMAKE(ctorrent,dnh2) + AC_CONFIG_HEADER([config.h]) + + AC_CONFIG_SRCDIR([ctorrent.cpp]) +@@ -14,7 +14,7 @@ + [AC_CHECK_LIB([crypt],[SHA1_Init],, + [AC_CHECK_LIB([crypto],[SHA1_Init],, + [AC_CHECK_LIB([md],[SHA1_Init],, +- [AC_MSG_ERROR([error, Please install OpenSSL first!])])])])]) ++ [AC_DEFINE([USE_STANDALONE_SHA1],,[Define to 1 to use the Steve Reid's public-domain SHA-1 code.])])])])]) + + # Checks for header files. + AC_HEADER_DIRENT +@@ -32,6 +32,10 @@ + AC_FUNC_MEMCMP + AC_TYPE_SIGNAL + AC_FUNC_STAT +-AC_CHECK_FUNCS([ftruncate gethostbyname gettimeofday getwd inet_ntoa memchr memmove memset mkdir select socket strchr strerror strncasecmp strstr strtol strnstr]) ++AC_CHECK_FUNCS([ftruncate gethostbyname gettimeofday getwd inet_ntoa memchr memmove memset mkdir select socket strchr strerror strncasecmp strstr strtol strtoll strnstr]) ++ ++# Enable/check large file support ++AC_SYS_LARGEFILE ++AC_FUNC_FSEEKO + + AC_OUTPUT(Makefile) +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/ctcs.cpp ctorrent-1.3.4/ctcs.cpp +--- ctorrent-1.3.4.sav/ctcs.cpp 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/ctcs.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -0,0 +1,540 @@ ++#ifndef WINDOWS ++#include <unistd.h> ++#include <sys/time.h> ++#include <time.h> ++#include <netdb.h> ++#endif ++ ++#include <stdlib.h> ++#include <string.h> ++#include <errno.h> ++ ++#include <ctype.h> ++ ++#include "ctcs.h" ++#include "btcontent.h" ++#include "setnonblock.h" ++#include "connect_nonb.h" ++#include "tracker.h" ++#include "peerlist.h" ++#include "peer.h" ++#include "btconfig.h" ++#include "bttime.h" ++ ++#define compset(a,member) ( (a.member==member)? 0 : ((a.member = member)||1) ) ++ ++Ctcs CTCS; ++ ++ ++Ctcs::Ctcs() ++{ ++ memset(m_host,0,MAXHOSTNAMELEN); ++ ++ m_sock = INVALID_SOCKET; ++ m_port = 2780; ++ m_status = T_FREE; ++ m_interval = 1; ++ ++ m_last_timestamp = m_sent_ctstatus_time = (time_t) 0; ++ m_sent_ctstatus = 0; ++ m_sent_ctbw = 0; ++} ++ ++ ++Ctcs::~Ctcs() ++{ ++ if( m_sock != INVALID_SOCKET) CLOSE_SOCKET(m_sock); ++} ++ ++ ++void Ctcs::Reset(time_t new_interval) ++{ ++ if(new_interval) m_interval = new_interval; ++ ++ if( INVALID_SOCKET != m_sock ){ ++ CLOSE_SOCKET(m_sock); ++ m_sock = INVALID_SOCKET; ++ } ++ ++ in_buffer.Reset(); ++ out_buffer.Reset(); ++ m_last_timestamp = now; ++ m_sent_ctstatus = 0; ++ m_sent_ctbw = 0; ++ m_status = T_FREE; ++} ++ ++ ++// borrowed from tracker.cpp (with changes) ++int Ctcs:: _s2sin(char *h,int p,struct sockaddr_in *psin) ++{ ++ psin->sin_family = AF_INET; ++ psin->sin_port = htons(p); ++ psin->sin_addr.s_addr = inet_addr(h); ++ if(psin->sin_addr.s_addr == INADDR_NONE){ ++ struct hostent *ph = gethostbyname(h); ++ if( !ph || ph->h_addrtype != AF_INET){ ++ memset(psin,0,sizeof(struct sockaddr_in)); ++ return -1; ++ } ++ memcpy(&psin->sin_addr,ph->h_addr_list[0],sizeof(struct in_addr)); ++ } ++ return ( psin->sin_addr.s_addr == INADDR_NONE ) ? -1 : 0; ++} ++ ++ ++int Ctcs::CheckMessage() ++{ ++ ssize_t r; ++ size_t q; ++ ++ r = in_buffer.FeedIn(m_sock); ++ ++ if( r == 0 ) return 0; // no data ++ if( r < 0 ){ Reset(1); return -1; } // error ++ ++ q = in_buffer.Count(); ++ ++ if( !q ){ ++ int error = 0; ++ socklen_t n = sizeof(error); ++ if(getsockopt(m_sock, SOL_SOCKET,SO_ERROR,&error,&n) < 0 || ++ error != 0 ){ ++ fprintf(stderr,"warn, received nothing from CTCS! %s\n",strerror(error)); ++ } ++ Reset(0); ++ return -1; ++ } ++ ++ char *s, *msgbuf; ++ while(in_buffer.Count() && (s=strchr(msgbuf=in_buffer.BasePointer(), '\n'))){ ++// msgbuf = in_buffer.BasePointer(); ++// if( s=strchr(msgbuf, '\n') ){ //have a complete message ++ *s = '\0'; ++ if(arg_verbose) fprintf(stderr, "CTCS: %s\n", msgbuf); ++ if( !strncmp("SETDLIMIT",msgbuf,9) ){ ++ cfg_max_bandwidth_down = (int)(strtod(msgbuf+10, NULL)); ++ if(arg_verbose) fprintf(stderr, "DLimit=%d\n", cfg_max_bandwidth_down); ++ }else if( !strncmp("SETULIMIT",msgbuf,9) ){ ++ cfg_max_bandwidth_up = (int)(strtod(msgbuf+10, NULL)); ++ if(arg_verbose) fprintf(stderr, "ULimit=%d\n", cfg_max_bandwidth_up); ++ }else if( !strncmp("SENDPEERS",msgbuf,9) ){ ++ Send_Peers(); ++ }else if( !strncmp("SENDSTATUS",msgbuf,10) ){ ++ Send_Status(); ++ }else if( !strncmp("SENDCONF",msgbuf,8) ){ ++ Send_Config(); ++ }else if( !strncmp("CTCONFIG",msgbuf,8) ){ ++ Set_Config(msgbuf); ++ }else if( !strncmp("SENDDETAIL",msgbuf,10) ){ ++ Send_Detail(); ++ }else if( !strncmp("CTQUIT",msgbuf,6) ){ ++ printf("CTCS sent Quit command\n"); ++ Tracker.SetStoped(); ++ }else if( !strncmp("CTRESTART",msgbuf,9) ){ ++ RestartTracker(); ++ }else if( !strncmp("CTUPDATE",msgbuf,8) ){ ++ Tracker.Reset(1); ++ }else if( !strncmp("PROTOCOL",msgbuf,8) ){ ++ // nothing yet ++ }else{ ++ if(arg_verbose) fprintf(stderr, "unknown CTCS message: %s", msgbuf); ++ } ++ in_buffer.PickUp(s-msgbuf + 1); ++ } ++ return 0; ++} ++ ++ ++int Ctcs::SendMessage(char *message) ++{ ++ int len, r=0; ++ char buf[CTCS_BUFSIZE]; ++ ++ if( m_status == T_READY ){ ++ len = strlen(message); ++ strncpy(buf, message, len); ++ if( len+1 < CTCS_BUFSIZE ){ ++ buf[len] = '\n'; ++ buf[len+1] = '\0'; ++ }else{ ++ buf[CTCS_BUFSIZE-2] = '\n'; ++ buf[CTCS_BUFSIZE-1] = '\0'; ++ } ++ r = out_buffer.Put(m_sock, buf, len+1); ++ if( r<0 ) Reset(1); ++ } ++ return r; ++} ++ ++ ++int Ctcs::Send_Auth() ++{ ++ char message[CTCS_BUFSIZE]; ++ ++ if(!*m_pass) return 0; ++ snprintf(message, CTCS_BUFSIZE, "AUTH %s", m_pass); ++ return SendMessage(message); ++} ++ ++ ++int Ctcs::Send_Protocol() ++{ ++ char message[CTCS_BUFSIZE]; ++ ++ snprintf(message, CTCS_BUFSIZE, "PROTOCOL %s", CTCS_PROTOCOL); ++ return SendMessage(message); ++} ++ ++ ++int Ctcs::Send_Torrent(unsigned char *peerid, char *torrent) ++{ ++ char message[CTCS_BUFSIZE]; ++ char txtid[PEER_ID_LEN*2+3]; ++ ++ TextPeerID(peerid, txtid); ++ ++ snprintf(message, CTCS_BUFSIZE, "CTORRENT %s %ld %ld %s", txtid, ++ (long)(BTCONTENT.GetStartTime()), (long)now, torrent); ++ return SendMessage(message); ++} ++ ++ ++int Ctcs::Report_Status(size_t seeders, size_t leechers, size_t nhave, ++ size_t ntotal, size_t navail, size_t dlrate, size_t ulrate, ++ u_int64_t dltotal, u_int64_t ultotal, size_t dlimit, size_t ulimit) ++{ ++ int changebw=0,change=0; ++ int r; ++ size_t nhad; ++ ++ if( T_READY != m_status ) return 0; ++ ++ nhad = m_ctstatus.nhave; ++ ++ changebw = ( ++ compset(m_ctstatus, dlrate) | ++ compset(m_ctstatus, ulrate) | ++ compset(m_ctstatus, dlimit) | ++ compset(m_ctstatus, ulimit) ); ++ change = ( changebw | ++ compset(m_ctstatus, seeders) | ++ compset(m_ctstatus, leechers) | ++ compset(m_ctstatus, nhave) | ++ compset(m_ctstatus, ntotal) | ++ compset(m_ctstatus, navail) | ++ compset(m_ctstatus, dltotal) | ++ compset(m_ctstatus, ultotal) ); ++ ++ if( ( !m_sent_ctstatus || (nhad<nhave && nhave==ntotal) || ++ (Tracker.GetStatus() && m_sent_ctstatus_time+30 > now) ) && ++ (r=Send_Status()) != 0 ) return r; ++ else return (changebw || !m_sent_ctbw) ? Send_bw() : 0; ++} ++ ++ ++int Ctcs::Send_Status() ++{ ++ char message[CTCS_BUFSIZE]; ++ ++ if( m_sent_ctstatus_time + 1 > now ) { ++ m_sent_ctstatus = 0; ++ return 0; ++ } ++ snprintf(message, CTCS_BUFSIZE, "CTSTATUS %u/%u %u/%u/%u %u,%u %llu,%llu %u,%u", ++ m_ctstatus.seeders, m_ctstatus.leechers, ++ m_ctstatus.nhave, m_ctstatus.ntotal, m_ctstatus.navail, ++ m_ctstatus.dlrate, m_ctstatus.ulrate, ++ m_ctstatus.dltotal, m_ctstatus.ultotal, ++ m_ctstatus.dlimit, m_ctstatus.ulimit ); ++ m_sent_ctstatus = 1; ++ m_sent_ctstatus_time = now; ++ return SendMessage(message); ++} ++ ++ ++int Ctcs::Send_bw() ++{ ++ char message[CTCS_BUFSIZE]; ++ ++ snprintf(message, CTCS_BUFSIZE, "CTBW %u,%u %u,%u", ++ m_ctstatus.dlrate, m_ctstatus.ulrate, ++ m_ctstatus.dlimit, m_ctstatus.ulimit ); ++ m_sent_ctbw = 1; ++ return SendMessage(message); ++} ++ ++ ++int Ctcs::Send_Config() ++{ ++ char message[CTCS_BUFSIZE]; ++ ++ snprintf(message, CTCS_BUFSIZE, "CTCONFIG %d %d %f %d %d %d %d %d %d", ++ (int)arg_verbose, (int)cfg_seed_hours, cfg_seed_ratio, ++ (int)cfg_max_peers, (int)cfg_min_peers, (int)arg_file_to_download, ++ (int)cfg_exit_zero_peers, Tracker.IsPaused(), Tracker.IsQuitting()); ++ return SendMessage(message); ++} ++ ++int Ctcs::Set_Config(char *msgbuf) ++{ ++ unsigned char foo; ++ ++ if(msgbuf[9] != '.') arg_verbose = atoi(msgbuf+9); ++ if(msgbuf[11] != '.') cfg_seed_hours = atoi(msgbuf+11); ++ msgbuf = strchr(msgbuf+11, ' ') + 1; ++ if(msgbuf[0] != '.') cfg_seed_ratio = atof(msgbuf); ++ msgbuf = strchr(msgbuf, ' ') + 1; ++ if(msgbuf[0] != '.') cfg_max_peers = atoi(msgbuf); ++ msgbuf = strchr(msgbuf, ' ') + 1; ++ if(msgbuf[0] != '.') cfg_min_peers = atoi(msgbuf); ++ msgbuf = strchr(msgbuf, ' ') + 1; ++ if(msgbuf[0] != '.'){ ++ foo = atoi(msgbuf); ++ if(foo != arg_file_to_download){ ++ arg_file_to_download = foo; ++ BTCONTENT.FlushCache(); ++ BTCONTENT.SetFilter(); ++ WORLD.CheckInterest(); ++ } ++ } ++ msgbuf = strchr(msgbuf, ' ') + 1; ++ if(msgbuf[0] != '.') cfg_exit_zero_peers = atoi(msgbuf); ++ msgbuf = strchr(msgbuf, ' ') + 1; ++ if(msgbuf[0] != '.'){ ++ if(atoi(msgbuf)){ ++ if( !Tracker.IsPaused() ) Tracker.SetPause(); ++ }else if( Tracker.IsPaused() ) Tracker.Resume(); ++ } ++ msgbuf = strchr(msgbuf, ' ') + 1; ++ if(msgbuf[0] != '.'){ ++ if(atoi(msgbuf)) Tracker.SoftQuit(); ++ else Tracker.DontQuit(); ++ if(atoi(msgbuf)){ ++ if( !Tracker.IsQuitting() ) Tracker.SoftQuit(); ++ }else if( Tracker.IsQuitting() ) Tracker.DontQuit(); ++ } ++ ++ return 0; ++} ++ ++ ++int Ctcs::Send_Detail() ++{ ++ char message[CTCS_BUFSIZE]; ++ int r=0; ++ size_t n=0; ++ BTFILE *file=0; ++ BitField tmpFilter; ++ ++ snprintf( message, CTCS_BUFSIZE, "CTDETAIL %lld %d %ld %ld", ++ BTCONTENT.GetTotalFilesLength(), ++ (int)(BTCONTENT.GetPieceLength()), (long)now, ++ (long)(BTCONTENT.GetSeedTime()) ); ++ r = SendMessage(message); ++ ++ if(r==0) r = SendMessage("CTFILES"); ++ ++ while( r==0 && (file = BTCONTENT.GetNextFile(file)) ){ ++ ++n; ++ BTCONTENT.SetTmpFilter(n, &tmpFilter); ++ BitField tmpBitField = *BTCONTENT.pBF; ++ tmpBitField.Except(tmpFilter); ++ ++ snprintf( message, CTCS_BUFSIZE, "CTFILE %u %d %d %llu %s", ++ n, (int)(BTCONTENT.getFilePieces(n)), ++ (int)(tmpBitField.Count()), ++ file->bf_length, file->bf_filename ); ++ r = SendMessage(message); ++ } ++ if(r==0) r = SendMessage("CTFDONE"); ++ return r; ++} ++ ++ ++int Ctcs::Send_Peers() ++{ ++ btPeer *peer=0; ++ char message[CTCS_BUFSIZE]; ++ char txtid[PEER_ID_LEN*2+3]; ++ struct sockaddr_in psin; ++ int r=0; ++ ++ r=SendMessage("CTPEERS"); ++ while( r==0 && (peer = WORLD.GetNextPeer(peer)) ){ ++ TextPeerID(peer->id, txtid); ++ peer->GetAddress(&psin); ++ ++ snprintf(message, CTCS_BUFSIZE, "CTPEER %s %s %c%c%c%c %d %d %llu %llu %d", ++ txtid, inet_ntoa(psin.sin_addr), ++ peer->Is_Remote_UnChoked() ? 'U' : 'C', ++ peer->Is_Local_Interested() ? 'i' : 'n', ++ peer->Is_Local_UnChoked() ? 'U' : 'C', ++ peer->Is_Remote_Interested() ? 'i' : 'n', ++ peer->RateDL(), peer->RateUL(), ++ peer->TotalDL(), peer->TotalUL(), ++ peer->bitfield.Count() ); ++ r = SendMessage(message); ++ } ++ if(r==0) r = SendMessage("CTPDONE"); ++ return r; ++} ++ ++ ++int Ctcs::Send_Info(const char *info) ++{ ++ char message[CTCS_BUFSIZE]; ++ ++ snprintf(message, CTCS_BUFSIZE, "CTINFO %s", info); ++ return SendMessage(message); ++} ++ ++ ++int Ctcs::Initial() ++{ ++ char *s; ++ ++ strncpy(m_host, arg_ctcs, MAXHOSTNAMELEN-1); ++ m_host[MAXHOSTNAMELEN-1] = '\0'; ++ if( s = strchr(m_host, ':') ) *s='\0'; ++ m_port = atoi(s=(strchr(arg_ctcs, ':')+1)); ++ if(strchr(s, ':')){ ++ printf("Enter CTCS password: "); fflush(stdout); ++ fgets(m_pass, CTCS_PASS_SIZE, stdin); ++ } else *m_pass = '\0'; ++ ++ return 0; ++} ++ ++ ++int Ctcs::Connect() ++{ ++ ssize_t r; ++ m_last_timestamp = now; ++ ++ if(_s2sin(m_host,m_port,&m_sin) < 0) { ++ fprintf(stderr,"warn, get CTCS ip address failed."); ++ return -1; ++ } ++ ++ m_sock = socket(AF_INET,SOCK_STREAM,0); ++ if(INVALID_SOCKET == m_sock) return -1; ++ ++ if(setfd_nonblock(m_sock) < 0) {CLOSE_SOCKET(m_sock); return -1; } ++ ++ r = connect_nonb(m_sock,(struct sockaddr*)&m_sin); ++ ++ if( r == -1 ){ CLOSE_SOCKET(m_sock); return -1;} ++ else if( r == -2 ) m_status = T_CONNECTING; ++ else{ ++ m_status = T_READY; ++ if( Send_Protocol() != 0 ){ ++ fprintf(stderr,"warn, send protocol to CTCS failed. %s\n",strerror(errno)); ++ return -1; ++ } ++ if( Send_Auth() != 0) { ++ fprintf(stderr,"warn, send password to CTCS failed. %s\n",strerror(errno)); ++ return -1; ++ } ++ if( Send_Torrent(BTCONTENT.GetPeerId(), arg_metainfo_file) != 0 ){ ++ fprintf(stderr,"warn, send torrent to CTCS failed. %s\n",strerror(errno)); ++ return -1; ++ } ++ } ++ return 0; ++} ++ ++ ++int Ctcs::IntervalCheck(const time_t *pnow, fd_set *rfdp, fd_set *wfdp) ++{ ++ if( T_FREE == m_status ){ ++ if(*pnow - m_last_timestamp >= m_interval){ ++ if(Connect() < 0){ Reset(15); return -1; } ++ ++ if( m_status == T_CONNECTING ){ ++ FD_SET(m_sock, rfdp); ++ FD_SET(m_sock, wfdp); ++ }else{ ++ FD_SET(m_sock, rfdp); ++ } ++ } ++ }else{ ++ if( m_status == T_CONNECTING ){ ++ FD_SET(m_sock, rfdp); ++ FD_SET(m_sock, wfdp); ++ }else if (INVALID_SOCKET != m_sock){ ++ FD_SET(m_sock, rfdp); ++ if( out_buffer.Count() ) FD_SET(m_sock, wfdp); ++ } ++ } ++ return m_sock; ++} ++ ++ ++int Ctcs::SocketReady(fd_set *rfdp, fd_set *wfdp, int *nfds) ++{ ++ if( T_FREE == m_status ) return 0; ++ ++ if( T_CONNECTING == m_status && FD_ISSET(m_sock,wfdp) ){ ++ int error = 0; ++ socklen_t n = sizeof(error); ++ (*nfds)--; ++ FD_CLR(m_sock, wfdp); ++ if(getsockopt(m_sock, SOL_SOCKET,SO_ERROR,&error,&n) < 0 || ++ error != 0 ){ ++ if( ECONNREFUSED != error ) ++ fprintf(stderr,"warn, connect to CTCS failed. %s\n",strerror(error)); ++ Reset(15); ++ return -1; ++ }else{ ++ m_status = T_READY; ++ if( Send_Protocol() != 0 ){ ++ fprintf(stderr,"warn, send protocol to CTCS failed. %s\n",strerror(errno)); ++ return -1; ++ } ++ if( Send_Auth() != 0) { ++ fprintf(stderr,"warn, send password to CTCS failed. %s\n",strerror(errno)); ++ return -1; ++ } ++ if( Send_Torrent(BTCONTENT.GetPeerId(), arg_metainfo_file) == 0 ){ ++ fprintf(stderr,"warn, send torrent to CTCS failed. %s\n",strerror(errno)); ++ return -1; ++ } ++ } ++ }else if( T_CONNECTING == m_status && FD_ISSET(m_sock,rfdp) ){ ++ int error = 0; ++ socklen_t n = sizeof(error); ++ (*nfds)--; ++ FD_CLR(m_sock, rfdp); ++ getsockopt(m_sock, SOL_SOCKET,SO_ERROR,&error,&n); ++ fprintf(stderr,"warn, connect to CTCS failed. %s\n",strerror(error)); ++ Reset(15); ++ return -1; ++ }else if( INVALID_SOCKET != m_sock ){ ++ if( FD_ISSET(m_sock, rfdp) ){ ++ (*nfds)--; ++ FD_CLR(m_sock,rfdp); ++ CheckMessage(); ++ } ++ if( INVALID_SOCKET != m_sock && FD_ISSET(m_sock, wfdp) ){ ++ (*nfds)--; ++ FD_CLR(m_sock,wfdp); ++ if( out_buffer.Count() && out_buffer.FlushOut(m_sock) < 0){ ++ Reset(1); ++ return -1; ++ } ++ } ++ } ++ return 0; ++} ++ ++ ++void Ctcs::RestartTracker() ++{ ++ Tracker.SetPause(); // prevents downloader from exiting ++ Tracker.SetStoped(); // finish the tracker ++ // Now we need to wait until the tracker updates (T_FINISHED == m_status), ++ // then Tracker.Resume(). ++ Tracker.SetRestart(); ++} ++ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/ctcs.h ctorrent-1.3.4/ctcs.h +--- ctorrent-1.3.4.sav/ctcs.h 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/ctcs.h 2006-06-28 19:30:02.000000000 +0200 +@@ -0,0 +1,78 @@ ++#include "tracker.h" // for its includes/defines ++ ++#define CTCS_PROTOCOL "0001" ++ ++#define CTCS_BUFSIZE 200 ++#define CTCS_PASS_SIZE 21 ++ ++#define C_TORRENT 1 ++#define C_STATUS 2 ++#define C_PEERS 3 ++ ++struct ctstatus { ++ public: ++ size_t seeders, leechers, nhave, ntotal, navail, dlrate, ulrate, ++ dlimit, ulimit; ++ u_int64_t dltotal, ultotal; ++ ctstatus() { ++ seeders=leechers=nhave=ntotal=navail=dlrate=ulrate=dltotal= ++ ultotal=dlimit=ulimit = 0; ++ } ++}; ++ ++class Ctcs ++{ ++ private: ++ char m_host[MAXHOSTNAMELEN]; ++ int m_port; ++ char m_pass[CTCS_PASS_SIZE]; ++ ++ struct sockaddr_in m_sin; ++ ++ unsigned char m_status:2; ++ ++ time_t m_interval; ++ time_t m_last_timestamp; ++ time_t m_sent_ctstatus_time; ++ ++ SOCKET m_sock; ++ BufIo in_buffer; ++ BufIo out_buffer; ++ struct ctstatus m_ctstatus; ++ int m_sent_ctstatus; ++ int m_sent_ctbw; ++ ++ int SendMessage(char *buf); ++ ++ public: ++ Ctcs(); ++ ~Ctcs(); ++ ++ void Reset(time_t new_interval); ++ int _s2sin(char *h,int p,struct sockaddr_in *psin); ++ int Initial(); ++ int Connect(); ++ int CheckMessage(); ++ int Send_Protocol(); ++ int Send_Auth(); ++ int Send_Torrent(unsigned char *peerid, char *torrent); ++ int Report_Status(size_t seeders, size_t leechers, size_t nhave, ++ size_t ntotal, size_t navail, size_t dlrate, size_t ulrate, ++ u_int64_t dltotal, u_int64_t ultotal, size_t dlimit, size_t ulimit); ++ int Send_Status(); ++ int Send_bw(); ++ int Send_Config(); ++ int Set_Config(char *msgbuf); ++ int Send_Detail(); ++ int Send_Peers(); ++ int Send_Info(const char *info); ++ int IntervalCheck(const time_t *pnow, fd_set *rfdp, fd_set *wfdp); ++ int SocketReady(fd_set *rfdp, fd_set *wfdp, int *nfds); ++ void RestartTracker(); ++ ++ SOCKET GetSocket() { return m_sock; } ++ unsigned char GetStatus() { return m_status;} ++}; ++ ++extern Ctcs CTCS; ++ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/ctorrent.cpp ctorrent-1.3.4/ctorrent.cpp +--- ctorrent-1.3.4.sav/ctorrent.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/ctorrent.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -1,6 +1,5 @@ +-#include <sys/types.h> +- + #include "./def.h" ++#include <sys/types.h> + + #ifdef WINDOWS + #include <windows.h> +@@ -20,6 +19,7 @@ + #include "downloader.h" + #include "peerlist.h" + #include "tracker.h" ++#include "ctcs.h" + + #include "./config.h" + +@@ -46,7 +46,7 @@ + struct timeval tv; + gettimeofday(&tv,(struct timezone*) 0); + unsigned int seed = tv.tv_usec + tv.tv_sec + getpid(); +- return srandom(seed); ++ srandom(seed); + } + + int main(int argc, char **argv) +@@ -65,7 +65,7 @@ + if( !arg_announce ){ fprintf(stderr,"please use -u to specify a announce url!\n"); exit(1);} + if( !arg_save_as ){ fprintf(stderr,"please use -s to specify a metainfo file name!\n"); exit(1);} + if( BTCONTENT.InitialFromFS(arg_metainfo_file, arg_announce, arg_piece_length) < 0 || +- BTCONTENT.CreateMetainfoFile(arg_save_as) < 0){ ++ BTCONTENT.CreateMetainfoFile(arg_save_as) < 0){ + fprintf(stderr,"create metainfo failed.\n"); + exit(1); + } +@@ -81,15 +81,19 @@ + if( !arg_flg_exam_only && !arg_flg_check_only){ + if(WORLD.Initial_ListenPort() < 0){ + fprintf(stderr,"warn, you couldn't accept connection.\n"); +- }else +- printf("Listen on: %d\n",cfg_listen_port); ++ } + +- Tracker.Initial(); ++ if( arg_ctcs ) CTCS.Initial(); ++ Tracker.Initial(); + +- signal(SIGPIPE,SIG_IGN); - signal(SIGINT,sigint_catch); ++ signal(SIGPIPE,SIG_IGN); + signal(SIGINT,sig_catch); + signal(SIGTERM,sig_catch); Downloader(); @@ -532,19 +7732,65 @@ diff -u ctorrent-1.3.4.orig/ctorrent.cpp ctorrent-1.3.4/ctorrent.cpp exit(0); } -@@ -99,7 +103,7 @@ +@@ -99,7 +103,8 @@ int param_check(int argc, char **argv) { int c, l; - while ( ( c = getopt(argc,argv,"b:B:cC:e:fl:M:m:P:p:s:tu:xhH")) != -1) -+ while ( ( c = getopt(argc,argv,"b:cC:D:e:fl:M:m:n:P:p:s:tu:U:vxhH")) != -1) ++ char *s; ++ while ( ( c = getopt(argc,argv,"b:cC:D:e:E:fi:l:M:m:n:P:p:s:S:tu:U:vxz:hH")) != -1) switch( c ){ case 'b': arg_bitfield_file = new char[strlen(optarg) + 1]; -@@ -150,14 +154,23 @@ +@@ -109,6 +114,10 @@ + strcpy(arg_bitfield_file, optarg); + break; + ++ case 'i': // listen on ip XXXX ++ cfg_listen_ip = inet_addr(optarg); ++ break; ++ + case 'p': // listen on Port XXXX + cfg_listen_port = atoi(optarg); + break; +@@ -126,6 +135,10 @@ + cfg_seed_hours = atoi(optarg); + break; + ++ case 'E': // target seed ratio ++ cfg_seed_ratio = atof(optarg); ++ break; ++ + case 'c': // Check exist only + arg_flg_check_only = 1; + break; +@@ -137,32 +150,47 @@ + case 'M': // Max peers + cfg_max_peers = atoi(optarg); + if( cfg_max_peers > 1000 || +- cfg_max_peers < 20){ +- return -1; ++ cfg_max_peers < 20){ ++ return -1; + } + break; + + case 'm': // Min peers + cfg_min_peers = atoi(optarg); + if( cfg_min_peers > 1000 || +- cfg_min_peers < 20){ +- return -1; ++ cfg_min_peers < 1){ ++ return -1; } break; ++ case 'z': // slice size ++ cfg_req_slice_size = atoi(optarg) * 1024; ++ if( cfg_req_slice_size < 1024 || cfg_req_slice_size > 128*1024 ) ++ return -1; ++ break; ++ + case 'n': // Which file download + arg_file_to_download = atoi(optarg); + break; @@ -558,19 +7804,51 @@ diff -u ctorrent-1.3.4.orig/ctorrent.cpp ctorrent-1.3.4/ctorrent.cpp - cfg_max_bandwidth = atoi(optarg); + case 'D': + cfg_max_bandwidth_down = (int)(strtod(optarg, NULL) * 1024); ++ break; ++ ++ case 'U': ++ cfg_max_bandwidth_up = (int)(strtod(optarg, NULL) * 1024); break; -+ case 'U': -+ cfg_max_bandwidth_up = (int)(strtod(optarg, NULL) * 1024); -+ break; -+ case 'P': - l = strlen(optarg); - if (l > MAX_PF_LEN) {printf("-P arg must be 8 or less characters\n"); exit(1);} -@@ -190,6 +203,10 @@ +- l = strlen(optarg); +- if (l > MAX_PF_LEN) {printf("-P arg must be 8 or less characters\n"); exit(1);} +- if (l == 1 && *optarg == '-') *arg_user_agent = (char) 0; +- else strcpy(arg_user_agent,optarg); ++ l = strlen(optarg); ++ if (l > MAX_PF_LEN) {printf("-P arg must be 8 or less characters\n"); exit(1);} ++ if (l == 1 && *optarg == '-') *arg_user_agent = (char) 0; ++ else strcpy(arg_user_agent,optarg); + break; + + // BELLOW OPTIONS USED FOR CREATE TORRENT. +@@ -179,17 +207,29 @@ + case 'l': // piece Length (default 262144) + arg_piece_length = atoi(optarg); + if( arg_piece_length < 65536 || +- arg_piece_length > 1310720 ){ +- // warn message: +- // piece length range is 65536 =>> 1310720 +- return -1; ++ arg_piece_length > 1310720 ){ ++ // warn message: ++ // piece length range is 65536 =>> 1310720 ++ return -1; + } + break; ++ // ABOVE OPTIONS USED FOR CREATE TORRENT. + + case 'x': arg_flg_exam_only = 1; break; ++ case 'S': // CTCS server ++ if( arg_ctcs ) return -1; ++ arg_ctcs = new char[strlen(optarg) + 1]; ++ if( !strchr(optarg, ':') ) return -1; ++ strcpy(arg_ctcs, optarg); ++ break; ++ + case 'v': + arg_verbose = 1; + break; @@ -578,55 +7856,3537 @@ diff -u ctorrent-1.3.4.orig/ctorrent.cpp ctorrent-1.3.4/ctorrent.cpp case 'h': case 'H': default: -@@ -217,6 +234,7 @@ +@@ -211,14 +251,17 @@ + + void usage() + { +- fprintf(stderr,"%s Copyright: YuHong(992126018601033)",PACKAGE_STRING); ++ fprintf(stderr,"%s Original code Copyright: YuHong(992126018601033)",PACKAGE_STRING); + fprintf(stderr,"\nWARNING: THERE IS NO WARRANTY FOR CTorrent. USE AT YOUR OWN RISK!!!\n"); + fprintf(stderr,"\nGeneric Options:\n"); fprintf(stderr,"-h/-H\t\tShow this message.\n"); fprintf(stderr,"-x\t\tDecode metainfo(torrent) file only, don't download.\n"); fprintf(stderr,"-c\t\tCheck exist only. don't download.\n"); + fprintf(stderr,"-v\t\tVerbose output (for debugging).\n"); fprintf(stderr,"\nDownload Options:\n"); fprintf(stderr,"-e int\t\tExit while seed <int> hours later. (default 72 hours)\n"); ++ fprintf(stderr,"-E num\t\tExit after seeding to <num> ratio (UL:DL).\n"); ++ fprintf(stderr,"-i ip\t\tListen for connection on ip. (default all ip's)\n"); fprintf(stderr,"-p port\t\tListen port. (default 2706 -> 2106)\n"); -@@ -226,7 +244,9 @@ + fprintf(stderr,"-s save_as\tSave file/directory/metainfo as... \n"); + fprintf(stderr,"-C cache_size\tCache size,unit MB. (default 16MB)\n"); +@@ -226,8 +269,12 @@ fprintf(stderr,"-b bf_filename\tBit field filename. (use it carefully)\n"); fprintf(stderr,"-M max_peers\tMax peers count.\n"); fprintf(stderr,"-m min_peers\tMin peers count.\n"); - fprintf(stderr,"-B rate\t\tMax bandwidth (unit KB/s)\n"); ++ fprintf(stderr,"-z slice_size\tDownload slice/block size, unit KB. (default 16, max 128).\n"); + fprintf(stderr,"-n file_number\tWhich file download.\n"); + fprintf(stderr,"-D rate\t\tMax bandwidth down (unit KB/s)\n"); + fprintf(stderr,"-U rate\t\tMax bandwidth up (unit KB/s)\n"); fprintf(stderr,"-P peer_id\tSet Peer ID ["PEER_PFX"]\n"); ++ fprintf(stderr,"-S host:port\tUse CTCS server\n"); fprintf(stderr,"\nMake metainfo(torrent) file Options:\n"); fprintf(stderr,"-t\t\tWith make torrent. must specify this option.\n"); -diff -u ctorrent-1.3.4.orig/downloader.cpp ctorrent-1.3.4/downloader.cpp ---- ctorrent-1.3.4.orig/downloader.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/downloader.cpp 2005-08-11 23:45:29.429693680 +0200 -@@ -29,10 +29,14 @@ - time_t now; + fprintf(stderr,"-u url\t\tTracker's url.\n"); +@@ -235,5 +282,7 @@ + fprintf(stderr,"\neg.\n"); + fprintf(stderr,"hong> ctorrent -s new_filename -e 12 -C 32 -p 6881 eg.torrent\n\n"); + fprintf(stderr,"home page: http://ctorrent.sourceforge.net/\n"); +- fprintf(stderr,"bug report: %s\n\n",PACKAGE_BUGREPORT); ++ fprintf(stderr,"see also: http://www.rahul.net/dholmes/ctorrent/\n"); ++ fprintf(stderr,"bug report: %s\n",PACKAGE_BUGREPORT); ++ fprintf(stderr,"original author: bsdi@sina.com\n\n"); + } +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/bencode.Po ctorrent-1.3.4/.deps/bencode.Po +--- ctorrent-1.3.4.sav/.deps/bencode.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/bencode.Po 2006-06-28 19:24:11.000000000 +0200 +@@ -0,0 +1,137 @@ ++bencode.o bencode.o: bencode.cpp def.h config.h /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h bencode.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ ++ /usr/include/bits/stdio.h /usr/include/unistd.h \ ++ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ ++ /usr/include/bits/confname.h /usr/include/getopt.h /usr/include/fcntl.h \ ++ /usr/include/bits/fcntl.h /usr/include/sys/stat.h \ ++ /usr/include/bits/stat.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/stdlib.h /usr/include/bits/waitflags.h \ ++ /usr/include/bits/waitstatus.h /usr/include/xlocale.h \ ++ /usr/include/alloca.h /usr/include/string.h /usr/include/ctype.h ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++bencode.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/fcntl.h: ++ ++/usr/include/bits/fcntl.h: ++ ++/usr/include/sys/stat.h: ++ ++/usr/include/bits/stat.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/string.h: ++ ++/usr/include/ctype.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/bitfield.Po ctorrent-1.3.4/.deps/bitfield.Po +--- ctorrent-1.3.4.sav/.deps/bitfield.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/bitfield.Po 2006-06-28 19:24:12.000000000 +0200 +@@ -0,0 +1,135 @@ ++bitfield.o bitfield.o: bitfield.cpp bitfield.h /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/unistd.h /usr/include/bits/posix_opt.h \ ++ /usr/include/bits/environments.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/sys/param.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/linux/param.h \ ++ /usr/include/asm/param.h /usr/include/asm-i386/param.h \ ++ /usr/include/sys/stat.h /usr/include/bits/stat.h /usr/include/string.h \ ++ /usr/include/xlocale.h /usr/include/stdlib.h \ ++ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ ++ /usr/include/alloca.h /usr/include/stdio.h /usr/include/libio.h \ ++ /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ ++ /usr/include/gconv.h /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h ++ ++bitfield.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++/usr/include/sys/stat.h: ++ ++/usr/include/bits/stat.h: ++ ++/usr/include/string.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/btconfig.Po ctorrent-1.3.4/.deps/btconfig.Po +--- ctorrent-1.3.4.sav/.deps/btconfig.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/btconfig.Po 2006-06-28 19:24:12.000000000 +0200 +@@ -0,0 +1,46 @@ ++btconfig.o btconfig.o: btconfig.cpp /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/btcontent.Po ctorrent-1.3.4/.deps/btcontent.Po +--- ctorrent-1.3.4.sav/.deps/btcontent.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/btcontent.Po 2006-06-28 19:24:12.000000000 +0200 +@@ -0,0 +1,223 @@ ++btcontent.o btcontent.o: btcontent.cpp btcontent.h def.h config.h \ ++ /usr/include/sys/types.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ ++ /usr/include/bits/stdio.h bitfield.h btfiles.h def.h \ ++ /usr/include/unistd.h /usr/include/bits/posix_opt.h \ ++ /usr/include/bits/environments.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/sys/param.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/linux/param.h /usr/include/asm/param.h \ ++ /usr/include/asm-i386/param.h /usr/include/xlocale.h \ ++ /usr/include/sys/stat.h /usr/include/bits/stat.h /usr/include/stdlib.h \ ++ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ ++ /usr/include/alloca.h /usr/include/string.h /usr/include/fcntl.h \ ++ /usr/include/bits/fcntl.h /usr/include/errno.h \ ++ /usr/include/bits/errno.h /usr/include/linux/errno.h \ ++ /usr/include/asm/errno.h /usr/include/asm-i386/errno.h btconfig.h \ ++ bencode.h peer.h /usr/include/sys/socket.h /usr/include/sys/uio.h \ ++ /usr/include/bits/uio.h /usr/include/bits/socket.h \ ++ /usr/include/bits/sockaddr.h /usr/include/asm/socket.h \ ++ /usr/include/asm-i386/socket.h /usr/include/asm/sockios.h \ ++ /usr/include/asm-i386/sockios.h /usr/include/arpa/inet.h \ ++ /usr/include/netinet/in.h /usr/include/stdint.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h btrequest.h btstream.h bufio.h def.h \ ++ rate.h httpencode.h tracker.h /usr/include/sys/time.h sha1.h ++ ++btcontent.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++def.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/sys/stat.h: ++ ++/usr/include/bits/stat.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/string.h: ++ ++/usr/include/fcntl.h: ++ ++/usr/include/bits/fcntl.h: ++ ++/usr/include/errno.h: ++ ++/usr/include/bits/errno.h: ++ ++/usr/include/linux/errno.h: ++ ++/usr/include/asm/errno.h: ++ ++/usr/include/asm-i386/errno.h: ++ ++btconfig.h: ++ ++bencode.h: ++ ++peer.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++btrequest.h: ++ ++btstream.h: ++ ++bufio.h: ++ ++def.h: ++ ++rate.h: ++ ++httpencode.h: ++ ++tracker.h: ++ ++/usr/include/sys/time.h: ++ ++sha1.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/btfiles.Po ctorrent-1.3.4/.deps/btfiles.Po +--- ctorrent-1.3.4.sav/.deps/btfiles.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/btfiles.Po 2006-06-28 19:24:13.000000000 +0200 +@@ -0,0 +1,172 @@ ++btfiles.o btfiles.o: btfiles.cpp btfiles.h def.h config.h \ ++ /usr/include/sys/types.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ ++ /usr/include/bits/stdio.h bitfield.h /usr/include/unistd.h \ ++ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ ++ /usr/include/bits/confname.h /usr/include/getopt.h \ ++ /usr/include/dirent.h /usr/include/bits/dirent.h \ ++ /usr/include/bits/posix1_lim.h /usr/include/bits/local_lim.h \ ++ /usr/include/linux/limits.h /usr/include/sys/param.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix2_lim.h \ ++ /usr/include/bits/xopen_lim.h /usr/include/linux/param.h \ ++ /usr/include/asm/param.h /usr/include/asm-i386/param.h \ ++ /usr/include/xlocale.h /usr/include/sys/stat.h /usr/include/bits/stat.h \ ++ /usr/include/stdlib.h /usr/include/bits/waitflags.h \ ++ /usr/include/bits/waitstatus.h /usr/include/alloca.h \ ++ /usr/include/string.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \ ++ /usr/include/errno.h /usr/include/bits/errno.h \ ++ /usr/include/linux/errno.h /usr/include/asm/errno.h \ ++ /usr/include/asm-i386/errno.h bencode.h btconfig.h btcontent.h def.h ++ ++btfiles.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/dirent.h: ++ ++/usr/include/bits/dirent.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/sys/stat.h: ++ ++/usr/include/bits/stat.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/string.h: ++ ++/usr/include/fcntl.h: ++ ++/usr/include/bits/fcntl.h: ++ ++/usr/include/errno.h: ++ ++/usr/include/bits/errno.h: ++ ++/usr/include/linux/errno.h: ++ ++/usr/include/asm/errno.h: ++ ++/usr/include/asm-i386/errno.h: ++ ++bencode.h: ++ ++btconfig.h: ++ ++btcontent.h: ++ ++def.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/btrequest.Po ctorrent-1.3.4/.deps/btrequest.Po +--- ctorrent-1.3.4.sav/.deps/btrequest.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/btrequest.Po 2006-06-28 19:24:13.000000000 +0200 +@@ -0,0 +1,100 @@ ++btrequest.o btrequest.o: btrequest.cpp /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/stdlib.h /usr/include/bits/waitflags.h \ ++ /usr/include/bits/waitstatus.h /usr/include/xlocale.h \ ++ /usr/include/alloca.h btrequest.h btcontent.h def.h config.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ ++ /usr/include/bits/stdio.h bitfield.h btfiles.h def.h btconfig.h ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/alloca.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++def.h: ++ ++btconfig.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/btstream.Po ctorrent-1.3.4/.deps/btstream.Po +--- ctorrent-1.3.4.sav/.deps/btstream.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/btstream.Po 2006-06-28 19:24:13.000000000 +0200 +@@ -0,0 +1,176 @@ ++btstream.o btstream.o: btstream.cpp /usr/include/arpa/inet.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/netinet/in.h \ ++ /usr/include/stdint.h /usr/include/bits/wchar.h \ ++ /usr/include/bits/wordsize.h /usr/include/sys/socket.h \ ++ /usr/include/sys/uio.h /usr/include/sys/types.h \ ++ /usr/include/bits/types.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/bits/uio.h /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/bits/in.h /usr/include/bits/byteswap.h btstream.h def.h \ ++ config.h bufio.h def.h /usr/include/unistd.h \ ++ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ ++ /usr/include/bits/confname.h /usr/include/getopt.h peer.h \ ++ /usr/include/unistd.h /usr/include/string.h /usr/include/xlocale.h \ ++ btrequest.h btcontent.h def.h /usr/include/stdio.h /usr/include/libio.h \ ++ /usr/include/_G_config.h /usr/include/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h bitfield.h \ ++ btfiles.h rate.h btconfig.h msgencode.h ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++btstream.h: ++ ++def.h: ++ ++config.h: ++ ++bufio.h: ++ ++def.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++peer.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/string.h: ++ ++/usr/include/xlocale.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++def.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++rate.h: ++ ++btconfig.h: ++ ++msgencode.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/bufio.Po ctorrent-1.3.4/.deps/bufio.Po +--- ctorrent-1.3.4.sav/.deps/bufio.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/bufio.Po 2006-06-28 19:24:13.000000000 +0200 +@@ -0,0 +1,178 @@ ++bufio.o bufio.o: bufio.cpp bufio.h def.h config.h \ ++ /usr/include/sys/types.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/unistd.h /usr/include/bits/posix_opt.h \ ++ /usr/include/bits/environments.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/sys/time.h /usr/include/sys/socket.h \ ++ /usr/include/sys/uio.h /usr/include/bits/uio.h \ ++ /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/arpa/inet.h /usr/include/netinet/in.h \ ++ /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h /usr/include/string.h \ ++ /usr/include/xlocale.h /usr/include/errno.h /usr/include/bits/errno.h \ ++ /usr/include/linux/errno.h /usr/include/asm/errno.h \ ++ /usr/include/asm-i386/errno.h btrequest.h btcontent.h def.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h bitfield.h \ ++ btfiles.h def.h ++ ++bufio.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/time.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++/usr/include/string.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/errno.h: ++ ++/usr/include/bits/errno.h: ++ ++/usr/include/linux/errno.h: ++ ++/usr/include/asm/errno.h: ++ ++/usr/include/asm-i386/errno.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++def.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++def.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/connect_nonb.Po ctorrent-1.3.4/.deps/connect_nonb.Po +--- ctorrent-1.3.4.sav/.deps/connect_nonb.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/connect_nonb.Po 2006-06-28 19:24:13.000000000 +0200 +@@ -0,0 +1,112 @@ ++connect_nonb.o connect_nonb.o: connect_nonb.cpp /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ connect_nonb.h def.h config.h /usr/include/sys/socket.h \ ++ /usr/include/sys/uio.h /usr/include/bits/uio.h \ ++ /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/errno.h /usr/include/bits/errno.h \ ++ /usr/include/linux/errno.h /usr/include/asm/errno.h \ ++ /usr/include/asm-i386/errno.h ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++connect_nonb.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/errno.h: ++ ++/usr/include/bits/errno.h: ++ ++/usr/include/linux/errno.h: ++ ++/usr/include/asm/errno.h: ++ ++/usr/include/asm-i386/errno.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/ctcs.Po ctorrent-1.3.4/.deps/ctcs.Po +--- ctorrent-1.3.4.sav/.deps/ctcs.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/ctcs.Po 2006-06-28 19:24:14.000000000 +0200 +@@ -0,0 +1,246 @@ ++ctcs.o ctcs.o: ctcs.cpp /usr/include/unistd.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/sys/time.h /usr/include/time.h \ ++ /usr/include/bits/time.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/xlocale.h /usr/include/netdb.h /usr/include/netinet/in.h \ ++ /usr/include/stdint.h /usr/include/bits/wchar.h \ ++ /usr/include/sys/socket.h /usr/include/sys/uio.h \ ++ /usr/include/sys/types.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/bits/uio.h /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/bits/in.h /usr/include/bits/byteswap.h \ ++ /usr/include/rpc/netdb.h /usr/include/bits/siginfo.h \ ++ /usr/include/bits/netdb.h /usr/include/stdlib.h \ ++ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ ++ /usr/include/alloca.h /usr/include/string.h /usr/include/errno.h \ ++ /usr/include/bits/errno.h /usr/include/linux/errno.h \ ++ /usr/include/asm/errno.h /usr/include/asm-i386/errno.h \ ++ /usr/include/ctype.h ctcs.h tracker.h def.h config.h bufio.h def.h \ ++ /usr/include/arpa/inet.h /usr/include/sys/param.h \ ++ /usr/include/linux/param.h /usr/include/asm/param.h \ ++ /usr/include/asm-i386/param.h btconfig.h btcontent.h def.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h bitfield.h \ ++ btfiles.h setnonblock.h connect_nonb.h peerlist.h peer.h def.h \ ++ btrequest.h btcontent.h bitfield.h btstream.h bufio.h rate.h btconfig.h \ ++ rate.h peer.h bttime.h ++ ++/usr/include/unistd.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/time.h: ++ ++/usr/include/time.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/netdb.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++/usr/include/rpc/netdb.h: ++ ++/usr/include/bits/siginfo.h: ++ ++/usr/include/bits/netdb.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/string.h: ++ ++/usr/include/errno.h: ++ ++/usr/include/bits/errno.h: ++ ++/usr/include/linux/errno.h: ++ ++/usr/include/asm/errno.h: ++ ++/usr/include/asm-i386/errno.h: ++ ++/usr/include/ctype.h: ++ ++ctcs.h: ++ ++tracker.h: ++ ++def.h: ++ ++config.h: ++ ++bufio.h: ++ ++def.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++btconfig.h: ++ ++btcontent.h: ++ ++def.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++setnonblock.h: ++ ++connect_nonb.h: ++ ++peerlist.h: ++ ++peer.h: ++ ++def.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++bitfield.h: ++ ++btstream.h: ++ ++bufio.h: ++ ++rate.h: ++ ++btconfig.h: ++ ++rate.h: ++ ++peer.h: ++ ++bttime.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/ctorrent.Po ctorrent-1.3.4/.deps/ctorrent.Po +--- ctorrent-1.3.4.sav/.deps/ctorrent.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/ctorrent.Po 2006-06-28 19:24:14.000000000 +0200 +@@ -0,0 +1,246 @@ ++ctorrent.o ctorrent.o: ctorrent.cpp def.h config.h \ ++ /usr/include/sys/types.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/unistd.h /usr/include/bits/posix_opt.h \ ++ /usr/include/bits/environments.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/signal.h /usr/include/bits/signum.h \ ++ /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ ++ /usr/include/bits/sigcontext.h /usr/include/asm/sigcontext.h \ ++ /usr/include/asm-i386/sigcontext.h /usr/include/bits/sigstack.h \ ++ /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h \ ++ /usr/include/sys/time.h /usr/include/xlocale.h /usr/include/string.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/bits/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ ++ /usr/include/bits/stdio.h /usr/include/stdlib.h \ ++ /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ ++ /usr/include/alloca.h btconfig.h btcontent.h def.h bitfield.h btfiles.h \ ++ downloader.h peerlist.h peer.h def.h /usr/include/sys/socket.h \ ++ /usr/include/sys/uio.h /usr/include/bits/uio.h \ ++ /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/sockaddr.h /usr/include/asm/socket.h \ ++ /usr/include/asm-i386/socket.h /usr/include/asm/sockios.h \ ++ /usr/include/asm-i386/sockios.h /usr/include/arpa/inet.h \ ++ /usr/include/netinet/in.h /usr/include/stdint.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h btrequest.h btcontent.h bitfield.h \ ++ btstream.h bufio.h def.h rate.h def.h btconfig.h rate.h tracker.h \ ++ bufio.h /usr/include/sys/param.h /usr/include/linux/param.h \ ++ /usr/include/asm/param.h /usr/include/asm-i386/param.h ctcs.h config.h \ ++ sigint.h ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/signal.h: ++ ++/usr/include/bits/signum.h: ++ ++/usr/include/bits/siginfo.h: ++ ++/usr/include/bits/sigaction.h: ++ ++/usr/include/bits/sigcontext.h: ++ ++/usr/include/asm/sigcontext.h: ++ ++/usr/include/asm-i386/sigcontext.h: ++ ++/usr/include/bits/sigstack.h: ++ ++/usr/include/sys/ucontext.h: ++ ++/usr/include/bits/sigthread.h: ++ ++/usr/include/sys/time.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/string.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++btconfig.h: ++ ++btcontent.h: ++ ++def.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++downloader.h: ++ ++peerlist.h: ++ ++peer.h: ++ ++def.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++bitfield.h: ++ ++btstream.h: ++ ++bufio.h: ++ ++def.h: ++ ++rate.h: ++ ++def.h: ++ ++btconfig.h: ++ ++rate.h: ++ ++tracker.h: ++ ++bufio.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++ctcs.h: ++ ++config.h: ++ ++sigint.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/downloader.Po ctorrent-1.3.4/.deps/downloader.Po +--- ctorrent-1.3.4.sav/.deps/downloader.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/downloader.Po 2006-06-28 19:24:14.000000000 +0200 +@@ -0,0 +1,214 @@ ++downloader.o downloader.o: downloader.cpp /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/xlocale.h /usr/include/sys/socket.h /usr/include/sys/uio.h \ ++ /usr/include/bits/uio.h /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/sys/time.h /usr/include/unistd.h \ ++ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ ++ /usr/include/bits/confname.h /usr/include/getopt.h \ ++ /usr/include/netinet/in.h /usr/include/stdint.h \ ++ /usr/include/bits/wchar.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h /usr/include/arpa/inet.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h \ ++ /usr/include/stdlib.h /usr/include/bits/waitflags.h \ ++ /usr/include/bits/waitstatus.h /usr/include/alloca.h \ ++ /usr/include/string.h peerlist.h def.h config.h peer.h def.h \ ++ btrequest.h btcontent.h def.h bitfield.h btfiles.h btstream.h bufio.h \ ++ def.h rate.h btconfig.h rate.h tracker.h bufio.h \ ++ /usr/include/sys/param.h /usr/include/linux/param.h \ ++ /usr/include/asm/param.h /usr/include/asm-i386/param.h btconfig.h \ ++ btcontent.h ctcs.h bttime.h ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/sys/time.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/string.h: ++ ++peerlist.h: ++ ++def.h: ++ ++config.h: ++ ++peer.h: ++ ++def.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++def.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++btstream.h: ++ ++bufio.h: ++ ++def.h: ++ ++rate.h: ++ ++btconfig.h: ++ ++rate.h: ++ ++tracker.h: ++ ++bufio.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++btconfig.h: ++ ++btcontent.h: ++ ++ctcs.h: ++ ++bttime.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/httpencode.Po ctorrent-1.3.4/.deps/httpencode.Po +--- ctorrent-1.3.4.sav/.deps/httpencode.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/httpencode.Po 2006-06-28 19:24:14.000000000 +0200 +@@ -0,0 +1,72 @@ ++httpencode.o httpencode.o: httpencode.cpp def.h config.h \ ++ /usr/include/sys/types.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h httpencode.h \ ++ /usr/include/stdlib.h /usr/include/bits/waitflags.h \ ++ /usr/include/bits/waitstatus.h /usr/include/xlocale.h \ ++ /usr/include/alloca.h /usr/include/ctype.h /usr/include/string.h \ ++ config.h ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++httpencode.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/ctype.h: ++ ++/usr/include/string.h: ++ ++config.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/iplist.Po ctorrent-1.3.4/.deps/iplist.Po +--- ctorrent-1.3.4.sav/.deps/iplist.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/iplist.Po 2006-06-28 19:24:14.000000000 +0200 +@@ -0,0 +1,130 @@ ++iplist.o iplist.o: iplist.cpp /usr/include/string.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/xlocale.h iplist.h def.h config.h /usr/include/unistd.h \ ++ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/include/bits/typesizes.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/sys/socket.h /usr/include/sys/uio.h \ ++ /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/bits/uio.h /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/arpa/inet.h /usr/include/netinet/in.h \ ++ /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h ++ ++/usr/include/string.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/xlocale.h: ++ ++iplist.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/peerlist.Po ctorrent-1.3.4/.deps/peerlist.Po +--- ctorrent-1.3.4.sav/.deps/peerlist.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/peerlist.Po 2006-06-28 19:24:16.000000000 +0200 +@@ -0,0 +1,237 @@ ++peerlist.o peerlist.o: peerlist.cpp /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h peerlist.h \ ++ def.h config.h peer.h def.h /usr/include/unistd.h \ ++ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ ++ /usr/include/bits/confname.h /usr/include/getopt.h \ ++ /usr/include/sys/socket.h /usr/include/sys/uio.h \ ++ /usr/include/bits/uio.h /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/arpa/inet.h /usr/include/netinet/in.h \ ++ /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h /usr/include/string.h \ ++ /usr/include/xlocale.h btrequest.h btcontent.h def.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h bitfield.h \ ++ btfiles.h btstream.h bufio.h def.h rate.h btconfig.h rate.h \ ++ /usr/include/stdlib.h /usr/include/bits/waitflags.h \ ++ /usr/include/bits/waitstatus.h /usr/include/alloca.h \ ++ /usr/include/errno.h /usr/include/bits/errno.h \ ++ /usr/include/linux/errno.h /usr/include/asm/errno.h \ ++ /usr/include/asm-i386/errno.h btconfig.h connect_nonb.h setnonblock.h \ ++ btcontent.h msgencode.h iplist.h def.h tracker.h bufio.h \ ++ /usr/include/sys/time.h /usr/include/sys/param.h \ ++ /usr/include/linux/param.h /usr/include/asm/param.h \ ++ /usr/include/asm-i386/param.h ctcs.h bttime.h ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++peerlist.h: ++ ++def.h: ++ ++config.h: ++ ++peer.h: ++ ++def.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++/usr/include/string.h: ++ ++/usr/include/xlocale.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++def.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++btstream.h: ++ ++bufio.h: ++ ++def.h: ++ ++rate.h: ++ ++btconfig.h: ++ ++rate.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/errno.h: ++ ++/usr/include/bits/errno.h: ++ ++/usr/include/linux/errno.h: ++ ++/usr/include/asm/errno.h: ++ ++/usr/include/asm-i386/errno.h: ++ ++btconfig.h: ++ ++connect_nonb.h: ++ ++setnonblock.h: ++ ++btcontent.h: ++ ++msgencode.h: ++ ++iplist.h: ++ ++def.h: ++ ++tracker.h: ++ ++bufio.h: ++ ++/usr/include/sys/time.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++ctcs.h: ++ ++bttime.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/peer.Po ctorrent-1.3.4/.deps/peer.Po +--- ctorrent-1.3.4.sav/.deps/peer.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/peer.Po 2006-06-28 19:24:15.000000000 +0200 +@@ -0,0 +1,201 @@ ++peer.o peer.o: peer.cpp peer.h def.h config.h /usr/include/unistd.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/posix_opt.h \ ++ /usr/include/bits/environments.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/sys/socket.h /usr/include/sys/uio.h \ ++ /usr/include/sys/types.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/bits/uio.h /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/arpa/inet.h /usr/include/netinet/in.h \ ++ /usr/include/stdint.h /usr/include/bits/wchar.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h /usr/include/string.h \ ++ /usr/include/xlocale.h btrequest.h btcontent.h def.h \ ++ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \ ++ /usr/include/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h bitfield.h \ ++ btfiles.h btstream.h bufio.h def.h rate.h btconfig.h \ ++ /usr/include/stdlib.h /usr/include/bits/waitflags.h \ ++ /usr/include/bits/waitstatus.h /usr/include/alloca.h \ ++ /usr/include/ctype.h btcontent.h msgencode.h peerlist.h def.h peer.h \ ++ rate.h btconfig.h bttime.h ++ ++peer.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++/usr/include/string.h: ++ ++/usr/include/xlocale.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++def.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++btstream.h: ++ ++bufio.h: ++ ++def.h: ++ ++rate.h: ++ ++btconfig.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/ctype.h: ++ ++btcontent.h: ++ ++msgencode.h: ++ ++peerlist.h: ++ ++def.h: ++ ++peer.h: ++ ++rate.h: ++ ++btconfig.h: ++ ++bttime.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/rate.Po ctorrent-1.3.4/.deps/rate.Po +--- ctorrent-1.3.4.sav/.deps/rate.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/rate.Po 2006-06-28 19:24:16.000000000 +0200 +@@ -0,0 +1,57 @@ ++rate.o rate.o: rate.cpp rate.h def.h config.h /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/xlocale.h bttime.h ++ ++rate.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/xlocale.h: ++ ++bttime.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/setnonblock.Po ctorrent-1.3.4/.deps/setnonblock.Po +--- ctorrent-1.3.4.sav/.deps/setnonblock.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/setnonblock.Po 2006-06-28 19:24:16.000000000 +0200 +@@ -0,0 +1,120 @@ ++setnonblock.o setnonblock.o: setnonblock.cpp setnonblock.h def.h config.h \ ++ /usr/include/sys/types.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/sys/socket.h /usr/include/sys/uio.h \ ++ /usr/include/bits/uio.h /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/unistd.h /usr/include/bits/posix_opt.h \ ++ /usr/include/bits/environments.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \ ++ /usr/include/sys/stat.h /usr/include/bits/stat.h ++ ++setnonblock.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/fcntl.h: ++ ++/usr/include/bits/fcntl.h: ++ ++/usr/include/sys/stat.h: ++ ++/usr/include/bits/stat.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/sha1.Po ctorrent-1.3.4/.deps/sha1.Po +--- ctorrent-1.3.4.sav/.deps/sha1.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/sha1.Po 2006-06-28 19:24:17.000000000 +0200 +@@ -0,0 +1,57 @@ ++sha1.o sha1.o: sha1.c /usr/include/string.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/string.h /usr/include/bits/string2.h \ ++ /usr/include/endian.h /usr/include/bits/endian.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/include/bits/typesizes.h /usr/include/stdlib.h sha1.h \ ++ /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h ++ ++/usr/include/string.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/string.h: ++ ++/usr/include/bits/string2.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/stdlib.h: ++ ++sha1.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/time.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/sigint.Po ctorrent-1.3.4/.deps/sigint.Po +--- ctorrent-1.3.4.sav/.deps/sigint.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/sigint.Po 2006-06-28 19:24:16.000000000 +0200 +@@ -0,0 +1,228 @@ ++sigint.o sigint.o: sigint.cpp /usr/include/sys/types.h \ ++ /usr/include/features.h /usr/include/sys/cdefs.h \ ++ /usr/include/gnu/stubs.h /usr/include/bits/types.h \ ++ /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h \ ++ /usr/include/signal.h /usr/include/bits/signum.h \ ++ /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \ ++ /usr/include/bits/sigcontext.h /usr/include/asm/sigcontext.h \ ++ /usr/include/asm-i386/sigcontext.h /usr/include/bits/sigstack.h \ ++ /usr/include/sys/ucontext.h /usr/include/bits/sigthread.h btcontent.h \ ++ def.h config.h /usr/include/stdio.h /usr/include/libio.h \ ++ /usr/include/_G_config.h /usr/include/wchar.h /usr/include/bits/wchar.h \ ++ /usr/include/gconv.h /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ ++ /usr/include/bits/stdio.h bitfield.h btfiles.h def.h tracker.h bufio.h \ ++ def.h /usr/include/unistd.h /usr/include/bits/posix_opt.h \ ++ /usr/include/bits/environments.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/sys/time.h /usr/include/sys/socket.h \ ++ /usr/include/sys/uio.h /usr/include/bits/uio.h \ ++ /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/sockaddr.h /usr/include/asm/socket.h \ ++ /usr/include/asm-i386/socket.h /usr/include/asm/sockios.h \ ++ /usr/include/asm-i386/sockios.h /usr/include/netinet/in.h \ ++ /usr/include/stdint.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h /usr/include/arpa/inet.h \ ++ /usr/include/sys/param.h /usr/include/linux/param.h \ ++ /usr/include/asm/param.h /usr/include/asm-i386/param.h btconfig.h \ ++ peerlist.h peer.h def.h /usr/include/string.h /usr/include/xlocale.h \ ++ btrequest.h btcontent.h bitfield.h btstream.h bufio.h rate.h btconfig.h \ ++ rate.h sigint.h ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++/usr/include/signal.h: ++ ++/usr/include/bits/signum.h: ++ ++/usr/include/bits/siginfo.h: ++ ++/usr/include/bits/sigaction.h: ++ ++/usr/include/bits/sigcontext.h: ++ ++/usr/include/asm/sigcontext.h: ++ ++/usr/include/asm-i386/sigcontext.h: ++ ++/usr/include/bits/sigstack.h: ++ ++/usr/include/sys/ucontext.h: ++ ++/usr/include/bits/sigthread.h: ++ ++btcontent.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++def.h: ++ ++tracker.h: ++ ++bufio.h: ++ ++def.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/time.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++btconfig.h: ++ ++peerlist.h: ++ ++peer.h: ++ ++def.h: ++ ++/usr/include/string.h: ++ ++/usr/include/xlocale.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++bitfield.h: ++ ++btstream.h: ++ ++bufio.h: ++ ++rate.h: ++ ++btconfig.h: ++ ++rate.h: ++ ++sigint.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/.deps/tracker.Po ctorrent-1.3.4/.deps/tracker.Po +--- ctorrent-1.3.4.sav/.deps/tracker.Po 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/.deps/tracker.Po 2006-06-28 19:24:17.000000000 +0200 +@@ -0,0 +1,244 @@ ++tracker.o tracker.o: tracker.cpp tracker.h def.h config.h \ ++ /usr/include/sys/types.h /usr/include/features.h \ ++ /usr/include/sys/cdefs.h /usr/include/gnu/stubs.h \ ++ /usr/include/bits/types.h /usr/include/bits/wordsize.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h \ ++ /usr/include/bits/typesizes.h /usr/include/time.h /usr/include/endian.h \ ++ /usr/include/bits/endian.h /usr/include/sys/select.h \ ++ /usr/include/bits/select.h /usr/include/bits/sigset.h \ ++ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ ++ /usr/include/bits/pthreadtypes.h /usr/include/bits/sched.h bufio.h \ ++ def.h /usr/include/unistd.h /usr/include/bits/posix_opt.h \ ++ /usr/include/bits/environments.h /usr/include/bits/confname.h \ ++ /usr/include/getopt.h /usr/include/sys/time.h /usr/include/sys/socket.h \ ++ /usr/include/sys/uio.h /usr/include/bits/uio.h \ ++ /usr/include/bits/socket.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h \ ++ /usr/include/limits.h /usr/include/bits/posix1_lim.h \ ++ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ ++ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \ ++ /usr/include/bits/stdio_lim.h /usr/include/bits/sockaddr.h \ ++ /usr/include/asm/socket.h /usr/include/asm-i386/socket.h \ ++ /usr/include/asm/sockios.h /usr/include/asm-i386/sockios.h \ ++ /usr/include/netinet/in.h /usr/include/stdint.h \ ++ /usr/include/bits/wchar.h /usr/include/bits/in.h \ ++ /usr/include/bits/byteswap.h /usr/include/arpa/inet.h \ ++ /usr/include/sys/param.h /usr/include/linux/param.h \ ++ /usr/include/asm/param.h /usr/include/asm-i386/param.h btconfig.h \ ++ /usr/include/xlocale.h /usr/include/netdb.h /usr/include/rpc/netdb.h \ ++ /usr/include/bits/siginfo.h /usr/include/bits/netdb.h \ ++ /usr/include/stdlib.h /usr/include/bits/waitflags.h \ ++ /usr/include/bits/waitstatus.h /usr/include/alloca.h \ ++ /usr/include/string.h /usr/include/errno.h /usr/include/bits/errno.h \ ++ /usr/include/linux/errno.h /usr/include/asm/errno.h \ ++ /usr/include/asm-i386/errno.h peerlist.h peer.h def.h btrequest.h \ ++ btcontent.h /usr/include/stdio.h /usr/include/libio.h \ ++ /usr/include/_G_config.h /usr/include/wchar.h /usr/include/gconv.h \ ++ /usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h \ ++ /usr/include/bits/sys_errlist.h /usr/include/bits/stdio.h bitfield.h \ ++ btfiles.h btstream.h bufio.h rate.h btconfig.h rate.h httpencode.h \ ++ bencode.h setnonblock.h connect_nonb.h btcontent.h iplist.h def.h \ ++ ctcs.h ++ ++tracker.h: ++ ++def.h: ++ ++config.h: ++ ++/usr/include/sys/types.h: ++ ++/usr/include/features.h: ++ ++/usr/include/sys/cdefs.h: ++ ++/usr/include/gnu/stubs.h: ++ ++/usr/include/bits/types.h: ++ ++/usr/include/bits/wordsize.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stddef.h: ++ ++/usr/include/bits/typesizes.h: ++ ++/usr/include/time.h: ++ ++/usr/include/endian.h: ++ ++/usr/include/bits/endian.h: ++ ++/usr/include/sys/select.h: ++ ++/usr/include/bits/select.h: ++ ++/usr/include/bits/sigset.h: ++ ++/usr/include/bits/time.h: ++ ++/usr/include/sys/sysmacros.h: ++ ++/usr/include/bits/pthreadtypes.h: ++ ++/usr/include/bits/sched.h: ++ ++bufio.h: ++ ++def.h: ++ ++/usr/include/unistd.h: ++ ++/usr/include/bits/posix_opt.h: ++ ++/usr/include/bits/environments.h: ++ ++/usr/include/bits/confname.h: ++ ++/usr/include/getopt.h: ++ ++/usr/include/sys/time.h: ++ ++/usr/include/sys/socket.h: ++ ++/usr/include/sys/uio.h: ++ ++/usr/include/bits/uio.h: ++ ++/usr/include/bits/socket.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/limits.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/syslimits.h: ++ ++/usr/include/limits.h: ++ ++/usr/include/bits/posix1_lim.h: ++ ++/usr/include/bits/local_lim.h: ++ ++/usr/include/linux/limits.h: ++ ++/usr/include/bits/posix2_lim.h: ++ ++/usr/include/bits/xopen_lim.h: ++ ++/usr/include/bits/stdio_lim.h: ++ ++/usr/include/bits/sockaddr.h: ++ ++/usr/include/asm/socket.h: ++ ++/usr/include/asm-i386/socket.h: ++ ++/usr/include/asm/sockios.h: ++ ++/usr/include/asm-i386/sockios.h: ++ ++/usr/include/netinet/in.h: ++ ++/usr/include/stdint.h: ++ ++/usr/include/bits/wchar.h: ++ ++/usr/include/bits/in.h: ++ ++/usr/include/bits/byteswap.h: ++ ++/usr/include/arpa/inet.h: ++ ++/usr/include/sys/param.h: ++ ++/usr/include/linux/param.h: ++ ++/usr/include/asm/param.h: ++ ++/usr/include/asm-i386/param.h: ++ ++btconfig.h: ++ ++/usr/include/xlocale.h: ++ ++/usr/include/netdb.h: ++ ++/usr/include/rpc/netdb.h: ++ ++/usr/include/bits/siginfo.h: ++ ++/usr/include/bits/netdb.h: ++ ++/usr/include/stdlib.h: ++ ++/usr/include/bits/waitflags.h: ++ ++/usr/include/bits/waitstatus.h: ++ ++/usr/include/alloca.h: ++ ++/usr/include/string.h: ++ ++/usr/include/errno.h: ++ ++/usr/include/bits/errno.h: ++ ++/usr/include/linux/errno.h: ++ ++/usr/include/asm/errno.h: ++ ++/usr/include/asm-i386/errno.h: ++ ++peerlist.h: ++ ++peer.h: ++ ++def.h: ++ ++btrequest.h: ++ ++btcontent.h: ++ ++/usr/include/stdio.h: ++ ++/usr/include/libio.h: ++ ++/usr/include/_G_config.h: ++ ++/usr/include/wchar.h: ++ ++/usr/include/gconv.h: ++ ++/usr/lib/gcc/i486-linux-gnu/4.0.3/include/stdarg.h: ++ ++/usr/include/bits/sys_errlist.h: ++ ++/usr/include/bits/stdio.h: ++ ++bitfield.h: ++ ++btfiles.h: ++ ++btstream.h: ++ ++bufio.h: ++ ++rate.h: ++ ++btconfig.h: ++ ++rate.h: ++ ++httpencode.h: ++ ++bencode.h: ++ ++setnonblock.h: ++ ++connect_nonb.h: ++ ++btcontent.h: ++ ++iplist.h: ++ ++def.h: ++ ++ctcs.h: +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/downloader.cpp ctorrent-1.3.4/downloader.cpp +--- ctorrent-1.3.4.sav/downloader.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/downloader.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -21,21 +21,37 @@ + #include "peerlist.h" + #include "tracker.h" + #include "btcontent.h" ++#include "ctcs.h" ++#include "btconfig.h" ++#include "bttime.h" ++ ++time_t now = (time_t) 0; + + void Downloader() + { + int nfds,maxfd,r; + struct timeval timeout; +- time_t now; fd_set rfd; fd_set wfd; + int stopped = 0; - for(;;){ -+ do{ - time(&now); +- time(&now); - if( BTCONTENT.SeedTimeout(&now) ) break; -+ if( !stopped && BTCONTENT.SeedTimeout(&now) ) { -+ Tracker.SetStoped(); -+ stopped = 1; ++ time(&now); ++ do{ ++ if( !stopped && ++ ( BTCONTENT.SeedTimeout(&now) || ++ (( cfg_exit_zero_peers || Tracker.IsQuitting() ) && ++ !WORLD.TotalPeers()) ) ){ ++ Tracker.SetStoped(); ++ stopped = 1; ++ if( arg_ctcs ) CTCS.Send_Status(); + } FD_ZERO(&rfd); FD_ZERO(&wfd); maxfd = Tracker.IntervalCheck(&now,&rfd, &wfd); -@@ -48,5 +52,5 @@ ++ if( arg_ctcs ){ ++ r = CTCS.IntervalCheck(&now,&rfd, &wfd); ++ if( r > maxfd ) maxfd = r; ++ } + r = WORLD.FillFDSET(&now,&rfd,&wfd); + if( r > maxfd ) maxfd = r; + +@@ -43,10 +59,13 @@ + timeout.tv_usec = 0; + + nfds = select(maxfd + 1,&rfd,&wfd,(fd_set*) 0,&timeout); ++ time(&now); + +- if(nfds > 0){ ++ if(nfds > 0){ if(T_FREE != Tracker.GetStatus()) Tracker.SocketReady(&rfd,&wfd,&nfds); - if( nfds ) WORLD.AnyPeerReady(&rfd,&wfd,&nfds); - } +- if( nfds ) WORLD.AnyPeerReady(&rfd,&wfd,&nfds); +- } - }/* end for(;;) */ -+ } while(Tracker.GetStatus() != T_FINISHED); ++ if(nfds > 0 && T_FREE != CTCS.GetStatus()) ++ CTCS.SocketReady(&rfd,&wfd,&nfds); ++ if(nfds > 0) WORLD.AnyPeerReady(&rfd,&wfd,&nfds); ++ } ++ } while(Tracker.GetStatus() != T_FINISHED || Tracker.IsPaused()); } -diff -u ctorrent-1.3.4.orig/httpencode.cpp ctorrent-1.3.4/httpencode.cpp ---- ctorrent-1.3.4.orig/httpencode.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/httpencode.cpp 2005-08-11 23:45:29.429693680 +0200 +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/httpencode.cpp ctorrent-1.3.4/httpencode.cpp +--- ctorrent-1.3.4.sav/httpencode.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/httpencode.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -1,6 +1,6 @@ ++#include "./def.h" + #include <sys/types.h> + +-#include "./def.h" + #include "./httpencode.h" + + #include <stdlib.h> @@ -88,7 +88,7 @@ /* path */ @@ -636,26 +11396,66 @@ diff -u ctorrent-1.3.4.orig/httpencode.cpp ctorrent-1.3.4/httpencode.cpp *path = '\0'; return 0; } -diff -u ctorrent-1.3.4.orig/httpencode.h ctorrent-1.3.4/httpencode.h ---- ctorrent-1.3.4.orig/httpencode.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/httpencode.h 2005-08-11 23:45:29.429693680 +0200 -@@ -2,8 +2,11 @@ +@@ -115,7 +115,7 @@ + hlen = p - b; + *pd = ( p + addtion ); + *dlen = n - hlen - addtion; +- }else{ // Ö»ÓÐÊײ¿ÐÅÏ¢???? ++ }else{ // Ö»ÓÐÊײ¿ÐÅÏ¢???? + hlen = n; + *pd = (char*) 0; + *dlen = 0; +@@ -131,8 +131,8 @@ + for(; n && *b != ' ' && *b != '\n'; b++,n--) ; + if( !n || *b != ' ') r = -1; + else{ +- r = atoi(b); +- if( r < 100 || r > 600 ) r = -1; ++ r = atoi(b); ++ if( r < 100 || r > 600 ) r = -1; + } + return r; + } +@@ -160,11 +160,11 @@ + + if( r > header_len ){ + if( strncasecmp(b, h, header_len) == 0){ +- /* header founded */ +- b += header_len; +- for(; *b != '\n'; v++,b++) *v = *b; +- *v = '\0'; +- return 0; ++ /* header founded */ ++ b += header_len; ++ for(; *b != '\n'; v++,b++) *v = *b; ++ *v = '\0'; ++ return 0; + } + } + b += r; +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/httpencode.h ctorrent-1.3.4/httpencode.h +--- ctorrent-1.3.4.sav/httpencode.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/httpencode.h 2006-06-28 19:30:02.000000000 +0200 +@@ -1,9 +1,13 @@ + #ifndef HTTPENCODE_H #define HTTPENCODE_H - #define REQ_URL_P1_FMT "GET %s?info_hash=%s&peer_id=%s&port=%d" +-#define REQ_URL_P1_FMT "GET %s?info_hash=%s&peer_id=%s&port=%d" -#define REQ_URL_P2_FMT "%s&uploaded=%d&downloaded=%d&left=%d&event=%s&compact=1 HTTP/1.0" -#define REQ_URL_P3_FMT "%s&uploaded=%d&downloaded=%d&left=%d&compact=1 HTTP/1.0" ++#define REQ_URL_P1_FMT "GET %s?info_hash=%s&peer_id=%s&port=%d&key=%s" ++#define REQ_URL_P1A_FMT "GET %s&info_hash=%s&peer_id=%s&port=%d&key=%s" +//#define REQ_URL_P2_FMT "%s&uploaded=%d&downloaded=%d&left=%d&event=%s&compact=1 HTTP/1.0" +//#define REQ_URL_P3_FMT "%s&uploaded=%d&downloaded=%d&left=%d&compact=1 HTTP/1.0" -+#define REQ_URL_P2_FMT "%s&uploaded=%llu&downloaded=%llu&left=%llu&compact=1&event=%s&numwant=%u HTTP/1.0" -+#define REQ_URL_P3_FMT "%s&uploaded=%llu&downloaded=%llu&left=%llu&compact=1&numwant=%u HTTP/1.0" ++#define REQ_URL_P2_FMT "%s&uploaded=%llu&downloaded=%llu&left=%llu&compact=1&event=%s&numwant=%u&key=%s HTTP/1.0" ++#define REQ_URL_P3_FMT "%s&uploaded=%llu&downloaded=%llu&left=%llu&compact=1&numwant=%u&key=%s HTTP/1.0" + char* Http_url_encode(char *s,char *b,size_t n); int Http_url_analyse(char *url,char *host,int *port,char *path); -diff -u ctorrent-1.3.4.orig/iplist.cpp ctorrent-1.3.4/iplist.cpp ---- ctorrent-1.3.4.orig/iplist.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/iplist.cpp 2005-08-11 23:45:29.429693680 +0200 +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/iplist.cpp ctorrent-1.3.4/iplist.cpp +--- ctorrent-1.3.4.sav/iplist.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/iplist.cpp 2006-06-28 19:30:02.000000000 +0200 @@ -8,8 +8,8 @@ IPLIST *node = ipl_head; for(; ipl_head;){ @@ -666,10 +11466,567 @@ diff -u ctorrent-1.3.4.orig/iplist.cpp ctorrent-1.3.4/iplist.cpp } count = 0; } -diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp ---- ctorrent-1.3.4.orig/peer.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/peer.cpp 2005-08-11 23:45:29.431693376 +0200 -@@ -2,12 +2,34 @@ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/Makefile.am ctorrent-1.3.4/Makefile.am +--- ctorrent-1.3.4.sav/Makefile.am 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/Makefile.am 2006-06-28 19:30:02.000000000 +0200 +@@ -1,2 +1,2 @@ + bin_PROGRAMS = ctorrent +-ctorrent_SOURCES = bencode.cpp bitfield.cpp btconfig.cpp btcontent.cpp btfiles.cpp btrequest.cpp btstream.cpp bufio.cpp connect_nonb.cpp ctorrent.cpp downloader.cpp httpencode.cpp iplist.cpp peer.cpp peerlist.cpp rate.cpp setnonblock.cpp sigint.cpp tracker.cpp bencode.h bitfield.h btconfig.h btcontent.h btfiles.h btrequest.h btstream.h bufio.h connect_nonb.h def.h downloader.h httpencode.h iplist.h msgencode.h peer.h peerlist.h rate.h setnonblock.h sigint.h tracker.h ++ctorrent_SOURCES = bencode.cpp bitfield.cpp btconfig.cpp btcontent.cpp btfiles.cpp btrequest.cpp btstream.cpp bufio.cpp connect_nonb.cpp ctcs.cpp ctorrent.cpp downloader.cpp httpencode.cpp iplist.cpp peer.cpp peerlist.cpp rate.cpp setnonblock.cpp sigint.cpp tracker.cpp sha1.c bencode.h bitfield.h btconfig.h btcontent.h btfiles.h btrequest.h btstream.h bufio.h connect_nonb.h ctcs.h def.h downloader.h httpencode.h iplist.h msgencode.h peer.h peerlist.h rate.h setnonblock.h sigint.h tracker.h sha1.h +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/Makefile.in ctorrent-1.3.4/Makefile.in +--- ctorrent-1.3.4.sav/Makefile.in 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/Makefile.in 2006-06-28 19:30:02.000000000 +0200 +@@ -1,8 +1,8 @@ +-# Makefile.in generated by automake 1.7.6 from Makefile.am. ++# Makefile.in generated by automake 1.9.1 from Makefile.am. + # @configure_input@ + +-# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 +-# Free Software Foundation, Inc. ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, + # with or without modifications, as long as this notice is preserved. +@@ -14,6 +14,8 @@ + + @SET_MAKE@ + ++SOURCES = $(ctorrent_SOURCES) ++ + srcdir = @srcdir@ + top_srcdir = @top_srcdir@ + VPATH = @srcdir@ +@@ -21,7 +23,6 @@ + pkglibdir = $(libdir)/@PACKAGE@ + pkgincludedir = $(includedir)/@PACKAGE@ + top_builddir = . +- + am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd + INSTALL = @INSTALL@ + install_sh_DATA = $(install_sh) -c -m 644 +@@ -35,6 +36,61 @@ + NORMAL_UNINSTALL = : + PRE_UNINSTALL = : + POST_UNINSTALL = : ++bin_PROGRAMS = ctorrent$(EXEEXT) ++subdir = . ++DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ ++ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ ++ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ ++ depcomp install-sh missing mkinstalldirs ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++ $(ACLOCAL_M4) ++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ ++ configure.lineno configure.status.lineno ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = config.h ++CONFIG_CLEAN_FILES = ++am__installdirs = "$(DESTDIR)$(bindir)" ++binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) ++PROGRAMS = $(bin_PROGRAMS) ++am_ctorrent_OBJECTS = bencode.$(OBJEXT) bitfield.$(OBJEXT) \ ++ btconfig.$(OBJEXT) btcontent.$(OBJEXT) btfiles.$(OBJEXT) \ ++ btrequest.$(OBJEXT) btstream.$(OBJEXT) bufio.$(OBJEXT) \ ++ connect_nonb.$(OBJEXT) ctcs.$(OBJEXT) ctorrent.$(OBJEXT) \ ++ downloader.$(OBJEXT) httpencode.$(OBJEXT) iplist.$(OBJEXT) \ ++ peer.$(OBJEXT) peerlist.$(OBJEXT) rate.$(OBJEXT) \ ++ setnonblock.$(OBJEXT) sigint.$(OBJEXT) tracker.$(OBJEXT) \ ++ sha1.$(OBJEXT) ++ctorrent_OBJECTS = $(am_ctorrent_OBJECTS) ++ctorrent_LDADD = $(LDADD) ++DEFAULT_INCLUDES = -I. -I$(srcdir) -I. ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ ++CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) ++CXXLD = $(CXX) ++CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ ++ -o $@ ++SOURCES = $(ctorrent_SOURCES) ++DIST_SOURCES = $(ctorrent_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++distdir = $(PACKAGE)-$(VERSION) ++top_distdir = $(distdir) ++am__remove_distdir = \ ++ { test ! -d $(distdir) \ ++ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ ++ && rm -fr $(distdir); }; } ++DIST_ARCHIVES = $(distdir).tar.gz ++GZIP_ENV = --best ++distuninstallcheck_listfiles = find . -type f -print ++distcleancheck_listfiles = find . -type f -print + ACLOCAL = @ACLOCAL@ + AMDEP_FALSE = @AMDEP_FALSE@ + AMDEP_TRUE = @AMDEP_TRUE@ +@@ -90,6 +146,8 @@ + am__include = @am__include@ + am__leading_dot = @am__leading_dot@ + am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ + bindir = @bindir@ + build_alias = @build_alias@ + datadir = @datadir@ +@@ -102,6 +160,7 @@ + libexecdir = @libexecdir@ + localstatedir = @localstatedir@ + mandir = @mandir@ ++mkdir_p = @mkdir_p@ + oldincludedir = @oldincludedir@ + prefix = @prefix@ + program_transform_name = @program_transform_name@ +@@ -109,76 +168,44 @@ + sharedstatedir = @sharedstatedir@ + sysconfdir = @sysconfdir@ + target_alias = @target_alias@ +-bin_PROGRAMS = ctorrent +-ctorrent_SOURCES = bencode.cpp bitfield.cpp btconfig.cpp btcontent.cpp btfiles.cpp btrequest.cpp btstream.cpp bufio.cpp connect_nonb.cpp ctorrent.cpp downloader.cpp httpencode.cpp iplist.cpp peer.cpp peerlist.cpp rate.cpp setnonblock.cpp sigint.cpp tracker.cpp bencode.h bitfield.h btconfig.h btcontent.h btfiles.h btrequest.h btstream.h bufio.h connect_nonb.h def.h downloader.h httpencode.h iplist.h msgencode.h peer.h peerlist.h rate.h setnonblock.h sigint.h tracker.h +-subdir = . +-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +-CONFIG_HEADER = config.h +-CONFIG_CLEAN_FILES = +-bin_PROGRAMS = ctorrent$(EXEEXT) +-PROGRAMS = $(bin_PROGRAMS) +- +-am_ctorrent_OBJECTS = bencode.$(OBJEXT) bitfield.$(OBJEXT) \ +- btconfig.$(OBJEXT) btcontent.$(OBJEXT) btfiles.$(OBJEXT) \ +- btrequest.$(OBJEXT) btstream.$(OBJEXT) bufio.$(OBJEXT) \ +- connect_nonb.$(OBJEXT) ctorrent.$(OBJEXT) downloader.$(OBJEXT) \ +- httpencode.$(OBJEXT) iplist.$(OBJEXT) peer.$(OBJEXT) \ +- peerlist.$(OBJEXT) rate.$(OBJEXT) setnonblock.$(OBJEXT) \ +- sigint.$(OBJEXT) tracker.$(OBJEXT) +-ctorrent_OBJECTS = $(am_ctorrent_OBJECTS) +-ctorrent_LDADD = $(LDADD) +-ctorrent_DEPENDENCIES = +-ctorrent_LDFLAGS = +- +-DEFAULT_INCLUDES = -I. -I$(srcdir) -I. +-depcomp = $(SHELL) $(top_srcdir)/depcomp +-am__depfiles_maybe = depfiles +-@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/bencode.Po ./$(DEPDIR)/bitfield.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/btconfig.Po ./$(DEPDIR)/btcontent.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/btfiles.Po ./$(DEPDIR)/btrequest.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/btstream.Po ./$(DEPDIR)/bufio.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/connect_nonb.Po ./$(DEPDIR)/ctorrent.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/downloader.Po ./$(DEPDIR)/httpencode.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/iplist.Po ./$(DEPDIR)/peer.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/peerlist.Po ./$(DEPDIR)/rate.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/setnonblock.Po ./$(DEPDIR)/sigint.Po \ +-@AMDEP_TRUE@ ./$(DEPDIR)/tracker.Po +-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ +- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +-CXXLD = $(CXX) +-CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ +- -o $@ +-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +-CCLD = $(CC) +-LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +-DIST_SOURCES = $(ctorrent_SOURCES) +-DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ +- Makefile.in NEWS aclocal.m4 config.h.in configure configure.ac \ +- depcomp install-sh missing mkinstalldirs +-SOURCES = $(ctorrent_SOURCES) +- ++ctorrent_SOURCES = bencode.cpp bitfield.cpp btconfig.cpp btcontent.cpp btfiles.cpp btrequest.cpp btstream.cpp bufio.cpp connect_nonb.cpp ctcs.cpp ctorrent.cpp downloader.cpp httpencode.cpp iplist.cpp peer.cpp peerlist.cpp rate.cpp setnonblock.cpp sigint.cpp tracker.cpp sha1.c bencode.h bitfield.h btconfig.h btcontent.h btfiles.h btrequest.h btstream.h bufio.h connect_nonb.h ctcs.h def.h downloader.h httpencode.h iplist.h msgencode.h peer.h peerlist.h rate.h setnonblock.h sigint.h tracker.h sha1.h + all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-am + + .SUFFIXES: +-.SUFFIXES: .cpp .o .obj +- +-am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +- configure.lineno +-$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++.SUFFIXES: .c .cpp .o .obj ++am--refresh: ++ @: ++$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) ++ @for dep in $?; do \ ++ case '$(am__configure_deps)' in \ ++ *$$dep*) \ ++ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ ++ cd $(srcdir) && $(AUTOMAKE) --gnu \ ++ && exit 0; \ ++ exit 1;; \ ++ esac; \ ++ done; \ ++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +- cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++ @case '$?' in \ ++ *config.status*) \ ++ echo ' $(SHELL) ./config.status'; \ ++ $(SHELL) ./config.status;; \ ++ *) \ ++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ ++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ ++ esac; + +-$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +-$(srcdir)/configure: $(srcdir)/configure.ac $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) +- cd $(srcdir) && $(AUTOCONF) + +-$(ACLOCAL_M4): configure.ac ++$(top_srcdir)/configure: $(am__configure_deps) ++ cd $(srcdir) && $(AUTOCONF) ++$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + + config.h: stamp-h1 +@@ -190,24 +217,23 @@ + stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +- +-$(srcdir)/config.h.in: $(top_srcdir)/configure.ac $(ACLOCAL_M4) ++$(srcdir)/config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) +- touch $(srcdir)/config.h.in ++ rm -f stamp-h1 ++ touch $@ + + distclean-hdr: + -rm -f config.h stamp-h1 +-binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) + install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) +- $(mkinstalldirs) $(DESTDIR)$(bindir) ++ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + if test -f $$p \ + ; then \ + f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ +- $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f || exit 1; \ ++ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ ++ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ + else :; fi; \ + done + +@@ -215,8 +241,8 @@ + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ +- echo " rm -f $(DESTDIR)$(bindir)/$$f"; \ +- rm -f $(DESTDIR)$(bindir)/$$f; \ ++ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ ++ rm -f "$(DESTDIR)$(bindir)/$$f"; \ + done + + clean-binPROGRAMS: +@@ -226,7 +252,7 @@ + $(CXXLINK) $(ctorrent_LDFLAGS) $(ctorrent_OBJECTS) $(ctorrent_LDADD) $(LIBS) + + mostlyclean-compile: +- -rm -f *.$(OBJEXT) core *.core ++ -rm -f *.$(OBJEXT) + + distclean-compile: + -rm -f *.tab.c +@@ -240,6 +266,7 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/btstream.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bufio.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connect_nonb.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctcs.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ctorrent.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/downloader.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpencode.Po@am__quote@ +@@ -248,43 +275,39 @@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/peerlist.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rate.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setnonblock.Po@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigint.Po@am__quote@ + @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tracker.Po@am__quote@ + +-distclean-depend: +- -rm -rf ./$(DEPDIR) ++.c.o: ++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ ++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ ++@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + + .cpp.o: +-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCXX_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCXX_TRUE@ fi ++@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + + .cpp.obj: +-@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +-@am__fastdepCXX_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`; \ +-@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +-@am__fastdepCXX_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +-@am__fastdepCXX_TRUE@ fi ++@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ ++@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi + @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +-@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi` ++@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + uninstall-info-am: + +-ETAGS = etags +-ETAGSFLAGS = +- +-CTAGS = ctags +-CTAGSFLAGS = +- +-tags: TAGS +- + ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ +@@ -293,6 +316,7 @@ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique ++tags: TAGS + + TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -304,10 +328,11 @@ + done | \ + $(AWK) ' { files[$$0] = 1; } \ + END { for (i in files) print i; }'`; \ +- test -z "$(ETAGS_ARGS)$$tags$$unique" \ +- || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +- $$tags $$unique +- ++ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++ test -n "$$unique" || unique=$$empty_fix; \ ++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++ $$tags $$unique; \ ++ fi + ctags: CTAGS + CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) +@@ -330,19 +355,6 @@ + + distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +- +-top_distdir = . +-distdir = $(PACKAGE)-$(VERSION) +- +-am__remove_distdir = \ +- { test ! -d $(distdir) \ +- || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ +- && rm -fr $(distdir); }; } +- +-GZIP_ENV = --best +-distuninstallcheck_listfiles = find . -type f -print +-distcleancheck_listfiles = find . -type f -print + + distdir: $(DISTFILES) + $(am__remove_distdir) +@@ -358,7 +370,7 @@ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ +- $(mkinstalldirs) "$(distdir)$$dir"; \ ++ $(mkdir_p) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ +@@ -379,19 +391,46 @@ + ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) + dist-gzip: distdir +- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ $(am__remove_distdir) ++ ++dist-bzip2: distdir ++ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 ++ $(am__remove_distdir) ++ ++dist-tarZ: distdir ++ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z ++ $(am__remove_distdir) ++ ++dist-shar: distdir ++ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz ++ $(am__remove_distdir) ++ ++dist-zip: distdir ++ -rm -f $(distdir).zip ++ zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + + dist dist-all: distdir +- $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz ++ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + + # This target untars the dist file and tries a VPATH configuration. Then + # it guarantees that the distribution is self-contained by making another + # tarfile. + distcheck: dist +- $(am__remove_distdir) +- GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - ++ case '$(DIST_ARCHIVES)' in \ ++ *.tar.gz*) \ ++ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ ++ *.tar.bz2*) \ ++ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ ++ *.tar.Z*) \ ++ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ ++ *.shar.gz*) \ ++ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ ++ *.zip*) \ ++ unzip $(distdir).zip ;;\ ++ esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst +@@ -411,19 +450,20 @@ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ +- (cd ../.. && $(mkinstalldirs) "$$dc_destdir") \ ++ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ +- && $(MAKE) $(AM_MAKEFLAGS) dist-gzip \ +- && rm -f $(distdir).tar.gz \ ++ && $(MAKE) $(AM_MAKEFLAGS) dist \ ++ && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) +- @echo "$(distdir).tar.gz is ready for distribution" | \ +- sed 'h;s/./=/g;p;x;p;x' ++ @(echo "$(distdir) archives ready for distribution: "; \ ++ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ ++ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' + distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ +@@ -445,9 +485,10 @@ + check-am: all-am + check: check-am + all-am: Makefile $(PROGRAMS) config.h +- + installdirs: +- $(mkinstalldirs) $(DESTDIR)$(bindir) ++ for dir in "$(DESTDIR)$(bindir)"; do \ ++ test -z "$$dir" || $(mkdir_p) "$$dir"; \ ++ done + install: install-am + install-exec: install-exec-am + install-data: install-data-am +@@ -459,7 +500,7 @@ + installcheck: installcheck-am + install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +- INSTALL_STRIP_FLAG=-s \ ++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + mostlyclean-generic: +@@ -467,7 +508,7 @@ + clean-generic: + + distclean-generic: +- -rm -f Makefile $(CONFIG_CLEAN_FILES) ++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + + maintainer-clean-generic: + @echo "This command is intended for maintainers to use" +@@ -478,13 +519,17 @@ + + distclean: distclean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) +-distclean-am: clean-am distclean-compile distclean-depend \ +- distclean-generic distclean-hdr distclean-tags ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++ distclean-hdr distclean-tags + + dvi: dvi-am + + dvi-am: + ++html: html-am ++ + info: info-am + + info-am: +@@ -502,6 +547,8 @@ + maintainer-clean: maintainer-clean-am + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache ++ -rm -rf ./$(DEPDIR) ++ -rm -f Makefile + maintainer-clean-am: distclean-am maintainer-clean-generic + + mostlyclean: mostlyclean-am +@@ -518,11 +565,12 @@ + + uninstall-am: uninstall-binPROGRAMS uninstall-info-am + +-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ +- clean-generic ctags dist dist-all dist-gzip distcheck distclean \ +- distclean-compile distclean-depend distclean-generic \ +- distclean-hdr distclean-tags distcleancheck distdir \ +- distuninstallcheck dvi dvi-am info info-am install install-am \ ++.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ ++ clean-binPROGRAMS clean-generic ctags dist dist-all dist-bzip2 \ ++ dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \ ++ distclean-compile distclean-generic distclean-hdr \ ++ distclean-tags distcleancheck distdir distuninstallcheck dvi \ ++ dvi-am html html-am info info-am install install-am \ + install-binPROGRAMS install-data install-data-am install-exec \ + install-exec-am install-info install-info-am install-man \ + install-strip installcheck installcheck-am installdirs \ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/peer.cpp ctorrent-1.3.4/peer.cpp +--- ctorrent-1.3.4.sav/peer.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/peer.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -2,14 +2,74 @@ #include <stdlib.h> #include <string.h> @@ -680,6 +12037,7 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp #include "./msgencode.h" #include "./peerlist.h" #include "./btconfig.h" ++#include "bttime.h" +size_t get_nl(char *sfrom) +{ @@ -701,10 +12059,58 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + *to = from & 0xff; +} + ++// Convert a peer ID to a printable string. ++int TextPeerID(unsigned char *peerid, char *txtid) ++{ ++ int i, j; ++ ++ for(i=j=0; i < PEER_ID_LEN; i++){ ++ if( i==j && isprint(peerid[i]) && !isspace(peerid[i]) ) ++ txtid[j++] = peerid[i]; ++ else{ ++ if(i==j){ sprintf(txtid+j, "0x"); j+=2; } ++ snprintf(txtid+j, 3, "%.2X", (int)(peerid[i])); ++ j += 2; ++ } ++ } ++ txtid[j] = '\0'; ++ ++ return 0; ++} ++ ++ ++/* g_next_up is used to rotate uploading. If we have the opportunity to ++ upload to a peer but skip it due to bw limiting, the var is set to point to ++ that peer and it will be given priority at the next opportunity. ++ g_next_dn is similar, but for downloading. ++ g_defer_up/dn is used to let the g_next peer object know if it skipped. ++*/ ++btPeer *g_next_up = (btPeer *)0; ++btPeer *g_next_dn = (btPeer *)0; ++unsigned char g_defer_up = 0; ++unsigned char g_defer_dn = 0; btBasic Self; ++void btBasic::SetCurrentRates() ++{ ++ m_current_dl = rate_dl.RateMeasure(); ++ m_current_ul = rate_ul.RateMeasure(); ++ m_use_current = 1; ++} ++ void btBasic::SetIp(struct sockaddr_in addr) -@@ -44,11 +66,13 @@ + { + memcpy(&m_sin.sin_addr,&addr.sin_addr,sizeof(struct in_addr)); +@@ -24,7 +84,7 @@ + { + // fprintf(stdout,"IpEquiv: %s <=> ", inet_ntoa(m_sin.sin_addr)); + // fprintf(stdout,"%s\n", inet_ntoa(addr.sin_addr)); +- return (memcmp(&m_sin.sin_addr,&addr.sin_addr,sizeof(struct in_addr)) == 0) ? ++ return (memcmp(&m_sin.sin_addr,&addr.sin_addr,sizeof(struct in_addr)) == 0) ? + 1 : 0; + } + +@@ -44,11 +104,13 @@ int btPeer::Need_Remote_Data() { @@ -718,28 +12124,44 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp return tmpBitfield.IsEmpty() ? 0 : 1; } return 0; -@@ -65,6 +89,7 @@ +@@ -59,12 +121,19 @@ + m_f_keepalive = 0; + m_status = P_CONNECTING; + m_unchoke_timestamp = (time_t) 0; +- time(&m_last_timestamp); ++ m_last_timestamp = now; + m_state.remote_choked = m_state.local_choked = 1; + m_state.remote_interested = m_state.local_interested = 0; m_err_count = 0; m_cached_idx = BTCONTENT.GetNPieces(); + m_standby = 0; ++ m_req_send = 5; ++ m_req_out = 0; ++ m_latency = 0; ++ m_prev_dlrate = 0; ++ m_health_time = m_receive_time = m_choketime = m_last_timestamp; ++ m_bad_health = 0; } int btPeer::SetLocal(unsigned char s) -@@ -72,20 +97,30 @@ +@@ -72,21 +141,37 @@ switch(s){ case M_CHOKE: if( m_state.local_choked ) return 0; -+ time(&m_unchoke_timestamp); ++ m_unchoke_timestamp = now; +// if(arg_verbose) fprintf(stderr, "Choking %p\n", this); + if(arg_verbose) fprintf(stderr, "Choking %p (D=%lluMB@%uK/s)\n", this, + TotalDL() >> 20, RateDL() >> 10); m_state.local_choked = 1; ++ if( g_next_up == this ) g_next_up = (btPeer *)0; ++ if( !reponse_q.IsEmpty()) reponse_q.Empty(); break; case M_UNCHOKE: if( !reponse_q.IsEmpty() ) StartULTimer(); if( !m_state.local_choked ) return 0; - time(&m_unchoke_timestamp); +- time(&m_unchoke_timestamp); ++ m_unchoke_timestamp = now; +// if(arg_verbose) fprintf(stderr, "Unchoking %p\n", this); + if(arg_verbose) fprintf(stderr, "Unchoking %p (D=%lluMB@%uK/s)\n", this, + TotalDL() >> 20, RateDL() >> 10); @@ -755,17 +12177,35 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp if( !m_state.local_interested ) return 0; + if(arg_verbose) fprintf(stderr, "Not interested in %p\n", this); m_state.local_interested = 0; ++ if( !request_q.IsEmpty() ){ ++ CancelRequest(request_q.GetHead()); ++ request_q.Empty(); ++ } break; default: -@@ -97,12 +132,15 @@ + return -1; // BUG ??? +@@ -97,103 +182,195 @@ int btPeer::RequestPiece() { size_t idx; + int endgame = 0; - PENDINGQUEUE.ReAssign(&request_q,bitfield); +- PENDINGQUEUE.ReAssign(&request_q,bitfield); ++ size_t qsize = request_q.Qsize(); ++ size_t psize = BTCONTENT.GetPieceLength() / cfg_req_slice_size; - if( !request_q.IsEmpty() ) return SendRequest(); +- if( !request_q.IsEmpty() ) return SendRequest(); ++ // See if there's room in the queue for a new piece. ++ // Also, don't queue another piece if we still have a full piece queued. ++ if( cfg_req_queue_length - qsize < psize || qsize >= psize ){ ++ m_req_send = m_req_out; // don't come back until you receive something. ++ return 0; ++ } ++ ++ if( PENDINGQUEUE.ReAssign(&request_q,bitfield) ){ ++ if(arg_verbose) fprintf(stderr, "Assigning to %p from Pending\n", this); ++ return SendRequest(); ++ } - if( m_cached_idx < BTCONTENT.GetNPieces() ){ + if( m_cached_idx < BTCONTENT.GetNPieces() && !BTCONTENT.pBF->IsEmpty() ){ @@ -774,8 +12214,11 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp idx = m_cached_idx; m_cached_idx = BTCONTENT.GetNPieces(); if( !BTCONTENT.pBF->IsSet(idx) && -@@ -110,39 +148,72 @@ - !WORLD.AlreadyRequested(idx) ){ +- !PENDINGQUEUE.Exist(idx) && +- !WORLD.AlreadyRequested(idx) ){ ++ !PENDINGQUEUE.Exist(idx) && ++ !WORLD.AlreadyRequested(idx) ){ ++ if(arg_verbose) fprintf(stderr, "Assigning #%u to %p\n", idx, this); return (request_q.CreateWithIdx(idx) < 0) ? -1 : SendRequest(); } - }else{ @@ -783,12 +12226,18 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + if( BTCONTENT.pBF->IsEmpty() ){ + // If we don't have a complete piece yet, try to get one that's already + // in progress. (Initial-piece mode) -+ btPeer *peer = WORLD.Who_Can_Duplicate(this, BTCONTENT.GetNPieces()); -+ if(peer){ -+ if(arg_verbose) fprintf( stderr, "Duping: %p to %p (#%u)\n", -+ peer, this, peer->request_q.GetRequestIdx() ); -+ return (request_q.CopyShuffle(peer->request_q) < 0) ? -1 : SendRequest(); -+ } ++ BitField tmpBitField = bitfield; ++ idx = WORLD.What_Can_Duplicate(tmpBitField, this, BTCONTENT.GetNPieces()); ++ if( idx < BTCONTENT.GetNPieces() ){ ++ if(arg_verbose) fprintf(stderr, "Want to dup #%u to %p\n", idx, this); ++ btPeer *peer = WORLD.WhoHas(idx); ++ if(peer){ ++ if(arg_verbose) fprintf( stderr, "Duping: %p to %p (#%u)\n", ++ peer, this, idx ); ++ return (request_q.CopyShuffle(&peer->request_q, idx) < 0) ? ++ -1 : SendRequest(); ++ } ++ }else if(arg_verbose) fprintf(stderr, "Nothing to dup to %p\n", this); + } // Doesn't have a piece that's already in progress--choose another. BitField tmpBitField; if( bitfield.IsFull() ){ @@ -825,41 +12274,58 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + // [tmpBitField2]... that we haven't requested from anyone. + if(tmpBitField2.IsEmpty()){ + // Everything this peer has that I want, I've already requested. -+ endgame = ( WORLD.Pieces_I_Can_Get() - BTCONTENT.pBF->Count() ) -+ < WORLD.TotalPeers(); ++ if( arg_file_to_download ){ ++ BitField afdBitField = *BTCONTENT.pBF; ++ afdBitField.Except(*BTCONTENT.pBFilter); ++ endgame = ( BTCONTENT.getFilePieces(arg_file_to_download) ++ - afdBitField.Count() ) < WORLD.TotalPeers(); ++ }else ++ endgame = ( WORLD.Pieces_I_Can_Get() - BTCONTENT.pBF->Count() ) ++ < WORLD.TotalPeers(); + if(endgame){ // OK to duplicate a request. -+// idx = tmpBitField.Random(); -+ idx = 0; // flag for Who_Can_Duplicate() -+ btPeer *peer = WORLD.Who_Can_Duplicate(this, idx); -+ if(arg_verbose) fprintf( stderr, "Duping: %p to %p (#%u)\n", -+ peer, this, peer->request_q.GetRequestIdx() ); -+ return (request_q.CopyShuffle(peer->request_q) < 0) ? -+ -1 : SendRequest(); ++// idx = tmpBitField.Random(); ++ idx = 0; // flag for Who_Can_Duplicate() ++ BitField tmpBitField3 = tmpBitField2; ++ idx = WORLD.What_Can_Duplicate(tmpBitField3, this, idx); ++ if( idx < BTCONTENT.GetNPieces() ){ ++ if(arg_verbose) fprintf(stderr,"Want to dup #%u to %p\n",idx,this); ++ btPeer *peer = WORLD.WhoHas(idx); ++ if(peer){ ++ if(arg_verbose) fprintf( stderr, "Duping: %p to %p (#%u)\n", ++ peer, this, idx ); ++ return (request_q.CopyShuffle(&peer->request_q, idx) < 0) ? ++ -1 : SendRequest(); ++ } ++ }else if(arg_verbose) fprintf(stderr, "Nothing to dup to %p\n",this); + }else{ // not endgame mode -+ btPeer *peer = WORLD.Who_Can_Abandon(this); // slowest choice -+ if(peer){ -+ // Cancel a request to the slowest peer & request it from this one. -+ if(arg_verbose) fprintf( stderr, "Reassigning %p to %p (#%u)\n", -+ peer, this, peer->request_q.GetRequestIdx() ); -+ peer->StopDLTimer(); -+ // RequestQueue class "moves" rather than "copies" in assignment! -+ request_q = peer->request_q; -+ -+ if(peer->CancelRequest(request_q.GetHead()) < 0 || -+ peer->RequestCheck() < 0){ -+ peer->CloseConnection(); -+ } -+ return SendRequest(); -+ }else m_standby = 1; // nothing to do at the moment ++ btPeer *peer = WORLD.Who_Can_Abandon(this); // slowest choice ++ if(peer){ ++ // Cancel a request to the slowest peer & request it from this one. ++ if(arg_verbose) fprintf( stderr, "Reassigning %p to %p (#%u)\n", ++ peer, this, peer->request_q.GetRequestIdx() ); ++ // RequestQueue class "moves" rather than "copies" in assignment! ++ if( request_q.Copy(&peer->request_q) < 0 ) return -1; ++ if(peer->CancelPiece() < 0 || peer->RequestCheck() < 0) ++ peer->CloseConnection(); ++ return SendRequest(); ++ }else{ ++ if(arg_verbose) fprintf(stderr, "%p standby\n", this); ++ m_standby = 1; // nothing to do at the moment ++ } + } }else{ - idx = tmpBitField.Random(); - return (request_q.CreateWithIdx(idx) < 0) ? -1 : SendRequest(); + // Request something that we haven't requested yet (most common case). -+ idx = tmpBitField2.Random(); ++ // Try to make it something that has good trade value. ++ BitField tmpBitField3 = tmpBitField2; ++ WORLD.FindValuedPieces(tmpBitField3, this, BTCONTENT.pBF->IsEmpty()); ++ if( tmpBitField3.IsEmpty() ) tmpBitField3 = tmpBitField2; ++ idx = tmpBitField3.Random(); ++ if(arg_verbose) fprintf(stderr, "Assigning #%u to %p\n", idx, this); + return (request_q.CreateWithIdx(idx) < 0) ? -1 : SendRequest(); } -+ } else { ++ }else{ + // We don't need anything from the peer. How'd we get here? + return SetLocal(M_NOT_INTERESTED); } @@ -867,7 +12333,10 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp return 0; } -@@ -152,37 +223,46 @@ + int btPeer::MsgDeliver() + { + size_t r,idx,off,len; ++ int retval = 0; char *msgbuf = stream.in_buffer.BasePointer(); @@ -875,7 +12344,7 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + r = get_nl(msgbuf); + // Don't require keepalives if we're receiving other messages. -+ time(&m_last_timestamp); ++ m_last_timestamp = now; if( 0 == r ){ - time(&m_last_timestamp); if( !m_f_keepalive ) if( stream.Send_Keepalive() < 0 ) return -1; @@ -887,24 +12356,38 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp case M_CHOKE: if(H_BASE_LEN != r){ return -1;} + if(arg_verbose) fprintf(stderr, "%p choked me\n", this); ++ if( m_lastmsg == M_UNCHOKE && m_last_timestamp <= m_choketime+1 ){ ++ m_err_count+=2; ++ if(arg_verbose) fprintf(stderr,"err: %p (%d) Choke oscillation\n", ++ this, m_err_count); ++ } ++ m_choketime = m_last_timestamp; m_state.remote_choked = 1; StopDLTimer(); ++ if( g_next_dn == this ) g_next_dn = (btPeer *)0; if( !request_q.IsEmpty()){ - PSLICE ps = request_q.GetHead(); +- PSLICE ps = request_q.GetHead(); - PENDINGQUEUE.Pending(&request_q); -+ if( !PENDINGQUEUE.Exist(request_q.GetRequestIdx()) ) -+ PENDINGQUEUE.Pending(&request_q); - if( CancelRequest(ps) < 0) return -1; +- if( CancelRequest(ps) < 0) return -1; ++ m_req_out = 0; ++ PENDINGQUEUE.Pending(&request_q); } - return 0; +- return 0; ++ break; + case M_UNCHOKE: if(H_BASE_LEN != r){return -1;} + if(arg_verbose) fprintf(stderr, "%p unchoked me\n", this); ++ if( m_lastmsg == M_CHOKE && m_last_timestamp <= m_choketime+1 ){ ++ m_err_count+=2; ++ if(arg_verbose) fprintf(stderr,"err: %p (%d) Choke oscillation\n", ++ this, m_err_count); ++ } ++ m_choketime = m_last_timestamp; m_state.remote_choked = 0; -+ if(!request_q.IsEmpty()) // shouldn't happen; maybe peer is confused. -+ return SendRequest(); - return RequestCheck(); +- return RequestCheck(); ++ retval = RequestCheck(); ++ break; case M_INTERESTED: if(H_BASE_LEN != r){return -1;} @@ -918,10 +12401,11 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp m_state.remote_interested = 0; StopULTimer(); -@@ -190,10 +270,11 @@ + /* remove peer's reponse queue */ if( !reponse_q.IsEmpty()) reponse_q.Empty(); - return 0; +- return 0; ++ break; + case M_HAVE: if(H_HAVE_LEN != r){return -1;} @@ -931,20 +12415,22 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp if( idx >= BTCONTENT.GetNPieces() || bitfield.IsSet(idx)) return -1; -@@ -201,19 +282,24 @@ +@@ -201,54 +378,90 @@ if( bitfield.IsFull() && BTCONTENT.pBF->IsFull() ){ return -2; } - if( !BTCONTENT.pBF->IsSet(idx) ) m_cached_idx = idx; + if( !BTCONTENT.pBF->IsSet(idx) && !BTCONTENT.pBFilter->IsSet(idx) ){ + m_cached_idx = idx; ++ if(arg_verbose && m_standby) fprintf(stderr, "%p un-standby\n", this); + m_standby = 0; + } + // if( !BTCONTENT.pBF->IsSet(idx) ) m_cached_idx = idx; - return ( !m_state.remote_choked && request_q.IsEmpty() ) ? RequestCheck() : 0; + // see if we're Interested now -+ return request_q.IsEmpty() ? RequestCheck() : 0; ++ if(!m_standby) retval = RequestCheck(); ++ break; case M_REQUEST: if(H_REQUEST_LEN != r || !m_state.remote_interested){ return -1; } @@ -960,24 +12446,49 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + len = get_nl(msgbuf + 13); if( !reponse_q.IsValidRequest(idx, off, len) ) return -1; - -@@ -222,6 +308,8 @@ +- +- return reponse_q.Add(idx, off, len); ++ ++ if( m_state.local_choked ){ ++ if( (m_latency && m_last_timestamp - m_unchoke_timestamp > m_latency) || ++ (!m_latency && m_last_timestamp - m_unchoke_timestamp > 60) ){ ++ m_err_count++; ++ if(arg_verbose) fprintf(stderr,"err: %p (%d) choked request\n", ++ this, m_err_count); ++ if( stream.Send_State(M_CHOKE) < 0 ) return -1; ++ // This will mess with the unchoke rotation (to this peer's ++ // disadvantage), but otherwise we may spam them with choke msgs. ++ m_unchoke_timestamp = m_last_timestamp; ++ } ++ }else retval = reponse_q.Add(idx, off, len); ++ break; + case M_PIECE: ++ m_receive_time = m_last_timestamp; if( request_q.IsEmpty() || !m_state.local_interested){ - m_err_count++; -+ if(arg_verbose) fprintf(stderr,"err: %p (%d) Unwanted piece\n", -+ this, m_err_count); - return 0; - } - return PieceDeliver(r); -@@ -230,22 +318,28 @@ +- m_err_count++; +- return 0; +- } +- return PieceDeliver(r); ++ m_err_count++; ++ if(arg_verbose) fprintf(stderr,"err: %p (%d) Unwanted piece\n", ++ this, m_err_count); ++ }else retval = PieceDeliver(r); ++ break; + + case M_BITFIELD: if( (r - 1) != bitfield.NBytes() || !bitfield.IsEmpty()) return -1; bitfield.SetReferBuffer(msgbuf + 5); - if(bitfield.IsFull() && BTCONTENT.pBF->IsFull()) return -2; +- if(bitfield.IsFull() && BTCONTENT.pBF->IsFull()) return -2; - return 0; ++ if(bitfield.IsFull()){ ++ if(arg_verbose) fprintf(stderr, "%p is a seed\n", this); ++ if(BTCONTENT.pBF->IsFull()) return -2; ++ } + + //This is needed in order to set our Interested state -+ return RequestCheck(); // fixed client stall ++ retval = RequestCheck(); // fixed client stall ++ break; case M_CANCEL: if(r != H_CANCEL_LEN || !m_state.remote_interested) return -1; @@ -989,59 +12500,168 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + off = get_nl(msgbuf + 9); + len = get_nl(msgbuf + 13); if( reponse_q.Remove(idx,off,len) < 0 ){ - m_err_count++; -+ if(arg_verbose) fprintf(stderr, "err: %p (%d) Bad cancel\n", -+ this, m_err_count); - return 0; +- m_err_count++; +- return 0; ++ m_err_count++; ++ if(arg_verbose) fprintf(stderr, "err: %p (%d) Bad cancel\n", ++ this, m_err_count); ++ }else{ ++ if( reponse_q.IsEmpty() ) StopULTimer(); ++ if( reponse_q.IsEmpty() || !CouldReponseSlice() ){ ++ if( g_next_up == this ) g_next_up = (btPeer *)0; ++ } } - if( reponse_q.IsEmpty() ) StopULTimer(); - return 0; +- if( reponse_q.IsEmpty() ) StopULTimer(); +- return 0; ++ break; ++ default: - return -1; // unknow message type +- } + if(arg_verbose) fprintf(stderr, "Unknown message type %u from peer %p\n", + msgbuf[4], this); -+ return 0; // ignore unknown message & continue (forward compatibility) - } ++ } // switch ++ ++ if( retval >= 0 ) m_lastmsg = msgbuf[4]; } - return 0; -@@ -279,8 +373,13 @@ +- return 0; ++ return retval; + } + + int btPeer::ReponseSlice() +@@ -270,6 +483,8 @@ + + Self.DataSended(len); + DataSended(len); ++ if(arg_verbose) fprintf(stderr, "Sending %d/%d/%d to %p\n", ++ (int)idx, (int)off, (int)len, this); + return stream.Send_Piece(idx,off,BTCONTENT.global_piece_buffer,len); + } + +@@ -278,32 +493,153 @@ + int btPeer::SendRequest() { ++ int first = 1; ++ PSLICE ps = request_q.NextSend(); ++ ++ if( m_req_out > cfg_req_queue_length ){ ++ if(arg_verbose) ++ fprintf(stderr, "ERROR@5: %p m_req_out underflow, resetting\n", this); ++ m_req_out = 0; ++ } ++ if( ps && m_req_out < m_req_send ){ ++ if(arg_verbose) ++ fprintf(stderr, "Requesting #%u from %p (%d left, %d slots):", ++ ps->index, this, request_q.Qsize(), m_req_send); ++ for( int i=0; ps && m_req_out < m_req_send && i<5; ps = ps->next, i++ ){ ++ if( first && (!RateDL() || ++ 0 >= (m_req_out+1) * ps->length / (double)RateDL() - m_latency) ){ ++ request_q.SetReqTime(ps, now); ++ first = 0; ++ } else request_q.SetReqTime(ps, (time_t)0); ++ if(arg_verbose) fprintf(stderr, "."); ++ if(stream.Send_Request(ps->index,ps->offset,ps->length) < 0){ return -1; } ++ request_q.SetNextSend(ps->next); ++ m_req_out++; ++ } ++ if(arg_verbose) fprintf(stderr, "\n"); ++ m_receive_time = now; ++ } ++ return ( m_req_out < m_req_send ) ? RequestPiece() : 0; ++} ++ ++int btPeer::CancelPiece() ++{ PSLICE ps = request_q.GetHead(); - for( ; ps ; ps = ps->next ) -+ if(arg_verbose) fprintf(stderr, "Requesting #%u from %p:", -+ request_q.GetRequestIdx(), this); -+ for( ; ps ; ps = ps->next ){ -+ if(arg_verbose) fprintf(stderr, "."); - if(stream.Send_Request(ps->index,ps->offset,ps->length) < 0){ return -1; } +- if(stream.Send_Request(ps->index,ps->offset,ps->length) < 0){ return -1; } ++ size_t idx; ++ int cancel = 1; ++ int retval; ++ ++ idx = ps->index; ++ for( ; ps; ps = ps->next){ ++ if( ps->index != idx ) break; ++ if( ps == request_q.NextSend() ) cancel = 0; ++ if( cancel ){ ++ if(stream.Send_Cancel(ps->index,ps->offset,ps->length) < 0) ++ return -1; ++ m_req_out--; ++ if( m_req_out > cfg_req_queue_length ){ ++ if(arg_verbose) ++ fprintf(stderr, "ERROR@1: %p m_req_out underflow, resetting\n", this); ++ m_req_out = 0; ++ } ++ } ++ request_q.Remove(ps->index, ps->offset, ps->length); + } -+ if(arg_verbose) fprintf(stderr, "\n"); ++ if( !m_req_out && g_next_dn == this ) g_next_dn = (btPeer *)0; - return stream.Flush(); - } -@@ -294,16 +393,56 @@ - return stream.Flush(); +- return stream.Flush(); ++ return 0; } + int btPeer::CancelRequest(PSLICE ps) + { ++ int retval; ++ + for( ; ps; ps = ps->next){ ++ if( ps == request_q.NextSend() ) break; + if(stream.Send_Cancel(ps->index,ps->offset,ps->length) < 0) + return -1; ++ m_req_out--; ++ if( m_req_out > cfg_req_queue_length ){ ++ if(arg_verbose) ++ fprintf(stderr, "ERROR@2: %p m_req_out underflow, resetting\n", this); ++ m_req_out = 0; ++ } + } +- return stream.Flush(); ++ if( !m_req_out && g_next_dn == this ) g_next_dn = (btPeer *)0; ++ ++ return 0; ++} ++ +int btPeer::CancelSliceRequest(size_t idx, size_t off, size_t len) +{ + PSLICE ps; ++ int cancel = 1; ++ int idxfound = 0; ++ int retval; + + for(ps = request_q.GetHead() ; ps; ps = ps->next){ -+ if( idx == ps->index && off == ps->offset && len == ps->length ){ -+ if( request_q.Remove(idx,off,len) < 0 ){ -+ m_err_count++; -+ if(arg_verbose) fprintf(stderr,"err: %p (%d) Bad CS remove\n", -+ this, m_err_count); ++ if( ps == request_q.NextSend() ) cancel = 0; ++ if( idx == ps->index ){ ++ if( off == ps->offset && len == ps->length ){ ++ if( request_q.Remove(idx,off,len) < 0 ){ ++ m_err_count++; ++ if(arg_verbose) fprintf(stderr,"err: %p (%d) Bad CS remove\n", ++ this, m_err_count); ++ } ++ if(cancel){ ++ if(stream.Send_Cancel(idx,off,len) < 0) ++ return -1; ++ m_req_out--; ++ if( m_req_out > cfg_req_queue_length ){ ++ if(arg_verbose) fprintf(stderr, ++ "ERROR@3: %p m_req_out underflow, resetting\n", this); ++ m_req_out = 0; ++ } ++ if( !m_req_out && g_next_dn == this ) g_next_dn = (btPeer *)0; ++ ++ // Don't call RequestCheck() here since that could cause the slice ++ // we're cancelling to be dup'd from another peer. ++ return 0; ++ } ++ break; + } -+ if(stream.Send_Cancel(idx,off,len) < 0) -+ return -1; -+ return stream.Flush(); -+ } ++ idxfound = 1; ++ }else if( idxfound ) break; + } + return 0; -+} -+ + } + int btPeer::ReportComplete(size_t idx) { if( BTCONTENT.APieceComplete(idx) ){ @@ -1077,9 +12697,12 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp return (P_FAILED == m_status) ? -1 : RequestCheck(); } -@@ -312,12 +451,14 @@ +@@ -311,17 +647,37 @@ + { size_t idx,off,len; char *msgbuf = stream.in_buffer.BasePointer(); ++ time_t t; ++ int dup = 0, requested = 1; - idx = ntohl(*(size_t*) (msgbuf + 5)); - off = ntohl(*(size_t*) (msgbuf + 9)); @@ -1087,6 +12710,21 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + off = get_nl(msgbuf + 9); len = mlen - 9; ++ if(arg_verbose) fprintf(stderr, "Receiving piece %d/%d/%d from %p\n", ++ (int)idx, (int)off, (int)len, this); ++ ++ t = request_q.GetReqTime(idx,off,len); ++ ++ PSLICE ps = request_q.GetHead(); ++ if( request_q.NextSend() ) ++ for( ; ps; ps = ps->next){ ++ if( ps == request_q.NextSend() ){ ++ requested = 0; ++ break; ++ } ++ if( idx==ps->index && off==ps->offset && len==ps->length ) break; ++ } ++ if( request_q.Remove(idx,off,len) < 0 ){ m_err_count++; + if(arg_verbose) fprintf(stderr, "err: %p (%d) Bad remove\n", @@ -1094,40 +12732,100 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp return 0; } -@@ -329,13 +470,21 @@ + if(BTCONTENT.WriteSlice((char*)(msgbuf + 13),idx,off,len) < 0){ ++ fprintf(stderr, "warn, WriteSlice failed; is filesystem full?\n"); + return 0; + } + +@@ -329,48 +685,172 @@ Self.DataRecved(len); DataRecved(len); + // Check for & cancel requests for this slice from other peers in initial + // and endgame modes. + if( BTCONTENT.pBF->Count() < 2 || -+ WORLD.Pieces_I_Can_Get() - BTCONTENT.pBF->Count() < WORLD.TotalPeers() ){ ++ WORLD.Pieces_I_Can_Get() - BTCONTENT.pBF->Count() < WORLD.TotalPeers() ) ++ dup = 1; ++ else if( arg_file_to_download ){ ++ BitField afdBitField = *BTCONTENT.pBF; ++ afdBitField.Except(*BTCONTENT.pBFilter); ++ if( BTCONTENT.getFilePieces(arg_file_to_download) - afdBitField.Count() ++ < WORLD.TotalPeers() ) ++ dup = 1; ++ } ++ if( dup ){ + WORLD.CancelSlice(idx, off, len); + PENDINGQUEUE.DeleteSlice(idx, off, len); + } + ++ // Determine how many outstanding requests we should maintain, roughly: ++ // (request turnaround latency) / (time to transmit one slice) ++ if(t){ ++ m_latency = (m_last_timestamp <= t) ? 1 : m_last_timestamp - t; ++ if(arg_verbose) fprintf(stderr, "%p latency is %d sec\n", ++ this, (int)m_latency); ++ m_latency_timestamp = m_last_timestamp; ++ } ++ ++ if( RateDL() > len/20 ){ ++ m_req_send = (int)( m_latency / (len / (double)RateDL()) + 1 ); ++ m_req_send = (m_req_send < 2) ? 2 : m_req_send; ++ ++ // If latency increases, we will see this as a dlrate decrease. ++ if( RateDL() < m_prev_dlrate ) m_req_send++; ++ else if( m_last_timestamp - m_latency_timestamp >= 30 && ++ // Try to force latency measurement every 30 seconds. ++ m_req_out == m_req_send - 1 ){ ++ m_req_send--; ++ m_latency_timestamp = m_last_timestamp; ++ } ++ m_prev_dlrate = RateDL(); ++ }else if (m_req_send < 5) m_req_send = 5; ++ ++ if( requested ) m_req_out--; ++ /* if piece download complete. */ - return request_q.IsEmpty() ? ReportComplete(idx) : 0; +- return request_q.IsEmpty() ? ReportComplete(idx) : 0; ++ return ( request_q.IsEmpty() || !request_q.HasIdx(idx) ) ? ++ ReportComplete(idx) : RequestCheck(); } int btPeer::RequestCheck() { - if( BandWidthLimit() ) return 0; -+ if( BandWidthLimitDown() ) return 0; - +- if( BTCONTENT.pBF->IsFull() ){ - if( bitfield.IsFull() ){ return -1; } -@@ -347,7 +496,8 @@ - if(request_q.IsEmpty() && !m_state.remote_choked){ - if( RequestPiece() < 0 ) return -1; +- if( bitfield.IsFull() ){ return -1; } ++ if( bitfield.IsFull() ){ return -2; } + return SetLocal(M_NOT_INTERESTED); + } + + if( Need_Remote_Data() ){ + if(!m_state.local_interested && SetLocal(M_INTERESTED) < 0) return -1; +- if(request_q.IsEmpty() && !m_state.remote_choked){ +- if( RequestPiece() < 0 ) return -1; ++ if( !m_state.remote_choked ){ ++ if( m_req_out > cfg_req_queue_length ){ ++ if(arg_verbose) ++ fprintf(stderr, "ERROR@4: %p m_req_out underflow, resetting\n", this); ++ m_req_out = 0; ++ } ++ if( request_q.IsEmpty() && RequestPiece() < 0 ) return -1; ++ else if( m_req_out < m_req_send && ++ (m_req_out < 2 || !RateDL() || ++ 1 >= (m_req_out+1) * request_q.GetRequestLen() / ++ (double)RateDL() - m_latency) ++ // above formula is to try to allow delay between sending batches of reqs ++ && SendRequest() < 0 ) return -1; } - } -+ } else ++ }else + if(m_state.local_interested && SetLocal(M_NOT_INTERESTED) < 0) return -1; if(!request_q.IsEmpty()) StartDLTimer(); ++ else StopDLTimer(); return 0; -@@ -355,6 +505,7 @@ + } void btPeer::CloseConnection() { @@ -1135,9 +12833,16 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp if( P_FAILED != m_status ){ m_status = P_FAILED; stream.Close(); -@@ -364,13 +515,76 @@ ++ if( !request_q.IsEmpty() ) ++ PENDINGQUEUE.Pending(&request_q); + } ++ if( g_next_up == this ) g_next_up = (btPeer *)0; ++ if( g_next_dn == this ) g_next_dn = (btPeer *)0; + } + int btPeer::HandShake() { ++ char txtid[PEER_ID_LEN*2+3]; ssize_t r = stream.Feed(); - if( r < 0 ) return -1; + if( r < 0 ){ @@ -1150,10 +12855,9 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + if( memcmp(stream.in_buffer.BasePointer()+20, + BTCONTENT.GetShakeBuffer()+20, (r<28) ? r-20 : 8) != 0 ){ + if(arg_verbose){ -+ if( r>48 ) fprintf( stderr, "\npeer %p gave 0x", this); -+ else fprintf( stderr, "\npeer gave 0x" ); ++ fprintf( stderr, "\npeer %p gave 0x", this); + for(int i=20; i<r && i<27; i++) fprintf(stderr, "%2.2hx", -+ (u_short)(u_char)(stream.in_buffer.BasePointer()[i])); ++ (unsigned short)(unsigned char)(stream.in_buffer.BasePointer()[i])); + fprintf( stderr, " as reserved bytes (partial)\n" ); + } + memcpy(stream.in_buffer.BasePointer()+20, BTCONTENT.GetShakeBuffer()+20, @@ -1165,12 +12869,16 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + if(arg_verbose){ + fprintf(stderr, "\nmine: 0x"); + for(int i=0; i<r && i<48; i++) fprintf(stderr, "%2.2hx", -+ (u_short)(u_char)(BTCONTENT.GetShakeBuffer()[i])); ++ (unsigned short)(unsigned char)(BTCONTENT.GetShakeBuffer()[i])); + fprintf(stderr, "\npeer: 0x"); + for(int i=0; i<r && i<48; i++) fprintf(stderr, "%2.2hx", -+ (u_short)(u_char)(stream.in_buffer.BasePointer()[i])); ++ (unsigned short)(unsigned char)(stream.in_buffer.BasePointer()[i])); + fprintf(stderr, "\n"); -+ fprintf(stderr, "peer is %.8s\n", stream.in_buffer.BasePointer()+48); ++ if( r>48 ){ ++ TextPeerID((unsigned char *)(stream.in_buffer.BasePointer()+48), ++ txtid); ++ fprintf(stderr, "peer is %s\n", txtid); ++ } + } + return -1; + } @@ -1185,135 +12893,346 @@ diff -u ctorrent-1.3.4.orig/peer.cpp ctorrent-1.3.4/peer.cpp + if(arg_verbose){ + fprintf(stderr, "\npeer %p gave 0x", this); + for(int i=20; i<27; i++) fprintf(stderr, "%2.2hx", -+ (u_short)(u_char)(stream.in_buffer.BasePointer()[i])); ++ (unsigned short)(unsigned char)(stream.in_buffer.BasePointer()[i])); + fprintf( stderr, " as reserved bytes\n" ); + } + memcpy(stream.in_buffer.BasePointer()+20, BTCONTENT.GetShakeBuffer()+20, 8); + } -+ if( memcmp(stream.in_buffer.BasePointer(),BTCONTENT.GetShakeBuffer(),48) != 0 ){ ++ if( memcmp(stream.in_buffer.BasePointer(), ++ BTCONTENT.GetShakeBuffer(),48) != 0 ){ + if(arg_verbose){ + fprintf(stderr, "\nmine: 0x"); + for(int i=0; i<48; i++) fprintf(stderr, "%2.2hx", -+ (u_short)(u_char)(BTCONTENT.GetShakeBuffer()[i])); ++ (unsigned short)(unsigned char)(BTCONTENT.GetShakeBuffer()[i])); + fprintf(stderr, "\npeer: 0x"); + for(int i=0; i<48; i++) fprintf(stderr, "%2.2hx", -+ (u_short)(u_char)(stream.in_buffer.BasePointer()[i])); ++ (unsigned short)(unsigned char)(stream.in_buffer.BasePointer()[i])); + fprintf(stderr, "\n"); + } + return -1; + } + ++ memcpy(id, stream.in_buffer.BasePointer()+48, PEER_ID_LEN); + if(arg_verbose){ -+ fprintf(stderr, "Peer %p ID: ", this); -+ for(int i=48; i<60; i++){ -+ if( isprint(stream.in_buffer.BasePointer()[i]) ) -+ fprintf(stderr, "%c", stream.in_buffer.BasePointer()[i]); -+ else break; -+ } -+ fprintf(stderr, "\n"); ++ TextPeerID((unsigned char *)(stream.in_buffer.BasePointer()+48), txtid); ++ fprintf(stderr, "Peer %p ID: %s\n", this, txtid); + } // ignore peer id verify if( !BTCONTENT.pBF->IsEmpty()){ -@@ -395,10 +609,17 @@ +@@ -395,20 +875,63 @@ return stream.Send_Buffer((char*)BTCONTENT.GetShakeBuffer(),68); } -int btPeer::BandWidthLimit() +int btPeer::BandWidthLimitUp() -+{ + { +- if( cfg_max_bandwidth <= 0 ) return 0; +- return ((Self.RateDL() + Self.RateUL()*2) / 1024 >= cfg_max_bandwidth) ? + if( cfg_max_bandwidth_up <= 0 ) return 0; + return ((Self.RateUL()) >= cfg_max_bandwidth_up) ? + 1:0; +} + +int btPeer::BandWidthLimitDown() - { -- if( cfg_max_bandwidth <= 0 ) return 0; -- return ((Self.RateDL() + Self.RateUL()*2) / 1024 >= cfg_max_bandwidth) ? ++{ + if( cfg_max_bandwidth_down <= 0 ) return 0; + return ((Self.RateDL()) >= cfg_max_bandwidth_down) ? 1:0; } -@@ -406,12 +627,23 @@ + int btPeer::NeedWrite() { int yn = 0; ++ ++ if( m_standby && WORLD.Endgame() ){ ++ if(arg_verbose) fprintf(stderr, "%p un-standby (endgame)\n", this); ++ m_standby = 0; ++ } ++ if( stream.out_buffer.Count() || // data need send in buffer. - (!reponse_q.IsEmpty() && CouldReponseSlice() && !BandWidthLimit()) || -+ (!reponse_q.IsEmpty() && CouldReponseSlice() && ! BandWidthLimitUp()) || -+ ( !m_state.remote_choked && request_q.IsEmpty() -+ && m_state.local_interested -+ && !BandWidthLimitDown() && !m_standby ) || // can request a piece. - P_CONNECTING == m_status ) // peer is connecting +- P_CONNECTING == m_status ) // peer is connecting ++ // can upload a slice ++ (!reponse_q.IsEmpty() && CouldReponseSlice() && !BandWidthLimitUp()) || ++ ++ ( (request_q.NextSend() && m_req_out < m_req_send && ++ (m_req_out < 2 || !RateDL() || ++ 1 >= (m_req_out+1) * request_q.GetRequestLen() / ++ (double)RateDL() - m_latency)) // can send queued request ++ || ++ (request_q.IsEmpty() && !m_state.remote_choked ++ && m_state.local_interested && !m_standby) // can request a new piece ++ ) // ok to send requests ++ ++ || P_CONNECTING == m_status ){ // peer is connecting ++ yn = 1; - return yn; - } - ++ ++ if( g_next_up==this && g_defer_up ){ ++ if(arg_verbose) fprintf(stderr, "%p skipped UL\n", this); ++ g_next_up = (btPeer *)0; ++ } ++ } ++ return yn; ++} ++ +int btPeer::NeedRead() +{ + int yn = 1; + if( !request_q.IsEmpty() && BandWidthLimitDown() ) + yn = 0; -+ return yn; -+} ++ else if( g_next_dn==this && g_defer_dn ){ ++ if(arg_verbose) fprintf(stderr, "%p skipped DL\n", this); ++ g_next_dn = (btPeer *)0; ++ } + return yn; + } + +@@ -432,20 +955,35 @@ + ssize_t r; + + if ( 64 < m_err_count ) return -1; +- +- r = stream.Feed(); + +- if( r < 0 && r != -2 ) +- return -1; +- else if ( r == -2 ) +- f_peer_closed = 1; ++ if( request_q.IsEmpty() || !BandWidthLimitDown() ){ ++ if ( request_q.IsEmpty() || !g_next_dn || g_next_dn==this ){ ++ if( g_next_dn ) g_next_dn = (btPeer *)0; + - int btPeer::CouldReponseSlice() - { - if(!m_state.local_choked && -@@ -453,15 +685,15 @@ ++ r = stream.Feed(); ++ ++ if( r < 0 && r != -2 ) ++ return -1; ++ else if ( r == -2 ) ++ f_peer_closed = 1; + +- r = stream.HaveMessage(); +- for( ; r;){ +- if( r < 0 ) return -1; +- if(MsgDeliver() < 0 || stream.PickMessage() < 0) return -1; +- r = stream.HaveMessage(); ++ r = stream.HaveMessage(); ++ for( ; r;){ ++ if( r < 0 ) return -1; ++ if(MsgDeliver() < 0 || stream.PickMessage() < 0) return -1; ++ r = stream.HaveMessage(); ++ } ++ }else{ ++ if(arg_verbose) ++ fprintf(stderr, "%p deferring DL to %p\n", this, g_next_dn); ++ if( !g_defer_dn ) g_defer_dn = 1; ++ } ++ }else if( !g_next_dn ){ ++ if(arg_verbose) fprintf(stderr, "%p waiting for DL bandwidth\n", this); ++ g_next_dn = this; ++ if( g_defer_dn ) g_defer_dn = 0; + } ++ + return f_peer_closed ? -1 : 0; + } + +@@ -453,27 +991,80 @@ { if( stream.out_buffer.Count() && stream.Flush() < 0) return -1; - if(! reponse_q.IsEmpty() && CouldReponseSlice() ) { -+ if( !reponse_q.IsEmpty() && CouldReponseSlice() && !BandWidthLimitUp() ) { - StartULTimer(); - Self.StartULTimer(); - } +- StartULTimer(); +- Self.StartULTimer(); +- } ++ if( !reponse_q.IsEmpty() && CouldReponseSlice() ) { ++ if( !BandWidthLimitUp() ){ ++ if( !g_next_up || g_next_up==this ){ ++ if( g_next_up ) g_next_up = (btPeer *)0; ++ ++ StartULTimer(); ++ Self.StartULTimer(); ++ if( ReponseSlice() < 0 ) return -1; ++ }else{ ++ if(arg_verbose) ++ fprintf(stderr, "%p deferring UL to %p\n", this, g_next_up); ++ if( !g_defer_up ) g_defer_up = 1; ++ } ++ }else if( !g_next_up ){ ++ if(arg_verbose) fprintf(stderr, "%p waiting for UL bandwidth\n", this); ++ g_next_up = this; ++ if( g_defer_up ) g_defer_up = 0; ++ } ++ }else if( g_next_up == this ) g_next_up = (btPeer *)0; - for(; !reponse_q.IsEmpty() && CouldReponseSlice(); ) -+ for(; !reponse_q.IsEmpty() && CouldReponseSlice() && !BandWidthLimitUp(); ) - if( ReponseSlice() < 0) return -1; +- if( ReponseSlice() < 0) return -1; ++ return (!m_state.remote_choked) ? RequestCheck() : 0; ++} -- return 0; -+ return (!m_state.remote_choked && request_q.IsEmpty()) ? RequestCheck() : 0; ++// Prevent a peer object from holding g_next_up when it's not ready to write. ++void btPeer::CheckSendStatus() ++{ ++ if( g_next_up == this && !BandWidthLimitUp() ){ ++ if(arg_verbose) fprintf(stderr, "%p is not write-ready\n", this); ++ g_next_up = (btPeer *)0; ++ } ++} ++ ++/* Detect if a peer ignored, discarded, or lost my request and we're waiting ++ for a piece that may never arrive. */ ++int btPeer::HealthCheck(time_t now) ++{ ++ if( m_health_time <= now - 60 ){ ++ m_health_time = now; ++ if( !m_state.remote_choked && m_req_out && ++ m_receive_time < now - (!m_latency ? 300 : ++ ((m_latency < 30) ? 60 : 2*m_latency)) ){ ++ // if a repeat occurrence, get rid of the peer ++ if( m_bad_health ) return -1; ++ m_bad_health = 1; ++ if(arg_verbose) ++ fprintf(stderr, "%p unresponsive; resetting request queue\n", this); ++ PSLICE ps = request_q.GetHead(); ++ int retval = CancelRequest(ps); ++ PENDINGQUEUE.Pending(&request_q); ++ return (retval < 0) ? -1 : RequestCheck(); ++ } else m_bad_health = 0; ++ } + return 0; } ++// This handles peers that suppress HAVE messages so that we don't always think ++// that they're empty. If we've sent the peer an amount of data equivalent to ++// two pieces, assume that they now have at least one complete piece. ++int btPeer::IsEmpty() const ++{ ++ return ( bitfield.IsEmpty() && TotalUL() < BTCONTENT.GetPieceLength()*2 ) ? ++ 1:0; ++} ++ void btPeer::dump() -diff -u ctorrent-1.3.4.orig/peer.h ctorrent-1.3.4/peer.h ---- ctorrent-1.3.4.orig/peer.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/peer.h 2005-08-11 23:45:29.432693224 +0200 -@@ -34,6 +34,9 @@ + { + struct sockaddr_in sin; + + GetAddress(&sin); + printf("%s: %d -> %d:%d %lud:%lud\n", inet_ntoa(sin.sin_addr), +- bitfield.Count(), +- Is_Remote_UnChoked() ? 1 : 0, +- request_q.IsEmpty() ? 0 : 1, +- (unsigned long)TotalDL(), +- (unsigned long)TotalUL()); ++ bitfield.Count(), ++ Is_Remote_UnChoked() ? 1 : 0, ++ request_q.IsEmpty() ? 0 : 1, ++ (unsigned long)TotalDL(), ++ (unsigned long)TotalUL()); + } + +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/peer.h ctorrent-1.3.4/peer.h +--- ctorrent-1.3.4.sav/peer.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/peer.h 2006-06-28 19:30:02.000000000 +0200 +@@ -19,6 +19,7 @@ + #include "btstream.h" + #include "bitfield.h" + #include "rate.h" ++#include "btconfig.h" + + #define P_CONNECTING (unsigned char) 0 // connecting + #define P_HANDSHAKE (unsigned char) 1 // handshaking +@@ -34,14 +35,24 @@ unsigned char reserved:4; /* unused */ }BTSTATUS; +size_t get_nl(char *from); +void set_nl(char *to, size_t from); + ++int TextPeerID(unsigned char *peerid, char *txtid); ++ class btBasic { private: -@@ -84,6 +87,7 @@ + Rate rate_dl; + Rate rate_ul; ++ size_t m_current_dl, m_current_ul; ++ unsigned char m_use_current:1; ++ unsigned char m_reserved:7; + public: + struct sockaddr_in m_sin; + ++ btBasic() { m_use_current = 0; } ++ + //IPµØÖ·Ïà¹Øº¯Êý + int IpEquiv(struct sockaddr_in addr); + void SetIp(struct sockaddr_in addr); +@@ -60,8 +71,10 @@ + void DataRecved(size_t nby) { rate_dl.CountAdd(nby); } + void DataSended(size_t nby) { rate_ul.CountAdd(nby); } + +- size_t RateDL() const { return rate_dl.RateMeasure(); } +- size_t RateUL() const { return rate_ul.RateMeasure();} ++ size_t RateDL() const { return m_use_current ? m_current_dl : rate_dl.RateMeasure(); } ++ size_t RateUL() const { return m_use_current ? m_current_ul : rate_ul.RateMeasure(); } ++ void SetCurrentRates(); ++ void ClearCurrentRates() { m_use_current = 0; } + + void StartDLTimer() { rate_dl.StartTimer(); } + void StartULTimer() { rate_ul.StartTimer(); } +@@ -78,17 +91,28 @@ + + unsigned char m_f_keepalive:1; + unsigned char m_status:4; +- unsigned char m_reserved:3; ++ unsigned char m_bad_health:1; ++ unsigned char m_standby:1; ++ unsigned char m_reserved:1; + + BTSTATUS m_state; size_t m_cached_idx; size_t m_err_count; -+ int m_standby; ++ size_t m_req_send; // target number of outstanding requests ++ size_t m_req_out; // actual number of outstanding requests ++ size_t m_latency; ++ size_t m_prev_dlrate; ++ time_t m_latency_timestamp; ++ time_t m_health_time, m_receive_time; ++ char m_lastmsg; ++ time_t m_choketime; int PieceDeliver(size_t mlen); int ReportComplete(size_t idx); -@@ -96,6 +100,8 @@ + int RequestCheck(); + int SendRequest(); ++ int CancelPiece(); + int CancelRequest(PSLICE ps); + int ReponseSlice(); + int RequestPiece(); +@@ -96,7 +120,10 @@ int CouldReponseSlice(); int BandWidthLimit(); + int BandWidthLimitUp(); + int BandWidthLimitDown(); public: ++ unsigned char id[PEER_ID_LEN]; BitField bitfield; btStream stream; -@@ -118,10 +124,12 @@ + RequestQueue request_q; +@@ -106,6 +133,8 @@ + + int RecvModule(); + int SendModule(); ++ int HealthCheck(time_t now); ++ void CheckSendStatus(); + + time_t SetLastTimestamp() { return time(&m_last_timestamp); } + time_t GetLastTimestamp() const { return m_last_timestamp; } +@@ -118,10 +147,14 @@ int Is_Local_UnChoked() const { return m_state.local_choked ? 0 : 1; } int SetLocal(unsigned char s); ++ int IsEmpty() const; ++ + int CancelSliceRequest(size_t idx, size_t off, size_t len); void SetStatus(unsigned char s){ m_status = s; } @@ -1323,10 +13242,25 @@ diff -u ctorrent-1.3.4.orig/peer.h ctorrent-1.3.4/peer.h void CloseConnection(); -diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp ---- ctorrent-1.3.4.orig/peerlist.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/peerlist.cpp 2005-08-11 23:45:29.433693072 +0200 -@@ -21,6 +21,8 @@ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/peerlist.cpp ctorrent-1.3.4/peerlist.cpp +--- ctorrent-1.3.4.sav/peerlist.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/peerlist.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -5,6 +5,7 @@ + #include <stdlib.h> + + #include <stdio.h> ++#include <errno.h> + + #include <string.h> + +@@ -16,11 +17,15 @@ + + #include "iplist.h" + #include "tracker.h" ++#include "ctcs.h" ++#include "bttime.h" + + #define MAX_UNCHOKE 3 #define UNCHOKE_INTERVAL 10 @@ -1335,7 +13269,7 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp #define KEEPALIVE_INTERVAL 117 #define LISTEN_PORT_MAX 2706 -@@ -36,12 +38,13 @@ +@@ -36,12 +41,13 @@ PeerList::PeerList() { @@ -1352,7 +13286,33 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp m_live_idx = 0; } -@@ -118,6 +121,8 @@ +@@ -61,25 +67,6 @@ + return m_peers_count ? 0 : 1; + } + +-void PeerList::Sort() +-{ +- PEERNODE *newhead = (PEERNODE*) 0; +- PEERNODE *p, *pp, *spn; +- +- if( m_peers_count < 10 ) return; +- +- for(; m_head;){ +- pp = (PEERNODE*) 0; +- for(p = newhead; p && m_head->click < p->click; pp = p, p = p->next) ; +- +- spn = m_head->next; +- m_head->next = p; +- if( pp ) pp->next = m_head; else newhead = m_head; +- m_head = spn; +- } +- m_head = newhead; +-} +- + void PeerList::CloseAll() + { + PEERNODE *p; +@@ -118,6 +105,8 @@ if( setfd_nonblock(sk) < 0) goto err; @@ -1361,60 +13321,100 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp if( -1 == (r = connect_nonb(sk,(struct sockaddr*)&addr)) ) return -1; peer = new btPeer; -@@ -182,19 +187,44 @@ - if(NewPeer(addr,INVALID_SOCKET) == -4) break; - } +@@ -154,7 +143,6 @@ + m_peers_count++; + p->peer = peer; +- p->click = 0; + + p->next = m_head; + m_head = p; +@@ -177,28 +165,65 @@ + struct sockaddr_in addr; + btPeer * UNCHOKER[MAX_UNCHOKE + 1]; + +- for( ;NEED_MORE_PEERS() && !IPQUEUE.IsEmpty(); ){ +- if(IPQUEUE.Pop(&addr) < 0) break; +- if(NewPeer(addr,INVALID_SOCKET) == -4) break; +- } ++ if( !Tracker.IsPaused() && !Tracker.IsQuitting() ) ++ for( ;NEED_MORE_PEERS() && !IPQUEUE.IsEmpty(); ){ ++ if(IPQUEUE.Pop(&addr) < 0) break; ++ if(NewPeer(addr,INVALID_SOCKET) == -4) break; ++ } + ++ Self.SetCurrentRates(); + // show status line. if( m_pre_dlrate.TimeUsed(pnow) ){ - printf("\r "); - printf("\r%c %u,[%u/%u/%u],%u,%u | %u,%u E:%u", +- LIVE_CHAR[m_live_idx], +- m_peers_count, +- BTCONTENT.pBF->Count(), +- BTCONTENT.pBF->NBits(), +- Pieces_I_Can_Get(), +- Self.RateDL(), Self.RateUL(), +- m_pre_dlrate.RateMeasure(Self.GetDLRate()), +- m_pre_ulrate.RateMeasure(Self.GetULRate()), +- Tracker.GetRefuseClick()); + char partial[30] = ""; + if(arg_file_to_download){ + BitField tmpBitField = *BTCONTENT.pBF; + tmpBitField.Except(*BTCONTENT.pBFilter); + sprintf( partial, "P:%u/%u ", -+ tmpBitField.Count(), -+ BTCONTENT.getFilePieces(arg_file_to_download) ); ++ tmpBitField.Count(), ++ BTCONTENT.getFilePieces(arg_file_to_download) ); + } + printf("\r "); + printf("\r%c %u/%u/%u [%u/%u/%u] %lluMB,%lluMB | %u,%uK/s | %u,%uK E:%u,%u %s%s ", - LIVE_CHAR[m_live_idx], -- m_peers_count, ++ LIVE_CHAR[m_live_idx], + -+ m_seeds_count, -+ m_peers_count - m_seeds_count, -+ Tracker.GetPeersCount(), ++ m_seeds_count, ++ m_peers_count - m_seeds_count, ++ Tracker.GetPeersCount(), + - BTCONTENT.pBF->Count(), - BTCONTENT.pBF->NBits(), - Pieces_I_Can_Get(), -- Self.RateDL(), Self.RateUL(), -- m_pre_dlrate.RateMeasure(Self.GetDLRate()), -- m_pre_ulrate.RateMeasure(Self.GetULRate()), -- Tracker.GetRefuseClick()); ++ BTCONTENT.pBF->Count(), ++ BTCONTENT.pBF->NBits(), ++ Pieces_I_Can_Get(), + -+ Self.TotalDL() >> 20, Self.TotalUL() >> 20, ++ Self.TotalDL() >> 20, Self.TotalUL() >> 20, + -+ Self.RateDL() >> 10, Self.RateUL() >> 10, ++ Self.RateDL() >> 10, Self.RateUL() >> 10, + -+ m_pre_dlrate.RateMeasure(Self.GetDLRate()) >> 10, -+ m_pre_ulrate.RateMeasure(Self.GetULRate()) >> 10, ++ m_pre_dlrate.RateMeasure(Self.GetDLRate()) >> 10, ++ m_pre_ulrate.RateMeasure(Self.GetULRate()) >> 10, + -+ Tracker.GetRefuseClick(), -+ Tracker.GetOkClick(), ++ Tracker.GetRefuseClick(), ++ Tracker.GetOkClick(), + -+ partial, ++ partial, + -+ (Tracker.GetStatus()==1) ? "Connecting" : -+ ((Tracker.GetStatus()==2) ? "Connected" : "") ++ (Tracker.GetStatus()==T_CONNECTING) ? "Connecting" : ++ ( (Tracker.GetStatus()==T_READY) ? "Connected" : ++ (Tracker.IsPaused() ? ++ ((Tracker.GetStatus()==T_FINISHED) ? "Paused" : "Pausing") : ++ (Tracker.IsQuitting() ? "Quitting" : "")) ) + ); fflush(stdout); m_pre_dlrate = Self.GetDLRate(); m_pre_ulrate = Self.GetULRate(); -@@ -214,8 +244,12 @@ - Sort(); + m_live_idx++; ++ ++ if(arg_ctcs) CTCS.Report_Status( ++ m_seeds_count, m_peers_count - m_seeds_count, ++ BTCONTENT.pBF->Count(), BTCONTENT.pBF->NBits(), Pieces_I_Can_Get(), ++ Self.RateDL(), Self.RateUL(), ++ Self.TotalDL(), Self.TotalUL(), ++ cfg_max_bandwidth_down, cfg_max_bandwidth_up); + } + + if(KEEPALIVE_INTERVAL <= (*pnow - m_keepalive_check_timestamp)){ +@@ -211,11 +236,14 @@ + m_unchoke_check_timestamp = *pnow; + f_unchoke_check = 1; + +- Sort(); } - if( f_unchoke_check ) memset(UNCHOKER, 0, (MAX_UNCHOKE + 1) * sizeof(btPeer*)); @@ -1427,46 +13427,61 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp for(p = m_head; p;){ if( PEER_IS_FAILED(p->peer)){ if( pp ) pp->next = p->next; else m_head = p->next; -@@ -225,9 +259,11 @@ +@@ -225,38 +253,38 @@ if( pp ) p = pp->next; else p = m_head; continue; }else{ + if (p->peer->bitfield.IsFull()) m_seeds_count++; if( f_keepalive_check ){ - if(3 * KEEPALIVE_INTERVAL <= (*pnow - p->peer->GetLastTimestamp())){ -+ if(arg_verbose) fprintf(stderr, "close: keepalive expired\n"); - p->peer->CloseConnection(); - goto skip_continue; - } -@@ -235,28 +271,26 @@ - if(PEER_IS_SUCCESS(p->peer) && - KEEPALIVE_INTERVAL <= (*pnow - p->peer->GetLastTimestamp()) && - p->peer->AreYouOK() < 0){ -+ if(arg_verbose) fprintf(stderr, "close: keepalive death\n"); - p->peer->CloseConnection(); - goto skip_continue; - } - } - +- if(3 * KEEPALIVE_INTERVAL <= (*pnow - p->peer->GetLastTimestamp())){ +- p->peer->CloseConnection(); +- goto skip_continue; +- } +- +- if(PEER_IS_SUCCESS(p->peer) && +- KEEPALIVE_INTERVAL <= (*pnow - p->peer->GetLastTimestamp()) && +- p->peer->AreYouOK() < 0){ +- p->peer->CloseConnection(); +- goto skip_continue; +- } +- } +- - if( f_unchoke_check ){ - - if(PEER_IS_SUCCESS(p->peer) && p->peer->Need_Local_Data()){ -+ if( f_unchoke_check && PEER_IS_SUCCESS(p->peer) ){ - +- - if((time_t) 0 == p->peer->GetLastUnchokeTime()){ - if(p->peer->SetLocal(M_UNCHOKE) < 0){ - p->peer->CloseConnection(); - goto skip_continue; - } - }else -+ if( p->peer->Is_Remote_Interested() && p->peer->Need_Local_Data() ) - UnChokeCheck(p->peer, UNCHOKER); +- UnChokeCheck(p->peer, UNCHOKER); - } -+ else if(p->peer->SetLocal(M_CHOKE) < 0){ -+ if(arg_verbose) fprintf(stderr, "close: Can't choke peer\n"); -+ p->peer->CloseConnection(); -+ goto skip_continue; ++ if(3 * KEEPALIVE_INTERVAL <= (*pnow - p->peer->GetLastTimestamp())){ ++ if(arg_verbose) fprintf(stderr, "close: keepalive expired\n"); ++ p->peer->CloseConnection(); ++ goto skip_continue; ++ } ++ ++ if(PEER_IS_SUCCESS(p->peer) && ++ KEEPALIVE_INTERVAL <= (*pnow - p->peer->GetLastTimestamp()) && ++ p->peer->AreYouOK() < 0){ ++ if(arg_verbose) fprintf(stderr, "close: keepalive death\n"); ++ p->peer->CloseConnection(); ++ goto skip_continue; ++ } ++ } ++ ++ if( f_unchoke_check && PEER_IS_SUCCESS(p->peer) ){ ++ ++ if( p->peer->Is_Remote_Interested() && p->peer->Need_Local_Data() ) ++ UnChokeCheck(p->peer, UNCHOKER); ++ else if(p->peer->SetLocal(M_CHOKE) < 0){ ++ if(arg_verbose) fprintf(stderr, "close: Can't choke peer\n"); ++ p->peer->CloseConnection(); ++ goto skip_continue; + } } @@ -1477,11 +13492,10 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp if( p->peer->NeedWrite() ) FD_SET(sk,wfdp); skip_continue: -@@ -272,13 +306,26 @@ +@@ -272,25 +300,40 @@ } if( f_unchoke_check ){ -+// if (!m_opt_timestamp) m_opt_timestamp = *pnow; + if(arg_verbose) fprintf(stderr, "\nUnchoker "); + if (!m_opt_timestamp){ + if(arg_verbose) fprintf(stderr, "(opt) "); @@ -1500,59 +13514,158 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp + if( UNCHOKER[i]->bitfield.IsEmpty() ) fprintf(stderr, "(empty) "); + } if( UNCHOKER[i]->SetLocal(M_UNCHOKE) < 0){ +- UNCHOKER[i]->CloseConnection(); +- continue; + if(arg_verbose) fprintf(stderr, "close: Can't unchoke peer\n"); - UNCHOKER[i]->CloseConnection(); - continue; ++ UNCHOKER[i]->CloseConnection(); ++ continue; } -@@ -290,6 +337,7 @@ - if( maxfd < sk) maxfd = sk; + + sk = UNCHOKER[i]->stream.GetSocket(); + + if(!FD_ISSET(sk,wfdp) && UNCHOKER[i]->NeedWrite()){ +- FD_SET(sk,wfdp); +- if( maxfd < sk) maxfd = sk; ++ FD_SET(sk,wfdp); ++ if( maxfd < sk) maxfd = sk; } } // end for + if(arg_verbose) fprintf(stderr, "\n"); } ++ ++ Self.ClearCurrentRates(); return maxfd; -@@ -314,6 +362,64 @@ + } +@@ -305,15 +348,148 @@ + + if(proposer->bitfield.IsSet(p->peer->request_q.GetRequestIdx())){ + if(!peer){ +- if( p->peer->RateDL() < proposer->RateDL() ) peer = p->peer; ++ if( p->peer->RateDL() < proposer->RateDL() ) peer = p->peer; + }else{ +- if( p->peer->RateDL() < peer->RateDL() ) peer = p->peer; ++ if( p->peer->RateDL() < peer->RateDL() ) peer = p->peer; + } + } + }//end for return peer; } -+// Duplicating a request queue that's in progress rather than creating a new -+// one helps avoid requesting slices that we already have. +// This takes an index parameter to facilitate modification of the function to +// allow targeting of a specific piece. It's currently only used as a flag to +// specify endgame or initial-piece mode though. -+btPeer* PeerList::Who_Can_Duplicate(btPeer *proposer, size_t idx) ++size_t PeerList::What_Can_Duplicate(BitField &bf, btPeer *proposer, size_t idx) +{ + PEERNODE *p; + btPeer *peer = (btPeer*) 0; + int endgame; -+ size_t qsize, mark, bench; -+ // In endgame mode, select from peers with the longest request queue. -+ // In initial mode, select from peers with the shortest non-empty request -+ // queue. ++ PSLICE ps; ++ size_t piece, piece1, qsize, mark, bench; ++ unsigned long rndbits; ++ int r=0; + + endgame = idx < BTCONTENT.GetNPieces(); // else initial-piece mode + if(endgame) mark = 0; + else mark = cfg_req_queue_length; + bench = BTCONTENT.GetNPieces(); + ++ // In initial mode, only dup a piece with trade value. ++ // In endgame mode, dup any if there are no pieces with trade value. ++ FindValuedPieces(bf, proposer, !endgame); ++ if( bf.IsEmpty() ){ ++ if(endgame) bf = proposer->bitfield; ++ else return BTCONTENT.GetNPieces(); ++ } ++ ++ /* In endgame mode, select from peers with the longest request queue. ++ In initial mode, select from peers with the shortest non-empty request ++ queue. */ + for(p = m_head; p; p = p->next){ -+ if(!PEER_IS_SUCCESS(p->peer) || p->peer == proposer || -+ p->peer->request_q.IsEmpty() ) continue; ++ if( !PEER_IS_SUCCESS(p->peer) || p->peer == proposer ) continue; ++ ++ if( p->peer->request_q.IsEmpty() ) continue; + -+ if(proposer->bitfield.IsSet(p->peer->request_q.GetRequestIdx())){ -+ qsize = p->peer->request_q.Qsize(); -+ if( (endgame && qsize > mark) || (!endgame && qsize && qsize < mark) ){ ++ piece = BTCONTENT.GetNPieces(); ++ ps = p->peer->request_q.GetHead(); ++ for( ; ps; ps = ps->next){ ++ if( piece == ps->index || bench == ps->index || piece1 == ps->index || ++ !bf.IsSet(ps->index) || proposer->request_q.HasIdx(ps->index) ) ++ continue; ++ piece = ps->index; ++ ++ qsize = p->peer->request_q.Qlen(piece); ++ if( (endgame && qsize > mark) || ++ (!endgame && (qsize < mark || !peer)) ){ + mark = qsize; + peer = p->peer; ++ piece1 = piece; + }else if( qsize == mark ){ -+ if( bench != p->peer->request_q.GetRequestIdx() && random()&01 ){ -+ bench = peer->request_q.GetRequestIdx(); ++ if( !r-- ){ ++ rndbits = random(); ++ r = 30; ++ } ++ if( bench != piece && (rndbits>>=1)&01 ){ ++ bench = piece1; + peer = p->peer; ++ piece1 = piece; + } + } + } + } ++ return peer ? piece1 : BTCONTENT.GetNPieces(); ++} ++ ++void PeerList::FindValuedPieces(BitField &bf, btPeer *proposer, int initial) ++{ ++ PEERNODE *p; ++ BitField bf_all_have = bf, bf_int_have = bf, ++ bf_others_have, bf_only_he_has = bf, bf_prefer; ++ ++ for(p = m_head; p; p = p->next){ ++ if( !PEER_IS_SUCCESS(p->peer) || p->peer == proposer ) continue; ++ if( p->peer->Need_Remote_Data() ) ++ bf_int_have.And(p->peer->bitfield); ++ bf_all_have.And(p->peer->bitfield); ++ if( !initial && !p->peer->bitfield.IsFull() ) ++ bf_only_he_has.Except(p->peer->bitfield); ++ else bf_others_have.Comb(p->peer->bitfield); ++ } ++ /* bf_all_have is now pertinent pieces that all peers have ++ bf_int_have is pertinent pieces that all peers in which I'm interested have ++ We prefer to get pieces that those peers need, if we can. Otherwise go ++ for pieces that any peer needs in hopes of future reciprocation. */ ++ if( !bf_int_have.IsFull() ) ++ bf_all_have = bf_int_have; ++ bf_all_have.Invert(); ++ bf.And(bf_all_have); // bf is now pertinent pieces that not everyone has ++ ++ bf_prefer = initial ? bf_others_have : bf_only_he_has; ++ ++ BitField tmpBitField = bf; ++ tmpBitField.And(bf_prefer); ++ /* If initial mode, tmpBitField is now pertinent pieces that more than one ++ peer has, but not everyone. ++ Otherwise, it's pertinent pieces that only the proposer has (not ++ considering what other seeders have). ++ In either case if there are no such pieces, revert to the simple answer.*/ ++ if( !tmpBitField.IsEmpty() ) bf = tmpBitField; ++} ++ ++/* Find a peer with the given piece in its request queue. ++ Duplicating a request queue that's in progress rather than creating a new ++ one helps avoid requesting slices that we already have. */ ++btPeer *PeerList::WhoHas(size_t idx) ++{ ++ PEERNODE *p; ++ btPeer *peer = (btPeer*) 0; ++ ++ for( p = m_head; p; p = p->next){ ++ if( p->peer->request_q.HasIdx(idx) ){ ++ peer = p->peer; ++ break; ++ } ++ } + return peer; +} + @@ -1565,11 +13678,9 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp + + if( !PEER_IS_SUCCESS(p->peer) ) continue; + -+ if( idx == p->peer->request_q.GetRequestIdx() ) { -+ if (p->peer->CancelSliceRequest(idx,off,len) < 0) { -+ if(arg_verbose) fprintf(stderr, "close: CancelSlice\n"); -+ p->peer->CloseConnection(); -+ } ++ if (p->peer->CancelSliceRequest(idx,off,len) < 0) { ++ if(arg_verbose) fprintf(stderr, "close: CancelSlice\n"); ++ p->peer->CloseConnection(); + } + } +} @@ -1577,12 +13688,19 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp void PeerList::Tell_World_I_Have(size_t idx) { PEERNODE *p; -@@ -330,7 +436,12 @@ +@@ -325,12 +501,18 @@ + + if( !PEER_IS_SUCCESS(p->peer) ) continue; + +- if( p->peer->stream.Send_Have(idx) < 0) ++ // Don't send HAVE to seeders, except for our first piece. ++ if( (!p->peer->bitfield.IsFull() || 1==BTCONTENT.pBF->Count()) && ++ p->peer->stream.Send_Have(idx) < 0) + p->peer->CloseConnection(); if( f_seed ){ if( !p->peer->request_q.IsEmpty() ) p->peer->request_q.Empty(); - if(p->peer->SetLocal(M_NOT_INTERESTED) < 0) p->peer->CloseConnection(); -+// if(p->peer->SetLocal(M_NOT_INTERESTED) < 0) p->peer->CloseConnection(); + if(p->peer->SetLocal(M_NOT_INTERESTED) < 0) { + if(arg_verbose) + fprintf(stderr, "close: Can't set self not interested (T_W_I_H)\n"); @@ -1591,68 +13709,215 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp } } // end for -@@ -474,15 +585,20 @@ - FD_CLR(sk,wfdp); - - if(FD_ISSET(sk,rfdp)){ // connect failed. -+ (*nready)--; - FD_CLR(sk,rfdp); - peer->CloseConnection(); - }else{ - if(peer->Send_ShakeInfo() < 0){ -+ if(arg_verbose) fprintf(stderr, "close: Sending handshake\n"); - peer->CloseConnection(); - } - else - peer->SetStatus(P_HANDSHAKE); - } +@@ -350,6 +532,11 @@ + CLOSE_SOCKET(newsk); + return -1; + } ++ ++ if( Tracker.IsPaused() || Tracker.IsQuitting() ){ ++ CLOSE_SOCKET(newsk); ++ return -1; ++ } + + return NewPeer(addr,newsk); + } +@@ -359,18 +546,23 @@ + int r = 0; + struct sockaddr_in lis_addr; + memset(&lis_addr,0, sizeof(sockaddr_in)); ++ lis_addr.sin_family = AF_INET; + lis_addr.sin_addr.s_addr = INADDR_ANY; + + m_listen_sock = socket(AF_INET,SOCK_STREAM,0); + + if( INVALID_SOCKET == m_listen_sock ) return -1; + ++ if ( cfg_listen_ip != 0 ) ++ lis_addr.sin_addr.s_addr = cfg_listen_ip; ++ + if(cfg_listen_port && cfg_listen_port != LISTEN_PORT_MAX){ + lis_addr.sin_port = htons(cfg_listen_port); + if(bind(m_listen_sock,(struct sockaddr*)&lis_addr,sizeof(struct sockaddr_in)) == 0) + r = 1; + else +- fprintf(stderr,"warn,couldn't bind on specified port: %d\n",cfg_listen_port); ++ fprintf(stderr,"warn,couldn't bind on specified port %d: %s\n", ++ cfg_listen_port,strerror(errno)); + } + + if( !r ){ +@@ -380,20 +572,21 @@ + lis_addr.sin_port = htons(cfg_listen_port); + r = bind(m_listen_sock,(struct sockaddr*)&lis_addr,sizeof(struct sockaddr_in)); + if(r != 0){ +- cfg_listen_port--; +- if(cfg_listen_port < cfg_min_listen_port){ +- CLOSE_SOCKET(m_listen_sock); +- fprintf(stderr,"error,couldn't bind port from %d to %d.\n", +- cfg_min_listen_port,cfg_max_listen_port); +- return -1; +- } ++ cfg_listen_port--; ++ if(cfg_listen_port < cfg_min_listen_port){ ++ CLOSE_SOCKET(m_listen_sock); ++ fprintf(stderr,"error,couldn't bind port from %d to %d: %s\n", ++ cfg_min_listen_port,cfg_max_listen_port,strerror(errno)); ++ return -1; ++ } + } + } /* end for(; r != 0;) */ + } + + if(listen(m_listen_sock,5) == -1){ + CLOSE_SOCKET(m_listen_sock); +- fprintf(stderr,"error, couldn't listen on port %d.\n",cfg_listen_port); ++ fprintf(stderr,"error, couldn't listen on port %d: %s\n", ++ cfg_listen_port,strerror(errno)); + return -1; + } + +@@ -402,6 +595,9 @@ + fprintf(stderr,"error, couldn't set socket to nonblock mode.\n"); + return -1; + } ++ ++ printf("Listening on %s:%d\n", inet_ntoa(lis_addr.sin_addr), ++ ntohs(lis_addr.sin_port)); + + return 0; + } +@@ -425,7 +621,7 @@ + PEERNODE *p; + for(p = m_head; p; p = p->next){ + if( !PEER_IS_SUCCESS(p->peer) || p->peer->request_q.IsEmpty()) continue; +- if( idx == p->peer->request_q.GetRequestIdx() ) return 1; ++ if( p->peer->request_q.HasIdx(idx) ) return 1; + } + return 0; + } +@@ -433,9 +629,18 @@ + void PeerList::CheckBitField(BitField &bf) + { + PEERNODE *p; ++ PSLICE ps; ++ size_t idx; + for(p = m_head; p ; p = p->next){ + if( !PEER_IS_SUCCESS(p->peer) || p->peer->request_q.IsEmpty()) continue; +- bf.UnSet(p->peer->request_q.GetRequestIdx()); ++ ps = p->peer->request_q.GetHead(); ++ idx = BTCONTENT.GetNPieces(); ++ for( ; ps; ps = ps->next){ ++ if( ps->index != idx ){ ++ bf.UnSet(ps->index); ++ idx = ps->index; ++ } ++ } + } + } + +@@ -445,8 +650,8 @@ + struct sockaddr_in sin; + printf("\nPEER LIST\n"); + for( ; p ; p = p->next){ +- if(PEER_IS_FAILED(p->peer)) continue; +- p->peer->dump(); ++ if(PEER_IS_FAILED(p->peer)) continue; ++ p->peer->dump(); + } + } + +@@ -470,42 +675,55 @@ + + if( P_CONNECTING == peer->GetStatus()){ + if(FD_ISSET(sk,wfdp)){ +- (*nready)--; +- FD_CLR(sk,wfdp); ++ (*nready)--; ++ FD_CLR(sk,wfdp); + +- if(FD_ISSET(sk,rfdp)){ // connect failed. +- FD_CLR(sk,rfdp); +- peer->CloseConnection(); +- }else{ +- if(peer->Send_ShakeInfo() < 0){ +- peer->CloseConnection(); +- } +- else +- peer->SetStatus(P_HANDSHAKE); +- } ++ if(FD_ISSET(sk,rfdp)){ // connect failed. ++ (*nready)--; ++ FD_CLR(sk,rfdp); ++ peer->CloseConnection(); ++ }else{ ++ if(peer->Send_ShakeInfo() < 0){ ++ if(arg_verbose) fprintf(stderr, "close: Sending handshake\n"); ++ peer->CloseConnection(); ++ } ++ else ++ peer->SetStatus(P_HANDSHAKE); ++ } + }else if(FD_ISSET(sk,rfdp)){ -+ (*nready)--; -+ peer->CloseConnection(); ++ (*nready)--; ++ peer->CloseConnection(); } }else{ if(FD_ISSET(sk,rfdp)){ -@@ -493,18 +609,29 @@ - (*nready)--; - FD_CLR(sk,rfdp); - if(peer->GetStatus() == P_HANDSHAKE){ +- p->click++; +- if( !(p->click) ) +- for(p2 = m_head; p2; p2=p2->next) p2->click = 0; +- +- (*nready)--; +- FD_CLR(sk,rfdp); +- if(peer->GetStatus() == P_HANDSHAKE){ - if( peer->HandShake() < 0 ) peer->CloseConnection(); - }else{ - if( peer->RecvModule() < 0 ) peer->CloseConnection(); -+ if( peer->HandShake() < 0 ) { -+ if(arg_verbose) fprintf(stderr, "close: bad handshake\n"); -+ peer->CloseConnection(); -+ } -+ } // fixed client stall -+ if(peer->GetStatus() == P_SUCCESS){ -+ if( peer->RecvModule() < 0 ) { -+ if(arg_verbose) fprintf(stderr, "close: receive\n"); -+ peer->CloseConnection(); -+ } - } +- } - }else if(PEER_IS_SUCCESS(peer) && FD_ISSET(sk,wfdp)){ -+ } -+ if(PEER_IS_SUCCESS(peer) && FD_ISSET(sk,wfdp)){ - p->click++; - if( !(p->click) ) - for(p2 = m_head; p2; p2=p2->next) p2->click = 0; - - (*nready)--; - FD_CLR(sk,wfdp); +- p->click++; +- if( !(p->click) ) +- for(p2 = m_head; p2; p2=p2->next) p2->click = 0; +- +- (*nready)--; +- FD_CLR(sk,wfdp); - if( peer->SendModule() < 0 ) peer->CloseConnection(); -+ if( peer->SendModule() < 0 ) { -+ if(arg_verbose) fprintf(stderr, "close: send\n"); -+ peer->CloseConnection(); -+ } ++ (*nready)--; ++ FD_CLR(sk,rfdp); ++ if(peer->GetStatus() == P_HANDSHAKE){ ++ if( peer->HandShake() < 0 ) { ++ if(arg_verbose) fprintf(stderr, "close: bad handshake\n"); ++ peer->CloseConnection(); ++ } ++ } // fixed client stall ++ if(peer->GetStatus() == P_SUCCESS){ ++ if( peer->RecvModule() < 0 ) { ++ if(arg_verbose) fprintf(stderr, "close: receive\n"); ++ peer->CloseConnection(); ++ } ++ } ++ }else if( peer->HealthCheck(now) < 0 ){ ++ if(arg_verbose) fprintf(stderr, "close: unresponsive\n"); ++ peer->CloseConnection(); } ++ ++ if( (PEER_IS_SUCCESS(peer) || peer->GetStatus() == P_HANDSHAKE) && ++ FD_ISSET(sk,wfdp) ){ ++ (*nready)--; ++ FD_CLR(sk,wfdp); ++ if( peer->SendModule() < 0 ) { ++ if(arg_verbose) fprintf(stderr, "close: send\n"); ++ peer->CloseConnection(); ++ } ++ }else peer->CheckSendStatus(); } }// end for -@@ -514,7 +641,11 @@ + } +@@ -514,7 +732,10 @@ { PEERNODE *p = m_head; for( ; p; p = p->next) - if(p->peer->bitfield.IsFull()) p->peer->CloseConnection(); -+// if(p->peer->bitfield.IsFull()) p->peer->CloseConnection(); + if(p->peer->bitfield.IsFull()) { + if(arg_verbose) fprintf(stderr, "close: seed<->seed\n"); + p->peer->CloseConnection(); @@ -1660,54 +13925,81 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp } void PeerList::UnChokeCheck(btPeer* peer, btPeer *peer_array[]) -@@ -523,8 +654,15 @@ +@@ -523,51 +744,170 @@ int cancel_idx = 0; btPeer *loster = (btPeer*) 0; int f_seed = BTCONTENT.pBF->IsFull(); +- +- for( cancel_idx = i = 0; i < MAX_UNCHOKE; i++ ){ +- if((btPeer*) 0 == peer_array[i] || PEER_IS_FAILED(peer_array[i]) ){ // ÓпÕλ + int no_opt = 0; ++ unsigned long rndbits; ++ int r=0; + + if (m_opt_timestamp) no_opt = 1; - -- for( cancel_idx = i = 0; i < MAX_UNCHOKE; i++ ){ ++ +// Find my 3 or 4 fastest peers. +// The MAX_UNCHOKE+1 (4th) slot is for the optimistic unchoke when it happens. + + // Find a slot for the candidate--the slowest peer, or an available slot. + for( cancel_idx = i = 0; i < MAX_UNCHOKE+no_opt; i++ ){ - if((btPeer*) 0 == peer_array[i] || PEER_IS_FAILED(peer_array[i]) ){ // ÓпÕλ ++ if((btPeer*) 0 == peer_array[i] || ++ PEER_IS_FAILED(peer_array[i]) ){ // ÓпÕλ cancel_idx = i; break; -@@ -537,7 +675,13 @@ - cancel_idx = i; + }else{ + if(cancel_idx == i) continue; + + if(f_seed){ +- // compare upload rate. +- if(peer_array[cancel_idx]->RateUL() > peer_array[i]->RateUL()) +- cancel_idx = i; ++ // compare upload rate. ++ if(peer_array[cancel_idx]->RateUL() > peer_array[i]->RateUL()) ++ cancel_idx = i; }else{ - // compare download rate. +- // compare download rate. - if(peer_array[cancel_idx]->RateDL() > peer_array[i]->RateDL()) -+// if(peer_array[cancel_idx]->RateDL() > peer_array[i]->RateDL()) -+ if( peer_array[cancel_idx]->RateDL() > peer_array[i]->RateDL() +- cancel_idx = i; ++ // compare download rate. ++ if( peer_array[cancel_idx]->RateDL() > peer_array[i]->RateDL() + //if equal, reciprocate to the peer we've sent less to, proportionally + ||(peer_array[cancel_idx]->RateDL() == peer_array[i]->RateDL() + && peer_array[cancel_idx]->TotalUL() + / (peer_array[cancel_idx]->TotalDL()+.001) + < peer_array[i]->TotalUL() / (peer_array[i]->TotalDL()+.001)) ) - cancel_idx = i; ++ cancel_idx = i; } } -@@ -551,7 +695,13 @@ + } // end for + +- if( (btPeer*) 0 != peer_array[cancel_idx] && PEER_IS_SUCCESS(peer_array[cancel_idx]) ){ ++ if( (btPeer*) 0 != peer_array[cancel_idx] && ++ PEER_IS_SUCCESS(peer_array[cancel_idx]) ){ + if(f_seed){ + if(peer->RateUL() > peer_array[cancel_idx]->RateUL()){ +- loster = peer_array[cancel_idx]; +- peer_array[cancel_idx] = peer; ++ loster = peer_array[cancel_idx]; ++ peer_array[cancel_idx] = peer; }else - loster = peer; +- loster = peer; ++ loster = peer; }else{ - if(peer->RateDL() > peer_array[cancel_idx]->RateDL()){ -+// if(peer->RateDL() > peer_array[cancel_idx]->RateDL()){ +- loster = peer_array[cancel_idx]; +- peer_array[cancel_idx] = peer; + if( peer->RateDL() > peer_array[cancel_idx]->RateDL() + // If equal, reciprocate to the peer we've sent less to, proportionally + ||(peer_array[cancel_idx]->RateDL() == peer->RateDL() + && peer_array[cancel_idx]->TotalUL() + / (peer_array[cancel_idx]->TotalDL()+.001) + > peer->TotalUL() / (peer->TotalDL()+.001)) ){ - loster = peer_array[cancel_idx]; - peer_array[cancel_idx] = peer; ++ loster = peer_array[cancel_idx]; ++ peer_array[cancel_idx] = peer; }else -@@ -559,15 +709,56 @@ +- loster = peer; ++ loster = peer; } // opt unchoke @@ -1717,8 +14009,8 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp + } + else + // The last slot is for the optimistic unchoke. -+ // Bump the loser into it if he's been waiting longer than the occupant. -+ if((btPeer*) 0 == peer_array[MAX_UNCHOKE] || PEER_IS_FAILED(peer_array[MAX_UNCHOKE])) ++ if( (btPeer*) 0 == peer_array[MAX_UNCHOKE] || ++ PEER_IS_FAILED(peer_array[MAX_UNCHOKE]) ) peer_array[MAX_UNCHOKE] = loster; - else{ - if(loster->GetLastUnchokeTime() < peer_array[MAX_UNCHOKE]->GetLastUnchokeTime()) @@ -1726,21 +14018,34 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp - else{ - if(loster->SetLocal(M_CHOKE) < 0) loster->CloseConnection(); + else { -+// if(loster->GetLastUnchokeTime() < peer_array[MAX_UNCHOKE]->GetLastUnchokeTime()) { ++ if( !r-- ){ ++ rndbits = random(); ++ r = 15; ++ } + // if loser is empty and current is not, loser gets 75% chance. -+ if( loster->bitfield.IsEmpty() && !peer_array[MAX_UNCHOKE]->bitfield.IsEmpty() -+ && random()&03 ) { ++ if( loster->IsEmpty() && !peer_array[MAX_UNCHOKE]->IsEmpty() ++ && (rndbits>>=2)&3 ) { + btPeer* tmp = peer_array[MAX_UNCHOKE]; + peer_array[MAX_UNCHOKE] = loster; + loster = tmp; -+ } else // if loser waited longer: -+ if(loster->GetLastUnchokeTime() < peer_array[MAX_UNCHOKE]->GetLastUnchokeTime()) { ++ } else ++ // This mess chooses the loser: ++ // if loser is choked and current is not ++ // OR if both are choked and loser has waited longer ++ // OR if both are unchoked and loser has had less time unchoked. ++ if( (!loster->Is_Local_UnChoked() && ++ ( peer_array[MAX_UNCHOKE]->Is_Local_UnChoked() || ++ loster->GetLastUnchokeTime() < ++ peer_array[MAX_UNCHOKE]->GetLastUnchokeTime() )) || ++ (peer_array[MAX_UNCHOKE]->Is_Local_UnChoked() && ++ peer_array[MAX_UNCHOKE]->GetLastUnchokeTime() < ++ loster->GetLastUnchokeTime()) ){ + // if current is empty and loser is not, loser gets 25% chance; + // else loser wins. + // transformed to: if loser is empty or current isn't, or 25% chance, + // then loser wins. -+ if( !peer_array[MAX_UNCHOKE]->bitfield.IsEmpty() || loster->bitfield.IsEmpty() -+ || !random()&03 ) { ++ if( !peer_array[MAX_UNCHOKE]->IsEmpty() || loster->IsEmpty() ++ || !((rndbits>>=2)&3) ) { + btPeer* tmp = peer_array[MAX_UNCHOKE]; + peer_array[MAX_UNCHOKE] = loster; + loster = tmp; @@ -1770,10 +14075,70 @@ diff -u ctorrent-1.3.4.orig/peerlist.cpp ctorrent-1.3.4/peerlist.cpp + } +} + -diff -u ctorrent-1.3.4.orig/peerlist.h ctorrent-1.3.4/peerlist.h ---- ctorrent-1.3.4.orig/peerlist.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/peerlist.h 2005-08-11 23:45:29.434692920 +0200 -@@ -18,7 +18,8 @@ ++btPeer* PeerList::GetNextPeer(btPeer *peer) ++{ ++ static PEERNODE *p = m_head; ++ ++ if( 0==peer ) p = m_head; ++ else if( p->peer == peer ){ ++ p = p->next; ++ }else{ ++ for( p=m_head; p && (p->peer != peer); p = p->next); ++ if( 0 == p->peer ){ ++ p = m_head; ++ }else{ ++ p = p->next; ++ } ++ } ++ for( ; p; p = p->next) ++ if( p->peer && PEER_IS_SUCCESS(p->peer) ) break; ++ ++ if(p) return p->peer; ++ else return (btPeer*) 0; ++} ++ ++// This is used to un-standby peers when we enter endgame mode. ++// It re-evaluates at most once per second for CPU efficiency, so isn't used ++// when greatest accuracy is desired. ++int PeerList::Endgame() ++{ ++ static time_t timestamp = 0; ++ static int endgame = 0; ++ ++ if( now > timestamp ){ ++ timestamp = now; ++ if( arg_file_to_download ){ ++ BitField afdBitField = *BTCONTENT.pBF; ++ afdBitField.Except(*BTCONTENT.pBFilter); ++ endgame = ( BTCONTENT.getFilePieces(arg_file_to_download) ++ - afdBitField.Count() ) < WORLD.TotalPeers(); ++ }else ++ endgame = ( WORLD.Pieces_I_Can_Get() - BTCONTENT.pBF->Count() ) ++ < WORLD.TotalPeers(); ++ } ++ return endgame; ++} ++ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/peerlist.h ctorrent-1.3.4/peerlist.h +--- ctorrent-1.3.4.sav/peerlist.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/peerlist.h 2006-06-28 19:30:02.000000000 +0200 +@@ -1,14 +1,13 @@ + #ifndef PEERLIST_H + #define PEERLIST_H + +-#include <sys/types.h> + #include "./def.h" ++#include <sys/types.h> + #include "./peer.h" + #include "./rate.h" + + typedef struct _peernode{ + btPeer *peer; +- size_t click; + struct _peernode *next; + }PEERNODE; + +@@ -18,7 +17,8 @@ SOCKET m_listen_sock; PEERNODE *m_head; size_t m_peers_count; @@ -1783,45 +14148,58 @@ diff -u ctorrent-1.3.4.orig/peerlist.h ctorrent-1.3.4/peerlist.h unsigned char m_live_idx:2; unsigned char m_reserved:6; -@@ -50,9 +51,12 @@ +@@ -26,7 +26,6 @@ + Rate m_pre_dlrate, m_pre_ulrate; + + int Accepter(); +- void Sort(); + void UnChokeCheck(btPeer* peer,btPeer *peer_array[]); + + public: +@@ -50,9 +49,16 @@ void Tell_World_I_Have(size_t idx); btPeer* Who_Can_Abandon(btPeer *proposer); -+ btPeer* Who_Can_Duplicate(btPeer *proposer, size_t idx); ++ size_t What_Can_Duplicate(BitField &bf, btPeer *proposer, size_t idx); ++ void FindValuedPieces(BitField &bf, btPeer *proposer, int initial); ++ btPeer *WhoHas(size_t idx); + void CancelSlice(size_t idx, size_t off, size_t len); void CheckBitField(BitField &bf); int AlreadyRequested(size_t idx); size_t Pieces_I_Can_Get(); + void CheckInterest(); ++ btPeer* GetNextPeer(btPeer *peer); ++ int Endgame(); }; extern PeerList WORLD; -diff -u ctorrent-1.3.4.orig/rate.cpp ctorrent-1.3.4/rate.cpp ---- ctorrent-1.3.4.orig/rate.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/rate.cpp 2005-08-11 23:45:29.434692920 +0200 -@@ -1,5 +1,7 @@ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/rate.cpp ctorrent-1.3.4/rate.cpp +--- ctorrent-1.3.4.sav/rate.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/rate.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -1,14 +1,17 @@ #include "rate.h" - -+#define RATE_INTERVAL 20 ++#include "bttime.h" + ++#define RATE_INTERVAL 20 + void Rate::StartTimer() { - if( !m_last_timestamp ) time(&m_last_timestamp); -@@ -7,7 +9,7 @@ +- if( !m_last_timestamp ) time(&m_last_timestamp); ++ if( !m_last_timestamp ) m_last_timestamp = now; + } void Rate::StopTimer() { - if( !m_last_timestamp ){ +- m_total_timeused += (time((time_t*) 0) - m_last_timestamp); + if( m_last_timestamp ){ - m_total_timeused += (time((time_t*) 0) - m_last_timestamp); ++ m_total_timeused += (now - m_last_timestamp); m_last_timestamp = 0; } -@@ -15,7 +17,27 @@ - + } +@@ -16,27 +19,61 @@ void Rate::CountAdd(size_t nbytes) { -+ time_t now = time((time_t*) 0); -+ m_count_bytes += nbytes; + + // save bandwidth history data @@ -1844,14 +14222,18 @@ diff -u ctorrent-1.3.4.orig/rate.cpp ctorrent-1.3.4/rate.cpp } void Rate::operator=(const Rate &ra) -@@ -26,17 +48,33 @@ + { +- m_last_timestamp = time((time_t*) 0); ++ m_last_timestamp = now; + m_count_bytes = ra.m_count_bytes; + } size_t Rate::RateMeasure() const { - time_t timeused = m_total_timeused; - if( m_last_timestamp ) timeused += (time((time_t*) 0) - m_last_timestamp); + // calculate rate based on bandwidth history data -+ time_t timestamp = time((time_t*) 0); ++ time_t timestamp = now; + u_int64_t countbytes = 0; + time_t timeused = 0; + @@ -1872,8 +14254,9 @@ diff -u ctorrent-1.3.4.orig/rate.cpp ctorrent-1.3.4/rate.cpp size_t Rate::RateMeasure(const Rate &ra_to) const { +- time_t timeused = time((time_t*) 0) - m_last_timestamp; + int tmp; - time_t timeused = time((time_t*) 0) - m_last_timestamp; ++ time_t timeused = now - m_last_timestamp; if( timeused < 1 ) timeused = 1; - return (size_t)((ra_to.m_count_bytes - m_count_bytes) / timeused); + tmp = (ra_to.m_count_bytes - ra_to.m_recent_base) @@ -1882,15 +14265,20 @@ diff -u ctorrent-1.3.4.orig/rate.cpp ctorrent-1.3.4/rate.cpp } time_t Rate::TimeUsed(const time_t *pnow) const -diff -u ctorrent-1.3.4.orig/rate.h ctorrent-1.3.4/rate.h ---- ctorrent-1.3.4.orig/rate.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/rate.h 2005-08-11 23:45:29.434692920 +0200 -@@ -5,14 +5,29 @@ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/rate.h ctorrent-1.3.4/rate.h +--- ctorrent-1.3.4.sav/rate.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/rate.h 2006-06-28 19:30:02.000000000 +0200 +@@ -1,18 +1,33 @@ + #ifndef RATE_H + #define RATE_H + ++#include "def.h" + #include <sys/types.h> #include <time.h> - #include "def.h" - -+#define MAX_SAMPLES 20 +-#include "def.h" + ++#define MAX_SAMPLES 20 + class Rate{ private: time_t m_last_timestamp; @@ -1917,10 +14305,450 @@ diff -u ctorrent-1.3.4.orig/rate.h ctorrent-1.3.4/rate.h void StartTimer(); void StopTimer(); void CountAdd(size_t nbytes); -diff -u ctorrent-1.3.4.orig/sigint.cpp ctorrent-1.3.4/sigint.cpp ---- ctorrent-1.3.4.orig/sigint.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/sigint.cpp 2005-08-11 23:45:29.434692920 +0200 -@@ -4,17 +4,27 @@ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/README-DNH.TXT ctorrent-1.3.4/README-DNH.TXT +--- ctorrent-1.3.4.sav/README-DNH.TXT 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/README-DNH.TXT 2006-06-28 19:30:02.000000000 +0200 +@@ -0,0 +1,239 @@ ++ ++ Enhanced CTorrent ++ ++ [ [1]Overview | [2]News | [3]Changes | [4]CTCS | [5]Download | ++ [6]Resources | [7]Contact ] ++ _________________________________________________________________ ++ ++ Overview ++ ++ [8]CTorrent is a [9]BitTorrent client implemented in C++ to be ++ lightweight and quick. It has fallen a little behind in updates and ++ bug fixes though. ++ ++ The files here contain the good work of those who wrote the original ++ CTorrent base code and a number of patches that provide fixes and ++ enhancements, as well as additional fixes and enhancements that I am ++ contributing. I am not the original author, current maintainer, or any ++ other official representative of CTorrent. The files on this page are ++ not the original or official CTorrent distribution. I encourage you to ++ visit the [10]CTorrent project page on SourceForge for further ++ information. ++ ++ Features ++ ++ The purpose of the Enhanced CTorrent effort is to fix problems that ++ remain in the code, modernize existing features and algorithms, and ++ implement new features while maintaining low overhead requirements and ++ a high standard of performance (both part of the original CTorrent ++ design philosophy). Highlights of the enhanced client include: ++ * Support for large files (>2GB) and large torrents (>255 files) ++ * Strategic selection of pieces to request for download ++ * Continuous queueing of download requests, tuned based on latency ++ and throughput for each peer ++ * Improved download performance, including parallel requests in ++ initial and endgame modes ++ * Improved bandwidth regulation ++ * Improved compatibility with other peers ++ * Performance optimization and bug fixes ++ * An interface for monitoring and managing multiple clients ++ ++ Status Line ++ ++ The status line that is output by the client has changed since the ++ original and deserves some explanation. ++ ++ / 0/33/110 [672/672/672] 0MB,1130MB | 0,20K/s | 0,0K E:0,31 ++ - - -- --- --- --- --- --- ------ - -- - - - -- ++ A B C D E F G H I J K L M N O ++ ++ A: Ticker; this character changes to indicate that the client is ++ running. ++ B: Number of seeders (complete peers) to which you are connected. ++ C: Number of leechers (incomplete peers) to which you are connected. ++ D: Total number of peers in the swarm, as last reported by the ++ tracker. ++ E: Number of pieces of the torrent that you have completed. ++ F: Number of pieces currently available from you and your connected ++ peers. ++ G: Total number of pieces in the torrent. ++ H: Total amount of data you have downloaded. ++ I: Total amount of data you have uploaded. ++ J: Your current total download rate. ++ K: Your current total upload rate. ++ L: Amount of data downloaded since the last status line update. ++ M: Amount of data uploaded since the last status line update. ++ N: Number of tracker connection errors. ++ O: Number of successful tracker connections. ++ ++ Peer ID ++ ++ Beginning with dnh1.1 the default peer ID has been changed for ++ convenience, as some other clients and trackers assume that Ctorrent ++ is "buggy" and won't cooperate with it. [Guess what, there are plenty ++ of others with bugs too.] The -P option is still available if you wish ++ to use a different peer ID, but it is no longer necessary to do so in ++ order to avoid this "ban". ++ ++ The new default peer ID prefix is "-CDversion-", where version is an ++ indication of the version number (0101 for dnh1.1). ++ ++ CTCS ++ ++ [11]CTorrent Control Server (CTCS) is an interface for monitoring and ++ managing Enhanced CTorrent clients. It can manage allocation of ++ bandwidth, provide status information, and allow changes to the ++ running configuration of each client. Support for this interface was ++ added in the dnh2 release. ++ _________________________________________________________________ ++ ++ News ++ ++ 2006-01-15 ++ Version dnh2 is released! This version includes a number of ++ significant [12]changes, including large file support, piece ++ selection, tuned request queue depth, and support for ++ [13]CTorrent Control Server. ++ _________________________________________________________________ ++ ++ Changes ++ ++ For a list of changes in the current and previous versions, see the ++ [14]ChangeLog file. ++ _________________________________________________________________ ++ ++ Download ++ ++ Release dnh2 ++ The patch files for this version are significantly larger ++ than in previous releases. It will be faster and easier to just ++ download the patched source distribution below. ++ ++ [15]dnh1.2 to dnh2 patch file ++ A patch file of changes to release dnh1.2 to bring it up to dnh2. ++ ++ [16]Patch file ++ A patch file of changes to the CTorrent 1.3.4 base. ++ ++ [17]Patched source ++ A complete source distribution for all platforms. ++ ___________________________________ ++ ++ Release dnh1.2 ++ Note: If you get a message about needing to install OpenSSL, you might ++ want to try the FreeBSD patch/version even if you are not using ++ FreeBSD. ++ ++ [18]dnh1.1 to dnh1.2 patch file ++ A patch file of changes to release dnh1.1 to bring it up to dnh1.2. ++ ++ [19]FreeBSD patch file ++ A patch file of changes to the CTorrent 1.3.4 base, including the ++ patches from the FreeBSD ports tree. ++ ++ [20]Patch file ++ A patch file of changes to the CTorrent 1.3.4 base. ++ ++ [21]FreeBSD patched source ++ This includes the patches from the FreeBSD ports tree. ++ ++ [22]Linux/Windows/Other patched source ++ Please [23]let me know if you encounter any portability issues, as I ++ don't have a test environment set up for these platforms. ++ ___________________________________ ++ ++ Bitfield::Invert patch ++ ++ [24]Bitfield::Invert patch ++ See notes in the change log; this is needed if you are using dnh1.1, ++ dnh1, or ctorrent-1.3.4. ++ ___________________________________ ++ ++ Release dnh1.1 ++ ++ [25]dnh1 to dnh1.1 patch file ++ A patch file of changes to release dnh1 to bring it up to dnh1.1. ++ ___________________________________ ++ ++ Release dnh1 ++ ++ [26]FreeBSD patch file ++ A patch file of changes to the CTorrent 1.3.4 base, including the ++ patches from the FreeBSD ports tree. ++ Note: Thanks to Florent Thoumie, as of 29 Jul 2005 this patchset is ++ included in the FreeBSD port. If you update your ports tree (or at ++ least net/ctorrent) and install from there, you will have these ++ updates without downloading the file and patching manually. ++ ++ [27]Patch file ++ A patch file of changes to the CTorrent 1.3.4 base. ++ ++ [28]FreeBSD patched source ++ This includes the patches from the FreeBSD ports tree. ++ ++ [29]Linux/Windows/Other patched source ++ Please [30]let me know if you encounter any portability issues, as I ++ don't have a test environment set up for these platforms. ++ _________________________________________________________________ ++ ++ Resources ++ ++ [31]CTorrent Home Page ++ Outdated, but you may find some useful info (particularly the FAQ). ++ ++ [32]CTorrent SourceForge Project ++ Hosts the CTorrent codebase, bug reports, patches, and forum. ++ ++ [33]Custom CTorrent ++ A page by the author of the "get1file" patch and other fixes. It ++ contains a custom version and a GUI for CTorrent. ++ ++ [34]BitTorrent ++ The official BitTorrent home page. ++ ++ [35]BitTorrent wiki ++ Various documentation. ++ ++ [36]BitTorrent protocol specification (official version) ++ ++ [37]BitTorrent protocol specification (wiki version) ++ ++References ++ ++ 1. http://www.rahul.net/dholmes/ctorrent/index.html#info ++ 2. http://www.rahul.net/dholmes/ctorrent/index.html#news ++ 3. http://www.rahul.net/dholmes/ctorrent/changelog.html ++ 4. http://www.rahul.net/dholmes/ctorrent/ctcs.html ++ 5. http://www.rahul.net/dholmes/ctorrent/index.html#download ++ 6. http://www.rahul.net/dholmes/ctorrent/index.html#resources ++ 7. mailto:dholmes@ct.boxmail.com ++ 8. http://ctorrent.sourceforge.net/ ++ 9. http://www.bittorrent.com/ ++ 10. http://sourceforge.net/projects/ctorrent/ ++ 11. http://www.rahul.net/dholmes/ctorrent/ctcs.html ++ 12. http://www.rahul.net/dholmes/ctorrent/changelog.html ++ 13. http://www.rahul.net/dholmes/ctorrent/ctcs.html ++ 14. http://www.rahul.net/dholmes/ctorrent/changelog.html ++ 15. http://www.rahul.net/dholmes/ctorrent/patchset-ctorrent-dnh1.2-dnh2.diff ++ 16. http://www.rahul.net/dholmes/ctorrent/patchset-ctorrent-1.3.4-dnh2.diff ++ 17. http://www.rahul.net/dholmes/ctorrent/ctorrent-1.3.4-dnh2.tar.gz ++ 18. http://www.rahul.net/dholmes/ctorrent/patchset-ctorrent-dnh1.1-dnh1.2.diff ++ 19. http://www.rahul.net/dholmes/ctorrent/patchset-ctorrent-1.3.4-dnh1.2-fbsd.diff ++ 20. http://www.rahul.net/dholmes/ctorrent/patchset-ctorrent-1.3.4-dnh1.2.diff ++ 21. http://www.rahul.net/dholmes/ctorrent/ctorrent-1.3.4-dnh1.2-fbsd.tar.gz ++ 22. http://www.rahul.net/dholmes/ctorrent/ctorrent-1.3.4-dnh1.2.tar.gz ++ 23. mailto:dholmes@ct.boxmail.com ++ 24. http://www.rahul.net/dholmes/ctorrent/patch-invert.diff ++ 25. http://www.rahul.net/dholmes/ctorrent/patchset-ctorrent-dnh1-dnh1.1.diff ++ 26. http://www.rahul.net/dholmes/ctorrent/patchset-ctorrent-1.3.4-dnh1-fbsd.diff ++ 27. http://www.rahul.net/dholmes/ctorrent/patchset-ctorrent-1.3.4-dnh1.diff ++ 28. http://www.rahul.net/dholmes/ctorrent/ctorrent-1.3.4-dnh1-fbsd.tar.gz ++ 29. http://www.rahul.net/dholmes/ctorrent/ctorrent-1.3.4-dnh1.tar.gz ++ 30. mailto:dholmes@ct.boxmail.com ++ 31. http://ctorrent.sourceforge.net/ ++ 32. http://sourceforge.net/projects/ctorrent/ ++ 33. http://customctorrent.ifreepages.com/ ++ 34. http://bittorrent.com/ ++ 35. http://wiki.theory.org/CategoryBitTorrent ++ 36. http://www.bittorrent.com/protocol.html ++ 37. http://wiki.theory.org/BitTorrentSpecification +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/sha1.c ctorrent-1.3.4/sha1.c +--- ctorrent-1.3.4.sav/sha1.c 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/sha1.c 2006-06-28 19:30:02.000000000 +0200 +@@ -0,0 +1,146 @@ ++#include <string.h> ++ ++#include "sha1.h" ++ ++#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) ++ ++/* blk0() and blk() perform the initial expand. */ ++/* I got the idea of expanding during the round function from SSLeay */ ++#if (defined(BYTE_ORDER) && BYTE_ORDER==LITTLE_ENDIAN) || (!defined(BYTE_ORDER) && defined(LITTLE_ENDIAN)) ++#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \ ++ |(rol(block->l[i],8)&0x00FF00FF)) ++#else ++#define blk0(i) block->l[i] ++#endif ++#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \ ++ ^block->l[(i+2)&15]^block->l[i&15],1)) ++ ++/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */ ++#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30); ++#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30); ++#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30); ++#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30); ++#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30); ++ ++ ++/* Hash a single 512-bit block. This is the core of the algorithm. */ ++ ++void SHA1Transform(unsigned long state[5], unsigned char buffer[64]) ++{ ++unsigned long a, b, c, d, e; ++typedef union { ++ unsigned char c[64]; ++ unsigned long l[16]; ++} CHAR64LONG16; ++CHAR64LONG16* block; ++#ifdef SHA1HANDSOFF ++static unsigned char workspace[64]; ++ block = (CHAR64LONG16*)workspace; ++ memcpy(block, buffer, 64); ++#else ++ block = (CHAR64LONG16*)buffer; ++#endif ++ /* Copy context->state[] to working vars */ ++ a = state[0]; ++ b = state[1]; ++ c = state[2]; ++ d = state[3]; ++ e = state[4]; ++ /* 4 rounds of 20 operations each. Loop unrolled. */ ++ R0(a,b,c,d,e, 0); R0(e,a,b,c,d, 1); R0(d,e,a,b,c, 2); R0(c,d,e,a,b, 3); ++ R0(b,c,d,e,a, 4); R0(a,b,c,d,e, 5); R0(e,a,b,c,d, 6); R0(d,e,a,b,c, 7); ++ R0(c,d,e,a,b, 8); R0(b,c,d,e,a, 9); R0(a,b,c,d,e,10); R0(e,a,b,c,d,11); ++ R0(d,e,a,b,c,12); R0(c,d,e,a,b,13); R0(b,c,d,e,a,14); R0(a,b,c,d,e,15); ++ R1(e,a,b,c,d,16); R1(d,e,a,b,c,17); R1(c,d,e,a,b,18); R1(b,c,d,e,a,19); ++ R2(a,b,c,d,e,20); R2(e,a,b,c,d,21); R2(d,e,a,b,c,22); R2(c,d,e,a,b,23); ++ R2(b,c,d,e,a,24); R2(a,b,c,d,e,25); R2(e,a,b,c,d,26); R2(d,e,a,b,c,27); ++ R2(c,d,e,a,b,28); R2(b,c,d,e,a,29); R2(a,b,c,d,e,30); R2(e,a,b,c,d,31); ++ R2(d,e,a,b,c,32); R2(c,d,e,a,b,33); R2(b,c,d,e,a,34); R2(a,b,c,d,e,35); ++ R2(e,a,b,c,d,36); R2(d,e,a,b,c,37); R2(c,d,e,a,b,38); R2(b,c,d,e,a,39); ++ R3(a,b,c,d,e,40); R3(e,a,b,c,d,41); R3(d,e,a,b,c,42); R3(c,d,e,a,b,43); ++ R3(b,c,d,e,a,44); R3(a,b,c,d,e,45); R3(e,a,b,c,d,46); R3(d,e,a,b,c,47); ++ R3(c,d,e,a,b,48); R3(b,c,d,e,a,49); R3(a,b,c,d,e,50); R3(e,a,b,c,d,51); ++ R3(d,e,a,b,c,52); R3(c,d,e,a,b,53); R3(b,c,d,e,a,54); R3(a,b,c,d,e,55); ++ R3(e,a,b,c,d,56); R3(d,e,a,b,c,57); R3(c,d,e,a,b,58); R3(b,c,d,e,a,59); ++ R4(a,b,c,d,e,60); R4(e,a,b,c,d,61); R4(d,e,a,b,c,62); R4(c,d,e,a,b,63); ++ R4(b,c,d,e,a,64); R4(a,b,c,d,e,65); R4(e,a,b,c,d,66); R4(d,e,a,b,c,67); ++ R4(c,d,e,a,b,68); R4(b,c,d,e,a,69); R4(a,b,c,d,e,70); R4(e,a,b,c,d,71); ++ R4(d,e,a,b,c,72); R4(c,d,e,a,b,73); R4(b,c,d,e,a,74); R4(a,b,c,d,e,75); ++ R4(e,a,b,c,d,76); R4(d,e,a,b,c,77); R4(c,d,e,a,b,78); R4(b,c,d,e,a,79); ++ /* Add the working vars back into context.state[] */ ++ state[0] += a; ++ state[1] += b; ++ state[2] += c; ++ state[3] += d; ++ state[4] += e; ++ /* Wipe variables */ ++ a = b = c = d = e = 0; ++} ++ ++ ++/* SHA1Init - Initialize new context */ ++ ++void SHA1Init(SHA1_CTX* context) ++{ ++ /* SHA1 initialization constants */ ++ context->state[0] = 0x67452301; ++ context->state[1] = 0xEFCDAB89; ++ context->state[2] = 0x98BADCFE; ++ context->state[3] = 0x10325476; ++ context->state[4] = 0xC3D2E1F0; ++ context->count[0] = context->count[1] = 0; ++} ++ ++ ++/* Run your data through this. */ ++ ++void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned int len) ++{ ++unsigned int i, j; ++ ++ j = (context->count[0] >> 3) & 63; ++ if ((context->count[0] += len << 3) < (len << 3)) context->count[1]++; ++ context->count[1] += (len >> 29); ++ if ((j + len) > 63) { ++ memcpy(&context->buffer[j], data, (i = 64-j)); ++ SHA1Transform(context->state, context->buffer); ++ for ( ; i + 63 < len; i += 64) { ++ SHA1Transform(context->state, &data[i]); ++ } ++ j = 0; ++ } ++ else i = 0; ++ memcpy(&context->buffer[j], &data[i], len - i); ++} ++ ++ ++/* Add padding and return the message digest. */ ++ ++void SHA1Final(unsigned char digest[20], SHA1_CTX* context) ++{ ++unsigned long i, j; ++unsigned char finalcount[8]; ++ ++ for (i = 0; i < 8; i++) { ++ finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)] ++ >> ((3-(i & 3)) * 8) ) & 255); /* Endian independent */ ++ } ++ SHA1Update(context, (unsigned char *)"\200", 1); ++ while ((context->count[0] & 504) != 448) { ++ SHA1Update(context, (unsigned char *)"\0", 1); ++ } ++ SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */ ++ for (i = 0; i < 20; i++) { ++ digest[i] = (unsigned char) ++ ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255); ++ } ++ /* Wipe variables */ ++ i = j = 0; ++ memset(context->buffer, 0, 64); ++ memset(context->state, 0, 20); ++ memset(context->count, 0, 8); ++ memset(&finalcount, 0, 8); ++#ifdef SHA1HANDSOFF /* make SHA1Transform overwrite it's own static vars */ ++ SHA1Transform(context->state, context->buffer); ++#endif ++} +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/sha1.h ctorrent-1.3.4/sha1.h +--- ctorrent-1.3.4.sav/sha1.h 1970-01-01 01:00:00.000000000 +0100 ++++ ctorrent-1.3.4/sha1.h 2006-06-28 19:30:02.000000000 +0200 +@@ -0,0 +1,43 @@ ++#ifndef SHA1_H ++#define SHA1_H ++ ++/* ++SHA-1 in C ++By Steve Reid <steve@edmweb.com> ++100% Public Domain ++ ++Test Vectors (from FIPS PUB 180-1) ++"abc" ++ A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D ++"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq" ++ 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1 ++A million repetitions of "a" ++ 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F ++*/ ++ ++#include <sys/types.h> ++ ++/* #define LITTLE_ENDIAN * This should be #define'd if true. */ ++/* #define SHA1HANDSOFF * Copies data before messing with it. */ ++#define SHA1HANDSOFF ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++typedef struct { ++ unsigned long state[5]; ++ unsigned long count[2]; ++ unsigned char buffer[64]; ++} SHA1_CTX; ++ ++void SHA1Transform(unsigned long state[5], unsigned char buffer[64]); ++void SHA1Init(SHA1_CTX* context); ++void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned int len); ++void SHA1Final(unsigned char digest[20], SHA1_CTX* context); ++ ++#ifdef __cplusplus ++} ++#endif ++ ++#endif +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/sigint.cpp ctorrent-1.3.4/sigint.cpp +--- ctorrent-1.3.4.sav/sigint.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/sigint.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -4,17 +4,28 @@ #include <signal.h> #include "btcontent.h" @@ -1934,6 +14762,7 @@ diff -u ctorrent-1.3.4.orig/sigint.cpp ctorrent-1.3.4/sigint.cpp { - if(SIGINT == sig_no){ + if(SIGINT == sig_no || SIGTERM == sig_no){ ++ if( Tracker.IsPaused() ) Tracker.ClearPause(); + Tracker.SetStoped(); + signal(sig_no,sig_catch2); + } @@ -1952,9 +14781,9 @@ diff -u ctorrent-1.3.4.orig/sigint.cpp ctorrent-1.3.4/sigint.cpp } } -diff -u ctorrent-1.3.4.orig/sigint.h ctorrent-1.3.4/sigint.h ---- ctorrent-1.3.4.orig/sigint.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/sigint.h 2005-08-11 23:45:29.435692768 +0200 +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/sigint.h ctorrent-1.3.4/sigint.h +--- ctorrent-1.3.4.sav/sigint.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/sigint.h 2006-06-28 19:30:02.000000000 +0200 @@ -2,7 +2,8 @@ #define SIGINT_H @@ -1965,15 +14794,30 @@ diff -u ctorrent-1.3.4.orig/sigint.h ctorrent-1.3.4/sigint.h #endif #endif -diff -u ctorrent-1.3.4.orig/tracker.cpp ctorrent-1.3.4/tracker.cpp ---- ctorrent-1.3.4.orig/tracker.cpp 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/tracker.cpp 2005-08-11 23:45:29.435692768 +0200 -@@ -31,11 +31,12 @@ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/tracker.cpp ctorrent-1.3.4/tracker.cpp +--- ctorrent-1.3.4.sav/tracker.cpp 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/tracker.cpp 2006-06-28 19:30:02.000000000 +0200 +@@ -20,6 +20,7 @@ + #include "iplist.h" + + #include "btconfig.h" ++#include "ctcs.h" + + btTracker Tracker; + +@@ -27,15 +28,19 @@ + { + memset(m_host,0,MAXHOSTNAMELEN); + memset(m_path,0,MAXPATHLEN); ++ memset(m_trackerid,0,PEER_ID_LEN+1); + m_sock = INVALID_SOCKET; m_port = 80; m_status = T_FREE; - m_f_started = m_f_stoped = m_f_pause = 0; + m_f_started = m_f_stoped = m_f_pause = m_f_completed = 0; ++ m_f_softquit = m_f_restart = 0; ++ m_interval = 15; m_connect_refuse_click = 0; @@ -1982,31 +14826,149 @@ diff -u ctorrent-1.3.4.orig/tracker.cpp ctorrent-1.3.4/tracker.cpp } btTracker::~btTracker() -@@ -54,7 +55,8 @@ +@@ -54,7 +59,11 @@ m_reponse_buffer.Reset(); time(&m_last_timestamp); - m_status = T_FREE; -+ if (m_f_stoped) m_status = T_FINISHED; ++ if (m_f_stoped){ ++ m_status = T_FINISHED; ++ if( m_f_restart ) Resume(); ++ } + else m_status = T_FREE; } int btTracker:: _IPsin(char *h, int p, struct sockaddr_in *psin) -@@ -111,6 +113,13 @@ +@@ -74,8 +83,8 @@ + if(psin->sin_addr.s_addr == INADDR_NONE){ + struct hostent *ph = gethostbyname(h); + if( !ph || ph->h_addrtype != AF_INET){ +- memset(psin,0,sizeof(struct sockaddr_in)); +- return -1; ++ memset(psin,0,sizeof(struct sockaddr_in)); ++ return -1; + } + memcpy(&psin->sin_addr,ph->h_addr_list[0],sizeof(struct in_addr)); + } +@@ -93,7 +102,7 @@ + + struct sockaddr_in addr; + +- if( decode_query(buf,bufsiz,"failure reason",&ps,&i,QUERY_STR) ){ ++ if( decode_query(buf,bufsiz,"failure reason",&ps,&i,(int64_t*) 0,QUERY_STR) ){ + char failreason[1024]; + if( i < 1024 ){ + memcpy(failreason, ps, i); +@@ -104,14 +113,55 @@ + strcat(failreason,"..."); + } + fprintf(stderr,"TRACKER FAILURE REASON: %s\n",failreason); ++ if(arg_ctcs){ ++ char ctcsinfo[1048]; ++ snprintf(ctcsinfo,1048,"TRACKER FAILURE REASON: %s",failreason); ++ CTCS.Send_Info(ctcsinfo); ++ } + return -1; + } ++ if( decode_query(buf,bufsiz,"warning message",&ps,&i,(int64_t*) 0,QUERY_STR) ){ ++ char warnmsg[1024]; ++ if( i < 1024 ){ ++ memcpy(warnmsg, ps, i); ++ warnmsg[i] = '\0'; ++ }else{ ++ memcpy(warnmsg, ps, 1000); ++ warnmsg[1000] = '\0'; ++ strcat(warnmsg,"..."); ++ } ++ fprintf(stderr,"TRACKER WARNING: %s\n",warnmsg); ++ if(arg_ctcs){ ++ char ctcsinfo[1048]; ++ snprintf(ctcsinfo,1048,"TRACKER WARNING: %s",warnmsg); ++ CTCS.Send_Info(ctcsinfo); ++ } ++ } + +- if(!decode_query(buf,bufsiz,"interval",(const char**) 0,&i,QUERY_INT)){return -1;} ++ m_peers_count = 0; ++ ++ if( decode_query(buf,bufsiz,"tracker id",&ps,&i,(int64_t*) 0,QUERY_STR) ){ ++ if( i <= PEER_ID_LEN ){ ++ memcpy(m_trackerid, ps, i); ++ m_trackerid[i] = '\0'; ++ }else{ ++ memcpy(m_trackerid, ps, PEER_ID_LEN); ++ m_trackerid[PEER_ID_LEN] = '\0'; ++ } ++ } ++ ++ if(!decode_query(buf,bufsiz,"interval",(const char**) 0,&i,(int64_t*) 0,QUERY_INT)){return -1;} if(m_interval != (time_t)i) m_interval = (time_t)i; -+ if(decode_query(buf,bufsiz,"complete",(const char**) 0,&i,QUERY_INT)) { -+ m_peers_count = i; +- pos = decode_query(buf,bufsiz,"peers",(const char**) 0,(size_t *) 0,QUERY_POS); ++ if(decode_query(buf,bufsiz,"complete",(const char**) 0,&i,(int64_t*) 0,QUERY_INT)) { ++ m_peers_count += i; + } -+ if(decode_query(buf,bufsiz,"incomplete",(const char**) 0,&i,QUERY_INT)) { ++ if(decode_query(buf,bufsiz,"incomplete",(const char**) 0,&i,(int64_t*) 0,QUERY_INT)) { + m_peers_count += i; + } + - pos = decode_query(buf,bufsiz,"peers",(const char**) 0,(size_t *) 0,QUERY_POS); ++ pos = decode_query(buf,bufsiz,"peers",(const char**) 0,(size_t *) 0,(int64_t*) 0,QUERY_POS); if( !pos ){ -@@ -161,7 +170,10 @@ + return -1; +@@ -123,32 +173,32 @@ + + ps = buf-1; + if (*ps != 'l') { // binary peers section if not 'l' +- addr.sin_family = AF_INET; +- i = 0; +- while (*ps != ':' ) i = i * 10 + (*ps++ - '0'); +- i /= 6; +- ps++; +- while (i-- > 0) { +- // if peer is not us +- if(memcmp(&Self.m_sin.sin_addr,ps,sizeof(struct in_addr))) { +- memcpy(&addr.sin_addr,ps,sizeof(struct in_addr)); +- memcpy(&addr.sin_port,ps+sizeof(struct in_addr),sizeof(unsigned short)); +- cnt++; +- IPQUEUE.Add(&addr); +- } +- ps += 6; +- } ++ addr.sin_family = AF_INET; ++ i = 0; ++ while (*ps != ':' ) i = i * 10 + (*ps++ - '0'); ++ i /= 6; ++ ps++; ++ while (i-- > 0) { ++ // if peer is not us ++ if(memcmp(&Self.m_sin.sin_addr,ps,sizeof(struct in_addr))) { ++ memcpy(&addr.sin_addr,ps,sizeof(struct in_addr)); ++ memcpy(&addr.sin_port,ps+sizeof(struct in_addr),sizeof(unsigned short)); ++ cnt++; ++ IPQUEUE.Add(&addr); ++ } ++ ps += 6; ++ } + } + else + for( ;bufsiz && *buf!='e'; buf += pos, bufsiz -= pos ){ + pos = decode_dict(buf,bufsiz,(char*) 0); + if(!pos) break; +- if(!decode_query(buf,pos,"ip",&ps,&i,QUERY_STR) || MAXHOSTNAMELEN < i) continue; ++ if(!decode_query(buf,pos,"ip",&ps,&i,(int64_t*) 0,QUERY_STR) || MAXHOSTNAMELEN < i) continue; + memcpy(tmphost,ps,i); tmphost[i] = '\0'; + +- if(!decode_query(buf,pos,"port",(const char**) 0,&tmpport,QUERY_INT)) continue; ++ if(!decode_query(buf,pos,"port",(const char**) 0,&tmpport,(int64_t*) 0,QUERY_INT)) continue; + +- if(!decode_query(buf,pos,"peer id",&ps,&i,QUERY_STR) && i != 20 ) continue; ++ if(!decode_query(buf,pos,"peer id",&ps,&i,(int64_t*) 0,QUERY_STR) && i != 20 ) continue; + + if(_IPsin(tmphost,tmpport,&addr) < 0){ + fprintf(stderr,"warn, detected invalid ip address %s.\n",tmphost); +@@ -161,14 +211,17 @@ } } @@ -2018,7 +14980,79 @@ diff -u ctorrent-1.3.4.orig/tracker.cpp ctorrent-1.3.4/tracker.cpp return 0; } -@@ -230,10 +242,14 @@ + int btTracker::CheckReponse() + { + #define MAX_LINE_SIZ 32 +- char *pdata; ++ char *pdata, *format; + ssize_t r; + size_t q, hlen, dlen; + +@@ -186,6 +239,12 @@ + if(getsockopt(m_sock, SOL_SOCKET,SO_ERROR,&error,&n) < 0 || + error != 0 ){ + fprintf(stderr,"warn, received nothing from tracker! %s\n",strerror(error)); ++ if(arg_ctcs){ ++ char ctcsinfo[256]; ++ snprintf(ctcsinfo,256, ++ "warn, received nothing from tracker! %s",strerror(error)); ++ CTCS.Send_Info(ctcsinfo); ++ } + } + return -1; + } +@@ -194,6 +253,8 @@ + + if( !hlen ){ + fprintf(stderr,"warn, tracker reponse invalid. No html header found.\n"); ++ if(arg_ctcs) ++ CTCS.Send_Info("warn, tracker reponse invalid. No html header found."); + return -1; + } + +@@ -202,21 +263,32 @@ + if( r == 301 || r == 302 ){ + char redirect[MAXPATHLEN],ih_buf[20 * 3 + 1],pi_buf[20 * 3 + 1],tmppath[MAXPATHLEN]; + if( Http_get_header(m_reponse_buffer.BasePointer(), hlen, "Location", redirect) < 0 ) +- return -1; ++ return -1; + + if( Http_url_analyse(redirect,m_host,&m_port,m_path) < 0){ +- fprintf(stderr,"warn, tracker redirect to an invalid url %s!\n", redirect); +- return -1; ++ fprintf(stderr,"warn, tracker redirect to an invalid url %s!\n", redirect); ++ if(arg_ctcs){ ++ char ctcsinfo[256]; ++ snprintf(ctcsinfo,256, ++ "warn, tracker redirect to an invalid url %s!", redirect); ++ CTCS.Send_Info(ctcsinfo); ++ } ++ return -1; + } + + strcpy(tmppath,m_path); ++ ++ if(strchr(m_path, '?')) ++ format=REQ_URL_P1A_FMT; ++ else format=REQ_URL_P1_FMT; + +- if(MAXPATHLEN < snprintf(m_path,MAXPATHLEN,REQ_URL_P1_FMT, +- tmppath, +- Http_url_encode(ih_buf, (char*)BTCONTENT.GetInfoHash(), 20), +- Http_url_encode(pi_buf, (char*)BTCONTENT.GetPeerId(), 20), +- cfg_listen_port)){ +- return -1; ++ if(MAXPATHLEN < snprintf(m_path,MAXPATHLEN,format, ++ tmppath, ++ Http_url_encode(ih_buf, (char*)BTCONTENT.GetInfoHash(), 20), ++ Http_url_encode(pi_buf, (char*)BTCONTENT.GetPeerId(), 20), ++ cfg_listen_port, ++ m_key)){ ++ return -1; + } + + return Connect(); +@@ -230,10 +302,14 @@ return 0; } @@ -2034,7 +15068,123 @@ diff -u ctorrent-1.3.4.orig/tracker.cpp ctorrent-1.3.4/tracker.cpp return _UpdatePeerList(pdata,dlen); } -@@ -329,30 +345,34 @@ +@@ -241,6 +317,7 @@ + int btTracker::Initial() + { + char ih_buf[20 * 3 + 1],pi_buf[20 * 3 + 1],tmppath[MAXPATHLEN]; ++ char *format; + + if(Http_url_analyse(BTCONTENT.GetAnnounce(),m_host,&m_port,m_path) < 0){ + fprintf(stderr,"error, invalid tracker url format!\n"); +@@ -249,40 +326,50 @@ + + strcpy(tmppath,m_path); + +- if(MAXPATHLEN < snprintf((char*)m_path,MAXPATHLEN,REQ_URL_P1_FMT, +- tmppath, +- Http_url_encode(ih_buf,(char*)BTCONTENT.GetInfoHash(),20), +- Http_url_encode(pi_buf,(char*)BTCONTENT.GetPeerId(),20), +- cfg_listen_port)){ ++ if(strchr(m_path, '?')) ++ format=REQ_URL_P1A_FMT; ++ else format=REQ_URL_P1_FMT; ++ ++ char chars[37] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ++ for(int i=0; i<8; i++) ++ m_key[i] = chars[random()%36]; ++ m_key[8] = 0; ++ ++ if(MAXPATHLEN < snprintf((char*)m_path,MAXPATHLEN,format, ++ tmppath, ++ Http_url_encode(ih_buf,(char*)BTCONTENT.GetInfoHash(),20), ++ Http_url_encode(pi_buf,(char*)BTCONTENT.GetPeerId(),20), ++ cfg_listen_port, ++ m_key)){ + return -1; + } +- ++ + /* get local ip address */ + // 1st: if behind firewall, this only gets local side + { + struct sockaddr_in addr; + socklen_t addrlen = sizeof(struct sockaddr_in); + if(getsockname(m_sock,(struct sockaddr*)&addr,&addrlen) == 0) +- Self.SetIp(addr); ++ Self.SetIp(addr); + } + // 2nd: better to use addr of our domain + { +- struct hostent *h; +- char hostname[128]; +- char *hostdots[2]={0,0}, *hdptr=hostname; +- +- if (gethostname(hostname, 128) == -1) return -1; +-// printf("%s\n", hostname); +- while(*hdptr) if(*hdptr++ == '.') { +- hostdots[0] = hostdots[1]; +- hostdots[1] = hdptr; +- } +- if (hostdots[0] == 0) return -1; +-// printf("%s\n", hostdots[0]); +- if ((h = gethostbyname(hostdots[0])) == NULL) return -1; +- //printf("Host domain : %s\n", h->h_name); +- //printf("IP Address : %s\n", inet_ntoa(*((struct in_addr *)h->h_addr))); +- memcpy(&Self.m_sin.sin_addr,h->h_addr,sizeof(struct in_addr)); ++ struct hostent *h; ++ char hostname[128]; ++ char *hostdots[2]={0,0}, *hdptr=hostname; ++ ++ if (gethostname(hostname, 128) == -1) return -1; ++// printf("%s\n", hostname); ++ while(*hdptr) if(*hdptr++ == '.') { ++ hostdots[0] = hostdots[1]; ++ hostdots[1] = hdptr; ++ } ++ if (hostdots[0] == 0) return -1; ++// printf("%s\n", hostdots[0]); ++ if ((h = gethostbyname(hostdots[0])) == NULL) return -1; ++ //printf("Host domain : %s\n", h->h_name); ++ //printf("IP Address : %s\n", inet_ntoa(*((struct in_addr *)h->h_addr))); ++ memcpy(&Self.m_sin.sin_addr,h->h_addr,sizeof(struct in_addr)); + } + return 0; + } +@@ -294,12 +381,33 @@ + + if(_s2sin(m_host,m_port,&m_sin) < 0) { + fprintf(stderr,"warn, get tracker's ip address failed."); ++ if(arg_ctcs) CTCS.Send_Info("warn, get tracker's ip address failed."); + return -1; + } + + m_sock = socket(AF_INET,SOCK_STREAM,0); + if(INVALID_SOCKET == m_sock) return -1; + ++ // we only need to bind if we have specified an ip ++ // we need it to bind here before the connect!!!! ++ if ( cfg_listen_ip != 0 ) { ++ struct sockaddr_in addr; ++ // clear the struct as requested in the manpages ++ memset(&addr,0, sizeof(sockaddr_in)); ++ // set the type ++ addr.sin_family = AF_INET; ++ // we want the system to choose port ++ addr.sin_port = 0; ++ // set the defined ip from the commandline ++ addr.sin_addr.s_addr = cfg_listen_ip; ++ // bind it or return... ++ if(bind(m_sock,(struct sockaddr*)&addr,sizeof(struct sockaddr_in)) != 0){ ++ fprintf(stderr, "warn, can't set up tracker connection: %s\n", ++ strerror(errno)); ++ return -1; ++ } ++ } ++ + if(setfd_nonblock(m_sock) < 0) {CLOSE_SOCKET(m_sock); return -1; } + + r = connect_nonb(m_sock,(struct sockaddr*)&m_sin); +@@ -329,34 +437,42 @@ // fprintf(stdout,"Old Set Self:"); // fprintf(stdout,"%s\n", inet_ntoa(Self.m_sin.sin_addr)); @@ -2058,47 +15208,83 @@ diff -u ctorrent-1.3.4.orig/tracker.cpp ctorrent-1.3.4/tracker.cpp if(event){ if(MAXPATHLEN < snprintf(REQ_BUFFER,MAXPATHLEN,REQ_URL_P2_FMT, - m_path, +- m_path, - (size_t)Self.TotalUL(), - (size_t)Self.TotalDL(), - (size_t)BTCONTENT.GetLeftBytes(), - event)){ -+ Self.TotalUL(), -+ Self.TotalDL(), -+ BTCONTENT.GetLeftBytes(), -+ event, -+ cfg_max_peers)){ ++ m_path, ++ Self.TotalUL(), ++ Self.TotalDL(), ++ BTCONTENT.GetLeftBytes(), ++ event, ++ cfg_max_peers, ++ m_key)){ return -1; } }else{ if(MAXPATHLEN < snprintf(REQ_BUFFER,MAXPATHLEN,REQ_URL_P3_FMT, - m_path, +- m_path, - (size_t)Self.TotalUL(), - (size_t)Self.TotalDL(), - (size_t)BTCONTENT.GetLeftBytes() -+ Self.TotalUL(), -+ Self.TotalDL(), -+ BTCONTENT.GetLeftBytes(), -+ cfg_max_peers - )){ +- )){ ++ m_path, ++ Self.TotalUL(), ++ Self.TotalDL(), ++ BTCONTENT.GetLeftBytes(), ++ cfg_max_peers, ++ m_key)){ return -1; } -@@ -380,8 +400,12 @@ + } ++ if( *m_trackerid && ++ MAXPATHLEN - strlen(m_path) > 11 + strlen(m_trackerid) ) ++ strcat(strcat(m_path, "&trackerid="), m_trackerid); + + if(_IPsin(m_host, m_port, &addr) < 0){ + char REQ_HOST[MAXHOSTNAMELEN]; +@@ -370,6 +486,12 @@ + + if( 0 != m_reponse_buffer.PutFlush(m_sock,REQ_BUFFER,strlen((char*)REQ_BUFFER))){ + fprintf(stderr,"warn, send request to tracker failed. %s\n",strerror(errno)); ++ if(arg_ctcs){ ++ char ctcsinfo[256]; ++ snprintf(ctcsinfo,256, ++ "warn, send request to tracker failed. %s",strerror(errno)); ++ CTCS.Send_Info(ctcsinfo); ++ } + return -1; + } + +@@ -380,23 +502,29 @@ { /* tracker communication */ if( T_FREE == m_status ){ - if((*pnow - m_last_timestamp >= m_interval) && - (cfg_min_peers > WORLD.TotalPeers())){ -+// if(*pnow - m_last_timestamp >= m_interval){ -+ if(*pnow - m_last_timestamp >= m_interval || -+ // Connect to tracker early if we run out of peers. -+ (!WORLD.TotalPeers() && m_prevpeers && -+ *pnow - m_last_timestamp >= 15) ){ ++ if( *pnow - m_last_timestamp >= m_interval || ++ // Connect to tracker early if we run low on peers. ++ (WORLD.TotalPeers() < cfg_min_peers && m_prevpeers >= cfg_min_peers && ++ *pnow - m_last_timestamp >= 15) || ++ (m_f_pause && !WORLD.TotalPeers()) ){ + m_prevpeers = WORLD.TotalPeers(); if(Connect() < 0){ Reset(15); return -1; } -@@ -396,7 +420,7 @@ + if( m_status == T_CONNECTING ){ +- FD_SET(m_sock, rfdp); +- FD_SET(m_sock, wfdp); ++ FD_SET(m_sock, rfdp); ++ FD_SET(m_sock, wfdp); + }else{ +- FD_SET(m_sock, rfdp); ++ FD_SET(m_sock, rfdp); + } ++ ++ if( m_f_pause && !WORLD.TotalPeers() ) m_f_stoped = 1; + } + }else{ if( m_status == T_CONNECTING ){ FD_SET(m_sock, rfdp); FD_SET(m_sock, wfdp); @@ -2107,19 +15293,94 @@ diff -u ctorrent-1.3.4.orig/tracker.cpp ctorrent-1.3.4/tracker.cpp FD_SET(m_sock, rfdp); } } -@@ -425,7 +449,7 @@ +@@ -407,28 +535,60 @@ + { + if( T_FREE == m_status ) return 0; + +- if( T_CONNECTING == m_status && +- (FD_ISSET(m_sock, wfdp) || FD_ISSET(m_sock,wfdp)) ){ ++ if( T_CONNECTING == m_status && FD_ISSET(m_sock,wfdp) ){ + int error = 0; + socklen_t n = sizeof(error); + (*nfds)--; + FD_CLR(m_sock, wfdp); + if(getsockopt(m_sock, SOL_SOCKET,SO_ERROR,&error,&n) < 0 || + error != 0 ){ +- if( ECONNREFUSED != error ) +- fprintf(stderr,"warn, connect to tracker failed. %s\n",strerror(error)); +- else +- m_connect_refuse_click++; ++ if( ECONNREFUSED != error ){ ++ fprintf(stderr,"warn, connect to tracker failed. %s\n",strerror(error)); ++ if(arg_ctcs){ ++ char ctcsinfo[256]; ++ snprintf(ctcsinfo,256, ++ "warn, connect to tracker failed. %s\n",strerror(error)); ++ CTCS.Send_Info(ctcsinfo); ++ } ++ }else ++ m_connect_refuse_click++; + Reset(15); + return -1; + }else{ if( SendRequest() == 0 ) m_status = T_READY; else { Reset(15); return -1; } } - }else if(FD_ISSET(m_sock, rfdp) ){ ++ }else if( T_CONNECTING == m_status && FD_ISSET(m_sock,rfdp) ){ ++ int error = 0; ++ socklen_t n = sizeof(error); ++ (*nfds)--; ++ FD_CLR(m_sock, rfdp); ++ getsockopt(m_sock, SOL_SOCKET,SO_ERROR,&error,&n); ++ fprintf(stderr,"warn, connect to tracker failed. %s\n",strerror(error)); ++ if(arg_ctcs){ ++ char ctcsinfo[256]; ++ snprintf(ctcsinfo,256, ++ "warn, connect to tracker failed. %s\n",strerror(error)); ++ CTCS.Send_Info(ctcsinfo); ++ } ++ Reset(15); ++ return -1; + }else if(INVALID_SOCKET != m_sock && FD_ISSET(m_sock, rfdp) ){ (*nfds)--; FD_CLR(m_sock,rfdp); CheckReponse(); -diff -u ctorrent-1.3.4.orig/tracker.h ctorrent-1.3.4/tracker.h ---- ctorrent-1.3.4.orig/tracker.h 2004-09-09 01:10:51.000000000 +0200 -+++ ctorrent-1.3.4/tracker.h 2005-08-11 23:45:29.436692616 +0200 -@@ -21,6 +21,7 @@ + } + return 0; + } ++ ++void btTracker::Resume() ++{ ++ m_f_pause = m_f_stoped = 0; ++ ++ if( T_FINISHED == m_status ){ ++ m_status = T_FREE; ++ m_f_started = 0; ++ m_interval = 15; ++ } ++} ++ +diff -ur --unidirectional-new-file ctorrent-1.3.4.sav/tracker.h ctorrent-1.3.4/tracker.h +--- ctorrent-1.3.4.sav/tracker.h 2006-06-28 19:00:54.000000000 +0200 ++++ ctorrent-1.3.4/tracker.h 2006-06-28 19:30:02.000000000 +0200 +@@ -1,9 +1,9 @@ + #ifndef TRACKER_H + #define TRACKER_H + ++#include "./def.h" + #include <sys/types.h> + +-#include "./def.h" + #include "./bufio.h" + + #ifdef WINDOWS +@@ -18,9 +18,12 @@ + #include <sys/param.h> + #endif + ++#include "btconfig.h" ++ #define T_FREE 0 #define T_CONNECTING 1 #define T_READY 2 @@ -2127,7 +15388,15 @@ diff -u ctorrent-1.3.4.orig/tracker.h ctorrent-1.3.4/tracker.h class btTracker { -@@ -34,15 +35,20 @@ +@@ -28,21 +31,29 @@ + char m_host[MAXHOSTNAMELEN]; + char m_path[MAXPATHLEN]; + int m_port; ++ char m_key[9]; ++ char m_trackerid[PEER_ID_LEN+1]; + + struct sockaddr_in m_sin; + unsigned char m_status:2; unsigned char m_f_started:1; unsigned char m_f_stoped:1; @@ -2135,7 +15404,8 @@ diff -u ctorrent-1.3.4.orig/tracker.h ctorrent-1.3.4/tracker.h unsigned char m_f_pause:1; - unsigned char m_f_reserved:3; -+ unsigned char m_f_reserved:2; ++ unsigned char m_f_softquit:1; ++ unsigned char m_f_restart:1; time_t m_interval; // ÓëTrackerͨÐŵÄʱ¼ä¼ä¸ô @@ -2149,16 +15419,22 @@ diff -u ctorrent-1.3.4.orig/tracker.h ctorrent-1.3.4/tracker.h SOCKET m_sock; BufIo m_reponse_buffer; -@@ -66,6 +72,8 @@ +@@ -65,6 +76,14 @@ + void SetPause() { m_f_pause = 1; } void ClearPause() { m_f_pause = 0; } - -+ void SetStoped() { Reset(15); m_f_stoped = 1; m_last_timestamp -= 15;} ++ int IsPaused() const { return m_f_pause; } ++ void Resume(); ++ void SoftQuit() { m_f_softquit = 1; } ++ void DontQuit() { m_f_softquit = 0; } ++ int IsQuitting() const { return m_f_softquit; } ++ void SetRestart() { m_f_restart = 1; } + ++ void SetStoped() { Reset(15); m_f_stoped = 1; m_last_timestamp -= 15;} + int Connect(); int SendRequest(); - int CheckReponse(); -@@ -73,6 +81,8 @@ +@@ -73,6 +92,8 @@ int SocketReady(fd_set *rfdp, fd_set *wfdp, int *nfds); size_t GetRefuseClick() const { return m_connect_refuse_click; } diff --git a/packages/cyrus-sasl/cyrus-sasl-2.1.19/client.c.patch b/packages/cyrus-sasl/cyrus-sasl-2.1.19/client.c.patch new file mode 100644 index 0000000000..775bc54faa --- /dev/null +++ b/packages/cyrus-sasl/cyrus-sasl-2.1.19/client.c.patch @@ -0,0 +1,11 @@ +--- xx/lib/client.c.orig 2006-07-01 12:32:46.000000000 +0200 ++++ xx/lib/client.c 2006-07-01 12:33:01.000000000 +0200 +@@ -61,7 +61,7 @@ + + static cmech_list_t *cmechlist; /* global var which holds the list */ + +-static sasl_global_callbacks_t global_callbacks; ++sasl_global_callbacks_t global_callbacks; + + static int _sasl_client_active = 0; + diff --git a/packages/cyrus-sasl/cyrus-sasl_2.1.19.bb b/packages/cyrus-sasl/cyrus-sasl_2.1.19.bb index 74269364a5..f3148233e5 100644 --- a/packages/cyrus-sasl/cyrus-sasl_2.1.19.bb +++ b/packages/cyrus-sasl/cyrus-sasl_2.1.19.bb @@ -5,7 +5,8 @@ LICENSE = "BSD" PR = "r9" SRC_URI = "ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/cyrus-sasl-${PV}.tar.gz \ - file://berkdb.m4.patch;patch=1" + file://berkdb.m4.patch;patch=1 \ + file://client.c.patch;patch=1" inherit autotools diff --git a/packages/debianutils/debianutils_2.16.1.bb b/packages/debianutils/debianutils_2.16.1.bb new file mode 100644 index 0000000000..b20ae66108 --- /dev/null +++ b/packages/debianutils/debianutils_2.16.1.bb @@ -0,0 +1 @@ +include debianutils.inc diff --git a/packages/efl++/efl++-fb_cvs.bb b/packages/efl++/efl++-fb_cvs.bb new file mode 100644 index 0000000000..071b1d58cc --- /dev/null +++ b/packages/efl++/efl++-fb_cvs.bb @@ -0,0 +1,9 @@ +include efl++.inc + +PV = "0.1.0+cvs${SRCDATE}" + +SRC_URI = "cvs://anonymous@projects.linuxtogo.org/cvsroot/eflpp;module=efl++" +S = "${WORKDIR}/efl++" + + + diff --git a/packages/efl++/efl++-x11_cvs.bb b/packages/efl++/efl++-x11_cvs.bb new file mode 100644 index 0000000000..016f1b1b65 --- /dev/null +++ b/packages/efl++/efl++-x11_cvs.bb @@ -0,0 +1,10 @@ +include efl++.inc + +EXTRA_QMAKEVARS_POST += "CONFIG+=eflecorex11" +PV = "0.1.0+cvs${SRCDATE}" + +SRC_URI = "cvs://anonymous@projects.linuxtogo.org/cvsroot/eflpp;module=efl++" +S = "${WORKDIR}/efl++" + + + diff --git a/packages/efl++/efl++.inc b/packages/efl++/efl++.inc index b560826662..4eba64bd12 100644 --- a/packages/efl++/efl++.inc +++ b/packages/efl++/efl++.inc @@ -4,7 +4,7 @@ LICENSE = "LGPL" AUTHOR = "Michael 'Mickey' Lauer <mickey@Vanille.de>" MAINTAINER = "${AUTHOR}" HOMEPAGE = "http://www.Vanille.de/projects/efl++.html" -DEPENDS = "virtual/evas virtual/ecore edje libsigc++-2.0" +DEPENDS = "virtual/evas virtual/ecore etk edje libsigc++-2.0" PROVIDES = "virtual/efl++" SRC_URI = "http://www.Vanille.de/download/efl/efl++_${PV}.tar.bz2 \ diff --git a/packages/fbreader/fbreader_0.7.3d.bb b/packages/fbreader/fbreader_0.7.3d.bb index a75d2b0de6..2edfb0e7e8 100644 --- a/packages/fbreader/fbreader_0.7.3d.bb +++ b/packages/fbreader/fbreader_0.7.3d.bb @@ -1,4 +1,3 @@ - DESCRIPTION = "FBreader is an ebook reader" LICENSE = "GPL2" HOMEPAGE = "http://only.mawhrin.net/fbreader/" @@ -7,7 +6,7 @@ PRIORITY = "optional" DEPENDS = "gtk+ enca expat" MAINTAINER = "Florian Boor <florian@kernelconcepts.de>" -SRC_URI = "http://only.mawhrin.net/fbreader/fbreader-sources-${PV}.tgz \ +SRC_URI = "http://only.mawhrin.net/fbreader/obsolete/fbreader-sources-${PV}.tgz \ file://fbreader-0.7.3d_buildsys_oe.patch;patch=1" FILES_${PN} += "${datadir}/FBReader" diff --git a/packages/libopie/libopie2-1.2.1/.mtn2git_empty b/packages/fluxbox/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/libopie/libopie2-1.2.1/.mtn2git_empty +++ b/packages/fluxbox/.mtn2git_empty diff --git a/packages/opie-aboutapplet/opie-aboutapplet-1.2.1/.mtn2git_empty b/packages/fluxbox/fluxbox-gpe/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/opie-aboutapplet/opie-aboutapplet-1.2.1/.mtn2git_empty +++ b/packages/fluxbox/fluxbox-gpe/.mtn2git_empty diff --git a/packages/fluxbox/fluxbox-gpe/apps.gpe b/packages/fluxbox/fluxbox-gpe/apps.gpe new file mode 100644 index 0000000000..7aca442752 --- /dev/null +++ b/packages/fluxbox/fluxbox-gpe/apps.gpe @@ -0,0 +1,57 @@ +[app] (title=Panel 0) + [Deco] {NONE} + [Sticky] {yes} +[end] +[app] (title=Panel 1) + [Deco] {NONE} +[end] +[app] (title=rxvt) + [Dimensions] {635 440} +[end] +[app] (title=x-terminal-emulator) + [Dimensions] {635 440} +[end] +[app] (abiword) + [Dimensions] {635 440} + [Sticky] {no} +[end] +[app] (gpe-filemanager) + [Dimensions] {635 440} + [Sticky] {yes} +[end] +[app] (gpe-info) + [Dimensions] {424 336} +[end] +[app] (gpe-edit) + [Dimensions] {635 440} +[end] +[app] (gpe-calculator) + [Dimensions] {266 321} +[end] +[app] (main) + [Dimensions] {635 440} +[end] +[app] (Gnumeric) + [Dimensions] {635 440} +[end] +[app] (gpdf) + [Dimensions] {635 440} +[end] +[app] (main_window) + [Dimensions] {635 440} +[end] +[app] (gaim) + [Dimensions] {635 440} +[end] +[app] (gpe-calendar) + [Dimensions] {380 343} +[end] +[app] (gpe-mini-browser) + [Dimensions] {635 440} +[end] +[app] (figment) + [Dimensions] {635 440} +[end] +[app] (gpe-sketchbook) + [Dimensions] {471 314} +[end] diff --git a/packages/fluxbox/fluxbox-gpe/fluxbox-gpe-session b/packages/fluxbox/fluxbox-gpe/fluxbox-gpe-session new file mode 100644 index 0000000000..ca0afea35d --- /dev/null +++ b/packages/fluxbox/fluxbox-gpe/fluxbox-gpe-session @@ -0,0 +1,30 @@ +#!/bin/sh +# +# Session script for fluxbox-gpe, heavily based on matchbox's session script +# + +# Install "apps" file with defaults for GPE usage +if test -e /usr/share/fluxbox/apps.gpe +then + mkdir -p $HOME/.fluxbox + test -e $HOME/.fluxbox/apps || cp /usr/share/fluxbox/apps.gpe $HOME/.fluxbox/apps +fi + + +if [ -e $HOME/.fluxbox/session ] +then +exec $HOME/.fluxbox/session +fi + +if [ -e /usr/share/fluxbox/session ] +then +exec /usr/share/fluxbox/session +fi + +# Default files to run if $HOME/.matchbox/session or /etc/matchbox/session +# dont exist. + +matchbox-desktop & +matchbox-panel --orientation south -no-flip & +sleep 5 +exec startfluxbox $@ diff --git a/packages/fluxbox/fluxbox-gpe/fluxbox-gpe.session b/packages/fluxbox/fluxbox-gpe/fluxbox-gpe.session new file mode 100644 index 0000000000..16b7a2703a --- /dev/null +++ b/packages/fluxbox/fluxbox-gpe/fluxbox-gpe.session @@ -0,0 +1,9 @@ +#!/bin/sh + +XRES=`xdpyinfo | awk '/dimensions/ { print $2 }' | cut -dx -f1` + +matchbox-desktop & +matchbox-panel --orientation south --no-flip& +sleep 5 +exec startfluxbox $@ + diff --git a/packages/fluxbox/fluxbox-gpe/gpe-init.patch b/packages/fluxbox/fluxbox-gpe/gpe-init.patch new file mode 100644 index 0000000000..c9836923d8 --- /dev/null +++ b/packages/fluxbox/fluxbox-gpe/gpe-init.patch @@ -0,0 +1,121 @@ +--- fluxbox-1.0rc/data/init.in.orig 2006-07-02 20:45:39.119045500 +0200 ++++ fluxbox-1.0rc/data/init.in 2006-07-02 20:45:43.715332750 +0200 +@@ -1,35 +1,95 @@ ++session.screen0.slit.onTop: False + session.screen0.slit.placement: BottomRight ++session.screen0.slit.alpha: 255 ++session.screen0.slit.onhead: 0 + session.screen0.slit.direction: Vertical +-session.screen0.slit.onTop: False +-session.screen0.slit.autoHide: False +-session.screen0.tab.placement: Top ++session.screen0.slit.layer: Dock ++session.screen0.slit.maxOver: false ++session.screen0.slit.autoHide: false ++session.screen0.menu.alpha: 255 ++session.screen0.iconbar.iconTextPadding: 10l ++session.screen0.iconbar.alignment: Left ++session.screen0.iconbar.wheelMode: Screen ++session.screen0.iconbar.mode: Workspace ++session.screen0.iconbar.deiconifyMode: Follow ++session.screen0.iconbar.iconWidth: 70 ++session.screen0.iconbar.usePixmap: true ++session.screen0.window.focus.alpha: 255 ++session.screen0.window.unfocus.alpha: 255 ++session.screen0.tab.height: 16 + session.screen0.tab.alignment: Left + session.screen0.tab.rotatevertical: True +-session.screen0.toolbar.onTop: False +-session.screen0.toolbar.autoHide: False +-session.screen0.toolbar.placement: BottomCenter +-session.screen0.toolbar.widthPercent: 66 +-session.screen0.workspaceNames: one,two,three,four ++session.screen0.tab.placement: TopLeft ++session.screen0.tab.width: 64 ++session.screen0.tabs.intitlebar: true ++session.screen0.titlebar.left: Stick ++session.screen0.titlebar.right: Minimize Maximize Close ++session.screen0.toolbar.tools: workspacename, prevworkspace, nextworkspace, iconbar, clock ++session.screen0.toolbar.visible: true ++session.screen0.toolbar.layer: Top ++session.screen0.toolbar.placement: TopCenter ++session.screen0.toolbar.onhead: 0 ++session.screen0.toolbar.widthPercent: 69 ++session.screen0.toolbar.onTop: true ++session.screen0.toolbar.height: 0 ++session.screen0.toolbar.alpha: 254 ++session.screen0.toolbar.autoHide: false ++session.screen0.toolbar.maxOver: true ++session.screen0.overlay.lineWidth: 1 ++session.screen0.overlay.lineStyle: LineSolid ++session.screen0.overlay.joinStyle: JoinMiter ++session.screen0.overlay.capStyle: CapNotLast ++session.screen0.autoRaise: false + session.screen0.strftimeFormat: %k:%M +-session.screen0.focusNewWindows: True +-session.screen0.focusModel: ClickToFocus +-session.screen0.fullMaximization: False ++session.screen0.clickRaises: true ++session.screen0.imageDither: false ++session.screen0.workspaces: 4 ++session.screen0.menuDelay: 0 ++session.screen0.focusNewWindows: true ++session.screen0.workspaceNames: one,two,three,four, + session.screen0.edgeSnapThreshold: 0 ++session.screen0.menuDelayClose: 0 ++session.screen0.windowScrollReverse: false + session.screen0.rowPlacementDirection: LeftToRight +-session.screen0.workspaces: 4 +-session.screen0.focusLastWindow: True ++session.screen0.followModel: Ignore ++session.screen0.windowMenu: ++session.screen0.reversewheeling: false ++session.screen0.windowScrollAction: ++session.screen0.sloppywindowgrouping: true ++session.screen0.resizeMode: Bottom + session.screen0.colPlacementDirection: TopToBottom ++session.screen0.desktopwheeling: true ++session.screen0.tabFocusModel: ClickToTabFocus ++session.screen0.antialias: false ++session.screen0.focusLastWindow: true + session.screen0.windowPlacement: RowSmartPlacement +-session.screen0.tab.width: 64 +-session.screen0.tab.height: 16 +-session.screen0.showwindowposition: true +-session.opaqueMove: False +-session.autoRaiseDelay: 250 ++session.screen0.focusModel: ClickFocus ++session.screen0.opaqueMove: false ++session.screen0.workspacewarping: true ++session.screen0.menuMode: Delay ++session.screen0.decorateTransient: false ++session.screen0.showwindowposition: true ++session.screen0.rootCommand: ++session.screen0.fullMaximization: false ++session.focusTabMinWidth: 0 + session.menuFile: ~/.fluxbox/menu +-session.cacheLife: 5 +-session.styleFile: @default_style@ +-session.keyFile: ~/.fluxbox/keys ++session.imageDither: True + session.colorsPerChannel: 4 ++session.tabPadding: 0 ++session.styleFile: /usr/share/fluxbox/styles/gpe-default ++session.cacheMax: 200l ++session.autoRaiseDelay: 250 + session.doubleClickInterval: 250 +-session.cacheMax: 200 +-session.imageDither: True ++session.tabsAttachArea: Window ++session.numLayers: 13 ++session.keyFile: ~/.fluxbox/keys ++session.ignoreBorder: false ++session.appsFile: ~/.fluxbox/apps ++session.tabs: false ++session.useMod1: true ++session.slitlistFile: ~/.fluxbox/slitlist ++session.forcePseudoTransparency: false ++session.opaqueMove: False ++session.groupFile: ~/.fluxbox/groups ++session.cacheLife: 5l ++session.styleOverlay: ~/.fluxbox/overlay diff --git a/packages/fluxbox/fluxbox-gpe/style.gpe-default b/packages/fluxbox/fluxbox-gpe/style.gpe-default new file mode 100644 index 0000000000..f94aaf7cdd --- /dev/null +++ b/packages/fluxbox/fluxbox-gpe/style.gpe-default @@ -0,0 +1,137 @@ +! meta +! (c) joel carlbark 2003 +! please dont turn on aa with this style +! make sure you have the font 'glisp' (or similar). + +toolbar: flat gradient vertical +toolbar.color: #849ec6 +toolbar.colorTo: #526d8c + +toolbar.button: parentrelative +toolbar.button.picColor: #d6d7e7 + +toolbar.button.pressed: sunken solid +toolbar.button.pressed.color: #526d8c +toolbar.button.pressed.picColor: #000000 + +! clock +toolbar.clock: parentrelative +toolbar.clock.textColor: white + +! shows workspace nr +toolbar.label: parentrelative +toolbar.label.textColor: white + +! current active window / toolbar +toolbar.windowLabel: parentrelative +toolbar.windowLabel.textColor: white + +! menu --------- +menu.title: flat gradient vertical +menu.title.color: #849ec6 +menu.title.colorTo: #526d8c +menu.title.textColor: #d6d7e7 + +menu.frame: flat gradient vertical +menu.frame.color: #efefef +menu.frame.colorTo: #c6c3c6 +menu.frame.textColor: black + +menu.hilite: flat solid +menu.hilite.color: #849ec6 +menu.hilite.textColor: white + +menu.bullet: triangle +menu.bullet.position: right + +! window -------------- +window.title.focus: flat gradient vertical +window.title.focus.color: #849ec6 +window.title.focus.colorTo: #526d8c + +window.label.focus: parentrelative +window.label.focus.textColor: white + +window.button.focus: flat gradient vertical +window.button.focus.color: #849ec6 +window.button.focus.colorTo: #526d8c +window.button.focus.picColor: #d6d7e7 + +window.button.pressed: sunken solid +window.button.pressed.color: #405060 +window.button.pressed.picColor: #000000 + +window.handle.focus: flat gradient vertical +window.handle.focus.color: #efefef +window.handle.focus.colorTo: #c6c3c6 + +window.grip.focus: flat gradient vertical +window.grip.focus.color: #efefef +window.grip.focus.colorTo: #c6c3c6 + +window.frame.focus: flat solid +window.frame.focus.color: white + +! unfocused +window.title.unfocus: flat gradient vertical +window.title.unfocus.color: #efefef +window.title.unfocus.colorTo: #c6c3c6 + +window.label.unfocus: parentrelative +window.label.unfocus.textColor: #949694 + +window.handle.unfocus: flat gradient vertical +window.handle.unfocus.color: #efefef +window.handle.unfocus.colorTo: #c6c3c6 + +window.grip.unfocus: flat gradient vertical +window.grip.unfocus.color: #efefef +window.grip.unfocus.colorTo: #c6c3c6 + +window.frame.unfocus: flat solid +window.frame.unfocus.color: white + +window.button.unfocus: flat gradient vertical +window.button.unfocus.color: #efefef +window.button.unfocus.colorTo: #c6c3c6 +window.button.unfocus.picColor: #949694 + +! tabs ------ +window.tab.justify: left + +window.tab.label.focus: flat gradient vertical +window.tab.label.focus.color: #849ec6 +window.tab.label.focus.colorTo: #526d8c +window.tab.label.focus.textColor: #d6d7e7 + +window.tab.label.unfocus: flat gradient vertical +window.tab.label.unfocus.color: #efefef +window.tab.label.unfocus.colorTo: #c6c3c6 +window.tab.label.unfocus.textColor: #949694 + +window.tab.borderWidth: 1 +window.tab.borderColor: #949694 +! ------- + +toolbar.justify: left +window.justify: center +menu.title.justify: center +menu.frame.justify: left + +borderColor: #000000 +borderWidth: 1 +bevelWidth: 1 +frameWidth: 1 +handleWidth: 4 + +background: flat +background.color: #d6d7e7 + +#*font: Vera-4 +#toolbar.font: Vera-4 + +toolbar*.font: Vera-6 +window.font: Vera-6 +menu.title.font: Vera-7 +menu.frame.font: Vera-7 + diff --git a/packages/fluxbox/fluxbox-gpe_1.0rc.bb b/packages/fluxbox/fluxbox-gpe_1.0rc.bb new file mode 100644 index 0000000000..50c5d6ce1d --- /dev/null +++ b/packages/fluxbox/fluxbox-gpe_1.0rc.bb @@ -0,0 +1,77 @@ +# +# Copyright Matthias Hentges <devel@hentges.net> (c) 2006 +# License: MIT (see http://www.opensource.org/licenses/mit-license.php for a copy of the license) +# +# Filename: fluxbox-gpe_1.0rc.bb +# Date: 01-Jul-06 + +DESCRIPTION = "The Fluxbox WindowManager for use with GPE" +MAINTAINER = "Matthias 'CoreDump' Hentges <oe@hentges.net>" +HOMEPAGE = "http://fluxbox.sourceforge.net" +LICENSE = "MIT" +RCONFLICTS = "fluxbox" + +###################################################################################### + +PR = "r1" +S = "${WORKDIR}/fluxbox-${PV}" + +###################################################################################### + +SRC_URI = "http://switch.dl.sourceforge.net/sourceforge/fluxbox/fluxbox-${PV}.tar.gz \ + file://gpe-init.patch;patch=1\ + file://apps.gpe \ + file://style.gpe-default \ + file://fluxbox-gpe-session \ + file://fluxbox-gpe.session" + +###################################################################################### + +PACKAGES = "${PN} ${PN}-styles" + +DESCRIPTION_${PN}-styles = "The default styles for fluxbox" + +###################################################################################### + +FILES_${PN} = "/usr/bin \ + /usr/share/fluxbox/init \ + /usr/share/fluxbox/keys \ + /usr/share/fluxbox/menu \ + /usr/share/fluxbox/apps.gpe \ + /usr/share/fluxbox/session \ + /usr/share/fluxbox/styles/gpe-default" + +FILES_${PN}-styles = "/usr/share/fluxbox/styles" + +###################################################################################### + +inherit autotools + +###################################################################################### + +EXTRA_OECONF = "--disable-xmb \ + " + +###################################################################################### + +do_install_append() { + install -d ${D}/usr/bin + install -d ${D}/usr/share/fluxbox + install -d ${D}/usr/share/fluxbox/styles + + install -m 0644 ${WORKDIR}/apps.gpe ${D}/usr/share/fluxbox + install -m 0755 ${WORKDIR}/fluxbox-gpe.session ${D}/usr/share/fluxbox/session + install -m 0644 ${WORKDIR}/style.gpe-default ${D}/usr/share/fluxbox/styles/gpe-default + install -m 0755 ${WORKDIR}/fluxbox-gpe-session ${D}/usr/bin +} + +###################################################################################### + +pkg_postinst_${PN}() { + update-alternatives --install /usr/bin/x-window-manager x-window-manager /usr/bin/fluxbox-gpe-session 15 +} + +pkg_postrm_${PN}() { + update-alternatives --remove x-window-manager /usr/bin/fluxbox-gpe-session +} + diff --git a/packages/gcc/gcc_4.1.1.bb b/packages/gcc/gcc_4.1.1.bb index dbc06cdfb8..793aa4bb76 100644 --- a/packages/gcc/gcc_4.1.1.bb +++ b/packages/gcc/gcc_4.1.1.bb @@ -3,7 +3,6 @@ DESCRIPTION = "The GNU cc and gcc C compilers." HOMEPAGE = "http://www.gnu.org/software/gcc/" SECTION = "devel" LICENSE = "GPL" -DEFAULT_PREFERENCE = "-1" inherit autotools gettext diff --git a/packages/glib-1.2/glib-1.2-1.2.10/glib-config-use-pkg-config b/packages/glib-1.2/glib-1.2-1.2.10/glib-config-use-pkg-config index d12b4a9d55..aaa64f392c 100644 --- a/packages/glib-1.2/glib-1.2-1.2.10/glib-config-use-pkg-config +++ b/packages/glib-1.2/glib-1.2-1.2.10/glib-config-use-pkg-config @@ -1,11 +1,5 @@ -patch glib-config so it indirects to pkgconfig for cflags and libs - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- glib-1.2.10/glib-config.in~glib-config-use-pkg-config -+++ glib-1.2.10/glib-config.in +--- glib-1.2.10/glib-config.in.orig 2006-06-28 12:28:53.000000000 +0100 ++++ glib-1.2.10/glib-config.in 2006-06-28 12:31:33.000000000 +0100 @@ -28,6 +28,8 @@ lib_glib=yes @@ -15,7 +9,7 @@ patch glib-config so it indirects to pkgconfig for cflags and libs while test $# -gt 0; do case "$1" in -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; -@@ -55,20 +57,9 @@ +@@ -55,20 +57,14 @@ echo @GLIB_VERSION@ exit 0 ;; @@ -33,13 +27,18 @@ patch glib-config so it indirects to pkgconfig for cflags and libs - ;; - gthread) - lib_gthread=yes -+ --cflags | --libs | glib | gmodule | gthread) ++ --cflags | --libs) + cmd="$cmd $1 " + echo_pkgconfig="yes" ++ ;; ++ glib | gmodule | gthread) ++ cmd="$cmd $1 " ++ echo_pkgconfig="yes" ++ module_provided="yes" ;; *) usage 1 1>&2 -@@ -83,26 +74,6 @@ +@@ -83,26 +79,9 @@ if test "$echo_exec_prefix" = "yes"; then echo $exec_prefix fi @@ -66,5 +65,8 @@ patch glib-config so it indirects to pkgconfig for cflags and libs - fi - echo -L@libdir@ $libsp $libsa +if test "$echo_pkgconfig" = "yes"; then ++ if test -z "$module_provided" ; then ++ cmd="$cmd glib" ++ fi + echo `$cmd` fi diff --git a/packages/opie-button-settings/opie-button-settings-1.2.1/.mtn2git_empty b/packages/guile/files/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/opie-button-settings/opie-button-settings-1.2.1/.mtn2git_empty +++ b/packages/guile/files/.mtn2git_empty diff --git a/packages/guile/configure-lossage.patch b/packages/guile/files/configure-lossage.patch index da1d0de6e7..da1d0de6e7 100644 --- a/packages/guile/configure-lossage.patch +++ b/packages/guile/files/configure-lossage.patch diff --git a/packages/guile/files/gcc4.patch b/packages/guile/files/gcc4.patch new file mode 100644 index 0000000000..2168683ad5 --- /dev/null +++ b/packages/guile/files/gcc4.patch @@ -0,0 +1,16 @@ + +# +# Signed off by Michael 'Mickey' Lauer <mickey@Vanille.de> +# + +--- guile-1.6.4/libguile/guile.c~gcc4 ++++ guile-1.6.4/libguile/guile.c +@@ -88,7 +88,7 @@ + { + #ifdef DYNAMIC_LINKING + /* libtool automagically inserts this variable into your executable... */ +- extern const scm_lt_dlsymlist lt_preloaded_symbols[]; ++ extern const scm_lt_dlsymlist *lt_preloaded_symbols; + scm_lt_dlpreload_default (lt_preloaded_symbols); + #endif + scm_boot_guile (argc, argv, inner_main, 0); diff --git a/packages/guile/guile_1.6.4.bb b/packages/guile/guile_1.6.4.bb index dc55c266a0..389aec9489 100644 --- a/packages/guile/guile_1.6.4.bb +++ b/packages/guile/guile_1.6.4.bb @@ -1,9 +1,15 @@ -SECTION = "unknown" -LICENSE = "GPL" +DESCRIPTION = "Guile is an interpreter for the Scheme programming language, \ +packaged as a library which can be incorporated into your programs." +HOMEPAGE = "http://www.gnu.org/software/guile/guile.html" +SECTION = "devel/scheme" +DEPENDS = "guile-native" MAINTAINER = "Phil Blundell <pb@handhelds.org>" +LICENSE = "GPL" +PR = "r1" + SRC_URI = "http://ftp.gnu.org/pub/gnu/guile/guile-${PV}.tar.gz \ - file://configure-lossage.patch;patch=1" -DEPENDS = "guile-native" + file://configure-lossage.patch;patch=1 \ + file://gcc4.patch;patch=1" inherit autotools diff --git a/packages/icecast/icecast_2.2.0.bb b/packages/icecast/icecast_2.2.0.bb index 7b6ba73b01..7322af3087 100644 --- a/packages/icecast/icecast_2.2.0.bb +++ b/packages/icecast/icecast_2.2.0.bb @@ -1,4 +1,4 @@ -PR = "r3" +PR = "r4" MAINTAINER = "Oyvind Repvik <nail@nslu2-linux.org" LICENSE = "GPL-2" @@ -9,7 +9,9 @@ DEPENDS = "libvorbis libogg libxslt" RDEPENDS = "libvorbis libogg libxslt" SRC_URI = "http://downloads.us.xiph.org/releases/icecast/${PN}-${PV}.tar.gz" -EXTRA_OECONF = "--with-ogg=${STAGING_LIBDIR} --with-vorbis=${STAGING_LIBDIR}" + +# disable yp as curl cannot be configured +EXTRA_OECONF = "--disable-yp --with-ogg=${STAGING_LIBDIR} --with-vorbis=${STAGING_LIBDIR}" S = "${WORKDIR}/${PN}-${PV}" inherit autotools diff --git a/packages/qt/qt4-x11-free-4.1.1/.mtn2git_empty b/packages/ipkg-utils/ipkg-utils-native/.mtn2git_empty index e69de29bb2..e69de29bb2 100644 --- a/packages/qt/qt4-x11-free-4.1.1/.mtn2git_empty +++ b/packages/ipkg-utils/ipkg-utils-native/.mtn2git_empty diff --git a/packages/ipkg-utils/ipkg-utils-native/ipkg-utils-fix.patch b/packages/ipkg-utils/ipkg-utils-native/ipkg-utils-fix.patch new file mode 100644 index 0000000000..a9e6fc4d05 --- /dev/null +++ b/packages/ipkg-utils/ipkg-utils-native/ipkg-utils-fix.patch @@ -0,0 +1,17 @@ +--- ../../../work/i686-linux/ipkg-utils-native-1.6+cvs20050404-r6/ipkg-utils/ipkg.py 2005-01-08 19:08:52.000000000 +0100 ++++ ipkg-utils/ipkg.py 2006-06-29 12:52:58.466446000 +0200 +@@ -150,11 +150,11 @@ + stat = os.stat(fn) + self.size = stat[ST_SIZE] + self.filename = os.path.basename(fn) +- ## sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,)) ++ sys.stderr.write(" extracting control.tar.gz from %s\n"% (fn,)) + if self.isdeb: +- control = os.popen("ar p "+fn+" control.tar.gz | tar xfzO - '*control'","r") ++ control = os.popen("ar p "+fn+" control.tar.gz | tar xfzO - './control'","r") + else: +- control = os.popen("tar xfzO "+fn+" '*control.tar.gz' | tar xfzO - '*control'","r") ++ control = os.popen("tar xfzO "+fn+" 'control.tar.gz' | tar xfzO - './control'","r") + line = control.readline() + while 1: + if not line: break diff --git a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb index eb11ac560d..ab8f4d63e0 100644 --- a/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb +++ b/packages/ipkg-utils/ipkg-utils-native_1.6+cvs20050404.bb @@ -1,7 +1,8 @@ include ipkg-utils_${PV}.bb +SRC_URI += "file://ipkg-utils-fix.patch;patch=1" RDEPENDS = "" -PR = "r6" +PR = "r7" inherit native diff --git a/packages/ipkg/ipkg-native_0.99.163.bb b/packages/ipkg/ipkg-native_0.99.163.bb new file mode 100644 index 0000000000..a7d68d5350 --- /dev/null +++ b/packages/ipkg/ipkg-native_0.99.163.bb @@ -0,0 +1,9 @@ +S = "${WORKDIR}/ipkg-${PV}" + +include ipkg_${PV}.bb +include ipkg-native.inc + +inherit autotools pkgconfig native + +SRC_URI = "http://ftp.handhelds.org/pub/packages/ipkg/ipkg-${PV}.tar.gz" + diff --git a/packages/ircp/ircp_0.3.bb b/packages/ircp/ircp_0.3.bb index 7f65f0b870..684bfa9bf1 100644 --- a/packages/ircp/ircp_0.3.bb +++ b/packages/ircp/ircp_0.3.bb @@ -1,7 +1,9 @@ DEPENDS = "openobex" LICENSE = "GPL" +PR = "r2" SRC_URI = "${SOURCEFORGE_MIRROR}/openobex/ircp-${PV}.tar.gz" +EXTRA_OECONF = "--with-openobex=${STAGING_LIBDIR} \ inherit autotools diff --git a/packages/libaal/libaal_1.0.4.bb b/packages/libaal/libaal_1.0.4.bb index d4a460c6da..a3e1abd7cc 100644 --- a/packages/libaal/libaal_1.0.4.bb +++ b/packages/libaal/libaal_1.0.4.bb @@ -8,7 +8,7 @@ MAINTAINER = "John Bowler <jbowler@acm.org>" SECTION = "base" LICENSE = "GPL-2" -SRC_URI = "ftp://ftp.namesys.com/pub/reiser4progs/${P}.tar.gz" +SRC_URI = "ftp://ftp.namesys.com/pub/reiser4progs/old-versions/${P}.tar.gz" inherit autotools diff --git a/packages/libmailwrapper/libmailwrapper_1.2.1.bb b/packages/libmailwrapper/libmailwrapper_1.2.2.bb index 29aa09c148..29aa09c148 100644 --- a/packages/libmailwrapper/libmailwrapper_1.2.1.bb +++ b/packages/libmailwrapper/libmailwrapper_1.2.2.bb diff --git a/packages/libopie/libopie2-1.2.1/openzaurus-branding.patch b/packages/libopie/libopie2-1.2.1/openzaurus-branding.patch deleted file mode 100644 index 8b2a33ab82..0000000000 --- a/packages/libopie/libopie2-1.2.1/openzaurus-branding.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- libopie2/opiecore/device/odevice.cpp.orig 2006-01-22 19:07:22.000000000 +0100 -+++ libopie2/opiecore/device/odevice.cpp 2006-01-22 19:07:24.000000000 +0100 -@@ -74,7 +74,7 @@ - /* STATIC and common implementation */ - /* EXPORT */ ODistribution distributions[] = { - { System_Familiar, "FamiliarLinux", "/etc/familiar-version" }, -- { System_OpenZaurus, "OpenZaurus", "/etc/oz_version" }, -+ { System_OpenZaurus, "OpenZaurus", "/etc/openzaurus-version" }, - { System_OpenEmbedded, "OpenEmbedded", "/etc/oe-version" }, - { System_Unknown, "Linux", "/etc/issue" }, - }; diff --git a/packages/libopie/libopie2_1.2.1.bb b/packages/libopie/libopie2_1.2.2.bb index 7037f48d06..3f21426e46 100644 --- a/packages/libopie/libopie2_1.2.1.bb +++ b/packages/libopie/libopie2_1.2.2.bb @@ -1,9 +1,7 @@ include ${PN}.inc -PR = "r2" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/libopie2 \ - file://openzaurus-branding.patch;patch=1 \ file://include.pro" SRC_URI_append_poodle = " file://poodle-2.6-hotkeys.patch;patch=1" diff --git a/packages/libopieobex/libopieobex0_1.2.1.bb b/packages/libopieobex/libopieobex0_1.2.2.bb index 5e7c51e7cc..f5a2b1bc45 100644 --- a/packages/libopieobex/libopieobex0_1.2.1.bb +++ b/packages/libopieobex/libopieobex0_1.2.2.bb @@ -1,6 +1,5 @@ include libopieobex0.inc -PR = "r2" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/obex \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics " diff --git a/packages/libopieobex/libopieobex0_cvs.bb b/packages/libopieobex/libopieobex0_cvs.bb index ed160d86c8..f401f01a3e 100644 --- a/packages/libopieobex/libopieobex0_cvs.bb +++ b/packages/libopieobex/libopieobex0_cvs.bb @@ -1,6 +1,5 @@ include libopieobex0.inc PV = "${OPIE_CVS_PV}" -PR = "r2" SRC_URI = "${HANDHELDS_CVS};module=opie/core/obex \ ${HANDHELDS_CVS};module=opie/pics" diff --git a/packages/libopietooth/libopietooth1_1.2.1.bb b/packages/libopietooth/libopietooth1_1.2.2.bb index 0dc91b2731..0dc91b2731 100644 --- a/packages/libopietooth/libopietooth1_1.2.1.bb +++ b/packages/libopietooth/libopietooth1_1.2.2.bb diff --git a/packages/libqpe/libqpe-opie/0905_datebookmonth.patch b/packages/libqpe/libqpe-opie/0905_datebookmonth.patch deleted file mode 100644 index 7c4d5fb389..0000000000 --- a/packages/libqpe/libqpe-opie/0905_datebookmonth.patch +++ /dev/null @@ -1,23 +0,0 @@ -Index: datebookmonth.cpp -=================================================================== -RCS file: /cvs/opie/library/datebookmonth.cpp,v -retrieving revision 1.10 -diff -u -r1.10 datebookmonth.cpp ---- datebookmonth.cpp 20 Mar 2005 18:29:19 -0000 1.10 -+++ datebookmonth.cpp 5 Sep 2005 19:53:47 -0000 -@@ -661,7 +661,14 @@ - - // Finally, draw the number. - QFont f = p->font(); -- f.setPointSize( ( f.pointSize() / 3 ) * 2 ); -+ if(qApp->desktop()->width() >= 480) -+ { -+ f.setPointSize( f.pointSize() - 2 ); -+ } -+ else -+ { -+ f.setPointSize( ( f.pointSize() / 3 ) * 2 ); -+ } - p->setFont( f ); - QFontMetrics fm( f ); - p->drawText( 1, 1 + fm.ascent(), QString::number( day() ) ); diff --git a/packages/libqpe/libqpe-opie_1.2.1.bb b/packages/libqpe/libqpe-opie_1.2.2.bb index fd806b8ca6..00e5ca859a 100644 --- a/packages/libqpe/libqpe-opie_1.2.1.bb +++ b/packages/libqpe/libqpe-opie_1.2.2.bb @@ -1,9 +1,6 @@ include ${PN}.inc - + TAG = "${@'v' + bb.data.getVar('PV',d,1).replace('.', '_')}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/library \ - file://0905_datebookmonth.patch;patch=1;pnum=0 \ file://fix-titleheight.patch;patch=1" - diff --git a/packages/libqpe/libqpe-opie_cvs.bb b/packages/libqpe/libqpe-opie_cvs.bb index 9657868b0f..8b4e74afe7 100644 --- a/packages/libqpe/libqpe-opie_cvs.bb +++ b/packages/libqpe/libqpe-opie_cvs.bb @@ -1,8 +1,7 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes -PV = "1.2.1+cvs-${SRCDATE}" -PR = "r1" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/library \ file://fix-titleheight.patch;patch=1" diff --git a/packages/libqtaux/libqtaux2_1.2.1.bb b/packages/libqtaux/libqtaux2_1.2.2.bb index aa694d43f1..aa694d43f1 100644 --- a/packages/libqtaux/libqtaux2_1.2.1.bb +++ b/packages/libqtaux/libqtaux2_1.2.2.bb diff --git a/packages/linux/ep93xx-kernel_2.6.17.1.bb b/packages/linux/ep93xx-kernel_2.6.17.1.bb index d8caa8c5e3..3826916609 100644 --- a/packages/linux/ep93xx-kernel_2.6.17.1.bb +++ b/packages/linux/ep93xx-kernel_2.6.17.1.bb @@ -7,16 +7,18 @@ PR = "r0" COMPATIBLE_MACHINE = "ep93xx" SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.1.tar.bz2 \ - http://www.wantstofly.org/~buytenh/ep93xx/derevo19.diff;patch=1 \ + http://www.wantstofly.org/~buytenh/ep93xx/derevo19.diff;pnum=1;patch=1 \ file://defconfig \ " -S = "${WORKDIR}/linux-2.6.16" +S = "${WORKDIR}/linux-2.6.17.1" inherit kernel KERNEL_IMAGETYPE = "zImage" + + do_configure() { rm -f ${S}/.config diff --git a/packages/linux/linux-jlime-sh3_2.6.16.20.bb b/packages/linux/linux-jlime-sh3_2.6.16.20.bb index a8c40e4969..ef5db85812 100644 --- a/packages/linux/linux-jlime-sh3_2.6.16.20.bb +++ b/packages/linux/linux-jlime-sh3_2.6.16.20.bb @@ -7,17 +7,15 @@ COMPATIBLE_HOST = "sh.*-linux" COMPATIBLE_MACHINE = 'jornada6xx' SRC_URI = "http://www.jlime.com/downloads/Releases/donkey/kernels/6xx/sources/jlime-2.6.16.20-patched.tar.gz \ - file://defconfig_jlime \ - file://volatile-traps.c.patch;patch=1 \ - file://volatile-signal.c.patch;patch=1 \ - file://volatile-sys_sh.c.patch;patch=1 \ - file://volatile-setup.c.patch;patch=1 \ - file://Optimize-O1.patch;patch=1" - + file://defconfig_jlime" + S = "${WORKDIR}/linux-${PV}" inherit kernel +#Lets let 3.4.x handle the compilation of this one +KERNEL_CCSUFFIX = "-3.4.4" + ARCH = "sh" KERNEL_IMAGETYPE = "zImage" FILES_kernel-image = "/boot/${KERNEL_IMAGETYPE}*" diff --git a/packages/linux/linux-openzaurus-2.6.17/defconfig-collie b/packages/linux/linux-openzaurus-2.6.17/defconfig-collie index 20ec01ff21..4667b24fb1 100644 --- a/packages/linux/linux-openzaurus-2.6.17/defconfig-collie +++ b/packages/linux/linux-openzaurus-2.6.17/defconfig-collie @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Linux kernel version: 2.6.17-rc1 -# Wed Apr 19 21:01:15 2006 +# Linux kernel version: 2.6.17 +# Fri Jun 30 08:29:05 2006 # CONFIG_ARM=y CONFIG_MMU=y @@ -43,13 +43,12 @@ CONFIG_KALLSYMS=y CONFIG_HOTPLUG=y CONFIG_PRINTK=y CONFIG_BUG=y -CONFIG_ELF_CORE=y +# CONFIG_ELF_CORE is not set CONFIG_BASE_FULL=y CONFIG_FUTEX=y CONFIG_EPOLL=y CONFIG_SHMEM=y CONFIG_SLAB=y -CONFIG_DOUBLEFAULT=y # CONFIG_TINY_SHMEM is not set CONFIG_BASE_SMALL=0 # CONFIG_SLOB is not set @@ -195,7 +194,7 @@ CONFIG_ALIGNMENT_TRAP=y # CONFIG_ZBOOT_ROM_TEXT=0x0 CONFIG_ZBOOT_ROM_BSS=0x0 -CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable debug" +CONFIG_CMDLINE="console=ttyS0,115200n8 console=tty1 noinitrd root=/dev/mtdblock2 rootfstype=jffs2 mem=32M fbcon=rotate:1 dyntick=enable quiet" # CONFIG_XIP_KERNEL is not set # @@ -220,6 +219,7 @@ CONFIG_FPE_NWFPE=y CONFIG_BINFMT_ELF=y CONFIG_BINFMT_AOUT=m CONFIG_BINFMT_MISC=m +# CONFIG_ARTHUR is not set # # Power management options @@ -302,8 +302,82 @@ CONFIG_TCP_CONG_BIC=y # # CONFIG_NET_PKTGEN is not set # CONFIG_HAMRADIO is not set -# CONFIG_IRDA is not set -# CONFIG_BT is not set +CONFIG_IRDA=m + +# +# IrDA protocols +# +CONFIG_IRLAN=m +CONFIG_IRNET=m +CONFIG_IRCOMM=m +CONFIG_IRDA_ULTRA=y + +# +# IrDA options +# +CONFIG_IRDA_CACHE_LAST_LSAP=y +CONFIG_IRDA_FAST_RR=y +# CONFIG_IRDA_DEBUG is not set + +# +# Infrared-port device drivers +# + +# +# SIR device drivers +# +CONFIG_IRTTY_SIR=m + +# +# Dongle support +# +CONFIG_DONGLE=y +CONFIG_ESI_DONGLE=m +CONFIG_ACTISYS_DONGLE=m +CONFIG_TEKRAM_DONGLE=m +# CONFIG_TOIM3232_DONGLE is not set +# CONFIG_LITELINK_DONGLE is not set +# CONFIG_MA600_DONGLE is not set +# CONFIG_GIRBIL_DONGLE is not set +# CONFIG_MCP2120_DONGLE is not set +# CONFIG_OLD_BELKIN_DONGLE is not set +# CONFIG_ACT200L_DONGLE is not set + +# +# Old SIR device drivers +# +CONFIG_IRPORT_SIR=m + +# +# Old Serial dongle support +# +# CONFIG_DONGLE_OLD is not set + +# +# FIR device drivers +# +CONFIG_SA1100_FIR=m +CONFIG_BT=m +CONFIG_BT_L2CAP=m +CONFIG_BT_SCO=m +CONFIG_BT_RFCOMM=m +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_BNEP=m +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +CONFIG_BT_HIDP=m + +# +# Bluetooth device drivers +# +CONFIG_BT_HCIUART=m +CONFIG_BT_HCIUART_H4=y +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIDTL1=m +CONFIG_BT_HCIBT3C=m +CONFIG_BT_HCIBLUECARD=m +CONFIG_BT_HCIBTUART=m +CONFIG_BT_HCIVHCI=m CONFIG_IEEE80211=m # CONFIG_IEEE80211_DEBUG is not set CONFIG_IEEE80211_CRYPT_WEP=m @@ -419,23 +493,102 @@ CONFIG_MTD_SHARP=y CONFIG_BLK_DEV_LOOP=y # CONFIG_BLK_DEV_CRYPTOLOOP is not set # CONFIG_BLK_DEV_NBD is not set -CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM=m CONFIG_BLK_DEV_RAM_COUNT=16 CONFIG_BLK_DEV_RAM_SIZE=1024 -CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_DEV_INITRD is not set # CONFIG_CDROM_PKTCDVD is not set CONFIG_ATA_OVER_ETH=m # # ATA/ATAPI/MFM/RLL support # -# CONFIG_IDE is not set +CONFIG_IDE=m +CONFIG_BLK_DEV_IDE=m + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECS=m +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set + +# +# IDE chipset support/bugfixes +# +# CONFIG_IDE_GENERIC is not set +# CONFIG_IDE_ARM is not set +# CONFIG_IDE_CHIPSETS is not set +# CONFIG_BLK_DEV_IDEDMA is not set +# CONFIG_IDEDMA_AUTO is not set +# CONFIG_BLK_DEV_HD is not set # # SCSI device support # # CONFIG_RAID_ATTRS is not set -# CONFIG_SCSI is not set +CONFIG_SCSI=m +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI Transport Attributes +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set + +# +# SCSI low-level drivers +# +# CONFIG_ISCSI_TCP is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_SATA is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PSI240I is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_DEBUG is not set + +# +# PCMCIA SCSI adapter support +# +# CONFIG_PCMCIA_AHA152X is not set +# CONFIG_PCMCIA_FDOMAIN is not set +# CONFIG_PCMCIA_NINJA_SCSI is not set +# CONFIG_PCMCIA_QLOGIC is not set +# CONFIG_PCMCIA_SYM53C500 is not set # # Multi-device support (RAID and LVM) @@ -551,7 +704,7 @@ CONFIG_NET_PCMCIA=y # CONFIG_PCMCIA_FMVJ18X is not set CONFIG_PCMCIA_PCNET=m # CONFIG_PCMCIA_NMCLAN is not set -# CONFIG_PCMCIA_SMC91C92 is not set +CONFIG_PCMCIA_SMC91C92=m # CONFIG_PCMCIA_XIRC2PS is not set # CONFIG_PCMCIA_AXNET is not set @@ -592,12 +745,10 @@ CONFIG_INPUT_MOUSEDEV=m CONFIG_INPUT_MOUSEDEV_SCREEN_X=240 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320 # CONFIG_INPUT_JOYDEV is not set -CONFIG_INPUT_TSDEV=y -CONFIG_INPUT_TSDEV_SCREEN_X=240 -CONFIG_INPUT_TSDEV_SCREEN_Y=320 +# CONFIG_INPUT_TSDEV is not set CONFIG_INPUT_EVDEV=y -CONFIG_INPUT_EVBUG=y -# CONFIG_INPUT_POWER is not set +# CONFIG_INPUT_EVBUG is not set +CONFIG_INPUT_POWER=y # # Input Device Drivers @@ -629,12 +780,30 @@ CONFIG_SERIO=y CONFIG_VT=y CONFIG_VT_CONSOLE=y CONFIG_HW_CONSOLE=y -# CONFIG_SERIAL_NONSTANDARD is not set +CONFIG_SERIAL_NONSTANDARD=y +# CONFIG_COMPUTONE is not set +# CONFIG_ROCKETPORT is not set +# CONFIG_CYCLADES is not set +# CONFIG_DIGIEPCA is not set +# CONFIG_MOXA_INTELLIO is not set +# CONFIG_MOXA_SMARTIO is not set +# CONFIG_ISI is not set +# CONFIG_SYNCLINKMP is not set +# CONFIG_N_HDLC is not set +# CONFIG_RISCOM8 is not set +# CONFIG_SPECIALIX is not set +# CONFIG_SX is not set +# CONFIG_RIO is not set +# CONFIG_STALDRV is not set # # Serial drivers # -# CONFIG_SERIAL_8250 is not set +CONFIG_SERIAL_8250=m +CONFIG_SERIAL_8250_CS=m +CONFIG_SERIAL_8250_NR_UARTS=4 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set # # Non-8250 serial port support @@ -737,7 +906,10 @@ CONFIG_I2C_ALGOBIT=m # # Multimedia Capabilities Port drivers # -# CONFIG_MCP_SA11X0 is not set +CONFIG_MCP=y +CONFIG_MCP_SA11X0=y +CONFIG_MCP_UCB1200=y +# CONFIG_MCP_UCB1200_TS is not set # # Multi-Function Devices @@ -758,21 +930,25 @@ CONFIG_LEDS_LOCOMO=y # LED Triggers # CONFIG_LEDS_TRIGGERS=y -CONFIG_LEDS_TRIGGER_TIMER=y +CONFIG_LEDS_TRIGGER_TIMER=m # # Multimedia devices # CONFIG_VIDEO_DEV=m +CONFIG_VIDEO_V4L1=y +CONFIG_VIDEO_V4L1_COMPAT=y +CONFIG_VIDEO_V4L2=y # -# Video For Linux +# Video Capture Adapters # # -# Video Adapters +# Video Capture Adapters # # CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_VIVI is not set # CONFIG_VIDEO_PMS is not set # CONFIG_VIDEO_CPIA is not set # CONFIG_VIDEO_SAA5246A is not set @@ -823,7 +999,7 @@ CONFIG_FB_CFB_COPYAREA=y CONFIG_FB_CFB_IMAGEBLIT=y # CONFIG_FB_MACMODES is not set CONFIG_FB_FIRMWARE_EDID=y -CONFIG_FB_MODE_HELPERS=y +# CONFIG_FB_MODE_HELPERS is not set # CONFIG_FB_TILEBLITTING is not set CONFIG_FB_SA1100=y # CONFIG_FB_S1D13XXX is not set @@ -852,7 +1028,14 @@ CONFIG_FONT_8x8=y # # Logo configuration # -# CONFIG_LOGO is not set +CONFIG_LOGO=y +# CONFIG_LOGO_LINUX_MONO is not set +# CONFIG_LOGO_LINUX_VGA16 is not set +# CONFIG_LOGO_LINUX_CLUT224 is not set +# CONFIG_LOGO_OHAND_CLUT224 is not set +CONFIG_LOGO_OZ240_CLUT224=y +# CONFIG_LOGO_OZ480_CLUT224 is not set +# CONFIG_LOGO_OZ640_CLUT224 is not set CONFIG_BACKLIGHT_LCD_SUPPORT=y CONFIG_BACKLIGHT_CLASS_DEVICE=y CONFIG_BACKLIGHT_DEVICE=y @@ -862,7 +1045,55 @@ CONFIG_BACKLIGHT_LOCOMO=y # # Sound # -# CONFIG_SOUND is not set +CONFIG_SOUND=m + +# +# Advanced Linux Sound Architecture +# +CONFIG_SND=m +CONFIG_SND_TIMER=m +CONFIG_SND_PCM=m +CONFIG_SND_SEQUENCER=m +# CONFIG_SND_SEQ_DUMMY is not set +CONFIG_SND_OSSEMUL=y +CONFIG_SND_MIXER_OSS=m +CONFIG_SND_PCM_OSS=m +CONFIG_SND_PCM_OSS_PLUGINS=y +# CONFIG_SND_SEQUENCER_OSS is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +CONFIG_SND_SUPPORT_OLD_API=y +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VERBOSE_PRINTK is not set +# CONFIG_SND_DEBUG is not set + +# +# Generic devices +# +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_VIRMIDI is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_MPU401 is not set + +# +# ALSA ARM devices +# + +# +# PCMCIA devices +# +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_PDAUDIOCF is not set + +# +# SoC audio support +# +# CONFIG_SND_SOC is not set + +# +# Open Sound System +# +# CONFIG_SOUND_PRIME is not set # # USB support @@ -879,7 +1110,7 @@ CONFIG_USB_ARCH_HAS_HCD=y # # USB Gadget Support # -CONFIG_USB_GADGET=y +CONFIG_USB_GADGET=m # CONFIG_USB_GADGET_DEBUG_FILES is not set # CONFIG_USB_GADGET_NET2280 is not set # CONFIG_USB_GADGET_PXA2XX is not set @@ -894,7 +1125,9 @@ CONFIG_USB_GADGET=y # # MMC/SD Card support # -# CONFIG_MMC is not set +CONFIG_MMC=y +# CONFIG_MMC_DEBUG is not set +CONFIG_MMC_BLOCK=y # # Real Time Clock @@ -938,7 +1171,7 @@ CONFIG_FS_POSIX_ACL=y # CONFIG_XFS_FS is not set # CONFIG_OCFS2_FS is not set # CONFIG_MINIX_FS is not set -CONFIG_ROMFS_FS=y +CONFIG_ROMFS_FS=m CONFIG_INOTIFY=y # CONFIG_QUOTA is not set # CONFIG_DNOTIFY is not set @@ -955,9 +1188,9 @@ CONFIG_INOTIFY=y # # DOS/FAT/NT Filesystems # -CONFIG_FAT_FS=y +CONFIG_FAT_FS=m # CONFIG_MSDOS_FS is not set -CONFIG_VFAT_FS=y +CONFIG_VFAT_FS=m CONFIG_FAT_DEFAULT_CODEPAGE=437 CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" # CONFIG_NTFS_FS is not set @@ -991,7 +1224,7 @@ CONFIG_JFFS2_SUMMARY=y CONFIG_JFFS2_ZLIB=y CONFIG_JFFS2_RTIME=y # CONFIG_JFFS2_RUBIN is not set -CONFIG_CRAMFS=y +CONFIG_CRAMFS=m CONFIG_SQUASHFS=m # CONFIG_SQUASHFS_EMBEDDED is not set CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 @@ -1005,10 +1238,30 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # # Network File Systems # -# CONFIG_NFS_FS is not set -# CONFIG_NFSD is not set -# CONFIG_SMB_FS is not set -# CONFIG_CIFS is not set +CONFIG_NFS_FS=m +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_DIRECTIO is not set +CONFIG_NFSD=m +# CONFIG_NFSD_V3 is not set +CONFIG_NFSD_TCP=y +CONFIG_LOCKD=m +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=m +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=m +CONFIG_SUNRPC_GSS=m +CONFIG_RPCSEC_GSS_KRB5=m +# CONFIG_RPCSEC_GSS_SPKM3 is not set +CONFIG_SMB_FS=m +CONFIG_SMB_NLS_DEFAULT=y +CONFIG_SMB_NLS_REMOTE="cp437" +CONFIG_CIFS=m +# CONFIG_CIFS_STATS is not set +CONFIG_CIFS_XATTR=y +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_EXPERIMENTAL is not set # CONFIG_NCP_FS is not set # CONFIG_CODA_FS is not set # CONFIG_AFS_FS is not set @@ -1017,15 +1270,30 @@ CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 # # Partition Types # -# CONFIG_PARTITION_ADVANCED is not set +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set # # Native Language Support # CONFIG_NLS=y CONFIG_NLS_DEFAULT="cp437" -CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_437=m CONFIG_NLS_CODEPAGE_737=m CONFIG_NLS_CODEPAGE_775=m CONFIG_NLS_CODEPAGE_850=m @@ -1049,7 +1317,7 @@ CONFIG_NLS_ISO8859_8=m CONFIG_NLS_CODEPAGE_1250=m CONFIG_NLS_CODEPAGE_1251=m CONFIG_NLS_ASCII=m -CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_1=m CONFIG_NLS_ISO8859_2=m CONFIG_NLS_ISO8859_3=m CONFIG_NLS_ISO8859_4=m @@ -1062,7 +1330,7 @@ CONFIG_NLS_ISO8859_14=m CONFIG_NLS_ISO8859_15=m CONFIG_NLS_KOI8_R=m CONFIG_NLS_KOI8_U=m -CONFIG_NLS_UTF8=y +CONFIG_NLS_UTF8=m # # Profiling support @@ -1107,29 +1375,29 @@ CONFIG_DEBUG_ERRORS=y # Cryptographic options # CONFIG_CRYPTO=y -# CONFIG_CRYPTO_HMAC is not set -# CONFIG_CRYPTO_NULL is not set -# CONFIG_CRYPTO_MD4 is not set -# CONFIG_CRYPTO_MD5 is not set -# CONFIG_CRYPTO_SHA1 is not set -# CONFIG_CRYPTO_SHA256 is not set -# CONFIG_CRYPTO_SHA512 is not set -# CONFIG_CRYPTO_WP512 is not set -# CONFIG_CRYPTO_TGR192 is not set -# CONFIG_CRYPTO_DES is not set -# CONFIG_CRYPTO_BLOWFISH is not set -# CONFIG_CRYPTO_TWOFISH is not set -# CONFIG_CRYPTO_SERPENT is not set -# CONFIG_CRYPTO_AES is not set -# CONFIG_CRYPTO_CAST5 is not set -# CONFIG_CRYPTO_CAST6 is not set -# CONFIG_CRYPTO_TEA is not set +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=m +CONFIG_CRYPTO_SHA1=m +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_DES=m +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=m +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_TEA=m CONFIG_CRYPTO_ARC4=m -# CONFIG_CRYPTO_KHAZAD is not set -# CONFIG_CRYPTO_ANUBIS is not set -# CONFIG_CRYPTO_DEFLATE is not set -# CONFIG_CRYPTO_MICHAEL_MIC is not set -# CONFIG_CRYPTO_CRC32C is not set +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_DEFLATE=m +CONFIG_CRYPTO_MICHAEL_MIC=m +CONFIG_CRYPTO_CRC32C=m # CONFIG_CRYPTO_TEST is not set # @@ -1142,6 +1410,6 @@ CONFIG_CRYPTO_ARC4=m CONFIG_CRC_CCITT=m # CONFIG_CRC16 is not set CONFIG_CRC32=y -# CONFIG_LIBCRC32C is not set +CONFIG_LIBCRC32C=m CONFIG_ZLIB_INFLATE=y CONFIG_ZLIB_DEFLATE=y diff --git a/packages/linux/linux-openzaurus_2.6.17.bb b/packages/linux/linux-openzaurus_2.6.17.bb index cb3f0a6313..5f30df1858 100644 --- a/packages/linux/linux-openzaurus_2.6.17.bb +++ b/packages/linux/linux-openzaurus_2.6.17.bb @@ -1,6 +1,6 @@ include linux-openzaurus.inc -PR = "r2" +PR = "r3" DEFAULT_PREFERENCE = "-1" @@ -30,8 +30,9 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \ file://00-hostap.patch;patch=1;status=pending \ file://10-pcnet.patch;patch=1;status=pending \ # ${RPSRC}/alsa/asoc-v0.10-oz-r0.patch;patch=1 \ - ${RPSRC}/alsa/asoc-v0.10rc4.patch;patch=1 \ - ${RPSRC}/asoc_fixups-r1.patch;patch=1 \ + ${RPSRC}/alsa/asoc-v0.10.patch;patch=1 \ +# ${RPSRC}/alsa/asoc-v0.10rc4.patch;patch=1 \ +# ${RPSRC}/asoc_fixups-r1.patch;patch=1 \ ${RPSRC}/hx2750_base-r25.patch;patch=1 \ ${RPSRC}/hx2750_bl-r7.patch;patch=1 \ ${RPSRC}/hx2750_pcmcia-r2.patch;patch=1 \ @@ -45,7 +46,7 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \ ${RPSRC}/pm_changes-r1.patch;patch=1 \ ${RPSRC}/usb_pxa27x_udc-r0.patch;patch=1 \ ${RPSRC}/usb_add_epalloc-r1.patch;patch=1 \ - ${DOSRC}/kexec-arm-r2.patch;patch=1 \ + ${DOSRC}/kexec-arm-r3.patch;patch=1 \ ${RPSRC}/locomo_kbd_tweak-r0.patch;patch=1 \ ${RPSRC}/poodle_pm-r1.patch;patch=1 \ ${RPSRC}/pxafb_changeres-r0.patch;patch=1 \ @@ -88,23 +89,23 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.17.tar.bz2 \ SRC_URI_append_tosa = "\ ${CHSRC}/usb-ohci-hooks-r1.patch;patch=1 \ ${CHSRC}/tmio-core-r4.patch;patch=1 \ - ${CHSRC}/tmio-tc6393-r5.patch;patch=1 \ + ${DOSRC}/temp/tmio-tc6393-r6.patch;patch=1 \ ${CHSRC}/tmio-nand-r5.patch;patch=1 \ - ${CHSRC}/tmio-ohci-r3.patch;patch=1 \ + ${DOSRC}/temp/tmio-ohci-r4.patch;patch=1 \ ${CHSRC}/tmio-fb-r6.patch;patch=1 \ - ${DOSRC}/tosa-keyboard-r14.patch;patch=1 \ + ${DOSRC}/tosa-keyboard-r17.patch;patch=1 \ ${DOSRC}/tosa-pxaac97-r6.patch;patch=1 \ ${DOSRC}/tosa-tmio-r6.patch;patch=1 \ - ${DOSRC}/tosa-power-r15.patch;patch=1 \ - ${DOSRC}/tosa-tmio-lcd-r7.patch;patch=1 \ - ${DOSRC}/tosa-bluetooth-r6.patch;patch=1 \ + ${DOSRC}/tosa-power-r17.patch;patch=1 \ + ${DOSRC}/tosa-tmio-lcd-r8.patch;patch=1 \ + ${DOSRC}/tosa-bluetooth-r8.patch;patch=1 \ ${DOSRC}/wm97xx-lg7-r0.patch;patch=1 \ - ${DOSRC}/wm9712-suspend-cold-res-r0.patch;patch=1 \ + ${DOSRC}/wm9712-suspend-cold-res-r1.patch;patch=1 \ ${DOSRC}/sharpsl-pm-postresume-r0.patch;patch=1 \ ${DOSRC}/wm97xx-dig-restore-r0.patch;patch=1 \ ${DOSRC}/wm97xx-miscdevs-resume-r0.patch;patch=1 \ - ${DOSRC}/wm9712-reset-loop-r0.patch;patch=1 \ - ${DOSRC}/tosa-asoc-r1.patch;patch=1 " + ${DOSRC}/wm9712-reset-loop-r1.patch;patch=1" +# ${DOSRC}/tosa-asoc-r1.patch;patch=1 " S = "${WORKDIR}/linux-2.6.17" diff --git a/packages/linux/linux-titan-sh4-2.6.16/.mtn2git_empty b/packages/linux/linux-titan-sh4-2.6.16/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/linux/linux-titan-sh4-2.6.16/.mtn2git_empty diff --git a/packages/linux/linux-titan-sh4-2.6.16/titan-config b/packages/linux/linux-titan-sh4-2.6.16/titan-config new file mode 100644 index 0000000000..11bfc7535c --- /dev/null +++ b/packages/linux/linux-titan-sh4-2.6.16/titan-config @@ -0,0 +1,1530 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.16-sh +# Thu Jun 29 15:50:21 2006 +# +CONFIG_SUPERH=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_CALIBRATE_DELAY=y + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 + +# +# General setup +# +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=n +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_POSIX_MQUEUE=y +# CONFIG_BSD_PROCESS_ACCT is not set +CONFIG_SYSCTL=y +# CONFIG_AUDIT is not set +CONFIG_IKCONFIG=y +CONFIG_IKCONFIG_PROC=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_UID16=y +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +# CONFIG_EMBEDDED is not set +CONFIG_KALLSYMS=y +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_EXTRA_PASS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SHMEM=y +CONFIG_CC_ALIGN_FUNCTIONS=0 +CONFIG_CC_ALIGN_LABELS=0 +CONFIG_CC_ALIGN_LOOPS=0 +CONFIG_CC_ALIGN_JUMPS=0 +CONFIG_SLAB=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 +# CONFIG_SLOB is not set +CONFIG_OBSOLETE_INTERMODULE=m + +# +# Loadable module support +# +CONFIG_MODULES=y +CONFIG_MODULE_UNLOAD=y +CONFIG_MODULE_FORCE_UNLOAD=y +CONFIG_OBSOLETE_MODPARM=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_KMOD=y + +# +# Block layer +# +# CONFIG_LBD is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_CFQ=y +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# +# System type +# +# CONFIG_SH_SOLUTION_ENGINE is not set +# CONFIG_SH_7751_SOLUTION_ENGINE is not set +# CONFIG_SH_7300_SOLUTION_ENGINE is not set +# CONFIG_SH_73180_SOLUTION_ENGINE is not set +# CONFIG_SH_7751_SYSTEMH is not set +# CONFIG_SH_STB1_HARP is not set +# CONFIG_SH_STB1_OVERDRIVE is not set +# CONFIG_SH_HP6XX is not set +# CONFIG_SH_CQREEK is not set +# CONFIG_SH_DMIDA is not set +# CONFIG_SH_EC3104 is not set +# CONFIG_SH_SATURN is not set +# CONFIG_SH_DREAMCAST is not set +# CONFIG_SH_CAT68701 is not set +# CONFIG_SH_BIGSUR is not set +# CONFIG_SH_SH2000 is not set +# CONFIG_SH_ADX is not set +# CONFIG_SH_MPC1211 is not set +# CONFIG_SH_SH03 is not set +# CONFIG_SH_SECUREEDGE5410 is not set +# CONFIG_SH_HS7751RVOIP is not set +# CONFIG_SH_RTS7751R2D is not set +# CONFIG_SH_R7780RP is not set +# CONFIG_SH_EDOSK7705 is not set +# CONFIG_SH_SH4202_MICRODEV is not set +# CONFIG_SH_LANDISK is not set +CONFIG_SH_TITAN=y +# CONFIG_SH_UNKNOWN is not set + +# +# Processor selection +# +CONFIG_CPU_SH4=y + +# +# SH-2 Processor Support +# +# CONFIG_CPU_SUBTYPE_SH7604 is not set + +# +# SH-3 Processor Support +# +# CONFIG_CPU_SUBTYPE_SH7300 is not set +# CONFIG_CPU_SUBTYPE_SH7705 is not set +# CONFIG_CPU_SUBTYPE_SH7707 is not set +# CONFIG_CPU_SUBTYPE_SH7708 is not set +# CONFIG_CPU_SUBTYPE_SH7709 is not set + +# +# SH-4 Processor Support +# +# CONFIG_CPU_SUBTYPE_SH7750 is not set +# CONFIG_CPU_SUBTYPE_SH7091 is not set +# CONFIG_CPU_SUBTYPE_SH7750R is not set +# CONFIG_CPU_SUBTYPE_SH7750S is not set +CONFIG_CPU_SUBTYPE_SH7751=y +CONFIG_CPU_SUBTYPE_SH7751R=y +# CONFIG_CPU_SUBTYPE_SH7760 is not set +# CONFIG_CPU_SUBTYPE_SH4_202 is not set + +# +# ST40 Processor Support +# +# CONFIG_CPU_SUBTYPE_ST40STB1 is not set +# CONFIG_CPU_SUBTYPE_ST40GX1 is not set + +# +# SH-4A Processor Support +# +# CONFIG_CPU_SUBTYPE_SH73180 is not set +# CONFIG_CPU_SUBTYPE_SH7770 is not set +# CONFIG_CPU_SUBTYPE_SH7780 is not set + +# +# Memory management options +# +CONFIG_MMU=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_SPARSEMEM_STATIC is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 + +# +# Cache configuration +# +# CONFIG_SH_DIRECT_MAPPED is not set +# CONFIG_SH_WRITETHROUGH is not set +# CONFIG_SH_OCRAM is not set +CONFIG_MEMORY_START=0x08030000 +CONFIG_MEMORY_SIZE=0x7fd0000 + +# +# Processor features +# +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_SH_RTC=y +CONFIG_SH_FPU=y +# CONFIG_SH_STORE_QUEUES is not set +CONFIG_CPU_HAS_INTEVT=y +CONFIG_CPU_HAS_SR_RB=y + +# +# Timer support +# +CONFIG_SH_TMU=y +CONFIG_SH_PCLK_FREQ=30000000 + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# +# DMA support +# +CONFIG_SH_DMA=y +CONFIG_NR_ONCHIP_DMA_CHANNELS=8 +# CONFIG_NR_DMA_CHANNELS_BOOL is not set + +# +# Companion Chips +# +# CONFIG_HD6446X_SERIES is not set + +# +# Kernel features +# +# CONFIG_KEXEC is not set +# CONFIG_PREEMPT is not set +# CONFIG_SMP is not set + +# +# Boot options +# +CONFIG_ZERO_PAGE_OFFSET=0x00001000 +CONFIG_BOOT_LINK_OFFSET=0x009e0000 +# CONFIG_UBC_WAKEUP is not set +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE="console=ttySC1,38400N81 root=/dev/sm0p2 ip=off" + +# +# Bus options +# +CONFIG_PCI=y +CONFIG_SH_PCIDMA_NONCOHERENT=y +CONFIG_PCI_AUTO=y +CONFIG_PCI_AUTO_UPDATE_RESOURCES=y +CONFIG_PCI_LEGACY_PROC=y +# CONFIG_PCI_DEBUG is not set + +# +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set + +# +# PCI Hotplug Support +# +CONFIG_HOTPLUG_PCI=y +# CONFIG_HOTPLUG_PCI_FAKE is not set +# CONFIG_HOTPLUG_PCI_CPCI is not set +# CONFIG_HOTPLUG_PCI_SHPC is not set + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_FLAT is not set +# CONFIG_BINFMT_MISC is not set + +# +# Power management options (EXPERIMENTAL) +# +# CONFIG_PM is not set + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_NETDEBUG is not set +CONFIG_PACKET=y +CONFIG_PACKET_MMAP=y +CONFIG_UNIX=y +CONFIG_XFRM=y +# CONFIG_XFRM_USER is not set +CONFIG_NET_KEY=y +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_ADVANCED_ROUTER=y +CONFIG_ASK_IP_FIB_HASH=y +# CONFIG_IP_FIB_TRIE is not set +CONFIG_IP_FIB_HASH=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_ROUTE_FWMARK is not set +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_MULTIPATH_CACHED=y +CONFIG_IP_ROUTE_MULTIPATH_RR=m +CONFIG_IP_ROUTE_MULTIPATH_RANDOM=m +CONFIG_IP_ROUTE_MULTIPATH_WRANDOM=m +CONFIG_IP_ROUTE_MULTIPATH_DRR=m +# CONFIG_IP_ROUTE_VERBOSE is not set +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_IP_PNP_RARP=y +CONFIG_NET_IPIP=y +CONFIG_NET_IPGRE=y +CONFIG_NET_IPGRE_BROADCAST=y +CONFIG_IP_MROUTE=y +CONFIG_IP_PIMSM_V1=y +CONFIG_IP_PIMSM_V2=y +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +CONFIG_INET_AH=y +CONFIG_INET_ESP=y +CONFIG_INET_IPCOMP=y +CONFIG_INET_TUNNEL=y +CONFIG_INET_DIAG=m +CONFIG_INET_TCP_DIAG=m +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_BIC=y + +# +# IP: Virtual Server Configuration +# +# CONFIG_IP_VS is not set +CONFIG_IPV6=y +CONFIG_IPV6_PRIVACY=y +CONFIG_INET6_AH=y +CONFIG_INET6_ESP=y +CONFIG_INET6_IPCOMP=y +CONFIG_INET6_TUNNEL=y +CONFIG_IPV6_TUNNEL=y +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_BRIDGE_NETFILTER=y + +# +# Core Netfilter Configuration +# +CONFIG_NETFILTER_NETLINK=m +CONFIG_NETFILTER_NETLINK_QUEUE=m +CONFIG_NETFILTER_NETLINK_LOG=m +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +CONFIG_NETFILTER_XT_TARGET_CONNMARK=m +CONFIG_NETFILTER_XT_TARGET_MARK=m +CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +CONFIG_NETFILTER_XT_MATCH_CONNMARK=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_DCCP=m +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MARK=m +CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m +CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m +CONFIG_NETFILTER_XT_MATCH_REALM=m +CONFIG_NETFILTER_XT_MATCH_SCTP=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_STRING=m +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m + +# +# IP: Netfilter Configuration +# +CONFIG_IP_NF_CONNTRACK=m +CONFIG_IP_NF_CT_ACCT=y +CONFIG_IP_NF_CONNTRACK_MARK=y +CONFIG_IP_NF_CONNTRACK_EVENTS=y +CONFIG_IP_NF_CONNTRACK_NETLINK=m +# CONFIG_IP_NF_CT_PROTO_SCTP is not set +CONFIG_IP_NF_FTP=m +CONFIG_IP_NF_IRC=m +CONFIG_IP_NF_NETBIOS_NS=m +CONFIG_IP_NF_TFTP=m +# CONFIG_IP_NF_AMANDA is not set +CONFIG_IP_NF_PPTP=m +CONFIG_IP_NF_QUEUE=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MATCH_IPRANGE=m +CONFIG_IP_NF_MATCH_MULTIPORT=m +CONFIG_IP_NF_MATCH_TOS=m +CONFIG_IP_NF_MATCH_RECENT=m +CONFIG_IP_NF_MATCH_ECN=m +CONFIG_IP_NF_MATCH_DSCP=m +CONFIG_IP_NF_MATCH_AH_ESP=m +CONFIG_IP_NF_MATCH_TTL=m +CONFIG_IP_NF_MATCH_OWNER=m +CONFIG_IP_NF_MATCH_ADDRTYPE=m +CONFIG_IP_NF_MATCH_HASHLIMIT=m +CONFIG_IP_NF_MATCH_POLICY=m +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IP_NF_TARGET_LOG=m +CONFIG_IP_NF_TARGET_ULOG=m +CONFIG_IP_NF_TARGET_TCPMSS=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_NAT_NEEDED=y +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_NETMAP=m +CONFIG_IP_NF_TARGET_SAME=m +CONFIG_IP_NF_NAT_SNMP_BASIC=m +CONFIG_IP_NF_NAT_IRC=m +CONFIG_IP_NF_NAT_FTP=m +CONFIG_IP_NF_NAT_TFTP=m +CONFIG_IP_NF_NAT_PPTP=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_TARGET_TOS=m +CONFIG_IP_NF_TARGET_ECN=m +CONFIG_IP_NF_TARGET_DSCP=m +CONFIG_IP_NF_TARGET_TTL=m +CONFIG_IP_NF_TARGET_CLUSTERIP=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_ARPTABLES=m +CONFIG_IP_NF_ARPFILTER=m +CONFIG_IP_NF_ARP_MANGLE=m + +# +# IPv6: Netfilter Configuration (EXPERIMENTAL) +# +CONFIG_IP6_NF_QUEUE=m +CONFIG_IP6_NF_IPTABLES=m +CONFIG_IP6_NF_MATCH_RT=m +CONFIG_IP6_NF_MATCH_OPTS=m +CONFIG_IP6_NF_MATCH_FRAG=m +CONFIG_IP6_NF_MATCH_HL=m +CONFIG_IP6_NF_MATCH_MULTIPORT=m +CONFIG_IP6_NF_MATCH_OWNER=m +CONFIG_IP6_NF_MATCH_IPV6HEADER=m +CONFIG_IP6_NF_MATCH_AHESP=m +CONFIG_IP6_NF_MATCH_EUI64=m +CONFIG_IP6_NF_MATCH_POLICY=m +CONFIG_IP6_NF_FILTER=m +CONFIG_IP6_NF_TARGET_LOG=m +CONFIG_IP6_NF_TARGET_REJECT=m +CONFIG_IP6_NF_MANGLE=m +CONFIG_IP6_NF_TARGET_HL=m +CONFIG_IP6_NF_RAW=m + +# +# Bridge: Netfilter Configuration +# +# CONFIG_BRIDGE_NF_EBTABLES is not set + +# +# DCCP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_DCCP is not set + +# +# SCTP Configuration (EXPERIMENTAL) +# +# CONFIG_IP_SCTP is not set + +# +# TIPC Configuration (EXPERIMENTAL) +# +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +CONFIG_BRIDGE=y +CONFIG_VLAN_8021Q=y +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_NET_DIVERT is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# +CONFIG_NET_SCHED=y +CONFIG_NET_SCH_CLK_JIFFIES=y +# CONFIG_NET_SCH_CLK_GETTIMEOFDAY is not set +# CONFIG_NET_SCH_CLK_CPU is not set + +# +# Queueing/Scheduling +# +CONFIG_NET_SCH_CBQ=m +CONFIG_NET_SCH_HTB=m +CONFIG_NET_SCH_HFSC=m +CONFIG_NET_SCH_PRIO=m +CONFIG_NET_SCH_RED=m +CONFIG_NET_SCH_SFQ=m +CONFIG_NET_SCH_TEQL=m +CONFIG_NET_SCH_TBF=m +CONFIG_NET_SCH_GRED=m +CONFIG_NET_SCH_DSMARK=m +CONFIG_NET_SCH_NETEM=m +CONFIG_NET_SCH_INGRESS=m + +# +# Classification +# +CONFIG_NET_CLS=y +CONFIG_NET_CLS_BASIC=m +CONFIG_NET_CLS_TCINDEX=m +CONFIG_NET_CLS_ROUTE4=m +CONFIG_NET_CLS_ROUTE=y +CONFIG_NET_CLS_FW=m +CONFIG_NET_CLS_U32=m +CONFIG_CLS_U32_PERF=y +CONFIG_CLS_U32_MARK=y +CONFIG_NET_CLS_RSVP=m +CONFIG_NET_CLS_RSVP6=m +CONFIG_NET_EMATCH=y +CONFIG_NET_EMATCH_STACK=32 +CONFIG_NET_EMATCH_CMP=m +CONFIG_NET_EMATCH_NBYTE=m +CONFIG_NET_EMATCH_U32=m +CONFIG_NET_EMATCH_META=m +CONFIG_NET_EMATCH_TEXT=m +CONFIG_NET_CLS_ACT=y +CONFIG_NET_ACT_POLICE=m +CONFIG_NET_ACT_GACT=m +CONFIG_GACT_PROB=y +CONFIG_NET_ACT_MIRRED=m +CONFIG_NET_ACT_IPT=m +CONFIG_NET_ACT_PEDIT=m +# CONFIG_NET_ACT_SIMP is not set +CONFIG_NET_CLS_IND=y +CONFIG_NET_ESTIMATOR=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +CONFIG_IEEE80211=y +# CONFIG_IEEE80211_DEBUG is not set +CONFIG_IEEE80211_CRYPT_WEP=y +CONFIG_IEEE80211_CRYPT_CCMP=y +CONFIG_IEEE80211_CRYPT_TKIP=y + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=m +# CONFIG_DEBUG_DRIVER is not set + +# +# Connector - unified userspace <-> kernelspace linker +# +CONFIG_CONNECTOR=m + +# +# Memory Technology Devices (MTD) +# +CONFIG_MTD=m +CONFIG_MTD_DEBUG=y +CONFIG_MTD_DEBUG_VERBOSE=0 +# CONFIG_MTD_CONCAT is not set +# CONFIG_MTD_PARTITIONS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_CHAR=m +CONFIG_MTD_BLOCK=m +# CONFIG_MTD_BLOCK_RO is not set +CONFIG_FTL=m +CONFIG_NFTL=m +# CONFIG_NFTL_RW is not set +CONFIG_INFTL=m +CONFIG_RFD_FTL=m + +# +# RAM/ROM/Flash chip drivers +# +CONFIG_MTD_CFI=m +CONFIG_MTD_JEDECPROBE=m +CONFIG_MTD_GEN_PROBE=m +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_CFI_INTELEXT is not set +# CONFIG_MTD_CFI_AMDSTD is not set +# CONFIG_MTD_CFI_STAA is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_OBSOLETE_CHIPS is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_SOLUTIONENGINE is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_BLKMTD is not set +# CONFIG_MTD_BLOCK2MTD is not set + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set + +# +# NAND Flash Device Drivers +# +CONFIG_MTD_NAND=m +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +CONFIG_MTD_NAND_IDS=m +# CONFIG_MTD_NAND_DISKONCHIP is not set + +# +# OneNAND Flash Device Drivers +# +# CONFIG_MTD_ONENAND is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play support +# + +# +# Block devices +# +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +CONFIG_BLK_SSFDC=y +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=m +CONFIG_BLK_DEV_CRYPTOLOOP=m +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_UB is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=4096 +CONFIG_BLK_DEV_INITRD=y +# CONFIG_CDROM_PKTCDVD is not set +CONFIG_ATA_OVER_ETH=m + +# +# ATA/ATAPI/MFM/RLL support +# +# CONFIG_IDE is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +CONFIG_SCSI_PROC_FS=y + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=m +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +CONFIG_BLK_DEV_SR=m +# CONFIG_BLK_DEV_SR_VENDOR is not set +CONFIG_CHR_DEV_SG=m +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set + +# +# SCSI Transport Attributes +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set + +# +# SCSI low-level drivers +# +# CONFIG_ISCSI_TCP is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_SATA is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_FC is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set +# CONFIG_FUSION_SPI is not set +# CONFIG_FUSION_FC is not set +# CONFIG_FUSION_SAS is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y +# CONFIG_IFB is not set +# CONFIG_DUMMY is not set +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +CONFIG_TUN=m + +# +# ARCnet devices +# +# CONFIG_ARCNET is not set + +# +# PHY device support +# +CONFIG_PHYLIB=m + +# +# MII PHY device drivers +# +CONFIG_MARVELL_PHY=m +CONFIG_DAVICOM_PHY=m +CONFIG_QSEMI_PHY=m +CONFIG_LXT_PHY=m +CONFIG_CICADA_PHY=m + +# +# Ethernet (10 or 100Mbit) +# +CONFIG_NET_ETHERNET=y +CONFIG_MII=y +# CONFIG_STNIC is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_SUNGEM is not set +# CONFIG_CASSINI is not set +# CONFIG_NET_VENDOR_3COM is not set +# CONFIG_SMC91X is not set + +# +# Tulip family network device support +# +# CONFIG_NET_TULIP is not set +# CONFIG_HP100 is not set +# CONFIG_NE2000 is not set +CONFIG_NET_PCI=y +# CONFIG_PCNET32 is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_B44 is not set +# CONFIG_FORCEDETH is not set +# CONFIG_DGRS is not set +# CONFIG_EEPRO100 is not set +# CONFIG_E100 is not set +# CONFIG_FEALNX is not set +# CONFIG_NATSEMI is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_8139CP is not set +CONFIG_8139TOO=y +# CONFIG_8139TOO_PIO is not set +CONFIG_8139TOO_TUNE_TWISTER=y +# CONFIG_8139TOO_8129 is not set +CONFIG_8139_OLD_RX_RESET=y +# CONFIG_SIS900 is not set +# CONFIG_EPIC100 is not set +# CONFIG_SUNDANCE is not set +# CONFIG_TLAN is not set +# CONFIG_VIA_RHINE is not set + +# +# Ethernet (1000 Mbit) +# +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SIS190 is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_SK98LIN is not set +# CONFIG_VIA_VELOCITY is not set +# CONFIG_TIGON3 is not set +# CONFIG_BNX2 is not set + +# +# Ethernet (10000 Mbit) +# +# CONFIG_CHELSIO_T1 is not set +# CONFIG_IXGB is not set +# CONFIG_S2IO is not set + +# +# Token Ring devices +# +# CONFIG_TR is not set + +# +# Wireless LAN (non-hamradio) +# +CONFIG_NET_RADIO=y + +# +# Obsolete Wireless cards support (pre-802.11) +# +# CONFIG_STRIP is not set + +# +# Wireless 802.11b ISA/PCI cards support +# +# CONFIG_IPW2100 is not set +# CONFIG_IPW2200 is not set +# CONFIG_HERMES is not set +# CONFIG_ATMEL is not set + +# +# Prism GT/Duette 802.11(a/b/g) PCI/Cardbus support +# +CONFIG_PRISM54=m +# CONFIG_HOSTAP is not set +CONFIG_NET_WIRELESS=y + +# +# Wan interfaces +# +# CONFIG_WAN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +CONFIG_PPP=m +CONFIG_PPP_MULTILINK=y +CONFIG_PPP_FILTER=y +CONFIG_PPP_ASYNC=m +CONFIG_PPP_SYNC_TTY=m +CONFIG_PPP_DEFLATE=m +CONFIG_PPP_BSDCOMP=m +CONFIG_PPP_MPPE=m +CONFIG_PPPOE=m +CONFIG_SLIP=m +CONFIG_SLIP_COMPRESSED=y +CONFIG_SLIP_SMART=y +# CONFIG_SLIP_MODE_SLIP6 is not set +# CONFIG_NET_FC is not set +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Telephony Support +# +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +# CONFIG_SERIAL_8250 is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_SH_SCI=y +CONFIG_SERIAL_SH_SCI_CONSOLE=y +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set + +# +# Watchdog Cards +# +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_NOWAYOUT is not set + +# +# Watchdog Device Drivers +# +# CONFIG_SOFT_WATCHDOG is not set +CONFIG_SH_WDT=m + +# +# PCI-based Watchdog Cards +# +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_WDTPCI is not set + +# +# USB-based Watchdog Cards +# +# CONFIG_USBPCWATCHDOG is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +# CONFIG_DTLK is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set + +# +# Ftape, the floppy tape device driver +# +# CONFIG_DRM is not set +# CONFIG_RAW_DRIVER is not set + +# +# TPM devices +# +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set + +# +# I2C support +# +# CONFIG_I2C is not set + +# +# SPI support +# +# CONFIG_SPI is not set +# CONFIG_SPI_MASTER is not set + +# +# Dallas's 1-wire bus +# +# CONFIG_W1 is not set + +# +# Hardware Monitoring support +# +CONFIG_HWMON=y +# CONFIG_HWMON_VID is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_HWMON_DEBUG_CHIP is not set + +# +# Misc devices +# + +# +# Multimedia Capabilities Port drivers +# + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set + +# +# Digital Video Broadcasting Devices +# +# CONFIG_DVB is not set + +# +# Graphics support +# +# CONFIG_FB is not set + +# +# Console display driver support +# +CONFIG_DUMMY_CONSOLE=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# USB support +# +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB=y +# CONFIG_USB_DEBUG is not set + +# +# Miscellaneous USB options +# +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_BANDWIDTH is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_OTG is not set + +# +# USB Host Controller Drivers +# +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_SPLIT_ISO is not set +# CONFIG_USB_EHCI_ROOT_HUB_TT is not set +# CONFIG_USB_ISP116X_HCD is not set +CONFIG_USB_OHCI_HCD=y +# CONFIG_USB_OHCI_BIG_ENDIAN is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_UHCI_HCD is not set +# CONFIG_USB_SL811_HCD is not set + +# +# USB Device Class drivers +# +CONFIG_USB_ACM=m +CONFIG_USB_PRINTER=m + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# may also be needed; see USB_STORAGE Help for more information +# +CONFIG_USB_STORAGE=y +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_DPCM is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_LIBUSUAL is not set + +# +# USB Input Devices +# +# CONFIG_USB_HID is not set + +# +# USB HID Boot Protocol drivers +# +# CONFIG_USB_KBD is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_AIPTEK is not set +# CONFIG_USB_WACOM is not set +# CONFIG_USB_ACECAD is not set +# CONFIG_USB_KBTAB is not set +# CONFIG_USB_POWERMATE is not set +# CONFIG_USB_MTOUCH is not set +# CONFIG_USB_ITMTOUCH is not set +# CONFIG_USB_EGALAX is not set +# CONFIG_USB_YEALINK is not set +# CONFIG_USB_XPAD is not set +# CONFIG_USB_ATI_REMOTE is not set +# CONFIG_USB_ATI_REMOTE2 is not set +# CONFIG_USB_KEYSPAN_REMOTE is not set +# CONFIG_USB_APPLETOUCH is not set + +# +# USB Imaging devices +# +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set + +# +# USB Multimedia devices +# +# CONFIG_USB_DABUSB is not set + +# +# Video4Linux support is needed for USB Multimedia device support +# + +# +# USB Network Adapters +# +# CONFIG_USB_CATC is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_ZD1201 is not set +CONFIG_USB_MON=y + +# +# USB port drivers +# + +# +# USB Serial Converter support +# +CONFIG_USB_SERIAL=m +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_AIRPRIME is not set +# CONFIG_USB_SERIAL_ANYDATA is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_CP2101 is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_GARMIN is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +CONFIG_USB_SERIAL_PL2303=m +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_SAFE is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_OMNINET is not set + +# +# USB Miscellaneous drivers +# +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_AUERSWALD is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_PHIDGETKIT is not set +# CONFIG_USB_PHIDGETSERVO is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_TEST is not set + +# +# USB DSL modem support +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set + +# +# MMC/SD Card support +# +# CONFIG_MMC is not set + +# +# InfiniBand support +# +# CONFIG_INFINIBAND is not set + +# +# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) +# + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +CONFIG_EXT3_FS=y +# CONFIG_EXT3_FS_XATTR is not set +CONFIG_JBD=y +# CONFIG_JBD_DEBUG is not set +CONFIG_REISERFS_FS=m +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_REISERFS_FS_XATTR is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +CONFIG_XFS_FS=m +CONFIG_XFS_EXPORT=y +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_SECURITY is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_RT is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +CONFIG_INOTIFY=y +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +CONFIG_FUSE_FS=m + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=m +CONFIG_JOLIET=y +CONFIG_ZISOFS=y +CONFIG_ZISOFS_FS=m +CONFIG_UDF_FS=m +CONFIG_UDF_NLS=y + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=m +CONFIG_MSDOS_FS=m +CONFIG_VFAT_FS=m +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +CONFIG_RELAYFS_FS=m +CONFIG_CONFIGFS_FS=m + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +CONFIG_NFS_FS=y +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_DIRECTIO is not set +CONFIG_NFSD=y +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +# CONFIG_NFSD_V4 is not set +CONFIG_NFSD_TCP=y +CONFIG_ROOT_NFS=y +CONFIG_LOCKD=y +CONFIG_LOCKD_V4=y +CONFIG_EXPORTFS=y +CONFIG_NFS_COMMON=y +CONFIG_SUNRPC=y +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RPCSEC_GSS_SPKM3 is not set +CONFIG_SMB_FS=m +# CONFIG_SMB_NLS_DEFAULT is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_9P_FS=m + +# +# Partition Types +# +CONFIG_PARTITION_ADVANCED=y +# CONFIG_ACORN_PARTITION is not set +# CONFIG_OSF_PARTITION is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_MAC_PARTITION is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_ULTRIX_PARTITION is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_EFI_PARTITION is not set + +# +# Native Language Support +# +CONFIG_NLS=m +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=m +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=m +CONFIG_NLS_ISO8859_1=m +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +CONFIG_NLS_UTF8=m + +# +# Profiling support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +# CONFIG_PRINTK_TIME is not set +CONFIG_MAGIC_SYSRQ=y +CONFIG_DEBUG_KERNEL=y +CONFIG_LOG_BUF_SHIFT=16 +# CONFIG_DETECT_SOFTLOCKUP is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_SPINLOCK_SLEEP is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_FRAME_POINTER is not set +# CONFIG_FORCED_INLINING is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_SH_STANDARD_BIOS is not set +CONFIG_EARLY_SCIF_CONSOLE=y +# CONFIG_EARLY_PRINTK is not set +# CONFIG_KGDB is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_HMAC=y +CONFIG_CRYPTO_NULL=m +CONFIG_CRYPTO_MD4=m +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=m +CONFIG_CRYPTO_SHA512=m +CONFIG_CRYPTO_WP512=m +CONFIG_CRYPTO_TGR192=m +CONFIG_CRYPTO_DES=y +CONFIG_CRYPTO_BLOWFISH=m +CONFIG_CRYPTO_TWOFISH=m +CONFIG_CRYPTO_SERPENT=m +CONFIG_CRYPTO_AES=y +CONFIG_CRYPTO_CAST5=m +CONFIG_CRYPTO_CAST6=m +CONFIG_CRYPTO_TEA=m +CONFIG_CRYPTO_ARC4=y +CONFIG_CRYPTO_KHAZAD=m +CONFIG_CRYPTO_ANUBIS=m +CONFIG_CRYPTO_DEFLATE=y +CONFIG_CRYPTO_MICHAEL_MIC=y +CONFIG_CRYPTO_CRC32C=m +# CONFIG_CRYPTO_TEST is not set + +# +# Hardware crypto devices +# + +# +# Library routines +# +CONFIG_CRC_CCITT=m +CONFIG_CRC16=m +CONFIG_CRC32=y +CONFIG_LIBCRC32C=m +CONFIG_ZLIB_INFLATE=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_TEXTSEARCH=y +CONFIG_TEXTSEARCH_KMP=m +CONFIG_TEXTSEARCH_BM=m +CONFIG_TEXTSEARCH_FSM=m diff --git a/packages/linux/linux-titan-sh4-2.6.16/titan-flash.patch b/packages/linux/linux-titan-sh4-2.6.16/titan-flash.patch new file mode 100644 index 0000000000..fc633f3e05 --- /dev/null +++ b/packages/linux/linux-titan-sh4-2.6.16/titan-flash.patch @@ -0,0 +1,3157 @@ + +Add the driver for onboard flash. +The quality of this driver means that it has not been included in the +upstream CVS. +This implements the block device translation layer to match what the +onboard firmware implements. + +diff -duNr linux-2.6.16-orig/drivers/block/Kconfig linux-2.6.16/drivers/block/Kconfig +--- linux-2.6.16-orig/drivers/block/Kconfig 2006-06-29 16:12:57.000000000 +1000 ++++ linux-2.6.16/drivers/block/Kconfig 2006-06-29 16:13:27.000000000 +1000 +@@ -190,6 +190,13 @@ + To compile this driver as a module, choose M here: the + module will be called DAC960. + ++config BLK_SSFDC ++ tristate "SmartMedia(TM) Driver (sm)" ++ depends on SH_TITAN ++ help ++ Say Y here if you want the SmartMedia chip enabled. ++ Otherwise say N. ++ + config BLK_DEV_UMEM + tristate "Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)" + depends on PCI && EXPERIMENTAL +diff -duNr linux-2.6.16-orig/drivers/block/Makefile linux-2.6.16/drivers/block/Makefile +--- linux-2.6.16-orig/drivers/block/Makefile 2006-06-29 16:12:57.000000000 +1000 ++++ linux-2.6.16/drivers/block/Makefile 2006-06-29 16:13:27.000000000 +1000 +@@ -21,6 +21,7 @@ + obj-$(CONFIG_BLK_CPQ_DA) += cpqarray.o + obj-$(CONFIG_BLK_CPQ_CISS_DA) += cciss.o + obj-$(CONFIG_BLK_DEV_DAC960) += DAC960.o ++obj-$(CONFIG_BLK_SSFDC) += ssfdc.o + obj-$(CONFIG_CDROM_PKTCDVD) += pktcdvd.o + + obj-$(CONFIG_BLK_DEV_UMEM) += umem.o +diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.c linux-2.6.16/drivers/block/ssfdc.c +--- linux-2.6.16-orig/drivers/block/ssfdc.c 1970-01-01 10:00:00.000000000 +1000 ++++ linux-2.6.16/drivers/block/ssfdc.c 2006-06-29 16:13:50.000000000 +1000 +@@ -0,0 +1,2742 @@ ++/* $id: $ ++ssfdc.c - Solid State Flopyy Disk Card ++ ++Original source curtesy of Toshiba Corporation. ++ ++Modification for use by Linux provided by Nimble Microsystems Inc. ++ ++TODO: ++ ++Modification History: ++ ++ March 2001 - Initial port of Toshiba sources by Bill Mann ++ May 2001 - Debug of staticly linked ssfdc driver, Bill Mann ++ Nov 2001 - Reimplementation using tasklets and timers. ++ May 2002 - Partition support added. ++ Oct 2003 - Port to kernel 2.6.0 ++ Mar 2004 - Stabilization refinements... ++ ++Overview: The kernel interfaces to the device via the "block_device_operations ++ ssfdc_fops", the device's request handling function ++ "do_ssfdc_request(request_queue_t * q)", or by the ioctl interface ssfdc_ioctl(). ++ ++ do_ssfdc_request() purpose is to kickstart ssfdc_thread via a wake_up call. ssfdc_thread ++ then processes requests from the queue. ++ ++ Blocks are mapped logically. So a sector read/write results in the determination ++ of the logical block address of the block containing the desired sector and the ++ corresponding physical block being accessed. Note the use of ReadBlock, WriteBlock, ++ and PhyBlock, Log2Phy[] etc. ++ ++ This driver implements a wear leveling strategy where sector writes to the ++ SmartMedia causes the block which is the target of the write to be copied into a ++ new block, the new data written and the old block erased. This makes the driver ++ more complicated than a straightforward sector read/write. ++ ++*/ ++ ++/* Section device headers */ ++#define DEBUG_SSFDC 0 ++#define DEBUG_SSFDC_STRUCT 0 ++#define DEBUG_SSFDC_REQUEST 0 ++#define DEBUG_SSFDC_READREDT 0 ++#define DEBUG_SSFDC_WRITE 0 ++#define DEBUG_SSFDC_WRITESECT 0 ++#define DEBUG_SSFDC_WRITEBLKS 0 ++#define DEBUG_SSFDC_READ 0 ++#define DEBUG_SSFDC_ADDR 0 ++#define DEBUG_SSFDC_ASSIGNRELEASE 0 ++#define SSFDC_READINGTASKLET 0 ++/* Edition Compilation Mode */ ++ ++#include <linux/module.h> ++ ++#include <asm/delay.h> ++#include <linux/sched.h> ++#include <linux/interrupt.h> ++ ++#include <linux/fs.h> ++#include <linux/hdreg.h> ++#include <linux/file.h> ++#include <linux/stat.h> ++#include <linux/time.h> ++#include <linux/errno.h> ++#include <linux/major.h> ++#include <linux/init.h> ++#include <linux/devfs_fs_kernel.h> ++#include <asm/uaccess.h> ++#include <asm/hardirq.h> ++#include <linux/bio.h> ++#include <linux/blkdev.h> ++#include <linux/slab.h> ++#include <linux/highmem.h> ++ ++#include "ssfdc.h" ++ ++#define SSFDC_MAJOR 240 ++ ++static int static_ssfdc_debug = 0; ++ ++static DECLARE_WAIT_QUEUE_HEAD(ssfdc_wait); ++ ++static struct gendisk *disks[MAX_SSFDC]; ++static ssfdc_dev *ssfdc[MAX_SSFDC]; ++ ++static int ssfdc_open(struct inode *i_node, struct file *fptr); ++static int ssfdc_getgeo(struct block_device *bdev, struct hd_geometry *geo); ++static int ssfdc_release(struct inode *i_node, struct file *fptr); ++static int ssfdc_ioctl(struct inode *i_node, struct file *fptr, unsigned cmd, unsigned long arg); ++static int ssfdc_revalidate(struct gendisk *disk); ++void do_ssfdc_request(request_queue_t * q); ++ ++static struct block_device_operations ssfdc_fops = { ++ .owner = THIS_MODULE, ++ .open = ssfdc_open, ++ .getgeo = ssfdc_getgeo, ++ .release = ssfdc_release, ++ .ioctl = ssfdc_ioctl, ++ // bjm out .revalidate_disk = ssfdc_revalidate, ++}; ++ ++ ++/*************************************************************************** ++ BIT Control Macro ++ ***************************************************************************/ ++static char BitData[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80 }; ++#define SetBit(a,b) (a[(unsigned char)((b)/8)]|= BitData[(b)%8]) ++#define ClrBit(a,b) (a[(unsigned char)((b)/8)]&=~BitData[(b)%8]) ++#define ChkBit(a,b) (a[(unsigned char)((b)/8)] & BitData[(b)%8]) ++ ++/***************************************************************************/ ++static int MediaReadSector(ssfdc_dev *, struct request *, char *, long,int); ++static int MediaWriteSector(ssfdc_dev *, struct request *, char *, long,int); ++ ++/***************************************************************************/ ++static int CheckLogCHS(ssfdc_dev *,unsigned int *,unsigned char *,unsigned char *); ++static int CheckMediaWP(ssfdc_dev *); ++static int ConvMediaAddr(ssfdc_dev *,long); ++static int IncMediaAddr(ssfdc_dev *); ++static int WriteReqInCurrBlk(ssfdc_dev *, long, int *); ++/******************************************/ ++/******************************************/ ++static int AssignWriteBlock(ssfdc_dev *, int); ++/******************************************/ ++/******************************************/ ++static int SetPhyFmtValue(ssfdc_dev *); ++static int SearchCIS(ssfdc_dev *,unsigned int *); ++static int MakeLogTable(ssfdc_dev *,unsigned int); ++/******************************************/ ++static int MarkFailPhyOneBlock(ssfdc_dev *); ++ ++static void _ReadSsfdcBuf(ssfdc_dev *, unsigned char *databuf,unsigned char *redundant); ++static void _WriteSsfdcBuf(ssfdc_dev *,unsigned char *,unsigned char *); ++static void _ReadSsfdcWord(ssfdc_dev *,unsigned int *); ++static void _ReadRedtSsfdcBuf(ssfdc_dev *, unsigned char *redundant); ++static void _WriteRedtSsfdcBuf(ssfdc_dev*, unsigned char *redundant); ++ ++/***************************************************************************/ ++static void _SetSsfdcCmd(ssfdc_dev *, unsigned char); ++static void _SetSsfdcAddr(ssfdc_dev *, unsigned char); ++static void _SetSsfdcBlock(ssfdc_dev *); ++static void _SetSsfdcChip(ssfdc_dev *); ++static void _SetSsfdcStandby(ssfdc_dev *); ++static int _CheckSsfdcBusy(ssfdc_dev *, unsigned int); ++static int _CheckSsfdcStatus(ssfdc_dev *); ++static void _ResetSsfdcErr(ssfdc_dev *psm); ++static unsigned char _CheckDevCode(unsigned char); ++void SsfdcReset(ssfdc_dev *); ++void CntReset(ssfdc_dev *); ++ ++static char BitCount(unsigned char); ++static char BitCountWord(unsigned int); ++ ++static void _WaitTimer(long int); ++typedef void (*timeout_fn)(unsigned long); ++static void ssfdc_rw_request(ssfdc_dev *psm, struct request *req); ++static int ssfdc_end_request(ssfdc_dev *psm, struct request *req, int status); ++static void ssfdc_terminate_request(ssfdc_dev *psm, struct request *req); ++static struct request *ssfdc_get_request(ssfdc_dev *psm); ++ ++/* debugging utils etc. */ ++ ++#if DEBUG_SSFDC ++static void dump_ssfdc_state(ssfdc_dev * psm); ++#endif ++ ++/* end of debugging utils etc. */ ++ ++/* our tasklets */ ++/* top level R/W initiation tasklet */ ++static void initxfer(unsigned long); ++#if 0 // use thread and not a tasklet ++DECLARE_TASKLET(initxfer_tasklet0, initxfer, 0); ++#ifdef CONFIG_SH_NIMBLE_MINI ++DECLARE_TASKLET(initxfer_tasklet1, initxfer, 1); ++#endif ++#endif ++ ++/* Sector Write Tasklets, This group includes a readcopy tasklet for block copies...*/ ++ ++/* Tasklet to read a sector into a temporary buffer for later write */ ++ ++/* power is turned on, and then left on for TIMER_ON_TIMEOUT */ ++// bjm debug struct timer_list mediachange_timer; ++// bjm debug static void mediachangetest(unsigned long); ++ ++// bjm out ++// bjm out struct timer_list waiting_timer; ++static void waiting_timeout(unsigned long); ++ ++/******************************************************************************/ ++static void trans_result \ ++ (unsigned char,unsigned char,unsigned char *,unsigned char *); ++static void calculate_ecc \ ++ (unsigned char *,unsigned char *,unsigned char *,unsigned char *,unsigned char *); ++static unsigned char correct_data \ ++ (unsigned char *,unsigned char *,unsigned char,unsigned char,unsigned char); ++ ++ /* CP0-CP5 code table */ ++static unsigned char ecctable[256] = { ++ 0x00,0x55,0x56,0x03,0x59,0x0C,0x0F,0x5A,0x5A,0x0F,0x0C,0x59,0x03,0x56,0x55,0x00, ++ 0x65,0x30,0x33,0x66,0x3C,0x69,0x6A,0x3F,0x3F,0x6A,0x69,0x3C,0x66,0x33,0x30,0x65, ++ 0x66,0x33,0x30,0x65,0x3F,0x6A,0x69,0x3C,0x3C,0x69,0x6A,0x3F,0x65,0x30,0x33,0x66, ++ 0x03,0x56,0x55,0x00,0x5A,0x0F,0x0C,0x59,0x59,0x0C,0x0F,0x5A,0x00,0x55,0x56,0x03, ++ 0x69,0x3C,0x3F,0x6A,0x30,0x65,0x66,0x33,0x33,0x66,0x65,0x30,0x6A,0x3F,0x3C,0x69, ++ 0x0C,0x59,0x5A,0x0F,0x55,0x00,0x03,0x56,0x56,0x03,0x00,0x55,0x0F,0x5A,0x59,0x0C, ++ 0x0F,0x5A,0x59,0x0C,0x56,0x03,0x00,0x55,0x55,0x00,0x03,0x56,0x0C,0x59,0x5A,0x0F, ++ 0x6A,0x3F,0x3C,0x69,0x33,0x66,0x65,0x30,0x30,0x65,0x66,0x33,0x69,0x3C,0x3F,0x6A, ++ 0x6A,0x3F,0x3C,0x69,0x33,0x66,0x65,0x30,0x30,0x65,0x66,0x33,0x69,0x3C,0x3F,0x6A, ++ 0x0F,0x5A,0x59,0x0C,0x56,0x03,0x00,0x55,0x55,0x00,0x03,0x56,0x0C,0x59,0x5A,0x0F, ++ 0x0C,0x59,0x5A,0x0F,0x55,0x00,0x03,0x56,0x56,0x03,0x00,0x55,0x0F,0x5A,0x59,0x0C, ++ 0x69,0x3C,0x3F,0x6A,0x30,0x65,0x66,0x33,0x33,0x66,0x65,0x30,0x6A,0x3F,0x3C,0x69, ++ 0x03,0x56,0x55,0x00,0x5A,0x0F,0x0C,0x59,0x59,0x0C,0x0F,0x5A,0x00,0x55,0x56,0x03, ++ 0x66,0x33,0x30,0x65,0x3F,0x6A,0x69,0x3C,0x3C,0x69,0x6A,0x3F,0x65,0x30,0x33,0x66, ++ 0x65,0x30,0x33,0x66,0x3C,0x69,0x6A,0x3F,0x3F,0x6A,0x69,0x3C,0x66,0x33,0x30,0x65, ++ 0x00,0x55,0x56,0x03,0x59,0x0C,0x0F,0x5A,0x5A,0x0F,0x0C,0x59,0x03,0x56,0x55,0x00 ++}; ++ ++#define BIT7 0x80 ++#define BIT6 0x40 ++#define BIT5 0x20 ++#define BIT4 0x10 ++#define BIT3 0x08 ++#define BIT2 0x04 ++#define BIT1 0x02 ++#define BIT0 0x01 ++ ++#define BIT1BIT0 0x03 ++#define BIT23 0x00800000L ++#define MASK_CPS 0x3f ++#define CORRECTABLE 0x00555554L ++ ++/* ++ Transfer result ++ LP14,12,10,... & LP15,13,11,... -> LP15,14,13,... & LP7,6,5,.. ++*/ ++static void trans_result(reg2,reg3,ecc1,ecc2) ++unsigned char reg2; /* LP14,LP12,LP10,... */ ++unsigned char reg3; /* LP15,LP13,LP11,... */ ++unsigned char *ecc1; /* LP15,LP14,LP13,... */ ++unsigned char *ecc2; /* LP07,LP06,LP05,... */ ++{ ++ unsigned char a; /* Working for reg2,reg3 */ ++ unsigned char b; /* Working for ecc1,ecc2 */ ++ unsigned char i; /* For counting */ ++ ++ a=BIT7; b=BIT7; /* 80h=10000000b */ ++ *ecc1=*ecc2=0; /* Clear ecc1,ecc2 */ ++ for(i=0; i<4; ++i) { ++ if ((reg3&a)!=0) *ecc1|=b; /* LP15,13,11,9 -> ecc1 */ ++ b=b>>1; /* Right shift */ ++ if ((reg2&a)!=0) *ecc1|=b; /* LP14,12,10,8 -> ecc1 */ ++ b=b>>1; /* Right shift */ ++ a=a>>1; /* Right shift */ ++ } ++ b=BIT7; /* 80h=10000000b */ ++ for(i=0; i<4; ++i) { ++ if ((reg3&a)!=0) *ecc2|=b; /* LP7,5,3,1 -> ecc2 */ ++ b=b>>1; /* Right shift */ ++ if ((reg2&a)!=0) *ecc2|=b; /* LP6,4,2,0 -> ecc2 */ ++ b=b>>1; /* Right shift */ ++ a=a>>1; /* Right shift */ ++ } ++} ++ ++ ++/* ++ Calculating ECC ++ data[0-255] -> ecc1,ecc2,ecc3 using CP0-CP5 code table[0-255] ++*/ ++static void calculate_ecc(table,data,ecc1,ecc2,ecc3) ++unsigned char *table; /* CP0-CP5 code table */ ++unsigned char *data; /* DATA */ ++unsigned char *ecc1; /* LP15,LP14,LP13,... */ ++unsigned char *ecc2; /* LP07,LP06,LP05,... */ ++unsigned char *ecc3; /* CP5,CP4,CP3,...,"1","1" */ ++{ ++ unsigned int i; /* For counting */ ++ unsigned char a; /* Working for table */ ++ unsigned char reg1; /* D-all,CP5,CP4,CP3,... */ ++ unsigned char reg2; /* LP14,LP12,L10,... */ ++ unsigned char reg3; /* LP15,LP13,L11,... */ ++ ++ reg1=reg2=reg3=0; /* Clear parameter */ ++ ++ for(i=0; i<256; ++i) { ++ a=table[data[i]]; /* Get CP0-CP5 code from table */ ++ reg1^=(a&MASK_CPS); /* XOR with a */ ++ if ((a&BIT6)!=0) { /* If D_all(all bit XOR) = 1 */ ++ reg3^=(unsigned char)i; /* XOR with counter */ ++ reg2^=~((unsigned char)i); /* XOR with inv. of counter */ ++ } ++ } ++ ++ /* Trans LP14,12,10,... & LP15,13,11,... -> LP15,14,13,... & LP7,6,5,.. */ ++ trans_result(reg2,reg3,ecc1,ecc2); ++ ++ *ecc1=~(*ecc1); *ecc2=~(*ecc2); /* Inv. ecc2 & ecc3 */ ++ *ecc3=((~reg1)<<2)|BIT1BIT0; /* Make TEL format */ ++} ++ ++static unsigned char correct_data(data,eccdata,ecc1,ecc2,ecc3) ++unsigned char *data; /* DATA */ ++unsigned char *eccdata; /* ECC DATA */ ++unsigned char ecc1; /* LP15,LP14,LP13,... */ ++unsigned char ecc2; /* LP07,LP06,LP05,... */ ++unsigned char ecc3; /* CP5,CP4,CP3,...,"1","1" */ ++{ ++ unsigned long l; /* Working to check d */ ++ unsigned long d; /* Result of comparison */ ++ unsigned int i; /* For counting */ ++ unsigned char d1,d2,d3; /* Result of comparison */ ++ unsigned char a; /* Working for add */ ++ unsigned char add; /* Byte address of cor. DATA */ ++ unsigned char b; /* Working for bit */ ++ unsigned char bit; /* Bit address of cor. DATA */ ++ ++ d1=ecc1^eccdata[1]; d2=ecc2^eccdata[0]; /* Compare LP's */ ++ d3=ecc3^eccdata[2]; /* Comapre CP's */ ++ d=((unsigned long)d1<<16) /* Result of comparison */ ++ +((unsigned long)d2<<8) ++ +(unsigned long)d3; ++ ++ if (d==0) return(0); /* If No error, return */ ++ if (((d^(d>>1))&CORRECTABLE)==CORRECTABLE) { /* If correctable */ ++ l=BIT23; ++ add=0; /* Clear parameter */ ++ a=BIT7; ++ for(i=0; i<8; ++i) { /* Checking 8 bit */ ++ if ((d&l)!=0) add|=a; /* Make byte address from LP's */ ++ l>>=2; a>>=1; /* Right Shift */ ++ } ++ bit=0; /* Clear parameter */ ++ b=BIT2; ++ for(i=0; i<3; ++i) { /* Checking 3 bit */ ++ if ((d&l)!=0) bit|=b; /* Make bit address from CP's */ ++ l>>=2; b>>=1; /* Right shift */ ++ } ++ b=BIT0; ++ data[add]^=(b<<bit); /* Put corrected data */ ++ return(1); ++ } ++ i=0; /* Clear count */ ++ d&=0x00ffffffL; /* Masking */ ++ while(d) { /* If d=0 finish counting */ ++ if (d&BIT0) ++i; /* Count number of 1 bit */ ++ d>>=1; /* Right shift */ ++ } ++ if (i==1) { /* If ECC error */ ++ eccdata[1]=ecc1; eccdata[0]=ecc2; /* Put right ECC code */ ++ eccdata[2]=ecc3; ++ return(2); ++ } ++ return(3); /* Uncorrectable error */ ++} ++/*************************************************************************** ++ Common Subroutine ++ ***************************************************************************/ ++char BitCount(unsigned char cdata) ++{ ++ char bitcount=0; ++ while(cdata) { ++ bitcount+=(cdata &0x01); ++ cdata /=2; ++ } ++ return(bitcount); ++} ++ ++char BitCountWord(unsigned int cdata) ++{ ++ char bitcount=0; ++ while(cdata) { ++ bitcount+=(cdata &0x01); ++ cdata /=2; ++ } ++ return(bitcount); ++} ++ ++/***************************************************************************/ ++void StringCopy(char *stringA, char *stringB, int count) ++{ ++ int i; ++ for(i=0; i<count; i++) ++ *stringA++ = *stringB++; ++} ++ ++int StringCmp(char *stringA, char *stringB, int count) ++{ ++ int i; ++ for (i=0;i<count;i++) ++ if (*stringA++ != *stringB++) return(ERROR); ++ return(SUCCESS); ++} ++/***************************************************************************/ ++int CheckDataBlank(unsigned char *redundant) ++{ ++ char i; ++ for(i=0; i<REDTSIZE; i++) ++ if(*redundant++!=0xFF) return(ERROR); ++ return(SUCCESS); ++} ++ ++int CheckFailBlock(unsigned char *redundant) ++{ ++ redundant+=REDT_BLOCK; ++ if(*redundant==0xFF) return(SUCCESS); ++ if(! *redundant) return(ERROR); ++ if(BitCount(*redundant)<7) return(ERROR); ++ return(SUCCESS); ++} ++ ++int CheckCisBlock(unsigned char *redundant) ++{ ++ if(! (*(redundant+REDT_ADDR1H)|*(redundant+REDT_ADDR1L))) ++ return(SUCCESS); ++ if(! (*(redundant+REDT_ADDR2H)|*(redundant+REDT_ADDR2L))) ++ return(SUCCESS); ++ return(ERROR); ++} ++ ++int CheckDataStatus(unsigned char *redundant) ++{ ++ redundant+=REDT_DATA; ++ if(*redundant==0xFF) return(SUCCESS); ++ if(! *redundant) return(ERROR); ++ if(BitCount(*redundant)<5) return(ERROR); ++ return(SUCCESS); ++} ++ ++int LoadLogBlockAddr(ssfdc_dev *psm) ++{ ++ unsigned int addr1,addr2; ++ addr1=*(psm->Redundant+REDT_ADDR1H)*0x100+*(psm->Redundant+REDT_ADDR1L); ++ addr2=*(psm->Redundant+REDT_ADDR2H)*0x100+*(psm->Redundant+REDT_ADDR2L); ++ if(addr1==addr2) ++ if((addr1 &0xF000)==0x1000) ++ { psm->LogBlock=(addr1 &0x0FFF)/2; return(SUCCESS); } ++ if(BitCountWord(addr1^addr2)>1) return(ERROR); ++ if((addr1 &0xF000)==0x1000) ++ if(! (BitCountWord(addr1) &0x0001)) ++ { psm->LogBlock=(addr1 &0x0FFF)/2; return(SUCCESS); } ++ if((addr2 &0xF000)==0x1000) ++ if(! (BitCountWord(addr2) &0x0001)) ++ { psm->LogBlock=(addr2 &0x0FFF)/2; return(SUCCESS); } ++ return(ERROR); ++} ++/***************************************************************************/ ++void ClrRedundantData(unsigned char *redundant) ++{ ++ char i; ++ for(i=0; i<REDTSIZE; i++) *(redundant+i)=0xFF; ++} ++ ++/***************************************************************************/ ++void SetLogBlockAddr(ssfdc_dev *psm, unsigned char *redundant) ++{ ++ unsigned int addr; ++ *(redundant+REDT_BLOCK)=0xFF; ++ *(redundant+REDT_DATA) =0xFF; ++ addr=psm->LogBlock*2+0x1000; ++ if((BitCountWord(addr)%2)) addr++; ++ *(redundant+REDT_ADDR1H)=*(redundant+REDT_ADDR2H)=addr/0x100; ++ *(redundant+REDT_ADDR1L)=*(redundant+REDT_ADDR2L)=(unsigned char)addr; ++} ++ ++void SetFailBlock(unsigned char *redundant) ++{ ++ char i; ++ for(i=0; i<REDTSIZE; i++) ++ *redundant++=((i==REDT_BLOCK)?0xF0:0xFF); ++} ++ ++void SetDataStatus(unsigned char *redundant) ++{ ++ redundant+=REDT_DATA; ++ *redundant=0x00; ++} ++ ++ ++/*************************************************************************** ++ NAND Memory (SmartMedia) Control Subroutine ++ ***************************************************************************/ ++static void _SetSsfdcCmd(ssfdc_dev *psm, unsigned char cmd) ++{ ++ _HwSetCmd(psm); ++ _HwOutData(psm,cmd); ++ _HwSetData(psm); ++} ++ ++static void _SetSsfdcAddr(ssfdc_dev *psm, unsigned char add) ++{ ++ unsigned int addr; ++ ++#if DEBUG_SSFDC_ADDR ++ printk(KERN_DEBUG "_SetSsfdcAddr() Zone %d LogBlock %d PhyBlock %d Sector %d\n", ++ psm->Zone,psm->LogBlock,psm->PhyBlock,psm->Sector); ++#endif ++ addr=(unsigned int)psm->Zone*psm->MaxBlocks+psm->PhyBlock; ++ addr=addr*(unsigned int)psm->MaxSectors+psm->Sector; ++ if((psm->Attribute &MPS)==PS256) /* for 256byte/page */ ++ addr=addr*2+(unsigned int)add; ++/*-----------------------------------------------*/ ++ _HwSetAddr(psm); ++ _HwOutData(psm,0x00); ++ _HwOutData(psm,(unsigned char)addr); ++ _HwOutData(psm,(unsigned char)(addr/0x0100)); ++ if((psm->Attribute &MADC)==AD4CYC) ++ _HwOutData(psm,(unsigned char)(psm->Zone/2)); /* Patch */ ++ _HwSetData(psm); ++} ++ ++static void _SetSsfdcBlock(ssfdc_dev *psm) ++{ ++ unsigned int addr; ++#if DEBUG_SSFDC_ASSIGNRELEASE ++ printk(KERN_DEBUG "_SetSsfdcBlock() set card addr to PhyBlock %d\n", psm->PhyBlock); ++#endif ++ addr=(unsigned int)psm->Zone*psm->MaxBlocks+psm->PhyBlock; ++ addr=addr*(unsigned int)psm->MaxSectors; ++ if((psm->Attribute &MPS)==PS256) /* for 256byte/page */ ++ addr=addr*2; ++/*-----------------------------------------------*/ ++ _HwSetAddr(psm); ++ _HwOutData(psm,(unsigned char)addr); ++ _HwOutData(psm,(unsigned char)(addr/0x0100)); ++ if((psm->Attribute &MADC)==AD4CYC) ++ _HwOutData(psm,(unsigned char)(psm->Zone/2)); /* Patch */ ++ _HwSetData(psm); ++} ++ ++static inline void _SetSsfdcStandby(ssfdc_dev *psm) ++{ ++ _HwSetStandby(psm); ++} ++ ++static int _CheckSsfdcStatus(ssfdc_dev *psm) ++{ ++ int status; ++ if((status=_HwInData(psm)) & WR_FAIL) { ++ printk(KERN_DEBUG "_CheckSsfdcStatus() error %x\n", status); ++ return(ERROR); ++ } ++ return(SUCCESS); ++} ++ ++static void _ResetSsfdcErr(ssfdc_dev *psm) ++{ ++ _HwSetCmd(psm); ++ _HwOutData(psm,SSFDC_RST_CHIP); ++ _HwSetData(psm); ++ while(1) { ++ udelay(30); ++ if(! _HwChkBusy(psm)) break; ++ } ++ _HwSetStandby(psm); ++} ++ ++static void waiting_timeout(unsigned long psm) ++{ ++ // enable the wakeup signal! ++ wake_up(&((ssfdc_dev *)psm)->thread_wq); ++} ++ ++/* ++ _CheckSsfdcBusy() ++ ++ set a timer in jiffies from int time x .1ms ++*/ ++ ++static int _CheckSsfdcBusy(ssfdc_dev *psm, unsigned int time) ++{ ++ unsigned long incr_div = 4; ++ unsigned long incr_us = time / incr_div, ++ jticks=time/(MSEC * JIFFY_TICK_MS); ++ unsigned long tick_retried=0, wrap_flag, expires; ++ ++ if (!jticks) { ++ // small delay first to test completion ++ do { ++ udelay(incr_us); ++ if (!_HwChkBusy(psm)) ++ return(SUCCESS); ++ } while (incr_div--); ++ return(ERROR); ++ } ++ ++ // Block the wakeup signal? ++ ++one_more_time: ++ expires = jiffies + jticks; ++ wrap_flag = ( expires < jiffies); ++ ++ do { ++ wait_event_interruptible_timeout(psm->thread_wq, 0, jticks); ++ if (!_HwChkBusy(psm)) { ++ return(SUCCESS); ++ } ++ } while (wrap_flag ? expires <= jiffies : expires >= jiffies); ++ ++#if 1 ++ // Is the chip not busy? If so its an ERROR ++ if (!_HwChkBusy(psm)) { ++ return(SUCCESS); ++ } ++ else { ++ // if we came back, give us one more tick/time ++ if (! tick_retried ) { ++ tick_retried = 1; ++ jticks = 0; ++ printk("."); ++ goto one_more_time; ++ } ++ return(ERROR); ++ } ++#endif ++} ++ ++static void _SetSsfdcChip(ssfdc_dev *psm) ++{ ++ _HwSetAddr(psm); ++ _HwOutData(psm,0x00); ++ _HwSetData(psm); ++} ++/*************************************************************************** ++ NAND Memory (SmartMedia) Buffer Data Xfer Subroutine ++ ***************************************************************************/ ++static void _ReadSsfdcBuf(ssfdc_dev *psm,unsigned char *databuf,unsigned char *redundant) ++{ ++ int i; ++ for(i=0x00;i<(((psm->Attribute &MPS)==PS256)?0x100:0x200);i++) ++ *databuf++ =_HwInData(psm); ++ for(i=0x00;i<(((psm->Attribute &MPS)==PS256)?0x08:0x10);i++) ++ *redundant++ =_HwInData(psm); ++} ++ ++static void _WriteSsfdcBuf(ssfdc_dev *psm, unsigned char *databuf,unsigned char *redundant) ++{ ++ int i; ++ for(i=0x00;i<(((psm->Attribute &MPS)==PS256)?0x100:0x200);i++) ++ _HwOutData(psm,*databuf++); ++ for(i=0x00;i<(((psm->Attribute &MPS)==PS256)?0x08:0x10);i++) ++ _HwOutData(psm,*redundant++); ++} ++ ++static void _ReadSsfdcWord(ssfdc_dev *psm, unsigned int *pdata) ++{ ++ *pdata =_HwInData(psm)*0x100; ++ *pdata|=(unsigned char)_HwInData(psm); ++} ++ ++static void _ReadRedtSsfdcBuf(ssfdc_dev *psm,unsigned char *redundant) ++{ ++ int i; ++ for(i=0x00;i<(((psm->Attribute &MPS)==PS256)?0x08:0x10);i++) ++ redundant[i] =_HwInData(psm); ++} ++ ++static void _WriteRedtSsfdcBuf(ssfdc_dev *psm, unsigned char *redundant) ++{ ++ char i; ++ for(i=0x00;i<(((psm->Attribute &MPS)==PS256)?0x08:0x10);i++) ++ _HwOutData(psm,*redundant++); ++} ++ ++/*************************************************************************** ++ Timer Control Subroutine ++ ***************************************************************************/ ++#define SHORT_DELAY 1 ++ ++ ++ ++ ++void _GetDateTime(char *date) ++{ ++} ++ ++/* ++_WaitTimer(long time) time is in ticks. ++*/ ++ ++static inline void _WaitTimer(long time) ++{ ++} ++ ++/*************************************************************************** ++ SmartMedia Function Command Subroutine ++ ***************************************************************************/ ++void SsfdcReset(ssfdc_dev *psm) ++{ ++ _SetSsfdcCmd(psm, SSFDC_RST_CHIP); ++ _CheckSsfdcBusy(psm,BUSY_RESET); ++ _SetSsfdcCmd(psm,SSFDC_READ); ++ _CheckSsfdcBusy(psm,BUSY_READ); ++ _SetSsfdcStandby(psm); ++} ++ ++void SsfdcWriteRedtMode(ssfdc_dev *psm) ++{ ++ _SetSsfdcCmd(psm,SSFDC_RST_CHIP); ++ _CheckSsfdcBusy(psm,BUSY_RESET); ++ _SetSsfdcCmd(psm,SSFDC_READ_REDT); ++ _CheckSsfdcBusy(psm,BUSY_READ); ++ _SetSsfdcStandby(psm); ++} ++ ++void SsfdcReadID(ssfdc_dev *psm, unsigned int *pid) ++{ ++ _SetSsfdcCmd(psm,SSFDC_READ_ID); ++ _SetSsfdcChip(psm); ++ _ReadSsfdcWord(psm,pid); ++ _SetSsfdcStandby(psm); ++} ++ ++int SsfdcCheckStatus(ssfdc_dev *psm) ++{ ++ _SetSsfdcCmd(psm,SSFDC_RDSTATUS); ++ if(_CheckSsfdcStatus(psm)) ++ { _SetSsfdcStandby(psm); return(ERROR); } ++ _SetSsfdcStandby(psm); ++ return(SUCCESS); ++} ++ ++int SsfdcReadSect(ssfdc_dev *psm, unsigned char *buf,unsigned char *redundant) ++{ ++#if DEBUG_SSFDC_READ ++ printk(KERN_DEBUG "SsfdcReadSect() - Zone %d LogBlock %d, PhyBlock %d, Sector %d\n", ++ psm->Zone, psm->LogBlock, psm->PhyBlock, psm->Sector); ++#endif ++ _SetSsfdcCmd(psm,SSFDC_READ); ++ _SetSsfdcAddr(psm, EVEN); ++ if(_CheckSsfdcBusy(psm,BUSY_READ)) ++ { _ResetSsfdcErr(psm); return(ERROR); } ++ _ReadSsfdcBuf(psm,buf,redundant); ++ if(_CheckSsfdcBusy(psm,BUSY_READ)) ++ { _ResetSsfdcErr(psm); return(ERROR); } ++ if((psm->Attribute &MPS)==PS256) { ++ _SetSsfdcCmd(psm,SSFDC_READ); ++ _SetSsfdcAddr(psm, ODD); ++ if(_CheckSsfdcBusy(psm,BUSY_READ)) ++ { _ResetSsfdcErr(psm); return(ERROR); } ++ _ReadSsfdcBuf(psm,buf+0x100,redundant+0x08); ++ if(_CheckSsfdcBusy(psm,BUSY_READ)) ++ { _ResetSsfdcErr(psm); return(ERROR); } ++ } ++ _SetSsfdcStandby(psm); ++ return(SUCCESS); ++} ++ ++int SsfdcWriteSect(ssfdc_dev *psm, unsigned char *buf, unsigned char *redundant) ++{ ++#if DEBUG_SSFDC_WRITESECT ++ printk(KERN_DEBUG "SsfdcWriteSect() - Zone %d LogBlock %d, PhyBlock %d, Sector %d\n", \ ++ psm->Zone, psm->LogBlock, psm->PhyBlock, psm->Sector); ++#endif ++ _SetSsfdcCmd(psm,SSFDC_WRDATA); ++ _SetSsfdcAddr(psm,EVEN); ++ _WriteSsfdcBuf(psm,buf,redundant); ++ _SetSsfdcCmd(psm,SSFDC_WRITE); ++ if(_CheckSsfdcBusy(psm,BUSY_PROG)) ++ { _ResetSsfdcErr(psm); ++#if DEBUG_SSFDC_WRITESECT ++ printk(KERN_DEBUG "SsfdcWriteSect() e 1\n"); ++#endif ++ return(ERROR); } ++ if((psm->Attribute &MPS)==PS256) { ++ _SetSsfdcCmd(psm,SSFDC_RDSTATUS); ++ if(_CheckSsfdcStatus(psm)) ++ { _SetSsfdcStandby(psm); return(SUCCESS); } ++ _SetSsfdcCmd(psm,SSFDC_WRDATA); ++ _SetSsfdcAddr(psm,ODD); ++ _WriteSsfdcBuf(psm,buf+0x100,redundant+0x08); ++ _SetSsfdcCmd(psm,SSFDC_WRITE); ++ if(_CheckSsfdcBusy(psm,BUSY_PROG)) ++ { _ResetSsfdcErr(psm); ++#if DEBUG_SSFDC_WRITESECT ++ printk(KERN_DEBUG "SsfdcWriteSect() e 2\n"); ++#endif ++ return(ERROR); } ++ } ++ _SetSsfdcStandby(psm); ++ return(SUCCESS); ++} ++ ++int SsfdcEraseBlock(ssfdc_dev *psm) ++{ ++ _SetSsfdcCmd(psm,SSFDC_ERASE1); ++ _SetSsfdcBlock(psm); ++ _SetSsfdcCmd(psm,SSFDC_ERASE2); ++ if(_CheckSsfdcBusy(psm,BUSY_ERASE) || SsfdcCheckStatus(psm)) { ++ _ResetSsfdcErr(psm); ++ return(ERROR); ++ } ++ _SetSsfdcStandby(psm); ++ return(SUCCESS); ++} ++ ++int SsfdcReadRedtData(ssfdc_dev *psm, unsigned char *redundant) ++{ ++#if DEBUG_SSFDC_READREDT ++ printk(KERN_DEBUG " +"); ++#endif ++ _SetSsfdcCmd(psm,SSFDC_READ_REDT); ++ _SetSsfdcAddr(psm,EVEN); ++ if(_CheckSsfdcBusy(psm,BUSY_READ)) ++ { _ResetSsfdcErr(psm); ++#if DEBUG_SSFDC_READREDT ++ printk(KERN_DEBUG " e 1\n"); ++#endif ++ return(ERROR); } ++ _ReadRedtSsfdcBuf(psm, redundant); ++ if(_CheckSsfdcBusy(psm,BUSY_READ)) ++ { _ResetSsfdcErr(psm); ++#if DEBUG_SSFDC_READREDT ++ printk(KERN_DEBUG " e 2\n"); ++#endif ++ return(ERROR); } ++ if((psm->Attribute &MPS)==PS256) { ++ _SetSsfdcCmd(psm,SSFDC_READ_REDT); ++ _SetSsfdcAddr(psm,ODD); ++ if(_CheckSsfdcBusy(psm,BUSY_READ)) ++ { _ResetSsfdcErr(psm); ++#if DEBUG_SSFDC_READREDT ++ printk(KERN_DEBUG " e 3\n"); ++#endif ++ ++ return(ERROR); } ++ _ReadRedtSsfdcBuf(psm, redundant+0x08); ++ if(_CheckSsfdcBusy(psm,BUSY_READ)) ++ { _ResetSsfdcErr(psm); ++#if DEBUG_SSFDC_READREDT ++ printk(KERN_DEBUG " e 4\n"); ++#endif ++ return(ERROR); } ++ } ++ _SetSsfdcStandby(psm); ++#if DEBUG_SSFDC_READREDT ++ printk(KERN_DEBUG " -\n"); ++#endif ++ return(SUCCESS); ++} ++ ++int SsfdcWriteRedtData(ssfdc_dev *psm, unsigned char *redundant) ++{ ++ _SetSsfdcCmd(psm,SSFDC_WRDATA); ++ _SetSsfdcAddr(psm,EVEN); ++ _WriteRedtSsfdcBuf(psm,redundant); ++ _SetSsfdcCmd(psm,SSFDC_WRITE); ++ if(_CheckSsfdcBusy(psm,BUSY_PROG)) ++ { _ResetSsfdcErr(psm); return(ERROR); } ++ if((psm->Attribute &MPS)==PS256) { ++ _SetSsfdcCmd(psm,SSFDC_RDSTATUS); ++ if(_CheckSsfdcStatus(psm)) ++ { _SetSsfdcStandby(psm); return(SUCCESS); } ++ _SetSsfdcCmd(psm,SSFDC_WRDATA); ++ _SetSsfdcAddr(psm,ODD); ++ _WriteRedtSsfdcBuf(psm,redundant+0x08); ++ _SetSsfdcCmd(psm,SSFDC_WRITE); ++ if(_CheckSsfdcBusy(psm,BUSY_PROG)) ++ { _ResetSsfdcErr(psm); return(ERROR); } ++ } ++ _SetSsfdcStandby(psm); ++ return(SUCCESS); ++} ++ ++/*************************************************************************** ++ SmartMedia ID Code Check & Mode Set Subroutine ++ ***************************************************************************/ ++int SetSsfdcModel(ssfdc_dev *psm, unsigned char dcode) ++{ ++ switch(_CheckDevCode(dcode)) { ++ case SSFDC1MB: ++ psm->Model = SSFDC1MB; ++ psm->Attribute = FLASH | AD3CYC | BS16 | PS256; ++ psm->MaxZones = 1; ++ psm->MaxBlocks = 256; ++ psm->MaxLogBlocks = 250; ++ psm->MaxSectors = 8; ++ break; ++ case SSFDC2MB: ++ psm->Model = SSFDC2MB; ++ psm->Attribute = FLASH | AD3CYC | BS16 | PS256; ++ psm->MaxZones = 1; ++ psm->MaxBlocks = 512; ++ psm->MaxLogBlocks = 500; ++ psm->MaxSectors = 8; ++ break; ++ case SSFDC4MB: ++ psm->Model = SSFDC4MB; ++ psm->Attribute = FLASH | AD3CYC | BS16 | PS512; ++ psm->MaxZones = 1; ++ psm->MaxBlocks = 512; ++ psm->MaxLogBlocks = 500; ++ psm->MaxSectors = 16; ++ break; ++ case SSFDC8MB: ++ psm->Model = SSFDC8MB; ++ psm->Attribute = FLASH | AD3CYC | BS16 | PS512; ++ psm->MaxZones = 1; ++ psm->MaxBlocks = 1024; ++ psm->MaxLogBlocks = 1000; ++ psm->MaxSectors = 16; ++ break; ++ case SSFDC16MB: ++ psm->Model = SSFDC16MB; ++ psm->Attribute = FLASH | AD3CYC | BS32 | PS512; ++ psm->MaxZones = 1; ++ psm->MaxBlocks = 1024; ++ psm->MaxLogBlocks = 1000; ++ psm->MaxSectors = 32; ++ break; ++ case SSFDC32MB: ++ psm->Model = SSFDC32MB; ++ psm->Attribute = FLASH | AD3CYC | BS32 | PS512; ++ psm->MaxZones = 2; ++ psm->MaxBlocks = 1024; ++ psm->MaxLogBlocks = 1000; ++ psm->MaxSectors = 32; ++ break; ++ case SSFDC64MB: ++ psm->Model = SSFDC64MB; ++ psm->Attribute = FLASH | AD4CYC | BS32 | PS512; ++ psm->MaxZones = 4; ++ psm->MaxBlocks = 1024; ++ psm->MaxLogBlocks = 1000; ++ psm->MaxSectors = 32; ++ break; ++ case SSFDC128MB: ++ psm->Model = SSFDC128MB; ++ psm->Attribute = FLASH | AD4CYC | BS32 | PS512; ++ psm->MaxZones = 8; ++ psm->MaxBlocks = 1024; ++ psm->MaxLogBlocks = 1000; ++ psm->MaxSectors = 32; ++ break; ++ default: ++ psm->Model = NOSSFDC; ++ return(ERROR); ++ } ++ return(SUCCESS); ++} ++ ++/***************************************************************************/ ++static unsigned char _CheckDevCode(unsigned char dcode) ++{ ++ switch(dcode){ ++ case 0x6E: ++ case 0xE8: ++ case 0xEC: return(SSFDC1MB); /* 8Mbit (1M) NAND */ ++ case 0x64: ++ case 0xEA: return(SSFDC2MB); /* 16Mbit (2M) NAND */ ++ case 0x6B: ++ case 0xE3: ++ case 0xE5: return(SSFDC4MB); /* 32Mbit (4M) NAND */ ++ case 0xE6: return(SSFDC8MB); /* 64Mbit (8M) NAND */ ++ case 0x73: return(SSFDC16MB); /*128Mbit (16M)NAND */ ++ case 0x75: return(SSFDC32MB); /*256Mbit (32M)NAND */ ++ case 0x76: return(SSFDC64MB); /*512Mbit (64M)NAND */ ++ case 0x79: return(SSFDC128MB); /* 1Gbit(128M)NAND */ ++ default: return(ERROR); ++ } ++} ++/*************************************************************************** ++ SmartMedia Power Control Subroutine ++ ***************************************************************************/ ++void CntReset(ssfdc_dev *psm) ++{ ++ _HwSetStandby(psm); ++ _HwVccOff(psm); ++} ++ ++int CntPowerOn(ssfdc_dev *psm) ++{ ++ _HwVccOn(psm); ++ _WaitTimer(TIME_PON); ++ if(_HwChkPower(psm)) ++ return(SUCCESS); ++ _HwVccOff(psm); ++ return(ERROR); ++} ++ ++#if 0 // remove for now ++static void mediachangetest(unsigned long dev_idx) ++{ ++ ssfdc_dev *psm = ssfdc[dev_idx]; ++ unsigned int cardpresent; ++ unsigned long flags; ++ ++ spin_lock_irqsave( &psm->req_queue_lock, flags ); ++ // bjm spin_lock( &psm->req_queue_lock); ++ ++ del_timer(&mediachange_timer); ++ ++ // check current card presence ++ if ( ! (cardpresent = CntPowerOn(psm)) && psm->CardPresent ) { ++ psm->MediaChange = 1; ++ psm->DataBuf_Valid = 0; ++ } ++ psm->CardPresent = cardpresent; ++ ++ // set up to run again... ++ mediachange_timer.function = mediachangetest; ++ mediachange_timer.expires = jiffies + (HZ / 2); ++ mediachange_timer.data = dev_idx; ++ add_timer(&mediachange_timer); ++ ++ spin_unlock_irqrestore( &psm->req_queue_lock, flags ); ++ // bjm spin_unlock( &psm->req_queue_lock); ++} ++#endif ++ ++int CheckCardExist(ssfdc_dev *psm) ++{ ++ char i,j,k; ++ if(! _HwChkStatus(psm)) /***** Not Status Change *****/ ++ if(_HwChkCardIn(psm)) return(SUCCESS); /* Card exist in Slot */ ++ for(i=0,j=0,k=0; i<0x10; i++) { ++ if(_HwChkCardIn(psm)) /***** Status Change *****/ ++ { j++; k=0; } ++ else { j=0; k++; } ++ if(j>3) return(SUCCESS); /* Card exist in Slot */ ++ if(k>3) return(ERROR); /* NO Card exist in Slot */ ++ _WaitTimer(TIME_CDCHK); ++ } ++ return(ERROR); ++} ++ ++int CheckSsfdcWP(ssfdc_dev *psm) ++{ /* ERROR: WP, SUCCESS: Not WP */ ++ char i; ++ for(i=0; i<0x08; i++) { ++ if(_HwChkWP(psm)) ++ return(ERROR); ++ _WaitTimer(TIME_WPCHK); ++ } ++ return(SUCCESS); ++} ++ ++/******************************************/ ++int CheckCISdata(unsigned char *buf,unsigned char *redundant) ++{ ++ static unsigned char cis[]={ 0x01,0x03,0xD9,0x01,0xFF,0x18,0x02,0xDF,0x01,0x20 }; ++ unsigned char ecc1,ecc2,ecc3; ++ unsigned int err; ++ calculate_ecc(ecctable,buf,&ecc1,&ecc2,&ecc3); ++ err=correct_data(buf,redundant+0x0D,ecc1,ecc2,ecc3); ++ if(err==0 || err==1 || err==2) ++ return(StringCmp(buf,cis,10)); ++ buf+=0x100; ++ calculate_ecc(ecctable,buf,&ecc1,&ecc2,&ecc3); ++ err=correct_data(buf,redundant+0x08,ecc1,ecc2,ecc3); ++ if(err==0 || err==1 || err==2) ++ return(StringCmp(buf,cis,10)); ++ return(ERROR); ++} ++ ++int CheckECCdata(unsigned char *buf,unsigned char *redundant) ++{ ++ unsigned char ecc1,ecc2,ecc3; ++ unsigned int err, corr=SUCCESS; ++ calculate_ecc(ecctable,buf,&ecc1,&ecc2,&ecc3); ++ err=correct_data(buf,redundant+0x0D,ecc1,ecc2,ecc3); ++ if(err==1 || err==2) corr=CORRECT; ++ else if(err) return(ERROR); ++ buf+=0x100; ++ calculate_ecc(ecctable,buf,&ecc1,&ecc2,&ecc3); ++ err=correct_data(buf,redundant+0x08,ecc1,ecc2,ecc3); ++ if(err==1 || err==2) corr=CORRECT; ++ else if(err) return(ERROR); ++ return(corr); ++} ++ ++void SetECCdata(unsigned char *buf,unsigned char *redundant) ++{ ++ calculate_ecc(ecctable,buf,redundant+0x0E,redundant+0x0D,redundant+0x0F); ++ buf+=0x100; ++ calculate_ecc(ecctable,buf,redundant+0x09,redundant+0x08,redundant+0x0A); ++} ++ ++/*************************************************************************** ++ Power Control & Media Exist Check Function ++ ***************************************************************************/ ++ ++/*************************************************************************** ++ SmartMedia Read/Write/Erase Function ++ ***************************************************************************/ ++static int MediaReadSector(ssfdc_dev *psm, struct request *req, ++ char * bbuf, long start,int count) ++{ ++ char *buf; ++ int i, err, request_complete, ++ PrevBlock = NO_ASSIGN; ++ int read_status=0; ++ ++ if (ConvMediaAddr(psm, start)) { ++ printk(KERN_ERR "MediaReadSector() - bad address conversion\n"); ++ goto read_exit; ++ } ++ ++ psm->ReqSectorSize = count; ++ psm->BufIndex = 0; ++ psm->RetryCount = 0; ++ ++#if DEBUG_SSFDC_READ ++ printk(KERN_DEBUG "MediaReadSector() - read %d sectors @ %d\n", psm->ReqSectorSize, start); ++#endif ++ while (psm->ReqSectorSize) { ++ // if this PhyBlock is not assigned, fill with dummy data and return ++ // An assigned block results in a card access and readsector schedule... ++ if (psm->PhyBlock == NO_ASSIGN) { ++#if DEBUG_SSFDC_READ ++ printk(KERN_DEBUG "Read NO_ASSIGN block %x\n", psm->PhyBlock); ++#endif ++ buf = bbuf + psm->BufIndex; ++ for(i=0; i<SSFDC_SECTSIZE; i++) ++ *buf++=DUMMY_DATA; ++ } ++ else { ++ // send our command ++ if (PrevBlock != psm->PhyBlock) { ++#if DEBUG_SSFDC_READ ++ printk(KERN_DEBUG "Read block %x\n", psm->PhyBlock); ++#endif ++ PrevBlock = psm->PhyBlock; ++ _SetSsfdcCmd(psm,SSFDC_READ); ++ _SetSsfdcAddr(psm, EVEN); ++ for (i=0; i<5; ++i) { ++ if (!_HwChkBusy(psm)) ++ break; ++ udelay(10); ++ } ++ } ++ ++ ++ if ( _HwChkBusy(psm) ) { ++ ++psm->Sect_rd_errs_ttl; ++#if DEBUG_SSFDC_READ ++ printk(KERN_DEBUG "MediaReadSector() - Hardware busy!\n"); ++#endif ++ } ++ else { ++ ++psm->Sector_reads; ++ _ReadSsfdcBuf( psm, psm->SectBuf, psm->Redundant); ++ ++ // verify the integrity of what was read ++ if (CheckDataStatus(psm->Redundant)) { ++#if DEBUG_SSFDC_READ ++ printk(KERN_DEBUG "Bad Data Status\n"); ++#endif ++ goto error_state; ++ } ++ ++ switch (err = CheckECCdata(psm->SectBuf,psm->Redundant)) ++ { ++ case CORRECT: ++ // Correctable data, fix and copy like SUCCESS ++ SetECCdata(psm->SectBuf,psm->Redundant); ++ case SUCCESS: ++ memcpy(bbuf + psm->BufIndex, psm->SectBuf, SSFDC_SECTSIZE); ++ break; ++ ++ case ERROR: ++error_state: ++ ++psm->Sect_rd_errs_ttl; ++#if DEBUG_SSFDC_READ ++ printk(KERN_DEBUG "readsector() - err == ERROR\n"); ++#endif ++ _ResetSsfdcErr(psm); ++ if (++psm->RetryCount < RD_RETRY_LIMIT) { ++ continue; ++ } ++ break; ++ default: ++ ssfdc_terminate_request( psm, req); ++ break; ++ } ++ ++ } // if ( _HwChkBusy(psm) ) ++ } // if (psm->PhyBlock == NO_ASSIGN) ++ ++ // common req/buffer management code for either unassigned or assigned ++ // block from /dev/ssfdc ++ psm->RetryCount = 0; ++ psm->BufIndex += SSFDC_SECTSIZE; ++ request_complete = (--psm->ReqSectorSize == 0); ++ if (request_complete) { ++ // completed the read, req->buffer now has requested sector(s). ++ // End the request waking sleeping process and reschedule initxfer(). ++#if DEBUG_SSFDC_READ ++ printk(KERN_DEBUG "readsector() - req %x complete\n", req); ++#endif ++ read_status = 1; ++ } ++ else if (IncMediaAddr(psm)) { ++ printk(KERN_DEBUG "readsector() - IncMediaAddr() error.\n"); ++ goto read_exit; ++ } ++ } // while (psm->ReqSectorSize) ++ ++read_exit: ++ psm->XferState = xfer_idle; ++ ++ return read_status; ++ ++} ++ ++/* ++ ReadBlkCopy(ssfdc_dev *psm, unsigned char *buf) ++*/ ++int ReadBlkCopy(ssfdc_dev *psm, unsigned char *buf, char *rd_sector_status) ++{ ++ int err, read_error=0, rw_retry=0; ++ unsigned long PrevBlock=NO_ASSIGN; ++ ++ if ( ! buf ) { ++ printk(KERN_ERR "NULL buffer pointer\n"); ++ return ERROR; ++ } ++ ++ if (psm->PhyBlock == NO_ASSIGN) { ++ memset(buf, 0xff, psm->MaxSectors * SSFDC_SECTSIZE); ++ memset(rd_sector_status, 1, sizeof(char) * MAX_SECTNUM); ++ return SUCCESS; ++ } ++ ++#if 0 ++ printk(KERN_ERR "ReadBlkCopy() - LogBlk %d\n", psm->LogBlock); ++#endif ++ ++ for (psm->Sector = 0; ++ psm->PhyBlock != NO_ASSIGN && psm->Sector < psm->MaxSectors; ++ ++psm->Sector) ++ { ++ if (PrevBlock != psm->PhyBlock) { ++ _SetSsfdcCmd(psm,SSFDC_READ); ++ _SetSsfdcAddr(psm, EVEN); ++ PrevBlock = psm->PhyBlock; ++ _CheckSsfdcBusy(psm, BUSY_ADDR_SET); ++ } ++ ++ if ( _HwChkBusy(psm) ) { ++ printk(KERN_ERR "%s: HW busy during block copy!\n", MAJOR_NAME); ++ goto error_state; ++ } ++ ++ _ReadSsfdcBuf( psm, psm->SectBuf, psm->Redundant); ++ if (CheckDataStatus(psm->Redundant)) { ++ printk("KERN_ERR reading Block %d, sector %d\n", psm->PhyBlock, psm->Sector); ++ goto error_state; ++ } ++ ++ // Attempt to correct ++ switch (err = CheckECCdata(psm->SectBuf,psm->Redundant)) ++ { ++ case CORRECT: ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "ReadBlkCopy() - err == CORRECT\n"); ++#endif ++ SetECCdata(psm->SectBuf,psm->Redundant); ++ case SUCCESS: ++ read_error = 0; ++ rw_retry = 0; ++ memcpy(buf + (psm->Sector * SSFDC_SECTSIZE), psm->SectBuf, SSFDC_SECTSIZE); ++ rd_sector_status[psm->Sector] = 1; ++ read_error = 0; ++ break; ++ ++ case ERROR: ++error_state: ++/*bjm*/ printk("ERR - ECC error reading Block %d, Sector %d\n", psm->PhyBlock,psm->Sector); ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "ReadBlkCopy() - err == ERROR\n"); ++ printk("_ResetSsfdcErr(psm)\n"); ++#endif ++ _ResetSsfdcErr(psm); ++ PrevBlock = NO_ASSIGN; ++ if (++rw_retry < RD_RETRY_LIMIT) { ++ // retry current Sector/loop counter on next loop iteration. ++ --psm->Sector; ++ } ++ else { ++ // set sector data in copy buf to the unassigned value 0xFF ++ // next loop iteration will read next Sector, zero RetryCount ++ // for next sectors read ++ // map bad sector... ++ memset(buf + psm->Sector * SSFDC_SECTSIZE, 0xFF, SSFDC_SECTSIZE); ++ rw_retry = 0; ++ rd_sector_status[psm->Sector] = 0; ++ ++psm->Sect_rd_errs_ttl; ++ read_error = 1; ++ } ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "Unable to read Blk %d Sector %d\n", psm->PhyBlock, psm->Sector); ++#endif ++ break; ++ } ++ } ++ if (!read_error) { ++ if (SsfdcEraseBlock(psm)) { ++ MarkFailPhyOneBlock(psm); ++ ++psm->Bad_blks_erase; ++ } ++ else { ++ ClrBit(psm->Assign[psm->Zone], psm->PhyBlock); ++ } ++ } ++ else { ++ printk("Read error block %d\n", psm->PhyBlock); ++ MarkFailPhyOneBlock(psm); ++ } ++ psm->Sector = 0; ++ return read_error ? ERROR : SUCCESS; ++} ++ ++/* ++ WriteBlock() ++*/ ++int WriteBlock(ssfdc_dev *psm, char *buf, char *wr_sector_status) ++{ ++ int write_error=0, reassign_retry=0; ++ ++ for ( reassign_retry = 0; reassign_retry < REASSIGN_RETRY_LIMIT; ++reassign_retry) ++ { ++ /* ++ assign new write block for write req ++ - set new write address ++ - write buffer to new block ++ */ ++#if DEBUG_SSFDC_WRITE ++ if (AssignWriteBlock(psm,1)) { ++#else ++ if (AssignWriteBlock(psm,0)) { ++#endif ++ write_error = 1; ++ printk(KERN_ERR "sm%dd Unable to assign new write block.\n", psm->sm_minor); ++ memset(wr_sector_status, 1, sizeof(char) * MAX_SECTNUM); ++ // ssfdc_terminate_request(psm, req); ++ return ERROR; ++ } ++ ++#if 0 ++ printk(KERN_ERR "WriteBlock() - LogBlock %d\n", psm->LogBlock); ++#endif ++ ++ for (psm->Sector = 0; psm->Sector < psm->MaxSectors; ++psm->Sector) ++ { ++ memcpy(psm->SectBuf,buf+psm->Sector*SSFDC_SECTSIZE,SSFDC_SECTSIZE); ++ ++ _SetSsfdcCmd(psm,SSFDC_WRDATA); ++ _SetSsfdcAddr(psm,EVEN); ++ ClrRedundantData(psm->Redundant); ++ SetLogBlockAddr(psm,psm->Redundant); ++ SetECCdata(psm->SectBuf,psm->Redundant); ++ _WriteSsfdcBuf(psm,psm->SectBuf,psm->Redundant); ++ ++#if DEBUG_SSFDC_WRITE ++ printk("%d ", psm->Sector); ++#endif ++ ++ _SetSsfdcCmd(psm, SSFDC_WRITE); ++ if ( ! _CheckSsfdcBusy(psm, BUSY_PROG) && !SsfdcCheckStatus(psm)) { ++#if DEBUG_SSFDC_WRITE ++ printk("\nMulti-Sector write OK!\n"); ++#endif ++ _SetSsfdcStandby(psm); ++ // mark status a success ++ wr_sector_status[psm->Sector] = 1; ++ ++#if 0 // bjm removed ++ { unsigned char parbuf[SSFDC_SECTSIZE]; ++ unsigned char redtpar[REDTSIZE]; ++ ++ _SetSsfdcCmd(psm,SSFDC_READ); ++ _SetSsfdcAddr(psm, EVEN); ++ ++ udelay(30); ++ if ( _HwChkBusy(psm) ) { ++ _ResetSsfdcErr(psm); ++ printk("paranoid read failure\n"); ++ } ++ else { ++ _ReadSsfdcBuf(psm, parbuf, redtpar); ++ if (CheckDataStatus(redtpar)) { ++ printk("paranoid read, bad data status\n"); ++ } ++ else { ++ switch( err = CheckECCdata(parbuf,redtpar)) ++ { ++ case CORRECT: ++ printk("paranoid correctable\n"); ++ SetECCdata(parbuf,redtpar); ++ case SUCCESS: ++ if (memcmp(parbuf,psm->SectBuf, SSFDC_SECTSIZE)) ++ write_error = 1; ++ else ++ write_error = 0; ++ break; ++ case ERROR: ++ MarkFailPhyOneBlock(psm); ++ write_error=1; ++ break; ++ } ++ } ++ } ++ } // bjm end of paranoid read back test... ++#endif ++ } ++ else { ++#if DEBUG_SSFDC_WRITE ++ printk("\nMulti-Sector write FAILED!\n"); ++#endif ++ // mark status a failure ++ wr_sector_status[psm->Sector] = 0; ++ _ResetSsfdcErr(psm); ++ write_error = 1; ++ break; ++ } // for (psm->Sector ...) ++ if (write_error) ++ break; ++ } ++ if ( ! write_error ) { ++ psm->Log2Phy[psm->Zone][psm->LogBlock] = psm->WriteBlock; ++ break; ++ } ++ } ++ psm->Sector = 0; ++ return write_error ? ERROR : SUCCESS; ++} ++ ++/* ++ MediaWriteSector() ++ ++*/ ++static int MediaWriteSector(ssfdc_dev *psm, struct request *req, char * bbuf, long start, int count) ++{ ++ int write_error=0, unwritten_block=0; ++ char *buf; ++ unsigned long curr_sector, blksize, PrevBlock; ++ unsigned long writebuf_index, readbio_index; ++ int i, sector, rw_retry=0; ++ int sectors_in_block; ++ char rd_sector_status[MAX_SECTNUM]; ++ char wr_sector_status[MAX_SECTNUM]; ++ ++ // optimized write, new vars ++ int bio_endios=0; ++ int bio_bvecs=0; ++ struct bio *bio; ++ // optimized for write ++ ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "+MediaWriteSector()\n"); ++#endif ++ ++ if (!count) { ++ printk("MediaWriteSector() count == 0!\n"); ++ ssfdc_end_request(psm, req, 0); ++ return 1; ++ } ++ ++ if (CheckMediaWP(psm)) { ++ printk(KERN_DEBUG "%s: write protected media.\n", MAJOR_NAME); ++ ssfdc_terminate_request( psm, req); ++ psm->XferState = xfer_idle; ++ return -EIO; ++ } ++ ++ // allocate block size buffer ++ blksize = psm->MaxSectors * SSFDC_SECTSIZE; ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "%s: Allocate %d sized block.\n", MAJOR_NAME, blksize); ++#endif ++ if ((buf = kmalloc(blksize, GFP_ATOMIC)) == NULL) { ++ printk(KERN_ERR "%s: Null buffer allocated!\n", MAJOR_NAME); ++ ssfdc_terminate_request( psm, req); ++ goto the_exit; ++ } ++ ++ /* ++ Loop to handle a request at the curr_sector of count sectors. ++ The write operation my encompas more than one phys block. ++ */ ++ curr_sector = start; ++ sectors_in_block = 0; ++ // zero out our sector R/W status array ++ memset(rd_sector_status, 1, sizeof(char) * MAX_SECTNUM); ++ memset(wr_sector_status, 1, sizeof(char) * MAX_SECTNUM); ++ ++ // rangecheck this sector within the device. ++ if (ConvMediaAddr(psm, curr_sector)) { ++ ssfdc_terminate_request(psm, req); ++ printk(KERN_ERR "WriteSector: ConvMediaAddr() error\n"); ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "-MediaWriteSector()\n"); ++#endif ++ return 0; ++ } ++ ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "MediaWriteSector() Zone %d, LogBlock %d PhyBlock %d, Sector %d\n", ++ psm->Zone,psm->LogBlock, psm->PhyBlock,psm->Sector); ++#endif ++ ++ PrevBlock = NO_ASSIGN; ++ rw_retry = 0; ++ ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "Copy Zone %d, Phys %d\n", psm->Zone, psm->PhyBlock); ++#endif ++ // As a technique for wear leveling, a write to the SM results in the contents ++ // of the block to be copied into a blocksize buffer, the write data of the ++ // write request being overlayed onto the buffer containing the copied block, ++ // a new logical to physical mapping defined, and the buffer written into this ++ // newly mapped (logically) physical block. ++ ++ // read the physical block into the buffer. ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "ReadBlock = %d LogBlock %d\n", psm->PhyBlock, psm->LogBlock); ++#endif ++ if (ReadBlkCopy(psm, buf, rd_sector_status) != SUCCESS) { ++ printk(KERN_ERR "Unable to read block.\n"); ++ goto the_exit; ++ } ++ ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "Read from pending write request "); ++#endif ++ ++#if 0 ++ int bio_idx=0; ++#endif ++ rq_for_each_bio(bio, req) { ++ struct bio_vec *bvec; ++ int i, break_flag=0; ++#if 0 ++ int segment_idx; ++ printk(KERN_ERR "bio %d\n", bio_idx++); ++ ++ segment_idx = 0; ++#endif ++ // bio_bvecs = 0; ++ bio_for_each_segment(bvec, bio, i) { ++#if 0 ++ printk(KERN_ERR "segment %d\n", segment_idx++); ++#endif ++ // The conditions... ++ // bio fits within block ++ if (WriteReqInCurrBlk(psm,curr_sector + (bvec->bv_len >> 9) - 1,§or) ++ && WriteReqInCurrBlk(psm,curr_sector, §or)) ++ { ++#if 0 ++ printk(KERN_ERR "LogBlk %d: write at %d, %d sectors\n", ++ psm->LogBlock, curr_sector % psm->MaxSectors, bio_cur_sectors(bio)); ++#endif ++ // write bio into copied block ++ ++bio_bvecs; ++ writebuf_index = sector * SSFDC_SECTSIZE; ++#if 0 ++ printk(KERN_ERR "memcpy buf at 0x%x, 0x%x bytes\n", ++ writebuf_index, bvec->bv_len); ++#endif ++ memcpy(buf + writebuf_index, ++ page_address(bvec->bv_page) + bvec->bv_offset, bvec->bv_len); ++ unwritten_block = 1; ++ curr_sector += bvec->bv_len >> 9; ++ } ++ // bio fits partially within block ++ else if (WriteReqInCurrBlk(psm,curr_sector, §or)) ++ { ++ // put portion of bio in block ++ ++bio_bvecs; ++ writebuf_index = sector * SSFDC_SECTSIZE; ++ sectors_in_block = psm->MaxSectors - sector; ++ readbio_index = sectors_in_block * SSFDC_SECTSIZE; ++#if 0 ++ printk(KERN_ERR "memcpy buf at %x, %x bytes\n", ++ writebuf_index, readbio_index); ++#endif ++ memcpy(buf + writebuf_index, ++ page_address(bvec->bv_page) + bvec->bv_offset, readbio_index); ++#if 0 ++ printk(KERN_ERR "LogBlk %d: partial-write at %d, %d sectors first\n", ++ psm->LogBlock, curr_sector % psm->MaxSectors, sectors_in_block); ++#endif ++ // write block ++ unwritten_block = 0; ++ if (WriteBlock(psm, buf, wr_sector_status) != SUCCESS) { ++ printk(KERN_ERR "Unable to write block %d\n", psm->LogBlock); ++ // write_error - writing this block failed ++ break_flag = 1; ++ break; ++ } ++ // incr addr & read next block, ++ curr_sector += sectors_in_block; ++ if (ConvMediaAddr(psm,curr_sector) != SUCCESS) { ++ printk(KERN_ERR "MediaWriteSector() IncMediaAddr() error!\n"); ++ // write_error - address into next block is bogus ++ write_error = 1; ++ break_flag = 1; ++ break; ++ } ++ if (ReadBlkCopy(psm, buf, rd_sector_status) != SUCCESS) { ++ printk(KERN_ERR "MediaWriteSector() ReadBlkCopy() error!\n"); ++ // write error - next block read error ++ write_error = 1; ++ break_flag =1; ++ break; ++ } ++ // write remainder of bio into block ++#if 0 ++ printk(KERN_ERR "LogBlk %d: partial-write at %d, %d sectors, second write\n", ++ psm->LogBlock, curr_sector % psm->MaxSectors, (bvec->bv_len >> 9) - sectors_in_block); ++#endif ++#if 0 ++ printk(KERN_ERR "memcpy buf at 0x%x, from bio 0x%x, for 0x%x bytes\n", ++ 0, readbio_index, ((bvec->bv_len >> 9) - sectors_in_block) * SSFDC_SECTSIZE); ++#endif ++ memcpy(buf, (page_address(bvec->bv_page) + bvec->bv_offset) + readbio_index, ++ ((bvec->bv_len >> 9) - sectors_in_block) * SSFDC_SECTSIZE); ++ writebuf_index = ((bvec->bv_len >> 9) - sectors_in_block) * SSFDC_SECTSIZE; ++ unwritten_block = 1; ++ curr_sector += (bvec->bv_len >> 9) - sectors_in_block; ++ } ++ // bio is not in block at all. coplete unwritten block and exit loop. ++ else { ++ // write current block ++#if 0 ++ printk(KERN_ERR "bio no longer in block\n"); ++#endif ++ if (unwritten_block) { ++ if (WriteBlock(psm, buf, wr_sector_status) != SUCCESS) { ++ printk(KERN_ERR "MediaWriteSector() WriteBlock() error!\n"); ++ // write_error ++ } ++ unwritten_block = 0; ++ } ++ break_flag = 1; ++ break; ++ } ++ } ++ // bjm if (bio_bvecs) +bio_bvecs; ++ ++ if (break_flag) ++ break; ++ } ++ ++ if (unwritten_block) { ++ if (WriteBlock(psm, buf, wr_sector_status) != SUCCESS) { ++ printk(KERN_ERR "MediaWriteSector() WriteBlock() error!\n"); ++ write_error = 1; ++ } ++ } ++ ++ if (!(bio_endios=bio_bvecs)) { ++ if (static_ssfdc_debug) ++ printk("no bios from request!\n"); ++ ++bio_endios; ++ write_error = 0; ++ } ++ ++the_exit: ++ // log sector status for the copied/unmodified Sectors and flag any that have cpy errors ++ for (sector = 0; sector < psm->MaxSectors; ++sector) { ++ if ( ! rd_sector_status[sector] ) ++ printk(KERN_ERR "%s: READ sector %d invalid for block %d!\n", \ ++ MAJOR_NAME, sector, psm->LogBlock); ++ if ( ! wr_sector_status[sector]) ++ printk(KERN_ERR "%s: WRITTEN sector %d invalid for block %d!\n", \ ++ MAJOR_NAME, sector, psm->LogBlock); ++ } ++ ++ // free our prev allocated block for copy... ++ if (buf) ++ kfree(buf); ++ ++ psm->XferState = xfer_idle; ++ ++#if DEBUG_SSFDC_WRITE ++ printk(KERN_DEBUG "-MediaWriteSector()\n"); ++#endif ++ if (static_ssfdc_debug) ++ printk("end_request(%d) ", ! write_error); ++ for (i = 0; i < bio_endios; ++i) { ++ if (static_ssfdc_debug) ++ printk("%d ", i); ++ ssfdc_end_request(psm, req, ! write_error); ++ } ++ if (static_ssfdc_debug) ++ printk("\n"); ++ ++ return ! write_error; ++ ++} ++ ++ ++/*************************************************************************** ++ SmartMedia Logical Format Subroutine ++ ***************************************************************************/ ++int CheckLogCHS(ssfdc_dev *psm, unsigned int *c,unsigned char *h,unsigned char *s) ++{ ++ switch(psm->Model) { ++ case SSFDC1MB: *c=125; *h= 4; *s= 4; break; ++ case SSFDC2MB: *c=125; *h= 4; *s= 8; break; ++ case SSFDC4MB: *c=250; *h= 4; *s= 8; break; ++ case SSFDC8MB: *c=250; *h= 4; *s=16; break; ++ case SSFDC16MB: *c=500; *h= 4; *s=16; break; ++ case SSFDC32MB: *c=500; *h= 8; *s=16; break; ++ case SSFDC64MB: *c=500; *h= 8; *s=32; break; ++ case SSFDC128MB: *c=500; *h=16; *s=32; break; ++ default: ++ *c= 0; *h= 0; *s= 0; ++ psm->ErrCode=ERR_NoSmartMedia; ++ return(ERROR); ++ } ++ return(SUCCESS); ++} ++/*************************************************************************** ++ Power Control & Media Exist Check Subroutine ++ ***************************************************************************/ ++ ++int CheckMediaWP(ssfdc_dev *psm) ++{ ++ if(psm->Attribute &MWP) ++ { psm->ErrCode=ERR_WrtProtect; return(ERROR); } ++ return(SUCCESS); ++} ++ ++/*************************************************************************** ++ SmartMedia Physical Address Control Subroutine ++ ***************************************************************************/ ++int ConvMediaAddr(ssfdc_dev *psm, long addr) ++{ ++ long temp; ++ temp =addr/psm->MaxSectors; ++ psm->Sector =addr%psm->MaxSectors; ++ psm->LogBlock=temp%psm->MaxLogBlocks; ++ psm->Zone =temp/psm->MaxLogBlocks; ++ if(psm->Zone<psm->MaxZones) { ++ ClrRedundantData(psm->Redundant); ++ SetLogBlockAddr(psm,psm->Redundant); ++ psm->PhyBlock=psm->Log2Phy[psm->Zone][psm->LogBlock]; ++#if DEBUG_SSFDC_ASSIGNRELEASE ++ printk(KERN_DEBUG "ConvMediaAddr() LogBlock %d -> PhyBlock %d\n", ++ psm->LogBlock, psm->PhyBlock); ++#endif ++ return(SUCCESS); ++ } ++ psm->ErrCode=ERR_OutOfLBA; ++ return(ERROR); ++} ++ ++int IncMediaAddr(ssfdc_dev *psm) ++{ ++ if(++psm->Sector<psm->MaxSectors) ++ return(SUCCESS); ++ psm->Sector=0; ++ if(++psm->LogBlock<psm->MaxLogBlocks) { ++ ClrRedundantData(psm->Redundant); ++ SetLogBlockAddr(psm,psm->Redundant); ++ psm->PhyBlock=psm->Log2Phy[psm->Zone][psm->LogBlock]; ++#if DEBUG_SSFDC_ASSIGNRELEASE ++ printk(KERN_DEBUG "IncMediaAddr() PhyBlock %d <- LogBlock %d\n", ++ psm->PhyBlock, psm->LogBlock); ++#endif ++ return(SUCCESS); ++ } ++ psm->LogBlock=0; ++ if(++psm->Zone<psm->MaxZones) { ++ ClrRedundantData(psm->Redundant); ++ SetLogBlockAddr(psm,psm->Redundant); ++ psm->PhyBlock=psm->Log2Phy[psm->Zone][psm->LogBlock]; ++#if DEBUG_SSFDC_ASSIGNRELEASE ++ printk(KERN_DEBUG "IncMediaAddr() PhyBlock %d <- LogBlock %d\n", ++ psm->PhyBlock, psm->LogBlock); ++#endif ++ return(SUCCESS); ++ } ++ psm->Zone=0; ++ psm->ErrCode=ERR_OutOfLBA; ++ return(ERROR); ++} ++ ++/***************************************************************************/ ++ ++ ++static int WriteReqInCurrBlk(ssfdc_dev *psm, long sector, int *blksector) ++{ ++ long temp; ++ unsigned char Zone; /* Zone Number */ ++ unsigned int LogBlock; /* Logical Block Number of Zone */ ++ ++ if (!psm) ++ return 0; ++ ++ temp = sector / psm->MaxSectors; ++ *blksector = sector % psm->MaxSectors; ++ LogBlock = temp % psm->MaxLogBlocks; ++ Zone = temp / psm->MaxLogBlocks; ++ ++ return (psm->LogBlock == LogBlock && psm->Zone == Zone); ++} ++ ++/*************************************************************************** ++ SmartMedia Read/Write Subroutine with Retry ++ ***************************************************************************/ ++ ++/*************************************************************************** ++ SmartMedia Physical Block Assign/Release Subroutine ++ ***************************************************************************/ ++int AssignWriteBlock(ssfdc_dev *psm, int verbose_flag) ++{ ++ psm->ReadBlock=psm->PhyBlock; ++#if DEBUG_SSFDC_WRITE ++ int Zonesave=psm->Zone, ZoneIndex; ++#endif ++ ++#if DEBUG_SSFDC_WRITE ++ if (verbose_flag) { ++ printk("AssignWriteBlock() verbose mode. psm->Zone %d\n",psm->Zone); ++ for (psm->Zone = 0; psm->Zone < psm->MaxZones; psm->Zone++) { ++ int free_blk=0; ++ printk("\tZone %d, AssignStart %d and ", psm->Zone, psm->AssignStart[psm->Zone]); ++ for (psm->WriteBlock=0; psm->WriteBlock < psm->MaxLogBlocks; psm->WriteBlock++) ++ if (! ChkBit(psm->Assign[psm->Zone],psm->WriteBlock)) ++free_blk; ++ printk("%d free blocks.\n", free_blk); ++ } ++ psm->Zone = Zonesave; ++ } ++#endif ++ for(psm->WriteBlock=psm->AssignStart[psm->Zone]; psm->WriteBlock<psm->MaxBlocks; psm->WriteBlock++) ++ if(! ChkBit(psm->Assign[psm->Zone],psm->WriteBlock)) { ++ SetBit(psm->Assign[psm->Zone],psm->WriteBlock); ++ psm->AssignStart[psm->Zone]=psm->WriteBlock+1; ++ psm->PhyBlock=psm->WriteBlock; ++ psm->SectCopyMode=REQ_ERASE; ++#if DEBUG_SSFDC_ASSIGNRELEASE ++ printk(KERN_DEBUG "AssignWriteBlock() - WriteBlock %d ReadBlock %d LogBlock %d\n", ++ psm->WriteBlock, psm->ReadBlock, psm->LogBlock); ++#endif ++ return(SUCCESS); ++ } ++ for(psm->WriteBlock=0; psm->WriteBlock<psm->AssignStart[psm->Zone]; psm->WriteBlock++) ++ if(! ChkBit(psm->Assign[psm->Zone],psm->WriteBlock)) { ++ SetBit(psm->Assign[psm->Zone],psm->WriteBlock); ++ psm->AssignStart[psm->Zone]=psm->WriteBlock+1; ++ psm->PhyBlock=psm->WriteBlock; ++ psm->SectCopyMode=REQ_ERASE; ++#if DEBUG_SSFDC_ASSIGNRELEASE ++ printk(KERN_DEBUG "AssignWriteBlock() - WriteBlock %d PhyBlock %d LogBlock %d\n", ++ psm->WriteBlock, psm->PhyBlock, psm->LogBlock); ++#endif ++ return(SUCCESS); ++ } ++ psm->WriteBlock=NO_ASSIGN; ++ psm->ErrCode=ERR_WriteFault; ++ return(ERROR); ++} ++ ++/*************************************************************************** ++ SmartMedia Physical Format Check Local Subroutine ++ ***************************************************************************/ ++static int SetPhyFmtValue(ssfdc_dev *psm) ++{ ++ unsigned int idcode; ++ SsfdcReadID(psm, &idcode); ++ if(SetSsfdcModel(psm,(unsigned char)idcode)) ++ return(ERROR); ++ if(CheckSsfdcWP(psm)) ++ psm->Attribute|=WP; ++ return(SUCCESS); ++} ++ ++static int SearchCIS(ssfdc_dev *psm, unsigned int *pcis) ++{ ++ psm->Zone=0; psm->Sector=0; ++ for(psm->PhyBlock=0; psm->PhyBlock<(psm->MaxBlocks-psm->MaxLogBlocks-1); psm->PhyBlock++) { ++ if(SsfdcReadRedtData(psm, psm->Redundant)) ++ { SsfdcReset(psm); return(ERROR); } ++ if(! CheckFailBlock(psm->Redundant)) { ++ if(CheckCisBlock(psm->Redundant)) ++ { SsfdcReset(psm); return(ERROR); } ++ break; ++ } ++ } ++ while(psm->Sector<psm->MaxSectors) { ++ if(psm->Sector) ++ if(SsfdcReadRedtData(psm, psm->Redundant)) ++ { SsfdcReset(psm); return(ERROR); } ++ if(! CheckDataStatus(psm->Redundant)) { ++ if(SsfdcReadSect(psm,psm->WorkBuf,psm->Redundant)) ++ { SsfdcReset(psm); return(ERROR); } ++ if(CheckCISdata(psm->WorkBuf,psm->Redundant)) ++ { SsfdcReset(psm); return(ERROR); } ++ *pcis=psm->PhyBlock; ++ SsfdcReset(psm); ++ return(SUCCESS); ++ } ++ psm->Sector++; ++ } ++ SsfdcReset(psm); ++ return(ERROR); ++} ++ ++/***************************************************************************/ ++static int MakeLogTable(ssfdc_dev *psm, unsigned int start) ++{ ++ unsigned int block; ++ unsigned int blk_total=0, blk_blank=0, blk_nologaddr=0, ++ blk_fail=0, blk_assigned=0; ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "MakeLogTable()\n"); ++#endif ++ psm->DataBuf_Valid = 1; ++ psm->Sector=0; ++ for(psm->Zone=0; psm->Zone<psm->MaxZones; psm->Zone++) { ++ /* set all LogBlocks to NO_ASSIGN */ ++ for(psm->LogBlock=0; psm->LogBlock<psm->MaxLogBlocks; psm->LogBlock++) ++ psm->Log2Phy[psm->Zone][psm->LogBlock]=NO_ASSIGN; ++ /* for all Assigns[zone][PhyBlock] = 0x00 */ ++ for(psm->PhyBlock=0; psm->PhyBlock<(MAX_BLOCKNUM/8); psm->PhyBlock++) ++ psm->Assign[psm->Zone][psm->PhyBlock]=0x00; ++ /*******************************************************************/ ++ for(psm->PhyBlock=0; psm->PhyBlock<psm->MaxBlocks; psm->PhyBlock++) { ++ if((! psm->Zone) && (psm->PhyBlock<start)) { ++ SetBit(psm->Assign[psm->Zone],psm->PhyBlock); ++ continue; ++ } ++ ++blk_total; ++ if(SsfdcReadRedtData(psm,psm->Redundant)) { ++ SsfdcReset(psm); ++#if 0 ++ printk(KERN_ERR "error 1 PhyBlock %d\n", psm->PhyBlock); ++#endif ++ return(ERROR); ++ } ++ if(! CheckDataBlank(psm->Redundant)) { ++ ++blk_blank; ++ continue; ++ } ++ SetBit(psm->Assign[psm->Zone],psm->PhyBlock); ++ if(CheckFailBlock(psm->Redundant)) { ++#if 0 ++ printk("Zone %d, Block %d failed\n", psm->Zone, psm->PhyBlock); ++#endif ++ ++blk_fail; ++ continue; ++ } ++ if(LoadLogBlockAddr(psm)) { ++ ++blk_nologaddr; ++ continue; ++ } ++ if(psm->LogBlock>=psm->MaxLogBlocks) ++ continue; ++ ++blk_assigned; ++ if(psm->Log2Phy[psm->Zone][psm->LogBlock]==NO_ASSIGN) { ++#if DEBUG_SSFDC_ASSIGNRELEASE ++ if (psm->LogBlock == 0) ++ printk(KERN_DEBUG "MakeLogTable() LogBlock %d = PhyBlock %d\n", ++ psm->LogBlock, psm->PhyBlock); ++#endif ++ psm->Log2Phy[psm->Zone][psm->LogBlock]=psm->PhyBlock; ++ continue; ++ } ++ psm->Sector=psm->MaxSectors-1; ++ if(SsfdcReadRedtData(psm,psm->Redundant)) { ++ SsfdcReset(psm); ++#if 0 ++ printk(KERN_ERR "error 2\n"); ++#endif ++ return(ERROR); ++ } ++ psm->Sector=0; ++ block=psm->LogBlock; ++ if(! LoadLogBlockAddr(psm)) ++ if(psm->LogBlock==block) { ++#ifdef L2P_ERR_ERASE /***************************************************/ ++ block=psm->Log2Phy[psm->Zone][psm->LogBlock]; ++ psm->Log2Phy[psm->Zone][psm->LogBlock]=psm->PhyBlock; ++ psm->PhyBlock=block; ++ if(!(psm->Attribute &MWP)) { ++ SsfdcReset(psm); ++ if(SsfdcEraseBlock(psm)) { ++ printk(KERN_ERR "error 3\n"); ++ return(ERROR); ++ } ++ if(SsfdcCheckStatus(psm)) { ++ if(MarkFailPhyOneBlock(psm)) { ++ printk(KERN_ERR "error 4\n"); ++ return(ERROR); ++ } ++ } ++ else ClrBit(psm->Assign[psm->Zone],psm->PhyBlock); ++ } ++ psm->PhyBlock=psm->Log2Phy[psm->Zone][psm->LogBlock]; ++#else /*******************************************************************/ ++ psm->Log2Phy[psm->Zone][psm->LogBlock]=psm->PhyBlock; ++#endif /*******************************************************************/ ++ continue; ++ } ++#ifdef L2P_ERR_ERASE /***************************************************/ ++ if(!(psm->Attribute &MWP)) { ++ SsfdcReset(psm); ++ if(SsfdcEraseBlock(psm)) { ++ printk(KERN_ERR "error 5\n"); ++ return(ERROR); ++ } ++ if(SsfdcCheckStatus(psm)) { ++ if(MarkFailPhyOneBlock(psm)) { ++ printk(KERN_ERR "error 6\n"); ++ return(ERROR); ++ } ++ } ++ else ClrBit(psm->Assign[psm->Zone],psm->PhyBlock); ++ } ++#endif /*******************************************************************/ ++ } ++ psm->AssignStart[psm->Zone]=0; ++ } ++ SsfdcReset(psm); ++#if 0 ++ printk("MakeLogTable()\n"); ++ printk("\t%d failed\n", blk_fail); ++ printk("\t%d blank\n", blk_blank); ++ printk("\t%d assigned\n", blk_assigned); ++ printk("\t%d no logical addr\n", blk_nologaddr); ++ printk("\n\t%d total\n", blk_total); ++ printk("\t%d sum total\n", blk_fail + blk_blank + blk_assigned + blk_nologaddr); ++#endif ++ return(SUCCESS); ++} ++ ++/***************************************************************************/ ++static int MarkFailPhyOneBlock(ssfdc_dev *psm) ++{ ++ unsigned char sect; ++ sect=psm->Sector; ++ SetFailBlock(psm->WorkRedund); ++ SsfdcWriteRedtMode(psm); ++ for(psm->Sector=0; psm->Sector<psm->MaxSectors; psm->Sector++) ++ if(SsfdcWriteRedtData(psm,psm->WorkRedund)) { ++ SsfdcReset(psm); ++ psm->Sector=sect; ++ psm->ErrCode=ERR_HwError; ++ return(ERROR); ++ } /* NO Status Check */ ++ SsfdcReset(psm); ++ psm->Sector=sect; ++ return(SUCCESS); ++} ++ ++/*************************************************************************** ++ SmartMedia Control subroutine ++ Rev 0.30('98-06-30) ***** BETA RELEASE ***** ++ Copyright (c) 1997-98, Toshiba Corporation. All rights reserved. ++ ***************************************************************************/ ++ ++ ++/* Linux Driver Modifications */ ++/* ++dump_ssfdc_state ++*/ ++#if DEBUG_SSFDC ++void dump_ssfdc_state(ssfdc_dev * psm) ++{ ++#if DEBUG_SSFDC_STRUCT ++ // misc structure dump information ++ printk(KERN_DEBUG "psm->\n"); ++ /* unsigned long */ printk(KERN_DEBUG "\t address %x\n", psm->address); ++ /* int */ printk(KERN_DEBUG "\t sm_minor %d\n",psm->sm_minor); ++ /* struct dentry printk(KERN_DEBUG "\t *sm_dentry %x\n",psm->sm_dentry );*/ ++ /* kdev_t */ printk(KERN_DEBUG "\t sm_device %x\n",psm->sm_device); ++ /* int */ printk(KERN_DEBUG "\t sm_flags %x\n",psm->sm_flags); ++ /* unsigned int */ printk(KERN_DEBUG "\t UseCount %d\n",psm->UseCount); ++ /* unsigned int */ printk(KERN_DEBUG "\t ErrCode %d\n",psm->ErrCode); ++ /* unsigned int */ printk(KERN_DEBUG "\t MediaChange %d\n",psm->MediaChange); ++ /* unsigned int */ printk(KERN_DEBUG "\t SectCopyMode %d\n",psm->SectCopyMode); ++ /* unsigned int */ printk(KERN_DEBUG "\t HostCyl %d\n",psm->HostCyl ); ++ /* unsigned char */ printk(KERN_DEBUG "\t HostHead %d\n",psm->HostHead ); ++ /* unsigned char */ printk(KERN_DEBUG "\t HostSect %d\n",psm->HostSect ); ++ /* unsigned int */ printk(KERN_DEBUG "\t ReadBlock %d\n",psm->ReadBlock ); ++ /* unsigned int */ printk(KERN_DEBUG "\t WriteBlock %d\n",psm->WriteBlock ); ++ ++ /* Card attributes */ ++ /* unsigned char */ printk(KERN_DEBUG "\t Model %d\n",psm->Model ); ++ /* unsigned char */ printk(KERN_DEBUG "\t Attribute %x\n",psm->Attribute ); ++ /* unsigned char */ printk(KERN_DEBUG "\t MaxZones %d\n",psm->MaxZones ); ++ /* unsigned char */ printk(KERN_DEBUG "\t MaxSectors %d\n",psm->MaxSectors ); ++ /* unsigned int */ printk(KERN_DEBUG "\t MaxBlocks %d\n",psm->MaxBlocks ); ++ /* unsigned int */ printk(KERN_DEBUG "\t MaxLogBlocks %d\n",psm->MaxLogBlocks ); ++ /* unsigned char */ printk(KERN_DEBUG "\t Zone %d\n",psm->Zone ); ++ /* unsigned char */ printk(KERN_DEBUG "\t Sector %d\n",psm->Sector ); ++ /* unsigned int */ printk(KERN_DEBUG "\t PhyBlock %d\n",psm->PhyBlock ); ++ /* unsigned int */ printk(KERN_DEBUG "\t LogBlock %d\n",psm->LogBlock ); ++#endif ++} ++#endif ++ ++typedef struct { ++ int sm_error; ++ int lnx_error; ++ char *smerrstr; ++} errmap; ++ ++static errmap error_map_table [] = { ++ { NO_ERROR, 0x0000, ""}, ++ { ERR_WriteFault, EIO, "Peripheral Device Write Fault "}, ++ { ERR_HwError, EIO, "Hardware Error"}, ++ { ERR_DataStatus, EIO, "DataStatus Error"}, ++ { ERR_EccReadErr, EIO, "Unrecovered Read Error" }, ++ { ERR_CorReadErr, EIO, "Recovered Read Data with ECC" }, ++ { ERR_OutOfLBA, EIO, "Illegal Logical Block Address" }, ++ { ERR_WrtProtect, EROFS, "Write Protected" }, ++ { ERR_ChangedMedia, EIO, "Medium Changed" }, ++ { ERR_UnknownMedia, EIO, "Incompatible Medium Installed" }, ++ { ERR_IllegalFmt, EIO, "Medium Format Corrupted" }, ++ { ERR_NoSmartMedia, EIO, "Medium Not Present" } ++}; ++ ++static int ssfdc_maperror(int ssfdc_error) { ++ int loopus=0; ++ ++ if (!ssfdc_error) return 0; ++ ++ do { ++ if (error_map_table[loopus].sm_error == ssfdc_error) { ++ printk("%s\n", error_map_table[loopus].smerrstr); ++ return -error_map_table[loopus].lnx_error; ++ } ++ } while (++loopus < (sizeof(error_map_table) / (sizeof(errmap)))); ++ ++ printk(KERN_ERR "%s: error code %d is not mapped, EIO\n", MAJOR_NAME, ssfdc_error); ++ return -EIO; ++} ++ ++static int ssfdc_thread(void * arg) ++{ ++ ssfdc_dev *psm = arg; ++ unsigned long flags; ++ ++ daemonize("sm%dd",psm->sm_minor); ++ ++ spin_lock_irqsave(¤t->sighand->siglock,flags); // _irq ++ sigfillset(¤t->blocked); ++ recalc_sigpending(); ++ spin_unlock_irqrestore(¤t->sighand->siglock,flags); // _irq ++ ++ while (!psm->exiting) { ++ if ( ssfdc_get_request(psm) ) ++ initxfer(psm->sm_minor); ++ ++ spin_lock_irqsave(&psm->req_queue_lock,flags); // _irq ++ // bjm spin_lock(&psm->req_queue_lock); // _irq ++ psm->waiting = 0; ++ spin_unlock_irqrestore(&psm->req_queue_lock,flags); // _irq ++ // bjm spin_unlock(&psm->req_queue_lock); // _irq ++ if (wait_event_interruptible(psm->thread_wq,ssfdc_get_request(psm))) ++ printk("ssfdc_thread() interrupted\n"); ++ // wait_event(psm->thread_wq,ssfdc_get_request(psm)); ++ spin_lock_irqsave(&psm->req_queue_lock,flags); // _irq ++ // bjm spin_lock(&psm->req_queue_lock); // _irq ++ psm->waiting = 1; ++ spin_unlock_irqrestore(&psm->req_queue_lock,flags); // _irq ++ // bjm spin_unlock(&psm->req_queue_lock); // _irq ++ } ++ ++ printk("ssfdcd Exiting!\n"); ++ ++ complete_and_exit(&psm->thread_dead, 0); ++ ++} ++ ++/* ++ssfdc_init_device(ssfdc_dev *, int minor, unsigned long baseaddr, int removable) ++ reset and initialize the ssfdc_dev structure ++*/ ++static int ssfdc_init_device(ssfdc_dev *psm, int minor, unsigned long baseaddr) ++{ ++ int pid; ++ ++ // Establish ssfdc state ++ psm->XferState = xfer_idle; ++ psm->ErrCode = NO_ERROR; ++ psm->MediaChange = SUCCESS; ++ psm->SectCopyMode = COMPLETED; ++ psm->UseCount = 0; ++ psm->DataBuf_Valid = 0; ++ ++ // set minor number ++ psm->sm_minor = minor; ++ // io address ++ psm->address = baseaddr; ++ if (!request_region(psm->address, 3, "sm")) { ++ printk(KERN_ERR "sm: memory already in use!\n"); ++ return ERROR; ++ } ++ spin_lock_init(&psm->req_queue_lock); ++ ++ // thread related inititializations... ++ init_completion(&psm->thread_dead); ++ init_waitqueue_head(&psm->thread_wq); ++ ++ pid = kernel_thread(ssfdc_thread, psm, CLONE_KERNEL); ++ if (pid < 0) ++ printk("ssfdc: ERROR starting thread!\n"); ++ else ++ printk("ssfdc: started kernel thread sm%dd pid %d\n", psm->sm_minor, pid); ++ ++ // switch on power to device, and set basic attributes of card (no logical to phys mapping) ++ if ( ! CntPowerOn(psm) && ! CheckCardExist(psm) ) { ++ SetPhyFmtValue(psm); ++ } ++ else { ++ printk(KERN_ERR "ssfdc_init_device() unable to SetPhyFmtValue()\n"); ++ } ++ ++#if DEBUG_SSFDC ++ dump_ssfdc_state(psm); ++#endif ++ ++ return SUCCESS; ++} ++ ++static int ssfdc_dev_blk_size(ssfdc_dev *psm) ++{ ++ if (!psm) ++ return 0; ++ ++ // because of the physical to logical block mapping, not as many blocks ++ // as expected... ++ switch(psm->Model) { ++ case SSFDC1MB: ++ return (250 * 8 * 512) / SSFDC_BLKSIZE; ++ case SSFDC2MB: ++ return (500 * 8 * 512) / SSFDC_BLKSIZE; ++ case SSFDC4MB: ++ return (500 * 16 * 512) / SSFDC_BLKSIZE; ++ case SSFDC8MB: ++ return (1000 * 16 * 512) / SSFDC_BLKSIZE; ++ case SSFDC16MB: ++ return (1000 * 32 * 512) / SSFDC_BLKSIZE; ++ case SSFDC32MB: ++ return (2000 * 32 * 512) / SSFDC_BLKSIZE; ++ case SSFDC64MB: ++ return (4000 * 32 * 512) / SSFDC_BLKSIZE; ++ case SSFDC128MB: ++ return (8000 * 32 * 512) / SSFDC_BLKSIZE; ++ default: ++ return 0; ++ } ++} ++ ++inline int ssfdc_dev_sectors(ssfdc_dev *psm) { ++ return ssfdc_dev_blk_size(psm) * (SSFDC_BLKSIZE/SSFDC_SECTSIZE); ++} ++ ++static int ssfdc_open(struct inode *in, struct file *fptr) ++{ ++ int error_code=NO_ERROR; ++ ssfdc_dev *psm = in->i_bdev->bd_disk->private_data; ++ unsigned long flags; ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "+ssfdc_open()\n"); ++#endif ++ ++ if (!fptr) { ++ return -EIO; ++ } ++ ++ spin_lock_irqsave(&psm->req_queue_lock,flags); ++ // bjm spin_lock(&psm->req_queue_lock); ++ // Power up smartmedia device, check for card, check media ++ if ((error_code=CntPowerOn(psm))) { ++ printk(KERN_ERR "%s PowerUP error\n", MAJOR_NAME); ++ } ++ else if ((error_code=CheckCardExist(psm))) {// Check the existence of a card ++ printk(KERN_ERR "%s No Card!\n", MAJOR_NAME); ++ } ++ else if ( ! psm->UseCount++ ) { ++ spin_unlock_irqrestore(&psm->req_queue_lock,flags); ++ // bjm spin_unlock(&psm->req_queue_lock); ++ check_disk_change(in->i_bdev); ++ spin_lock_irqsave(&psm->req_queue_lock,flags); ++ // bjm spin_lock(&psm->req_queue_lock); ++ } ++ ++ if ( ! psm->ErrCode ) { ++ // check our open mode against that of removable media's ++ if (WRITE_PROTECTED(psm)) { ++ printk(KERN_ERR "mount read only detected.\n"); ++ } ++ } ++ ++#if DEBUG_SSFDC ++ dump_ssfdc_state(psm); ++ printk(KERN_DEBUG "-ssfdc_open() error_code %d\n", error_code); ++#endif ++ ++ spin_unlock_irqrestore(&psm->req_queue_lock,flags); ++ ++#if DEBUG_SSFDC ++ printk("-ssfdc_open()\n"); ++#endif ++ ++ return ssfdc_maperror(error_code); ++} ++ ++static int ssfdc_release(struct inode *i_node, struct file *fptr) ++{ ++ int drive; ++ ssfdc_dev *psm=NULL; ++ unsigned long flags; ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "+ssfdc_release("); ++#endif ++ ++ psm = (ssfdc_dev *) i_node->i_bdev->bd_disk->private_data; ++ drive = psm->sm_minor; ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "%d)\n", drive); ++#endif ++ if (drive < 0 || drive >= MAX_SSFDC) ++ return -ENODEV; ++ ++ spin_lock_irqsave(&psm->req_queue_lock,flags); ++ // bjm spin_lock(&psm->req_queue_lock); ++ ++ if (!psm->UseCount) ++ printk(KERN_ERR "sm: Zero use count!\n"); ++ else { ++ --psm->UseCount; ++ } ++ ++#if DEBUG_SSFDC ++ dump_ssfdc_state(psm); ++#endif ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "-ssfdc_release()\n"); ++#endif ++ ++ spin_unlock_irqrestore(&psm->req_queue_lock,flags); ++ // bjm spin_unlock(&psm->req_queue_lock); ++ ++ return 0; ++} ++ ++static int ssfdc_ioctl(struct inode *i_node, struct file *fptr, unsigned cmd, unsigned long arg) ++{ ++ int drive, int_val; ++ ssfdc_dev *psm; ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "ssfdc_ioctl(%d)", cmd); ++#endif ++ ++ if (i_node == NULL) ++ return -EINVAL; ++ ++ psm = (ssfdc_dev *) i_node->i_bdev->bd_disk->private_data; ++ drive = psm->sm_minor; ++ ++ if (drive < 0 || drive >= MAX_SSFDC) ++ return -ENODEV; ++ switch(cmd) { ++ case BLKROSET: /* set device read-only (0 = read-write) */ ++ if (!capable(CAP_SYS_ADMIN)) ++ return -EACCES; ++ if (copy_from_user((void *) &int_val, (int *)arg, sizeof(int_val))) ++ return -EFAULT; ++ if (int_val) ++ psm->Attribute |= MWP; ++ else ++ psm->Attribute &= ~MWP; ++ return 0; ++ ++ case BLKROGET:/* get read-only status (0 = read_write) */ ++ int_val = psm->Attribute & MWP; ++ copy_to_user(arg, (void *) &int_val, sizeof(int_val)); ++ return 0; ++ ++ /* case BLKRRPART: */ /* re-read partition table */ ++ ++ case BLKGETSIZE: ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "BLKGETSIZE"); ++#else ++ printk(KERN_DEBUG "ssfdc_ioctl(BLKGETSIZE) not handled.\n"); ++#endif ++ break; ++ } ++ return -EINVAL; ++} ++ ++ ++static int ssfdc_getgeo(struct block_device *bdev, struct hd_geometry *geo) ++{ ++ unsigned char heads, sectors; ++ unsigned int cylinders; ++ struct gendisk *disk = bdev->bd_disk; ++ ssfdc_dev *psm = disk->private_data; ++ int drive = psm->sm_minor; ++ int err; ++ ++ if (drive < 0 || drive >= MAX_SSFDC) ++ return -ENODEV; ++ ++ err = CheckLogCHS(psm, &cylinders, &heads, §ors); ++ if (err) ++ return ssfdc_maperror(err); ++ ++ geo->heads = heads; ++ geo->sectors = sectors; ++ geo->cylinders = cylinders; ++ return 0; ++} ++ ++ ++static int ssfdc_revalidate(struct gendisk *disk) ++{ ++ unsigned int cis; ++ ssfdc_dev *psm=NULL; ++ int error_code=NO_ERROR; ++ unsigned long flags; ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "ssfdc_revalidate()\n"); ++#endif ++ ++ psm = disk->private_data; ++ ++ spin_lock_irqsave(&psm->req_queue_lock,flags); ++ // bjm spin_lock(&psm->req_queue_lock); ++ ++ if ( ! psm->DataBuf_Valid ) { ++ if ((error_code=SetPhyFmtValue(psm))) ++ printk(KERN_ERR "ssfdc_revalidate() SetPhyFmtValue error\n"); ++ else if ((error_code=SearchCIS(psm,&cis))) ++ printk(KERN_ERR "ssfdc_revalidate() SearchCIS error\n"); ++ else if ((error_code=MakeLogTable(psm,cis+1))) ++ printk(KERN_ERR "ssfdc_revalidate() MakeLogTable error\n"); ++ } ++ spin_unlock_irqrestore(&psm->req_queue_lock,flags); ++ // bjm spin_unlock(&psm->req_queue_lock); ++ ++ return ssfdc_maperror(error_code); ++} ++ ++int __init ssfdc_init(void) ++{ ++ int i; ++ int err = 0; ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "+ssfdc_init()\n"); ++#endif ++ ++ memset(disks, 0, sizeof(struct gendisk *) * MAX_SSFDC); ++ memset(ssfdc, 0, sizeof(struct ssfdc_dev *) * MAX_SSFDC); ++ for (i=0; i<MAX_SSFDC; ++i) { ++ disks[i] = alloc_disk(1 << SSFDC_PARTN_BITS); ++ ssfdc[i] = kmalloc(sizeof(ssfdc_dev), GFP_KERNEL); ++ if (!disks[i] || !ssfdc[i]) { ++ err = -ENOMEM; ++ goto no_memory_error; ++ } ++ memset( ssfdc[i], 0, sizeof(ssfdc_dev)); ++ } ++ ++ if (register_blkdev(SSFDC_MAJOR, "smartmedia")) { ++ printk(KERN_ERR "Unable to get major number %d for ssfdc device\n", ++ SSFDC_MAJOR); ++ err = -EBUSY; ++ goto busy_error; ++ } ++ ++ devfs_mk_dir("sm"); ++ ++ for ( i=0; i < MAX_SSFDC; ++i) { ++ disks[i]->major = SSFDC_MAJOR; ++ disks[i]->first_minor = i << SSFDC_PARTN_BITS; ++ disks[i]->fops = &ssfdc_fops; ++ sprintf(disks[i]->disk_name, "sm%d", i); ++ sprintf(disks[i]->devfs_name, "sm/%d", i); ++ disks[i]->private_data = ssfdc[i]; ++ ssfdc_init_device(ssfdc[i], i << SSFDC_PARTN_BITS, ++ CPLD_BASE_ADDRESS + SMART_MEDIA_ONE_OFFSET); ++ ++ disks[i]->queue = ssfdc[i]->req_queue = ++ blk_init_queue(do_ssfdc_request, &ssfdc[i]->req_queue_lock); ++ ssfdc[i]->req_queue->queuedata = ssfdc[i]; ++ ++ set_capacity(disks[i], ssfdc_dev_sectors(ssfdc[i])); ++ // bjm blk_queue_max_sectors(disks[i]->queue, 32); ++ // bjm blk_queue_max_phys_segments(disks[i]->queue, 4); ++ blk_queue_max_segment_size(disks[i]->queue, (ssfdc[i]->MaxSectors / 2) * K_BYTE); ++ add_disk(disks[i]); ++ } ++ ++#if 0 // bjm debug ++#ifndef CONFIG_SH_NIMBLE_MINI ++ mediachangetest(0L); ++#else ++ mediachangetest(1L); ++#endif ++#endif // bjm debug ++ ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "-ssfdc_init(0)\n"); ++#endif ++ return 0; ++ ++busy_error: ++no_memory_error: ++ for (i=0; i < MAX_SSFDC; ++i) { ++ if (disks[i] && disks[i]->queue) ++ kfree(disks[i]->queue); ++ put_disk(disks[i]); ++ if (ssfdc[i]) ++ kfree(ssfdc[i]); ++ } ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG "-ssfdc_init(%d)\n", -ENOMEM); ++#endif ++ return -ENOMEM; ++} ++ ++void __init ssfdc_clean(void) ++{ ++ int i; ++ ++ printk(KERN_DEBUG "SSFDC exit code\n"); ++ ++ for (i=0; i < MAX_SSFDC; ++i) { ++ if (disks[i] != NULL) { ++ blk_cleanup_queue(disks[i]->queue); ++ del_gendisk(disks[i]); ++ put_disk(disks[i]); ++ } ++ ++ if (ssfdc[i]) { ++ // signal thread to exit... ++ ssfdc[i]->exiting = 1; ++ wake_up(&ssfdc[i]->thread_wq); ++ wait_for_completion(&ssfdc[i]->thread_dead); ++ ++ if (ssfdc[i]->address) ++ release_region(ssfdc[i]->address, 3); ++ kfree(ssfdc[i]); ++ } ++ } ++ ++ if (unregister_blkdev(SSFDC_MAJOR, "smartmedia")) ++ printk(KERN_WARNING "smartmedia: cannot unregister blkdev\n"); ++ devfs_remove("sm"); ++} ++ ++#if DEBUG_SSFDC ++void dump_request(struct request *req) ++{ ++#if DEBUG_SSFDC_REQUEST && DEBUG_SSFDC_REQUEST ++ printk(KERN_DEBUG "req->\n"); ++ /* int */ printk(KERN_DEBUG "\t req->cmd %x\n", req->cmd); /* READ or WRITE */ ++ /* int errors */ printk(KERN_DEBUG "\t req->errors %d\n", req->errors); ++ /* unsigned long */ printk(KERN_DEBUG "\t req->sector %d\n", req->sector); ++ /* unsigned long */ printk(KERN_DEBUG "\t req->nr_sectors %d\n",req->nr_sectors); ++ /* unsigned long */ printk(KERN_DEBUG "\t req->hard_sector %d\n", req->hard_sector); ++ /* unsigned int */ printk(KERN_DEBUG "\t req->nr_hw_segments %d\n",req->nr_hw_segments); ++ /* unsigned long */ printk(KERN_DEBUG "\t req->current_nr_sectors %d\n",req->current_nr_sectors); ++ ++#endif ++} ++#endif ++ ++void do_ssfdc_request(request_queue_t * rq) ++{ ++ ssfdc_dev *psm = rq->queuedata; ++ ++ if ( ! psm->waiting ) ++ wake_up(&psm->thread_wq); ++} ++ ++static struct request * ssfdc_get_request(ssfdc_dev *psm) ++{ ++ struct request *treq; ++ unsigned long flags; ++ ++ spin_lock_irqsave(&psm->req_queue_lock, flags); ++ // bjm spin_lock(&psm->req_queue_lock); ++ treq = elv_next_request(psm->req_queue); ++ spin_unlock_irqrestore(&psm->req_queue_lock, flags); ++ // bjm spin_unlock(&psm->req_queue_lock); ++ ++ return treq; ++} ++ ++static void ssfdc_terminate_request(ssfdc_dev *psm, struct request *req) ++{ ++ unsigned long flags; ++ ++ if (psm && req) { ++ spin_lock_irqsave(&psm->req_queue_lock, flags); ++ // bjm spin_lock(&psm->req_queue_lock); ++ end_request(req,0); ++ spin_unlock_irqrestore(&psm->req_queue_lock, flags); ++ // bjm spin_unlock(&psm->req_queue_lock); ++ } ++} ++ ++ ++static int ssfdc_end_request(ssfdc_dev *psm, struct request *req, int status) ++{ ++ unsigned long flags; ++ ++ if (!psm || !req) { ++ printk(KERN_DEBUG "ssfdc_end_request() NULL psm or req!\n"); ++ return 0; ++ } ++ ++#if DEBUG_SSFDC_REQUEST ++ printk("ssfdc_end_request(%p)\n", req); ++#endif ++ ++ spin_lock_irqsave(&psm->req_queue_lock,flags); ++ // bjm spin_lock(&psm->req_queue_lock); ++ end_request(req,status); ++ spin_unlock_irqrestore(&psm->req_queue_lock,flags); ++ // bjm spin_unlock(&psm->req_queue_lock); ++ return 0; ++} ++ ++void initxfer(unsigned long dev_idx) ++{ ++ ssfdc_dev *psm = ssfdc[dev_idx]; ++ struct request *req; ++ int error_code; ++ unsigned int cis; ++ ++#if DEBUG_SSFDC ++ // printk(KERN_DEBUG "+initxfer(%d)", dev_idx); ++#endif ++ // get device lock, and check idle flag, setting if not busy ++ ++ req = ssfdc_get_request(psm); ++ ++ // if the device is idle, setup a read or write operation ++ if (psm->XferState == xfer_idle) { ++ // get the current request from our device's request list. ++ if (!req) { ++#if DEBUG_SSFDC ++// printk(KERN_DEBUG "initxfer() terminate, no schedule.\n"); ++#endif ++ } ++ // Absence of power indicates absence of card. ++ // terminate request and exit... ++ if ( ! _HwChkPower(psm) ) { ++ printk(KERN_DEBUG "initxfer() - Media power NOT!\n"); ++ ssfdc_terminate_request(psm,req); ++ return; ++ } ++ ++ // We have a request and we have a card. Is the Log2Phys mapping still valid? ++ if ( ! psm->DataBuf_Valid ) { ++ if ((error_code = SetPhyFmtValue(psm))) ++ printk(KERN_DEBUG "%s SetPhyFmtValue error\n", MAJOR_NAME); ++ else if ((error_code = SearchCIS(psm,&cis))) ++ printk(KERN_DEBUG "%s SearchCIS error\n", MAJOR_NAME); ++ else if ((error_code = MakeLogTable(psm,cis+1))) ++ printk(KERN_DEBUG "%s MakeLogTable error\n", MAJOR_NAME); ++ if (error_code) { ++ printk(KERN_DEBUG "%s error %d\n", MAJOR_NAME, error_code); ++ ssfdc_terminate_request(psm,req); ++ return; ++ } ++ } ++ ++ psm->XferState = xfer_busy; ++#if DEBUG_SSFDC ++ printk(KERN_DEBUG " initxfer() - do the request %x\n", req); ++#endif ++ ssfdc_rw_request(psm, req); ++ } ++#if DEBUG_SSFDC ++ else { ++ printk(KERN_DEBUG "initxfer(%d) dev is busy, no reschedule.\n", dev_idx); ++ } ++#endif ++ ++} ++ ++ ++void ssfdc_rw_request(ssfdc_dev *psm, struct request *req) ++{ ++ int (*rwsector)(ssfdc_dev *, struct request *, char *, long, int); ++ unsigned sector, count; ++ int rw_return=1; ++ ++ if (rq_data_dir(req) == WRITE) ++ rwsector = MediaWriteSector; ++ else if (rq_data_dir(req) == READ) ++ rwsector = MediaReadSector; ++ else { ++ printk(KERN_DEBUG "%s: command %d not implemented!\n", MAJOR_NAME, (int) rq_data_dir(req)); ++ goto terminal_error; ++ } ++ ++ /* ++ */ ++ sector = req->sector; ++ count = req->nr_sectors; ++ ++ // check that the request does not extend past ssfdc's max size ++ if ( (sector + count) > ssfdc_dev_sectors(psm) ) { ++ printk(KERN_ERR "Attempt to read past end of device!"); ++ goto terminal_error; ++ } ++ else { ++ ++ // for each segment in each bio_vec R/W from/to device. ++ ++ count = req->current_nr_sectors; ++ rw_return = rwsector(psm, req, req->buffer, sector, count); ++ ++ if (rq_data_dir(req) == READ) ++ ssfdc_end_request(psm, req, rw_return); ++ } ++ ++ // things appear OK... ++ return; ++ ++terminal_error: ++ ssfdc_terminate_request( psm, req); ++ psm->XferState = xfer_idle; ++} ++ ++module_init(ssfdc_init); ++module_exit(ssfdc_clean); ++ ++MODULE_LICENSE("GPL"); ++ ++/* End of Linux Driver Modifications */ +diff -duNr linux-2.6.16-orig/drivers/block/ssfdc.h linux-2.6.16/drivers/block/ssfdc.h +--- linux-2.6.16-orig/drivers/block/ssfdc.h 1970-01-01 10:00:00.000000000 +1000 ++++ linux-2.6.16/drivers/block/ssfdc.h 2006-06-29 16:13:27.000000000 +1000 +@@ -0,0 +1,372 @@ ++/* $id: $ */ ++#ifndef _SSFDC_H ++#define _SSFDC_H ++ ++/* ++ Linux related defines ++*/ ++ ++#ifdef CONFIG_SH_NIMBLE_MINI ++#define MAX_SSFDC 2 /* two drives */ ++#else ++#define MAX_SSFDC 1 /* only one drive */ ++#endif ++ ++#define SSFDC_MAJOR_NAME "sm" ++#define MAJOR_NAME SSFDC_MAJOR_NAME ++#define SSFDC_PARTN_BITS 4 /* number of minor dev bits for partitions */ ++#define PARTN_MASK ((1<<SSFDC_PARTN_BITS)-1) /* a useful bit mask */ ++#define MAX_DRIVES MAX_SSFDC ++ ++/*************************************************************************** ++ SmartMedia Controll Header ++ Rev 0.30('98-06-30) ***** BETA RELEASE ***** ++ Copyright (c) 1997-98, Toshiba Corporation. All rights reserved. ++ ***************************************************************************/ ++ ++/*************************************************************************** ++ Define Difinetion ++ ***************************************************************************/ ++#define SUCCESS 0 /* SUCCESS */ ++#define ERROR -1 /* ERROR */ ++#define CORRECT 1 /* CORRECTABLE */ ++ ++/***************************************************************************/ ++#define NO_ERROR 0x0000 /* NO ERROR */ ++#define ERR_WriteFault 0x0003 /* Peripheral Device Write Fault */ ++#define ERR_HwError 0x0004 /* Hardware Error */ ++#define ERR_DataStatus 0x0010 /* DataStatus Error */ ++#define ERR_EccReadErr 0x0011 /* Unrecovered Read Error */ ++#define ERR_CorReadErr 0x0018 /* Recovered Read Data with ECC */ ++#define ERR_OutOfLBA 0x0021 /* Illegal Logical Block Address */ ++#define ERR_WrtProtect 0x0027 /* Write Protected */ ++#define ERR_ChangedMedia 0x0028 /* Medium Changed */ ++#define ERR_UnknownMedia 0x0030 /* Incompatible Medium Installed */ ++#define ERR_IllegalFmt 0x0031 /* Medium Format Corrupted */ ++#define ERR_NoSmartMedia 0x003A /* Medium Not Present */ ++ ++/*************************************************************************** ++ Common Controll Header ++ Rev 1.30('98-06-30) ***** BETA RELEASE ***** ++ Copyright (c) 1997-98, Toshiba Corporation. All rights reserved. ++ ***************************************************************************/ ++ ++/*************************************************************************** ++ SmartMedia Controller Definition ++ ***************************************************************************/ ++/* I/O Mode Address */ ++#define DATA(p) (p->address+0x00) /* R/W Data Reg */ ++#define STATUS(p) (p->address+0x02) /* R/- Status Reg */ ++#define MODE(p) (p->address+0x02) /* -/W Mode Reg */ ++ ++/* Controller Status Reg (Read Only) */ ++#define STS_BUSY 0x80 ++#define STS_VCC 0x10 ++#define STS_SCHG 0x08 ++#define STS_WP 0x01 ++#define STS_CENB 0x04 ++ ++#ifdef CONFIG_SH_TITAN ++/* Controller Mode Reg (Write Only) */ ++/* keep PCI clock running on bit 3 */ ++/* CE# on bit 2, CLE on bit 1 and ALE on bit 0 */ ++#define STANDBY (0x00 | 0x00 | 0x08) ++#define WR_DATA (0x00 | 0x04 | 0x08) ++#define WR_CMD (0x02 | 0x04 | 0x08) ++#define WR_ADR (0x01 | 0x04 | 0x08) ++#else ++/* Controller Mode Reg (Write Only) */ ++#define STANDBY 0x00 ++#define WR_DATA 0x10 ++#define WR_CMD 0x11 ++#define WR_ADR 0x12 ++#define PW_OFF 0x80 ++#define PW_ON 0x88 ++#endif ++ ++/***************************************************************************/ ++#define _HwSetData(p) ctrl_outb(WR_DATA,MODE(p)) ++#define _HwSetCmd(p) ctrl_outb(WR_CMD,MODE(p)) ++#define _HwSetAddr(p) ctrl_outb(WR_ADR,MODE(p)) ++#define _HwSetStandby(p) ctrl_outb(STANDBY,MODE(p)) ++ ++#define _HwInData(p) ctrl_inb(DATA(p)) ++#define _HwOutData(p,a) ctrl_outb((a),DATA(p)) ++ ++#ifdef CONFIG_SH_TITAN ++#define _HwVccOn(p) ++#define _HwVccOff(p) ++#else ++#define _HwVccOn(p) ctrl_outb(PW_ON,MODE(p)) ++#define _HwVccOff(p) ctrl_outb(PW_OFF,MODE(p)) ++#endif ++ ++#ifdef CONFIG_SH_TITAN ++#define _HwChkCardIn(p) (1) ++#define _HwChkStatus(p) (0) ++#define _HwChkWP(p) (0) ++#define _HwChkPower(p) (1) ++#define _HwChkBusy(p) (ctrl_inb(STATUS(p))&STS_BUSY) ++ ++#else ++ ++#define _HwChkCardIn(p) (ctrl_inb(STATUS(p))&STS_CENB) ++#define _HwChkStatus(p) (ctrl_inb(STATUS(p))&(STS_SCHG)) ++#define _HwChkWP(p) (ctrl_inb(STATUS(p))&(STS_WP)) ++#define _HwChkPower(p) (ctrl_inb(STATUS(p))&(STS_VCC)) ++#define _HwChkBusy(p) (ctrl_inb(STATUS(p))&STS_BUSY) ++ ++#endif ++ ++#define _HwRdStatus(p) (ctrl_inb(STATUS(p))) ++/***************************************************************************/ ++#ifdef CONFIG_SH_NIMBLE_MINI ++#define CPLD_BASE_ADDRESS 0xB4030000L ++#define SMART_MEDIA_ONE_OFFSET 0x08 // The "built-in" SmartMedia ++#define SMART_MEDIA_TWO_OFFSET 0x00 // The "removable" SmartMedia ++#elif CONFIG_SH_TITAN ++#define CPLD_BASE_ADDRESS 0xA4000000L ++#define SMART_MEDIA_ONE_OFFSET 0x00 ++#else ++#define CPLD_BASE_ADDRESS 0xB8030000L ++#define SMART_MEDIA_ONE_OFFSET 0x00 // The "built-in" SmartMedia ++#endif ++ ++/*************************************************************************** ++ Program & Macro for SmartMedia Controller ++ Rev 0.30('98-06-30) ***** BETA RELEASE ***** ++ Copyright (c) 1997-98, Toshiba Corporation. All rights reserved. ++ ***************************************************************************/ ++/*************************************************************************** ++ Define Definition ++ ***************************************************************************/ ++#define K_BYTE 1024 /* Kilo Byte */ ++#define SSFDC_SECTSIZE 512 /* Sector buffer size */ ++#define SSFDC_BLKSIZE (K_BYTE * 4) ++#define REDTSIZE 16 /* Redundant buffer size */ ++ ++/***************************************************************************/ ++#define DUMMY_DATA 0xFF /* No Assign Sector Read Data */ ++ ++/*************************************************************************** ++ Max Zone/Block/Sectors Data Definition ++ ***************************************************************************/ ++#define MAX_ZONENUM 0x08 /* Max Zone Numbers in a SmartMedia */ ++#define MAX_BLOCKNUM 0x0400 /* Max Block Numbers in a Zone */ ++#define MAX_SECTNUM 0x20 /* Max Sector Numbers in a Block */ ++#define MAX_LOGBLOCK 1000 /* Max Logical Block Numbers in a Zone */ ++ ++/*************************************************************************** ++ Logical to Physical Block Table Data Definition ++ ***************************************************************************/ ++#define NO_ASSIGN 0xFFFF /* No Assign Logical Block Address */ ++ ++/*************************************************************************** ++ 'SectCopyMode' Data ++ ***************************************************************************/ ++#define COMPLETED 0 /* Sector Copy Completed */ ++#define REQ_ERASE 1 /* Request Read Block Erase */ ++#define REQ_FAIL 2 /* Request Read Block Failed */ ++ ++/*************************************************************************** ++ Retry Counter Definition ++ ***************************************************************************/ ++#define RDERR_REASSIGN 1 /* Reassign with Read Error */ ++#define L2P_ERR_ERASE 1 /* BlockErase for Contradicted L2P Table */ ++ ++/*************************************************************************** ++ SmartMedia Command & Status Definition ++ ***************************************************************************/ ++/* SmartMedia Command */ ++#define SSFDC_WRDATA 0x80 ++#define SSFDC_READ 0x00 ++#define SSFDC_READ_REDT 0x50 ++#define SSFDC_READ1 0x00 ++#define SSFDC_READ2 0x01 ++#define SSFDC_READ3 0x50 ++#define SSFDC_RST_CHIP 0xFF ++#define SSFDC_WRITE 0x10 ++#define SSFDC_DUMMY_WRITE 0x11 ++#define SSFDC_MULTI_WRITE 0x15 ++#define SSFDC_ERASE1 0x60 ++#define SSFDC_ERASE2 0xD0 ++#define SSFDC_RDSTATUS 0x70 ++#define SSFDC_READ_ID 0x90 ++ ++/* SmartMedia Status */ ++#define WR_FAIL 0x01 /* 0:Pass, 1:Fail */ ++#define SUSPENDED 0x20 /* 0:Not Suspended, 1:Suspended */ ++#define READY 0x40 /* 0:Busy, 1:Ready */ ++#define WR_PRTCT 0x80 /* 0:Protect, 1:Not Protect */ ++ ++#define USEC 1 ++#define MSEC 1000 * USEC ++#define JIFFY_TICK_MS (MSEC / HZ) ++ ++// #define BUSY_PROG 20 * MSEC /* 200-1000us ----- Program Time */ ++#define BUSY_PROG 1000 * USEC /* 200-1000us ----- Program Time */ ++#define BUSY_DUMMY_WRITE 10 * USEC /* 2-10us dummy write */ ++#define BUSY_MULTI_WRITE 1000 * USEC /* 200 - 1000 usec */ ++#define BUSY_ERASE 10 * MSEC /* 2-10ms ----- Block Erase Time */ ++#define BUSY_READ 100 * USEC /* tR : 100us ----- Data transfer Time */ ++#define BUSY_RESET 10 * USEC /* tRST : 10us ----- Device Resetting Time */ ++#define BUSY_ADDR_SET 25 * USEC ++ ++#define TIME_PON 30 /* 300ms ------ Power On Wait Time */ ++#define TIME_CDCHK 2 /* 20ms ------ Card Check Interval Timer */ ++#define TIME_WPCHK 1 /* 5ms ------ WP Check Interval Timer */ ++ ++/* Power On Timeout */ ++#define POWER_ON_TIMEOUT (HZ*2) ++ ++/* Default retry limit for Read/Write */ ++#define RD_RETRY_LIMIT 3 ++#define WR_RETRY_LIMIT 4 ++#define BLOCK_READ_RETRY_LIMIT 2 ++#define BLOCK_WRITE_RETRY_LIMIT 3 ++#define REASSIGN_RETRY_LIMIT 4 ++ ++/*************************************************************************** ++ Redundant Data ++ ***************************************************************************/ ++#define REDT_DATA 0x04 ++#define REDT_BLOCK 0x05 ++ ++#define REDT_ADDR1H 0x06 ++#define REDT_ADDR1L 0x07 ++#define REDT_ADDR2H 0x0B ++#define REDT_ADDR2L 0x0C ++ ++#define REDT_ECC10 0x0D ++#define REDT_ECC11 0x0E ++#define REDT_ECC12 0x0F ++ ++#define REDT_ECC20 0x08 ++#define REDT_ECC21 0x09 ++#define REDT_ECC22 0x0A ++ ++/*************************************************************************** ++ SmartMedia Model & Attribute ++ ***************************************************************************/ ++/* SmartMedia Attribute */ ++#define NOWP 0x00 /* 0... .... No Write Protect */ ++#define WP 0x80 /* 1... .... Write Protected */ ++#define MASK 0x00 /* .00. .... NAND MASK ROM Model */ ++#define FLASH 0x20 /* .01. .... NAND Flash ROM Model */ ++#define AD3CYC 0x00 /* ...0 .... Address 3-cycle */ ++#define AD4CYC 0x10 /* ...1 .... Address 4-cycle */ ++#define BS16 0x00 /* .... 00.. 16page/block */ ++#define BS32 0x04 /* .... 01.. 32page/block */ ++#define PS256 0x00 /* .... ..00 256byte/page */ ++#define PS512 0x01 /* .... ..01 512byte/page */ ++ ++#define MWP 0x80 /* WriteProtect mask */ ++#define MFLASH 0x60 /* Flash Rom mask */ ++#define MADC 0x10 /* Address Cycle */ ++#define MBS 0x0C /* BlockSize mask */ ++#define MPS 0x03 /* PageSize mask */ ++ ++/* SmartMedia Model */ ++#define NOSSFDC 0x00 /* NO SmartMedia */ ++#define SSFDC1MB 0x01 /* 1MB SmartMedia */ ++#define SSFDC2MB 0x02 /* 2MB SmartMedia */ ++#define SSFDC4MB 0x03 /* 4MB SmartMedia */ ++#define SSFDC8MB 0x04 /* 8MB SmartMedia */ ++#define SSFDC16MB 0x05 /* 16MB SmartMedia */ ++#define SSFDC32MB 0x06 /* 32MB SmartMedia */ ++#define SSFDC64MB 0x07 /* 64MB SmartMedia */ ++#define SSFDC128MB 0x08 /*128MB SmartMedia */ ++ ++#define EVEN 0 /* Even Page for 256byte/page */ ++#define ODD 1 /* Odd Page for 256byte/page */ ++ ++/*************************************************************************** ++ Struct Definition ++ ***************************************************************************/ ++/* Linux kernel additions */ ++ ++/* device buffer xfer status */ ++typedef enum { xfer_idle, xfer_busy} xfer_states; ++ ++/* Smartmedia device structure */ ++typedef struct { ++ unsigned long address; ++ int sm_minor; ++ int sm_flags; ++ int busy; ++ int waiting; ++ ++ /* queue of io requests for the device */ ++ spinlock_t req_queue_lock; ++ request_queue_t *req_queue; ++ ++ /* our thread related parameters */ ++ struct completion thread_dead; ++ int exiting; ++ wait_queue_head_t thread_wq; ++ ++ /* accounting variables for each buffer io operation ++ each request may have a chain of buffers, each of ++ which may require I/O of multiple sectors */ ++ unsigned int ReqSectorSize; ++ unsigned int BufIndex; ++ unsigned int SectorWriteIndex; ++ ++ /* CHS parameters */ ++ unsigned int HostCyl; ++ unsigned char HostHead; ++ unsigned char HostSect; ++ ++ /* State Information */ ++ xfer_states XferState; ++ unsigned int UseCount; ++ unsigned int RetryCount; ++ unsigned int ErrCode; ++ unsigned int MediaChange; ++ unsigned int CardPresent; ++ unsigned int SectCopyMode; ++ ++ /* Working Databuf Area */ ++ unsigned char SectBuf[SSFDC_SECTSIZE]; ++ unsigned char WorkBuf[SSFDC_SECTSIZE]; ++ unsigned char Redundant[REDTSIZE]; ++ unsigned char WorkRedund[REDTSIZE]; ++ unsigned int DataBuf_Valid; ++ unsigned int Log2Phy[MAX_ZONENUM][MAX_LOGBLOCK]; ++ unsigned char Assign[MAX_ZONENUM][MAX_BLOCKNUM/8]; ++ unsigned int AssignStart[MAX_ZONENUM]; ++ unsigned int ReadBlock; ++ unsigned int WriteBlock; ++ ++ /* Card attributes */ ++ unsigned char Model; ++ unsigned char Attribute; ++ unsigned char MaxZones; ++ unsigned char MaxSectors; ++ unsigned int MaxBlocks; ++ unsigned int MaxLogBlocks; ++ ++ /* Address of current access (Media) */ ++ unsigned char Zone; /* Zone Number */ ++ unsigned char Sector; /* Sector(512byte) Number on Block */ ++ unsigned int PhyBlock; /* Physical Block Number on Zone */ ++ unsigned int LogBlock; /* Logical Block Number of Zone */ ++ ++ /* device statistics */ ++ unsigned int Sector_reads; ++ unsigned int Sector_writes; ++ unsigned int Sect_rd_errs_ttl; ++ unsigned int Sect_wr_errs_ttl; ++ unsigned int Bad_blks_rd; ++ unsigned int Bad_blks_wr; ++ unsigned int Bad_blks_erase; ++} ssfdc_dev; ++ ++ ++/****************************************************************************/ ++/* Handy defines */ ++/****************************************************************************/ ++#define WRITE_PROTECTED(p) (p->Attribute & WP) ++ ++/* End of Linux kernel additions */ ++#endif /* #ifndef _SSFDC_H */ diff --git a/packages/linux/linux-titan-sh4_2.6.16.bb b/packages/linux/linux-titan-sh4_2.6.16.bb new file mode 100644 index 0000000000..da10945447 --- /dev/null +++ b/packages/linux/linux-titan-sh4_2.6.16.bb @@ -0,0 +1,52 @@ +SECTION = "kernel" +DESCRIPTION = "Linux kernel for SH4 based TITAN router appliance" +LICENSE = "GPL" +MAINTAINER = "Jamie Lenehan <lenehan@twibble.org> +PR = "r0" + +# The "date=20060328" should be changed to "tag=linux-2_6_16" - but the +# tag won't exit till 2.6.17 is released +SRC_URI = "ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \ +cvs://anonymous@linuxsh.cvs.sourceforge.net/cvsroot/linuxsh;module=linux;date=20060331 \ + file://titan-flash.patch;patch=1 \ + file://titan-config" +S = "${WORKDIR}/linux-${PV}" + +COMPATIBLE_HOST = 'sh4.*-linux' + +inherit kernel + +ARCH = "sh" +KERNEL_IMAGETYPE = "zImage" +KERNEL_OUTPUT = "arch/${ARCH}/boot/${KERNEL_IMAGETYPE}" + +# Fix up kernel version - sh kernels get -sh added automatically +KERNEL_RELEASE = "${KERNEL_VERSION}" + +# +# The linux-sh cvs tree is a "drop in source tree" and needs to be copied +# over the top of the normal linux source since it only includes modified +# files. +# +do_unpack_extra(){ + cp -pPR ${WORKDIR}/linux/* ${S} +} +addtask unpack_extra after do_unpack before do_patch + +# +# Use an updated defconfig which includes the flash driver +# The flash driver quality doesn't allow it to be a part of the main kernel +# +do_configure_prepend() { + install -m 0644 ${WORKDIR}/titan-config ${S}/arch/sh/configs/titan_defconfig + yes '' | oe_runmake titan_defconfig +} + +# +# Should I make the nfs boot image? +# +#do_deploy_titan() { +# To NFS boot you need to objcopy the image... +# ${HOST_PREFIX}objcopy -O binary -R .note -R .comment -S arch/sh/boot/compressed/vmlinux ${DEPLOY_DIR}/linux.bin +#} +#addtask deploy before do_build after do_compile diff --git a/packages/mc/mc_4.6.1.bb b/packages/mc/mc_4.6.1.bb new file mode 100644 index 0000000000..58a8fdf51b --- /dev/null +++ b/packages/mc/mc_4.6.1.bb @@ -0,0 +1,42 @@ +DESCRIPTION = "GNU Midnight Commander is a file \ +manager for free operating systems." +HOMEPAGE = "http://www.ibiblio.org/mc/" +LICENSE = "GPLv2" +SECTION = "console/utils" +PRIORITY = "optional" +DEPENDS = "ncurses glib-2.0" +RDEPENDS = "ncurses-terminfo" +PR ="r1" + +SRC_URI = "http://www.ibiblio.org/pub/Linux/utils/file/managers/mc/mc-${PV}.tar.gz" + +inherit autotools + +EXTRA_OECONF = "--disable-glibtest --without-x --without-samba \ +--without-nfs --without-gpm-mouse --with-screen=ncurses" + +do_configure() { + gnu-configize + oe_runconf +} + +do_install() { + cd src + oe_runmake 'DESTDIR=${D}' install + cd ../syntax + oe_runmake 'DESTDIR=${D}' install + cd ../po + oe_runmake 'DESTDIR=${D}' install + cd ../vfs + oe_runmake 'DESTDIR=${D}' install + cd .. + + install -m 0644 lib/cedit.menu ${D}${datadir}/mc/ + install -m 0644 lib/edit.indent.rc ${D}${datadir}/mc/ + install -m 0644 lib/edit.spell.rc ${D}${datadir}/mc/ + install -m 0644 lib/mc.charsets ${D}${datadir}/mc/ + install -m 0644 lib/mc.ext ${D}${datadir}/mc/ + install -m 0644 lib/mc.lib ${D}${datadir}/mc/ + install -m 0644 lib/mc.menu ${D}${datadir}/mc/ + install -m 0644 lib/mc.menu.sr ${D}${datadir}/mc/ +} diff --git a/packages/mdadm/mdadm.inc b/packages/mdadm/mdadm.inc index 25a4a5ed1d..5b293b7a68 100644 --- a/packages/mdadm/mdadm.inc +++ b/packages/mdadm/mdadm.inc @@ -7,6 +7,9 @@ LICENSE = "GPL" SRC_URI = "ftp://ftp.kernel.org/pub/linux/utils/raid/mdadm/${PN}-${PV}.tar.bz2" +CFLAGS += "-fno-strict-aliasing" + + inherit autotools INHIBIT_AUTO_STAGE = "1" diff --git a/packages/mdadm/mdadm_1.12.0.bb b/packages/mdadm/mdadm_1.12.0.bb index f41b36fba9..9fa79120b7 100644 --- a/packages/mdadm/mdadm_1.12.0.bb +++ b/packages/mdadm/mdadm_1.12.0.bb @@ -1,4 +1,4 @@ include mdadm.inc -PR = "r2" +PR = "r3" SRC_URI += " file://build_flags.patch;patch=1 " diff --git a/packages/meta/jlime-opie.bb b/packages/meta/jlime-opie.bb new file mode 100644 index 0000000000..0d81066778 --- /dev/null +++ b/packages/meta/jlime-opie.bb @@ -0,0 +1,68 @@ +export IMAGE_BASENAME = "jlime-opie" +export IMAGE_LINGUAS = "" + +LICENSE = "MIT" +PR = "r21" + +DEPENDS = "task-bootstrap task-opie" +RDEPENDS = "${INSTALL_PACKAGES}" + +extra_stuff := '${@base_conditional("ROOT_FLASH_SIZE", "24", "", "task-opie-extra-games task-opie-extra-apps task-opie-extra-styles konqueror-embedded",d)}' + +INSTALL_PACKAGES = "task-bootstrap task-opie-base task-opie-base-applets \ + task-opie-base-inputmethods task-opie-base-apps \ + task-opie-base-settings task-opie-base-decorations \ + task-opie-base-styles task-opie-base-pim \ + task-opie-extra-settings \ + task-opie-bluetooth task-opie-irda \ + ${extra_stuff}" + +export IPKG_INSTALL = "${INSTALL_PACKAGES}" + +# merge feed-sources into ipkg.conf for opie-aqpkg as it can't handle feed-sources outside of ipkg.conf. +merge_feeds() { + + if ! test -z "${FEED_URIS}" + then + # Die gracefully if ipkg-collateral failed + if ! test -e "${IMAGE_ROOTFS}/etc/ipkg.conf" + then + echo "[${IMAGE_ROOTFS}/etc/ipkg.conf] is missing!" + exit 1 + fi + + # comment out existing feed-sources inserted by ipkg-collateral + cat ${IMAGE_ROOTFS}/etc/ipkg.conf | sed "s/^src\ /#src\ /" > ${IMAGE_ROOTFS}/etc/ipkg.conf_ + rm ${IMAGE_ROOTFS}/etc/ipkg.conf && mv ${IMAGE_ROOTFS}/etc/ipkg.conf_ ${IMAGE_ROOTFS}/etc/ipkg.conf + + # extract, then delete destinations + cat ${IMAGE_ROOTFS}/etc/ipkg.conf | egrep "^dest\ " > ${IMAGE_ROOTFS}/etc/ipkg.conf.dest + cat ${IMAGE_ROOTFS}/etc/ipkg.conf | egrep -v "^dest\ " > ${IMAGE_ROOTFS}/etc/ipkg.conf_ + rm ${IMAGE_ROOTFS}/etc/ipkg.conf && mv ${IMAGE_ROOTFS}/etc/ipkg.conf_ ${IMAGE_ROOTFS}/etc/ipkg.conf + + + for line in ${FEED_URIS} + do + # strip leading and trailing spaces/tabs, then split into name and uri + line_clean="`echo "$line"|sed 's/^[ \t]*//;s/[ \t]*$//'`" + feed_name="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\1/p'`" + feed_uri="`echo "$line_clean" | sed -n 's/\(.*\)##\(.*\)/\2/p'`" + + # insert new feed-sources + echo "src/gz $feed_name $feed_uri" >> ${IMAGE_ROOTFS}/etc/ipkg.conf + done + + # remove temporary files and rebuild ipkg.conf + echo "" >> ${IMAGE_ROOTFS}/etc/ipkg.conf + cat ${IMAGE_ROOTFS}/etc/ipkg.conf.dest >> ${IMAGE_ROOTFS}/etc/ipkg.conf + rm ${IMAGE_ROOTFS}/etc/ipkg.conf.dest + + # remove -feed.conf files which are no longer needed + cd ${IMAGE_ROOTFS}/etc/ipkg/ && rm -- *-feed.conf + fi +} + +# merge feed-sources into ipkg.conf and create /etc/timestamp from build date +IMAGE_PREPROCESS_COMMAND = "merge_feeds; create_etc_timestamp" + +inherit image_ipk diff --git a/packages/meta/slugos-packages.bb b/packages/meta/slugos-packages.bb index 97f4c4437f..4a04c945ae 100644 --- a/packages/meta/slugos-packages.bb +++ b/packages/meta/slugos-packages.bb @@ -6,7 +6,7 @@ DESCRIPTION = "Packages that are compatible with the SlugOS firmware" MAINTAINER = "NSLU2 Linux <nslu2-linux@yahoogroups.com>" HOMEPAGE = "http://www.nslu2-linux.org" LICENSE = "MIT" -PR = "r4" +PR = "r5" CONFLICTS = "db3" PROVIDES += "${SLUGOS_IMAGENAME}-packages" @@ -103,7 +103,6 @@ SLUGOS_PACKAGES = "\ make \ masqmail \ mdadm \ - memtester \ mgetty \ miau \ microcom \ @@ -175,6 +174,7 @@ SLUGOS_PACKAGES = "\ # Packages currently broken on all platforms SLUGOS_BROKEN_PACKAGES = "\ irssi \ + memtester \ obexftp \ qc-usb-messenger \ unionfs-modules \ diff --git a/packages/meta/task-bootstrap-unionroot.bb b/packages/meta/task-bootstrap-unionroot.bb index c800fca9f1..0df162a9e5 100644 --- a/packages/meta/task-bootstrap-unionroot.bb +++ b/packages/meta/task-bootstrap-unionroot.bb @@ -1,8 +1,6 @@ DESCRIPTION = "Core packages required for a basic installation with unionroot" MAINTAINER = "Chris Lord <cwiiis@handhelds.org>" PROVIDES = "task-bootstrap" -PN = "task-bootstrap" -PV = "1.0unionroot" PR = "r1" DEFAULT_PREFERENCE = "-1" diff --git a/packages/misc-binary-only/acx-firmware_1.0.bb b/packages/misc-binary-only/acx-firmware_1.0.bb index f703dc93b4..bfeaae773f 100644 --- a/packages/misc-binary-only/acx-firmware_1.0.bb +++ b/packages/misc-binary-only/acx-firmware_1.0.bb @@ -1,8 +1,8 @@ DESCRIPTION = "ACX (iPAQ HX4700/HTC Universal) wireless firmware." SECTION = "base" LICENSE = "Unknown" -PR = "r1" -RDEPENDS = "kernel-module-firmware-class" +PR = "r2" +RRECOMMENDS = "kernel-module-firmware-class" SRC_URI = "http://sdgsystems.com/pub/ipaq/hx4700/src/RADIO0d.BIN \ http://sdgsystems.com/pub/ipaq/hx4700/src/RADIO11.BIN \ diff --git a/packages/mplayer/mplayer-1.0pre8/.mtn2git_empty b/packages/mplayer/mplayer-1.0pre8/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/mplayer/mplayer-1.0pre8/.mtn2git_empty diff --git a/packages/mplayer/mplayer-1.0pre8/libmpcodecs-ogg-include.patch b/packages/mplayer/mplayer-1.0pre8/libmpcodecs-ogg-include.patch new file mode 100644 index 0000000000..619c4b0cd2 --- /dev/null +++ b/packages/mplayer/mplayer-1.0pre8/libmpcodecs-ogg-include.patch @@ -0,0 +1,13 @@ +--- MPlayer-1.0pre8/libmpcodecs/Makefile.orig 2006-06-30 23:26:33.000000000 +0100 ++++ MPlayer-1.0pre8/libmpcodecs/Makefile 2006-06-30 23:28:52.000000000 +0100 +@@ -267,8 +267,8 @@ + SRCS2=$(ENCODER_SRCS) + OBJS2=$(SRCS2:.c=.o) + +-CFLAGS = $(OPTFLAGS) \ +- -I. -I.. \ ++CFLAGS = -I.. $(OPTFLAGS) \ ++ -I. \ + -Inative \ + -I../libmpdemux \ + -I../loader \ diff --git a/packages/mplayer/mplayer-1.0pre8/libmpdemux-ogg-include.patch b/packages/mplayer/mplayer-1.0pre8/libmpdemux-ogg-include.patch new file mode 100644 index 0000000000..541f4a03ee --- /dev/null +++ b/packages/mplayer/mplayer-1.0pre8/libmpdemux-ogg-include.patch @@ -0,0 +1,13 @@ +--- MPlayer-1.0pre8/libmpdemux/Makefile.orig 2006-06-30 23:26:49.000000000 +0100 ++++ MPlayer-1.0pre8/libmpdemux/Makefile 2006-06-30 23:27:10.000000000 +0100 +@@ -156,8 +156,8 @@ + + OBJS = $(SRCS:.c=.o) + OBJS += $(CPLUSPLUSSRCS:.cpp=.o) +-INCLUDE = -I.. -I../loader $(CSS_INC) $(EXTRA_INC) $(LIBAV_INC) +-CFLAGS = $(OPTFLAGS) $(INCLUDE) $(XMMS_CFLAGS) $(CDPARANOIA_INC) $(DVB_INC) ++INCLUDE = -I../loader $(CSS_INC) $(EXTRA_INC) $(LIBAV_INC) ++CFLAGS = -I.. $(OPTFLAGS) $(INCLUDE) $(XMMS_CFLAGS) $(CDPARANOIA_INC) $(DVB_INC) + CPLUSPLUSFLAGS = $(CFLAGS) $(CPLUSPLUSINCLUDE) -D__STDC_LIMIT_MACROS + CPLUSPLUS = $(CC) + diff --git a/packages/mplayer/mplayer_1.0pre8.bb b/packages/mplayer/mplayer_1.0pre8.bb index a55c59dc96..9c66221f57 100644 --- a/packages/mplayer/mplayer_1.0pre8.bb +++ b/packages/mplayer/mplayer_1.0pre8.bb @@ -13,7 +13,9 @@ SRC_URI = "http://www1.mplayerhq.hu/MPlayer/releases/MPlayer-${PV}.tar.bz2 \ file://w100-configure.patch;patch=1 \ file://w100-Makefile.patch;patch=1 \ file://w100-video_out.patch;patch=1 \ - file://w100-mplayer.patch;patch=1" + file://w100-mplayer.patch;patch=1 \ + file://libmpdemux-ogg-include.patch;patch=1 \ + file://libmpcodecs-ogg-include.patch;patch=1" MAINTAINER="Graeme Gregory <dp@xora.org.uk>" RCONFLICTS_${PN} = "mplayer-atty" diff --git a/packages/musicpd/mpd-alsa_0.11.5.bb b/packages/musicpd/mpd-alsa_0.11.5.bb index d4ee65abba..ceb491a192 100644 --- a/packages/musicpd/mpd-alsa_0.11.5.bb +++ b/packages/musicpd/mpd-alsa_0.11.5.bb @@ -5,7 +5,7 @@ MAINTAINER = "Chris Larson <kergoth@handhelds.org>" SECTION = "console/multimedia" DEPENDS = "libvorbis libogg libid3tag libao-alsa zlib libmikmod libmad flac audiofile virtual/libiconv" RDEPENDS = "libao-alsa" -PR = "r1" +PR = "r3" SRC_URI = "${SOURCEFORGE_MIRROR}/musicpd/mpd-${PV}.tar.gz \ file://mpd/save-volume-state.patch;patch=1 file://mpd/mpd.init" @@ -20,6 +20,14 @@ INITSCRIPT_NAME = "mpd" # versions. EXTRA_OECONF = "--enable-ogg \ + --with-iconv-libraries=${STAGING_LIBDIR} \ + --with-iconv-includes=${STAGING_INCDIR} \ + --with-vorbis-libraries=${STAGING_LIBDIR} \ + --with-vorbis-includes=${STAGING_INCDIR} \ + --with-ogg-libraries=${STAGING_LIBDIR} \ + --with-ogg-includes=${STAGING_INCDIR} \ + --with-ao-libraries=${STAGING_LIBDIR} \ + --with-ao-includes=${STAGING_INCDIR} \ --with-id3tag-libraries=${STAGING_LIBDIR} \ --with-id3tag-includes=${STAGING_INCDIR} \ --with-mad-libraries=${STAGING_LIBDIR} \ diff --git a/packages/musicpd/mpd_0.11.5.bb b/packages/musicpd/mpd_0.11.5.bb index a4ef4e9289..95fe05cf41 100644 --- a/packages/musicpd/mpd_0.11.5.bb +++ b/packages/musicpd/mpd_0.11.5.bb @@ -4,7 +4,7 @@ LICENSE = "GPLv2" MAINTAINER = "Chris Larson <kergoth@handhelds.org>" SECTION = "console/multimedia" DEPENDS = "libvorbis libogg libid3tag libao zlib libmikmod libmad flac audiofile virtual/libiconv" -PR = "r5" +PR = "r7" SRC_URI = "${SOURCEFORGE_MIRROR}/musicpd/mpd-${PV}.tar.gz \ file://save-volume-state.patch;patch=1" @@ -17,6 +17,14 @@ inherit autotools # versions. EXTRA_OECONF = "--enable-ogg \ + --with-iconv-libraries=${STAGING_LIBDIR} \ + --with-iconv-includes=${STAGING_INCDIR} \ + --with-vorbis-libraries=${STAGING_LIBDIR} \ + --with-vorbis-includes=${STAGING_INCDIR} \ + --with-ogg-libraries=${STAGING_LIBDIR} \ + --with-ogg-includes=${STAGING_INCDIR} \ + --with-ao-libraries=${STAGING_LIBDIR} \ + --with-ao-includes=${STAGING_INCDIR} \ --with-id3tag-libraries=${STAGING_LIBDIR} \ --with-id3tag-includes=${STAGING_INCDIR} \ --with-mad-libraries=${STAGING_LIBDIR} \ diff --git a/packages/mutt/mutt-1.5.4i/keymap.h.patch b/packages/mutt/mutt-1.5.4i/keymap.h.patch new file mode 100644 index 0000000000..40995aa58f --- /dev/null +++ b/packages/mutt/mutt-1.5.4i/keymap.h.patch @@ -0,0 +1,11 @@ +--- mutt-1.5.4/keymap.h.orig 2006-07-01 16:50:25.000000000 +0200 ++++ mutt-1.5.4/keymap.h 2006-07-01 16:50:58.000000000 +0200 +@@ -19,6 +19,8 @@ + #ifndef KEYMAP_H + #define KEYMAP_H + ++#include "mapping.h" ++ + /* maximal length of a key binding sequence used for buffer in km_bindkey */ + #define MAX_SEQ 8 + diff --git a/packages/mutt/mutt_1.5.4i.bb b/packages/mutt/mutt_1.5.4i.bb index e6e90dfd1e..50c6019e21 100644 --- a/packages/mutt/mutt_1.5.4i.bb +++ b/packages/mutt/mutt_1.5.4i.bb @@ -7,6 +7,7 @@ bindings, keyboard macros, mail threading, regular expression \ searches, and a powerful pattern matching language for selecting \ groups of messages." LICENSE = "GPL" +PR = "r1" SRC_URI = "ftp://ftp.mutt.org/mutt/devel/mutt-${PV}.tar.gz \ http://mutt.kiev.ua/download/mutt-1.5.4/patch-1.5.4.rr.compressed.gz;patch=1 \ http://mutt.kiev.ua/download/mutt-1.5.4/patch-1.5.4.vvv.nntp.gz;patch=1 \ @@ -14,6 +15,7 @@ SRC_URI = "ftp://ftp.mutt.org/mutt/devel/mutt-${PV}.tar.gz \ http://mutt.kiev.ua/download/mutt-1.5.4/patch-1.5.4.vvv.quote.gz;patch=1 \ file://cppflags.patch;patch=1 \ file://posix1_lim.patch;patch=1 \ + file://keymap.h.patch;patch=1 \ file://configure.patch;patch=1" S = "${WORKDIR}/mutt-1.5.4" diff --git a/packages/mutt/mutt_1.5.9i.bb b/packages/mutt/mutt_1.5.9i.bb index c6939454d2..3192eb50f5 100644 --- a/packages/mutt/mutt_1.5.9i.bb +++ b/packages/mutt/mutt_1.5.9i.bb @@ -7,6 +7,7 @@ bindings, keyboard macros, mail threading, regular expression \ searches, and a powerful pattern matching language for selecting \ groups of messages." LICENSE = "GPL" +PR = "r0" SRC_URI = "ftp://ftp.mutt.org/mutt/devel/mutt-${PV}.tar.gz \ http://mutt.kiev.ua/download/mutt-1.5.9/patch-1.5.9.rr.compressed.gz;patch=1 \ http://mutt.kiev.ua/download/mutt-1.5.9/patch-1.5.9.vvv.nntp.gz;patch=1 \ diff --git a/packages/opie-aboutapplet/opie-aboutapplet-1.2.1/add-hrw-to-authors.patch b/packages/opie-aboutapplet/opie-aboutapplet-1.2.1/add-hrw-to-authors.patch deleted file mode 100644 index 93a251ccac..0000000000 --- a/packages/opie-aboutapplet/opie-aboutapplet-1.2.1/add-hrw-to-authors.patch +++ /dev/null @@ -1,18 +0,0 @@ -Backport from CVS - -Index: widget.ui -=================================================================== -RCS file: /cvs/opie/core/applets/aboutapplet/widget.ui,v -retrieving revision 1.6 -retrieving revision 1.7 -diff -u -u -r1.6 -r1.7 ---- aboutapplet/widget.ui 22 Apr 2005 13:01:47 -0000 1.6 -+++ aboutapplet/widget.ui 13 Nov 2005 14:40:31 -0000 1.7 -@@ -134,6 +134,7 @@ - <b>Holger 'Zecke' Freyther</b> (zecke@handhelds.org)<br/> - <b>Robert 'Sandman' Griebl</b> (sandman@handhelds.org)<br/> - <b>Alberto 'Skyhusker' Hierro</b> (skyhusker@handhelds.org)<br/> -+<b>Marcin 'Hrw' Juszkiewicz</b> (hrw@handhelds.org)<br/> - <b>Chris 'Kergoth' Larson</b> (kergoth@handhelds.org)<br/> - <b>Michael 'Mickey' Lauer</b> (mickeyl@handhelds.org)<br/> - <b>Lorn 'ljp' Potter</b> (ljp@handhelds.org)<br/> diff --git a/packages/opie-aboutapplet/opie-aboutapplet-1.2.1/opie-1.2.1.patch b/packages/opie-aboutapplet/opie-aboutapplet-1.2.1/opie-1.2.1.patch deleted file mode 100644 index 31e66ced31..0000000000 --- a/packages/opie-aboutapplet/opie-aboutapplet-1.2.1/opie-1.2.1.patch +++ /dev/null @@ -1,18 +0,0 @@ -Backport from CVS - -Index: widget.ui -=================================================================== -RCS file: /cvs/opie/core/applets/aboutapplet/widget.ui,v -retrieving revision 1.7 -diff -u -u -r1.7 widget.ui ---- aboutapplet/widget.ui 13 Nov 2005 14:40:31 -0000 1.7 -+++ aboutapplet/widget.ui 22 Jan 2006 20:49:33 -0000 -@@ -42,7 +42,7 @@ - </property> - <property stdset="1"> - <name>text</name> -- <string><center><b>The Open Palmtop Integrated Environment V1.2</b></center></string> -+ <string><center><b>The Open Palmtop Integrated Environment V1.2.1</b></center></string> - </property> - </widget> - <widget row="1" column="1" > diff --git a/packages/opie-aboutapplet/opie-aboutapplet_1.2.1.bb b/packages/opie-aboutapplet/opie-aboutapplet_1.2.1.bb deleted file mode 100644 index 41533f8d3b..0000000000 --- a/packages/opie-aboutapplet/opie-aboutapplet_1.2.1.bb +++ /dev/null @@ -1,7 +0,0 @@ -include ${PN}.inc - -PR = "r2" - -SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/aboutapplet \ - file://opie-1.2.1.patch;patch=1 \ - file://add-hrw-to-authors.patch;patch=1" diff --git a/packages/opie-aboutapplet/opie-aboutapplet_1.2.2.bb b/packages/opie-aboutapplet/opie-aboutapplet_1.2.2.bb new file mode 100644 index 0000000000..65cb96a6e1 --- /dev/null +++ b/packages/opie-aboutapplet/opie-aboutapplet_1.2.2.bb @@ -0,0 +1,4 @@ +include ${PN}.inc + + +SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/aboutapplet" diff --git a/packages/opie-addressbook/opie-addressbook_1.2.1.bb b/packages/opie-addressbook/opie-addressbook_1.2.2.bb index a8bf6f7e5a..a8bf6f7e5a 100644 --- a/packages/opie-addressbook/opie-addressbook_1.2.1.bb +++ b/packages/opie-addressbook/opie-addressbook_1.2.2.bb diff --git a/packages/opie-advancedfm/opie-advancedfm_1.2.1.bb b/packages/opie-advancedfm/opie-advancedfm_1.2.2.bb index 8a4cc0ebc5..8a4cc0ebc5 100644 --- a/packages/opie-advancedfm/opie-advancedfm_1.2.1.bb +++ b/packages/opie-advancedfm/opie-advancedfm_1.2.2.bb diff --git a/packages/opie-alarm/opie-alarm_1.2.1.bb b/packages/opie-alarm/opie-alarm_1.2.2.bb index ada72aea1b..ada72aea1b 100644 --- a/packages/opie-alarm/opie-alarm_1.2.1.bb +++ b/packages/opie-alarm/opie-alarm_1.2.2.bb diff --git a/packages/opie-appearance/opie-appearance_1.2.1.bb b/packages/opie-appearance/opie-appearance_1.2.2.bb index d6ba9fb452..ee26b50ca6 100644 --- a/packages/opie-appearance/opie-appearance_1.2.1.bb +++ b/packages/opie-appearance/opie-appearance_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r2" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/appearance2 \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-aqpkg/opie-aqpkg_1.2.1.bb b/packages/opie-aqpkg/opie-aqpkg_1.2.2.bb index 17a7683cef..17a7683cef 100644 --- a/packages/opie-aqpkg/opie-aqpkg_1.2.1.bb +++ b/packages/opie-aqpkg/opie-aqpkg_1.2.2.bb diff --git a/packages/opie-autorotateapplet/opie-autorotateapplet_1.2.1.bb b/packages/opie-autorotateapplet/opie-autorotateapplet_1.2.2.bb index f1b992d7c8..f1b992d7c8 100644 --- a/packages/opie-autorotateapplet/opie-autorotateapplet_1.2.1.bb +++ b/packages/opie-autorotateapplet/opie-autorotateapplet_1.2.2.bb diff --git a/packages/opie-backgammon/opie-backgammon_1.2.1.bb b/packages/opie-backgammon/opie-backgammon_1.2.2.bb index 0cae5c2a10..0cae5c2a10 100644 --- a/packages/opie-backgammon/opie-backgammon_1.2.1.bb +++ b/packages/opie-backgammon/opie-backgammon_1.2.2.bb diff --git a/packages/opie-backup/opie-backup_1.2.1.bb b/packages/opie-backup/opie-backup_1.2.2.bb index 8f276e0c3c..3004eeae34 100644 --- a/packages/opie-backup/opie-backup_1.2.1.bb +++ b/packages/opie-backup/opie-backup_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/backup \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-bartender/opie-bartender_1.2.1.bb b/packages/opie-bartender/opie-bartender_1.2.2.bb index 40c46f0070..40c46f0070 100644 --- a/packages/opie-bartender/opie-bartender_1.2.1.bb +++ b/packages/opie-bartender/opie-bartender_1.2.2.bb diff --git a/packages/opie-batteryapplet/opie-batteryapplet_1.2.1.bb b/packages/opie-batteryapplet/opie-batteryapplet_1.2.2.bb index 3feba24a63..f8136964fc 100644 --- a/packages/opie-batteryapplet/opie-batteryapplet_1.2.1.bb +++ b/packages/opie-batteryapplet/opie-batteryapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/batteryapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-batteryapplet/opie-batteryapplet_cvs.bb b/packages/opie-batteryapplet/opie-batteryapplet_cvs.bb index f7148388a2..8f109df1cc 100644 --- a/packages/opie-batteryapplet/opie-batteryapplet_cvs.bb +++ b/packages/opie-batteryapplet/opie-batteryapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/batteryapplet \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-bluepin/opie-bluepin_1.2.1.bb b/packages/opie-bluepin/opie-bluepin_1.2.2.bb index 4df972dc5a..fdfdffa0a5 100644 --- a/packages/opie-bluepin/opie-bluepin_1.2.1.bb +++ b/packages/opie-bluepin/opie-bluepin_1.2.2.bb @@ -1,5 +1,4 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/net/opietooth/blue-pin" diff --git a/packages/opie-bluetoothapplet/opie-bluetoothapplet_1.2.1.bb b/packages/opie-bluetoothapplet/opie-bluetoothapplet_1.2.2.bb index 43d21d82db..43d21d82db 100644 --- a/packages/opie-bluetoothapplet/opie-bluetoothapplet_1.2.1.bb +++ b/packages/opie-bluetoothapplet/opie-bluetoothapplet_1.2.2.bb diff --git a/packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.1.bb b/packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.2.bb index 7f022404b1..3232b06c61 100644 --- a/packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.1.bb +++ b/packages/opie-bluetoothmanager/opie-bluetoothmanager_1.2.2.bb @@ -1,5 +1,4 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/net/opietooth/manager \ ${HANDHELDS_CVS};tag=${TAG};module=opie/apps \ diff --git a/packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb b/packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb index 0dcb90892f..7ff2ac0f64 100644 --- a/packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb +++ b/packages/opie-bluetoothmanager/opie-bluetoothmanager_cvs.bb @@ -1,6 +1,5 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/net/opietooth/manager \ ${HANDHELDS_CVS};module=opie/apps \ diff --git a/packages/opie-bounce/opie-bounce_1.2.1.bb b/packages/opie-bounce/opie-bounce_1.2.2.bb index 3c49e91391..3c49e91391 100644 --- a/packages/opie-bounce/opie-bounce_1.2.1.bb +++ b/packages/opie-bounce/opie-bounce_1.2.2.bb diff --git a/packages/opie-brightnessapplet/opie-brightnessapplet_1.2.1.bb b/packages/opie-brightnessapplet/opie-brightnessapplet_1.2.2.bb index 854ebd07fa..854ebd07fa 100644 --- a/packages/opie-brightnessapplet/opie-brightnessapplet_1.2.1.bb +++ b/packages/opie-brightnessapplet/opie-brightnessapplet_1.2.2.bb diff --git a/packages/opie-button-settings/opie-button-settings-1.2.1/1624-bugfix.patch b/packages/opie-button-settings/opie-button-settings-1.2.1/1624-bugfix.patch deleted file mode 100644 index 91a22bc976..0000000000 --- a/packages/opie-button-settings/opie-button-settings-1.2.1/1624-bugfix.patch +++ /dev/null @@ -1,25 +0,0 @@ -Index: button/buttonsettings.cpp -=================================================================== -RCS file: /cvs/opie/core/settings/button/buttonsettings.cpp,v -retrieving revision 1.13 -retrieving revision 1.14 -diff -u -u -r1.13 -r1.14 ---- button/buttonsettings.cpp 24 Apr 2005 20:24:00 -0000 1.13 -+++ button/buttonsettings.cpp 12 Oct 2005 21:08:35 -0000 1.14 -@@ -37,7 +37,7 @@ - #include <qlabel.h> - #include <qtimer.h> - #include <qscrollview.h> -- -+#include <qcopchannel_qws.h> - - using namespace Opie::Core; - -@@ -157,6 +157,7 @@ - ButtonSettings::~ButtonSettings ( ) - { - QPEApplication::ungrabKeyboard ( ); -+ QCopChannel::send ("QPE/System", "deviceButtonMappingChanged()" ); - } - - void ButtonSettings::updateLabels ( ) diff --git a/packages/opie-button-settings/opie-button-settings.inc b/packages/opie-button-settings/opie-button-settings.inc index ec935e7112..733b7d9a5d 100644 --- a/packages/opie-button-settings/opie-button-settings.inc +++ b/packages/opie-button-settings/opie-button-settings.inc @@ -1,4 +1,4 @@ -DESCRIPTION = "Device-buttons settings dialog" +DESCRIPTION = "Opie device buttons settings dialog" SECTION = "opie/settings" PRIORITY = "optional" MAINTAINER = "Team Opie <opie@handhelds.org>" diff --git a/packages/opie-button-settings/opie-button-settings_1.2.1.bb b/packages/opie-button-settings/opie-button-settings_1.2.1.bb deleted file mode 100644 index 1f671597ba..0000000000 --- a/packages/opie-button-settings/opie-button-settings_1.2.1.bb +++ /dev/null @@ -1,8 +0,0 @@ -include ${PN}.inc - -PR = "r1" - -SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/settings/button \ - ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ - ${HANDHELDS_CVS};tag=${TAG};module=opie/apps \ - file://1624-bugfix.patch;patch=1" diff --git a/packages/opie-button-settings/opie-button-settings_1.2.2.bb b/packages/opie-button-settings/opie-button-settings_1.2.2.bb new file mode 100644 index 0000000000..576eba1dba --- /dev/null +++ b/packages/opie-button-settings/opie-button-settings_1.2.2.bb @@ -0,0 +1,6 @@ +include ${PN}.inc + + +SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/settings/button \ + ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ + ${HANDHELDS_CVS};tag=${TAG};module=opie/apps" diff --git a/packages/opie-buzzword/opie-buzzword_1.2.1.bb b/packages/opie-buzzword/opie-buzzword_1.2.2.bb index f87d0bbf1f..f87d0bbf1f 100644 --- a/packages/opie-buzzword/opie-buzzword_1.2.1.bb +++ b/packages/opie-buzzword/opie-buzzword_1.2.2.bb diff --git a/packages/opie-calculator/opie-calculator_1.2.1.bb b/packages/opie-calculator/opie-calculator_1.2.2.bb index 984765fe89..984765fe89 100644 --- a/packages/opie-calculator/opie-calculator_1.2.1.bb +++ b/packages/opie-calculator/opie-calculator_1.2.2.bb diff --git a/packages/opie-camera/opie-camera_1.2.1.bb b/packages/opie-camera/opie-camera_1.2.2.bb index 22b4c9b773..22b4c9b773 100644 --- a/packages/opie-camera/opie-camera_1.2.1.bb +++ b/packages/opie-camera/opie-camera_1.2.2.bb diff --git a/packages/opie-cardmon/opie-cardmon_1.2.1.bb b/packages/opie-cardmon/opie-cardmon_1.2.2.bb index 7283fa75f8..7283fa75f8 100644 --- a/packages/opie-cardmon/opie-cardmon_1.2.1.bb +++ b/packages/opie-cardmon/opie-cardmon_1.2.2.bb diff --git a/packages/opie-checkbook/opie-checkbook_1.2.1.bb b/packages/opie-checkbook/opie-checkbook_1.2.2.bb index 8a4cc0ebc5..8a4cc0ebc5 100644 --- a/packages/opie-checkbook/opie-checkbook_1.2.1.bb +++ b/packages/opie-checkbook/opie-checkbook_1.2.2.bb diff --git a/packages/opie-citytime/opie-citytime_1.2.1.bb b/packages/opie-citytime/opie-citytime_1.2.2.bb index 29d244a555..29d244a555 100644 --- a/packages/opie-citytime/opie-citytime_1.2.1.bb +++ b/packages/opie-citytime/opie-citytime_1.2.2.bb diff --git a/packages/opie-clipboardapplet/opie-clipboardapplet_1.2.1.bb b/packages/opie-clipboardapplet/opie-clipboardapplet_1.2.2.bb index a9d681b5b9..f123790cea 100644 --- a/packages/opie-clipboardapplet/opie-clipboardapplet_1.2.1.bb +++ b/packages/opie-clipboardapplet/opie-clipboardapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/clipboardapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-clipboardapplet/opie-clipboardapplet_cvs.bb b/packages/opie-clipboardapplet/opie-clipboardapplet_cvs.bb index b0ba1ba507..67cc639a0b 100644 --- a/packages/opie-clipboardapplet/opie-clipboardapplet_cvs.bb +++ b/packages/opie-clipboardapplet/opie-clipboardapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/clipboardapplet \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-clock/opie-clock_1.2.1.bb b/packages/opie-clock/opie-clock_1.2.2.bb index f86c3d2832..f86c3d2832 100644 --- a/packages/opie-clock/opie-clock_1.2.1.bb +++ b/packages/opie-clock/opie-clock_1.2.2.bb diff --git a/packages/opie-clockapplet/opie-clockapplet_1.2.1.bb b/packages/opie-clockapplet/opie-clockapplet_1.2.2.bb index 9d4dfa7723..6810381989 100644 --- a/packages/opie-clockapplet/opie-clockapplet_1.2.1.bb +++ b/packages/opie-clockapplet/opie-clockapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/clockapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-clockapplet/opie-clockapplet_cvs.bb b/packages/opie-clockapplet/opie-clockapplet_cvs.bb index 52276b64c3..8b107589c0 100644 --- a/packages/opie-clockapplet/opie-clockapplet_cvs.bb +++ b/packages/opie-clockapplet/opie-clockapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/clockapplet \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-confeditor/opie-confeditor_1.2.1.bb b/packages/opie-confeditor/opie-confeditor_1.2.2.bb index dce2d43da5..dce2d43da5 100644 --- a/packages/opie-confeditor/opie-confeditor_1.2.1.bb +++ b/packages/opie-confeditor/opie-confeditor_1.2.2.bb diff --git a/packages/opie-console/opie-console_1.2.1.bb b/packages/opie-console/opie-console_1.2.2.bb index 061c489c7e..5dbdba0790 100644 --- a/packages/opie-console/opie-console_1.2.1.bb +++ b/packages/opie-console/opie-console_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r3" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/apps/${APPNAME} \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-dagger/opie-dagger_1.2.1.bb b/packages/opie-dagger/opie-dagger_1.2.2.bb index 52b34898aa..52b34898aa 100644 --- a/packages/opie-dagger/opie-dagger_1.2.1.bb +++ b/packages/opie-dagger/opie-dagger_1.2.2.bb diff --git a/packages/opie-dasher/opie-dasher_1.2.1.bb b/packages/opie-dasher/opie-dasher_1.2.2.bb index a8b5176961..a8b5176961 100644 --- a/packages/opie-dasher/opie-dasher_1.2.1.bb +++ b/packages/opie-dasher/opie-dasher_1.2.2.bb diff --git a/packages/opie-datebook-birthdayplugin/opie-datebook-birthdayplugin_1.2.1.bb b/packages/opie-datebook-birthdayplugin/opie-datebook-birthdayplugin_1.2.2.bb index 515c5c9de1..515c5c9de1 100644 --- a/packages/opie-datebook-birthdayplugin/opie-datebook-birthdayplugin_1.2.1.bb +++ b/packages/opie-datebook-birthdayplugin/opie-datebook-birthdayplugin_1.2.2.bb diff --git a/packages/opie-datebook-chrisholidayplugin/opie-datebook-chrisholidayplugin_1.2.1.bb b/packages/opie-datebook-chrisholidayplugin/opie-datebook-chrisholidayplugin_1.2.2.bb index bf937db7e1..bf937db7e1 100644 --- a/packages/opie-datebook-chrisholidayplugin/opie-datebook-chrisholidayplugin_1.2.1.bb +++ b/packages/opie-datebook-chrisholidayplugin/opie-datebook-chrisholidayplugin_1.2.2.bb diff --git a/packages/opie-datebook-nationalholidayplugin/opie-datebook-nationalholidayplugin_1.2.1.bb b/packages/opie-datebook-nationalholidayplugin/opie-datebook-nationalholidayplugin_1.2.2.bb index d6d19655a7..d6d19655a7 100644 --- a/packages/opie-datebook-nationalholidayplugin/opie-datebook-nationalholidayplugin_1.2.1.bb +++ b/packages/opie-datebook-nationalholidayplugin/opie-datebook-nationalholidayplugin_1.2.2.bb diff --git a/packages/opie-datebook/opie-datebook_1.2.1.bb b/packages/opie-datebook/opie-datebook_1.2.2.bb index 1470bc05f0..83493f01a3 100644 --- a/packages/opie-datebook/opie-datebook_1.2.1.bb +++ b/packages/opie-datebook/opie-datebook_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/pim/datebook \ ${HANDHELDS_CVS};tag=${TAG};module=opie/apps \ diff --git a/packages/opie-deco-flat/opie-deco-flat_1.2.1.bb b/packages/opie-deco-flat/opie-deco-flat_1.2.2.bb index 59aa1d2a23..59aa1d2a23 100644 --- a/packages/opie-deco-flat/opie-deco-flat_1.2.1.bb +++ b/packages/opie-deco-flat/opie-deco-flat_1.2.2.bb diff --git a/packages/opie-deco-liquid/opie-deco-liquid_1.2.1.bb b/packages/opie-deco-liquid/opie-deco-liquid_1.2.2.bb index 6f07a57e40..6f07a57e40 100644 --- a/packages/opie-deco-liquid/opie-deco-liquid_1.2.1.bb +++ b/packages/opie-deco-liquid/opie-deco-liquid_1.2.2.bb diff --git a/packages/opie-deco-polished/opie-deco-polished_1.2.1.bb b/packages/opie-deco-polished/opie-deco-polished_1.2.2.bb index 2dde102adf..2dde102adf 100644 --- a/packages/opie-deco-polished/opie-deco-polished_1.2.1.bb +++ b/packages/opie-deco-polished/opie-deco-polished_1.2.2.bb diff --git a/packages/opie-doctab/opie-doctab_1.2.1.bb b/packages/opie-doctab/opie-doctab_1.2.2.bb index 317b556300..317b556300 100644 --- a/packages/opie-doctab/opie-doctab_1.2.1.bb +++ b/packages/opie-doctab/opie-doctab_1.2.2.bb diff --git a/packages/opie-drawpad/opie-drawpad_1.2.1.bb b/packages/opie-drawpad/opie-drawpad_1.2.2.bb index d4a6c7a665..d4a6c7a665 100644 --- a/packages/opie-drawpad/opie-drawpad_1.2.1.bb +++ b/packages/opie-drawpad/opie-drawpad_1.2.2.bb diff --git a/packages/opie-dvorak/opie-dvorak_1.2.1.bb b/packages/opie-dvorak/opie-dvorak_1.2.2.bb index f7c4394c3f..f7c4394c3f 100644 --- a/packages/opie-dvorak/opie-dvorak_1.2.1.bb +++ b/packages/opie-dvorak/opie-dvorak_1.2.2.bb diff --git a/packages/opie-embeddedkonsole/opie-embeddedkonsole_1.2.1.bb b/packages/opie-embeddedkonsole/opie-embeddedkonsole_1.2.2.bb index 68af4cfec6..68af4cfec6 100644 --- a/packages/opie-embeddedkonsole/opie-embeddedkonsole_1.2.1.bb +++ b/packages/opie-embeddedkonsole/opie-embeddedkonsole_1.2.2.bb diff --git a/packages/opie-euroconv/opie-euroconv_1.2.1.bb b/packages/opie-euroconv/opie-euroconv_1.2.2.bb index 2397fda504..2397fda504 100644 --- a/packages/opie-euroconv/opie-euroconv_1.2.1.bb +++ b/packages/opie-euroconv/opie-euroconv_1.2.2.bb diff --git a/packages/opie-examples-python/opie-examples-python_1.2.1.bb b/packages/opie-examples-python/opie-examples-python_1.2.2.bb index 3dd011c0b9..57a745a480 100644 --- a/packages/opie-examples-python/opie-examples-python_1.2.1.bb +++ b/packages/opie-examples-python/opie-examples-python_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/examples/python \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-examples-python/opie-examples-python_cvs.bb b/packages/opie-examples-python/opie-examples-python_cvs.bb index 75a52cb7a7..25cfe334b4 100644 --- a/packages/opie-examples-python/opie-examples-python_cvs.bb +++ b/packages/opie-examples-python/opie-examples-python_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/examples/python \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-examples/opie-examples_1.2.1.bb b/packages/opie-examples/opie-examples_1.2.2.bb index 7b28fc1a9c..7b28fc1a9c 100644 --- a/packages/opie-examples/opie-examples_1.2.1.bb +++ b/packages/opie-examples/opie-examples_1.2.2.bb diff --git a/packages/opie-eye/opie-eye_1.2.1.bb b/packages/opie-eye/opie-eye_1.2.2.bb index 0fc47e6b10..0fc47e6b10 100644 --- a/packages/opie-eye/opie-eye_1.2.1.bb +++ b/packages/opie-eye/opie-eye_1.2.2.bb diff --git a/packages/opie-fifteen/opie-fifteen_1.2.1.bb b/packages/opie-fifteen/opie-fifteen_1.2.2.bb index d80333bada..d80333bada 100644 --- a/packages/opie-fifteen/opie-fifteen_1.2.1.bb +++ b/packages/opie-fifteen/opie-fifteen_1.2.2.bb diff --git a/packages/opie-formatter/opie-formatter_1.2.1.bb b/packages/opie-formatter/opie-formatter_1.2.2.bb index f8020d60a0..f8020d60a0 100644 --- a/packages/opie-formatter/opie-formatter_1.2.1.bb +++ b/packages/opie-formatter/opie-formatter_1.2.2.bb diff --git a/packages/opie-freetype/opie-freetype_1.2.1.bb b/packages/opie-freetype/opie-freetype_1.2.2.bb index 81996992a2..81996992a2 100644 --- a/packages/opie-freetype/opie-freetype_1.2.1.bb +++ b/packages/opie-freetype/opie-freetype_1.2.2.bb diff --git a/packages/opie-ftp/opie-ftp_1.2.1.bb b/packages/opie-ftp/opie-ftp_1.2.2.bb index 7a7335ca67..7a7335ca67 100644 --- a/packages/opie-ftp/opie-ftp_1.2.1.bb +++ b/packages/opie-ftp/opie-ftp_1.2.2.bb diff --git a/packages/opie-ftplib/opie-ftplib_1.2.1.bb b/packages/opie-ftplib/opie-ftplib_1.2.2.bb index 0339703a5d..0339703a5d 100644 --- a/packages/opie-ftplib/opie-ftplib_1.2.1.bb +++ b/packages/opie-ftplib/opie-ftplib_1.2.2.bb diff --git a/packages/opie-go/opie-go_1.2.1.bb b/packages/opie-go/opie-go_1.2.2.bb index 4c9f590e9e..4c9f590e9e 100644 --- a/packages/opie-go/opie-go_1.2.1.bb +++ b/packages/opie-go/opie-go_1.2.2.bb diff --git a/packages/opie-gutenbrowser/opie-gutenbrowser_1.2.1.bb b/packages/opie-gutenbrowser/opie-gutenbrowser_1.2.2.bb index 19d2a29213..19d2a29213 100644 --- a/packages/opie-gutenbrowser/opie-gutenbrowser_1.2.1.bb +++ b/packages/opie-gutenbrowser/opie-gutenbrowser_1.2.2.bb diff --git a/packages/opie-handwriting/opie-handwriting_1.2.1.bb b/packages/opie-handwriting/opie-handwriting_1.2.2.bb index ba3da45f95..ba3da45f95 100644 --- a/packages/opie-handwriting/opie-handwriting_1.2.1.bb +++ b/packages/opie-handwriting/opie-handwriting_1.2.2.bb diff --git a/packages/opie-help-en/opie-help-en_1.2.1.bb b/packages/opie-help-en/opie-help-en_1.2.2.bb index 7bf8bd0ad4..7bf8bd0ad4 100644 --- a/packages/opie-help-en/opie-help-en_1.2.1.bb +++ b/packages/opie-help-en/opie-help-en_1.2.2.bb diff --git a/packages/opie-help-en/opie-help-en_cvs.bb b/packages/opie-help-en/opie-help-en_cvs.bb index c54c006709..09c56ae9f4 100644 --- a/packages/opie-help-en/opie-help-en_cvs.bb +++ b/packages/opie-help-en/opie-help-en_cvs.bb @@ -1,6 +1,6 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/help/en/html " diff --git a/packages/opie-helpbrowser/opie-helpbrowser_1.2.1.bb b/packages/opie-helpbrowser/opie-helpbrowser_1.2.2.bb index f2e144d3ca..f2e144d3ca 100644 --- a/packages/opie-helpbrowser/opie-helpbrowser_1.2.1.bb +++ b/packages/opie-helpbrowser/opie-helpbrowser_1.2.2.bb diff --git a/packages/opie-homeapplet/opie-homeapplet_1.2.1.bb b/packages/opie-homeapplet/opie-homeapplet_1.2.2.bb index b80e85ac52..b80e85ac52 100644 --- a/packages/opie-homeapplet/opie-homeapplet_1.2.1.bb +++ b/packages/opie-homeapplet/opie-homeapplet_1.2.2.bb diff --git a/packages/opie-i18n/opie-i18n_1.2.1.bb b/packages/opie-i18n/opie-i18n_1.2.2.bb index b5011c0501..b5011c0501 100644 --- a/packages/opie-i18n/opie-i18n_1.2.1.bb +++ b/packages/opie-i18n/opie-i18n_1.2.2.bb diff --git a/packages/opie-i18n/opie-i18n_cvs.bb b/packages/opie-i18n/opie-i18n_cvs.bb index 1a1ef7c35b..93183b79a3 100644 --- a/packages/opie-i18n/opie-i18n_cvs.bb +++ b/packages/opie-i18n/opie-i18n_cvs.bb @@ -1,7 +1,7 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/i18n \ ${HANDHELDS_CVS};module=opie/etc/dict" diff --git a/packages/opie-i18n/opie-lrelease-native_1.2.1.bb b/packages/opie-i18n/opie-lrelease-native_1.2.2.bb index 699a72256c..699a72256c 100644 --- a/packages/opie-i18n/opie-lrelease-native_1.2.1.bb +++ b/packages/opie-i18n/opie-lrelease-native_1.2.2.bb diff --git a/packages/opie-i18n/opie-lrelease-native_cvs.bb b/packages/opie-i18n/opie-lrelease-native_cvs.bb index 6f52c45d74..be811dd010 100644 --- a/packages/opie-i18n/opie-lrelease-native_cvs.bb +++ b/packages/opie-i18n/opie-lrelease-native_cvs.bb @@ -1,6 +1,6 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/development/translation/opie-lrelease \ ${HANDHELDS_CVS};module=opie/development/translation/shared" diff --git a/packages/opie-i18n/opie-lupdate-native_1.2.1.bb b/packages/opie-i18n/opie-lupdate-native_1.2.2.bb index d4e7f18284..d4e7f18284 100644 --- a/packages/opie-i18n/opie-lupdate-native_1.2.1.bb +++ b/packages/opie-i18n/opie-lupdate-native_1.2.2.bb diff --git a/packages/opie-i18n/opie-lupdate-native_cvs.bb b/packages/opie-i18n/opie-lupdate-native_cvs.bb index f7f9a79c25..2628d23224 100644 --- a/packages/opie-i18n/opie-lupdate-native_cvs.bb +++ b/packages/opie-i18n/opie-lupdate-native_cvs.bb @@ -1,6 +1,6 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/development/translation/opie-lupdate \ ${HANDHELDS_CVS};module=opie/development/translation/shared" diff --git a/packages/opie-icon-reload/opie-icon-reload_1.2.1.bb b/packages/opie-icon-reload/opie-icon-reload_1.2.2.bb index c541bc78ed..c541bc78ed 100644 --- a/packages/opie-icon-reload/opie-icon-reload_1.2.1.bb +++ b/packages/opie-icon-reload/opie-icon-reload_1.2.2.bb diff --git a/packages/opie-icon-reload/opie-icon-reload_cvs.bb b/packages/opie-icon-reload/opie-icon-reload_cvs.bb index 0ce2a6b704..a8fb137b9e 100644 --- a/packages/opie-icon-reload/opie-icon-reload_cvs.bb +++ b/packages/opie-icon-reload/opie-icon-reload_cvs.bb @@ -1,5 +1,5 @@ include ${PN}.inc #Remove the dash below when 1.2.1 changes -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" diff --git a/packages/opie-irc/opie-irc_1.2.1.bb b/packages/opie-irc/opie-irc_1.2.2.bb index a186316b10..a186316b10 100644 --- a/packages/opie-irc/opie-irc_1.2.1.bb +++ b/packages/opie-irc/opie-irc_1.2.2.bb diff --git a/packages/opie-irdaapplet/opie-irdaapplet_1.2.1.bb b/packages/opie-irdaapplet/opie-irdaapplet_1.2.2.bb index 0dda1a3918..2d05c1fbf4 100644 --- a/packages/opie-irdaapplet/opie-irdaapplet_1.2.1.bb +++ b/packages/opie-irdaapplet/opie-irdaapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/irdaapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-irdaapplet/opie-irdaapplet_cvs.bb b/packages/opie-irdaapplet/opie-irdaapplet_cvs.bb index 836c6dfeef..4fde5d8591 100644 --- a/packages/opie-irdaapplet/opie-irdaapplet_cvs.bb +++ b/packages/opie-irdaapplet/opie-irdaapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/irdaapplet \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-jumpx/opie-jumpx_1.2.1.bb b/packages/opie-jumpx/opie-jumpx_1.2.2.bb index 24b86582c5..24b86582c5 100644 --- a/packages/opie-jumpx/opie-jumpx_1.2.1.bb +++ b/packages/opie-jumpx/opie-jumpx_1.2.2.bb diff --git a/packages/opie-kbill/opie-kbill_1.2.1.bb b/packages/opie-kbill/opie-kbill_1.2.2.bb index 90f2a1c1b8..90f2a1c1b8 100644 --- a/packages/opie-kbill/opie-kbill_1.2.1.bb +++ b/packages/opie-kbill/opie-kbill_1.2.2.bb diff --git a/packages/opie-kcheckers/opie-kcheckers_1.2.1.bb b/packages/opie-kcheckers/opie-kcheckers_1.2.2.bb index 868d99e868..868d99e868 100644 --- a/packages/opie-kcheckers/opie-kcheckers_1.2.1.bb +++ b/packages/opie-kcheckers/opie-kcheckers_1.2.2.bb diff --git a/packages/opie-keyboard/opie-keyboard_1.2.1.bb b/packages/opie-keyboard/opie-keyboard_1.2.2.bb index ec608f70d9..ec608f70d9 100644 --- a/packages/opie-keyboard/opie-keyboard_1.2.1.bb +++ b/packages/opie-keyboard/opie-keyboard_1.2.2.bb diff --git a/packages/opie-keypebble/opie-keypebble_1.2.1.bb b/packages/opie-keypebble/opie-keypebble_1.2.2.bb index ec7979ea82..ec7979ea82 100644 --- a/packages/opie-keypebble/opie-keypebble_1.2.1.bb +++ b/packages/opie-keypebble/opie-keypebble_1.2.2.bb diff --git a/packages/opie-keytabs/opie-keytabs_1.2.1.bb b/packages/opie-keytabs/opie-keytabs_1.2.2.bb index 71588448ee..71588448ee 100644 --- a/packages/opie-keytabs/opie-keytabs_1.2.1.bb +++ b/packages/opie-keytabs/opie-keytabs_1.2.2.bb diff --git a/packages/opie-keytabs/opie-keytabs_cvs.bb b/packages/opie-keytabs/opie-keytabs_cvs.bb index 51c58328ca..853405f2fd 100644 --- a/packages/opie-keytabs/opie-keytabs_cvs.bb +++ b/packages/opie-keytabs/opie-keytabs_cvs.bb @@ -1,6 +1,6 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/etc" diff --git a/packages/opie-keyview/opie-keyview_1.2.1.bb b/packages/opie-keyview/opie-keyview_1.2.2.bb index f922d2f629..f922d2f629 100644 --- a/packages/opie-keyview/opie-keyview_1.2.1.bb +++ b/packages/opie-keyview/opie-keyview_1.2.2.bb diff --git a/packages/opie-kjumpx/opie-kjumpx_1.2.1.bb b/packages/opie-kjumpx/opie-kjumpx_1.2.2.bb index 6b29e8833d..6b29e8833d 100644 --- a/packages/opie-kjumpx/opie-kjumpx_1.2.1.bb +++ b/packages/opie-kjumpx/opie-kjumpx_1.2.2.bb diff --git a/packages/opie-kpacman/opie-kpacman_1.2.1.bb b/packages/opie-kpacman/opie-kpacman_1.2.2.bb index b8372fbbad..b8372fbbad 100644 --- a/packages/opie-kpacman/opie-kpacman_1.2.1.bb +++ b/packages/opie-kpacman/opie-kpacman_1.2.2.bb diff --git a/packages/opie-language/opie-language_1.2.1.bb b/packages/opie-language/opie-language_1.2.2.bb index 891999851d..891999851d 100644 --- a/packages/opie-language/opie-language_1.2.1.bb +++ b/packages/opie-language/opie-language_1.2.2.bb diff --git a/packages/opie-launcher-settings/opie-launcher-settings_1.2.1.bb b/packages/opie-launcher-settings/opie-launcher-settings_1.2.2.bb index 4590f81108..4590f81108 100644 --- a/packages/opie-launcher-settings/opie-launcher-settings_1.2.1.bb +++ b/packages/opie-launcher-settings/opie-launcher-settings_1.2.2.bb diff --git a/packages/opie-libqrsync/opie-libqrsync_1.2.1.bb b/packages/opie-libqrsync/opie-libqrsync_1.2.2.bb index 884cce4a93..884cce4a93 100644 --- a/packages/opie-libqrsync/opie-libqrsync_1.2.1.bb +++ b/packages/opie-libqrsync/opie-libqrsync_1.2.2.bb diff --git a/packages/opie-light-and-power/opie-light-and-power_1.2.1.bb b/packages/opie-light-and-power/opie-light-and-power_1.2.2.bb index c881fdcf41..c881fdcf41 100644 --- a/packages/opie-light-and-power/opie-light-and-power_1.2.1.bb +++ b/packages/opie-light-and-power/opie-light-and-power_1.2.2.bb diff --git a/packages/opie-lockapplet/opie-lockapplet_1.2.1.bb b/packages/opie-lockapplet/opie-lockapplet_1.2.2.bb index add4ad4b4f..a903dbde2e 100644 --- a/packages/opie-lockapplet/opie-lockapplet_1.2.1.bb +++ b/packages/opie-lockapplet/opie-lockapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/lockapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics " diff --git a/packages/opie-lockapplet/opie-lockapplet_cvs.bb b/packages/opie-lockapplet/opie-lockapplet_cvs.bb index 4a67fc8558..d9dcb81fd0 100644 --- a/packages/opie-lockapplet/opie-lockapplet_cvs.bb +++ b/packages/opie-lockapplet/opie-lockapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/lockapplet \ ${HANDHELDS_CVS};module=opie/pics " diff --git a/packages/opie-login/opie-login_1.2.1.bb b/packages/opie-login/opie-login_1.2.2.bb index a8753f95ce..a8753f95ce 100644 --- a/packages/opie-login/opie-login_1.2.1.bb +++ b/packages/opie-login/opie-login_1.2.2.bb diff --git a/packages/opie-logoutapplet/opie-logoutapplet_1.2.1.bb b/packages/opie-logoutapplet/opie-logoutapplet_1.2.2.bb index 0da3119e9d..0da3119e9d 100644 --- a/packages/opie-logoutapplet/opie-logoutapplet_1.2.1.bb +++ b/packages/opie-logoutapplet/opie-logoutapplet_1.2.2.bb diff --git a/packages/opie-mail/opie-mail_1.2.1.bb b/packages/opie-mail/opie-mail_1.2.2.bb index 9d322d38b7..9d322d38b7 100644 --- a/packages/opie-mail/opie-mail_1.2.1.bb +++ b/packages/opie-mail/opie-mail_1.2.2.bb diff --git a/packages/opie-mailapplet/opie-mailapplet_1.2.1.bb b/packages/opie-mailapplet/opie-mailapplet_1.2.2.bb index fdea7ee361..fdea7ee361 100644 --- a/packages/opie-mailapplet/opie-mailapplet_1.2.1.bb +++ b/packages/opie-mailapplet/opie-mailapplet_1.2.2.bb diff --git a/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.1.bb b/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.2.bb index 44f420ce08..44f420ce08 100644 --- a/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.1.bb +++ b/packages/opie-mediaplayer1-libmadplugin/opie-mediaplayer1-libmadplugin_1.2.2.bb diff --git a/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.1.bb b/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.2.bb index 47adefb1a8..47adefb1a8 100644 --- a/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.1.bb +++ b/packages/opie-mediaplayer1-libmodplugin/opie-mediaplayer1-libmodplugin_1.2.2.bb diff --git a/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.1.bb b/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.2.bb index 3cbb3caba8..3cbb3caba8 100644 --- a/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.1.bb +++ b/packages/opie-mediaplayer1-libtremorplugin/opie-mediaplayer1-libtremorplugin_1.2.2.bb diff --git a/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.1.bb b/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.2.bb index 47adefb1a8..47adefb1a8 100644 --- a/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.1.bb +++ b/packages/opie-mediaplayer1-libwavplugin/opie-mediaplayer1-libwavplugin_1.2.2.bb diff --git a/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.1.bb b/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb index e6e8fa3762..e6e8fa3762 100644 --- a/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.1.bb +++ b/packages/opie-mediaplayer1/opie-mediaplayer1_1.2.2.bb diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_1.2.1.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_1.2.2.bb index 7707e9671a..7707e9671a 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_1.2.1.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_1.2.2.bb diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb index 387af9c0e8..81d4c9d7a9 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default-landscape_cvs.bb @@ -4,7 +4,7 @@ PRIORITY = "optional" LICENSE = "GPL" MAINTAINER = "Team Opie <opie@handhelds.org>" # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" APPNAME = "opieplayer2" RPROVIDES = "opie-mediaplayer2-skin" diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_1.2.1.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_1.2.2.bb index 43fe357625..43fe357625 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_1.2.1.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_1.2.2.bb diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb index 2e189417dc..60990e99f1 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-default_cvs.bb @@ -4,7 +4,7 @@ PRIORITY = "optional" LICENSE = "GPL" MAINTAINER = "Team Opie <opie@handhelds.org>" # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" APPNAME = "opieplayer2" RPROVIDES = "opie-mediaplayer2-skin" diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_1.2.1.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_1.2.2.bb index f40e4ea658..f40e4ea658 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_1.2.1.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_1.2.2.bb diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb index 279eb2caff..170c26c42a 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-pod_cvs.bb @@ -4,7 +4,7 @@ PRIORITY = "optional" LICENSE = "GPL" MAINTAINER = "Team Opie <opie@handhelds.org>" # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" APPNAME = "opieplayer2" RPROVIDES = "opie-mediaplayer2-skin" diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_1.2.1.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_1.2.2.bb index bcff4f1702..bcff4f1702 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_1.2.1.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_1.2.2.bb diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb index 17c3a030c5..27f4745d57 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2-skin-techno_cvs.bb @@ -4,7 +4,7 @@ PRIORITY = "optional" LICENSE = "GPL" MAINTAINER = "Team Opie <opie@handhelds.org>" # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" APPNAME = "opieplayer2" RPROVIDES = "opie-mediaplayer2-skin" diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2_1.2.1.bb b/packages/opie-mediaplayer2/opie-mediaplayer2_1.2.2.bb index 41de8fc487..1dcf37adae 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2_1.2.1.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/multimedia/opieplayer2 \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb b/packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb index 5d887b073f..19c16f8e10 100644 --- a/packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb +++ b/packages/opie-mediaplayer2/opie-mediaplayer2_cvs.bb @@ -1,8 +1,7 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" -PR = "r1" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/multimedia/opieplayer2 \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-mediummount/opie-mediummount_1.2.1.bb b/packages/opie-mediummount/opie-mediummount_1.2.2.bb index c80bbb032b..a4a432c193 100644 --- a/packages/opie-mediummount/opie-mediummount_1.2.1.bb +++ b/packages/opie-mediummount/opie-mediummount_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r2" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/mediummount \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-memoryapplet/opie-memoryapplet_1.2.1.bb b/packages/opie-memoryapplet/opie-memoryapplet_1.2.2.bb index 0947c45cc1..cb1d51f468 100644 --- a/packages/opie-memoryapplet/opie-memoryapplet_1.2.1.bb +++ b/packages/opie-memoryapplet/opie-memoryapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/applets/memoryapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/sysinfo \ diff --git a/packages/opie-memoryapplet/opie-memoryapplet_cvs.bb b/packages/opie-memoryapplet/opie-memoryapplet_cvs.bb index e219cf59bb..f15720105b 100644 --- a/packages/opie-memoryapplet/opie-memoryapplet_cvs.bb +++ b/packages/opie-memoryapplet/opie-memoryapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/applets/memoryapplet \ ${HANDHELDS_CVS};module=opie/noncore/settings/sysinfo \ diff --git a/packages/opie-mindbreaker/opie-mindbreaker_1.2.1.bb b/packages/opie-mindbreaker/opie-mindbreaker_1.2.2.bb index 1955e77482..1955e77482 100644 --- a/packages/opie-mindbreaker/opie-mindbreaker_1.2.1.bb +++ b/packages/opie-mindbreaker/opie-mindbreaker_1.2.2.bb diff --git a/packages/opie-minesweep/opie-minesweep_1.2.1.bb b/packages/opie-minesweep/opie-minesweep_1.2.2.bb index a88f61e387..a88f61e387 100644 --- a/packages/opie-minesweep/opie-minesweep_1.2.1.bb +++ b/packages/opie-minesweep/opie-minesweep_1.2.2.bb diff --git a/packages/opie-multikey/opie-multikey_1.2.1.bb b/packages/opie-multikey/opie-multikey_1.2.2.bb index 307a92f100..307a92f100 100644 --- a/packages/opie-multikey/opie-multikey_1.2.1.bb +++ b/packages/opie-multikey/opie-multikey_1.2.2.bb diff --git a/packages/opie-multikeyapplet/opie-multikeyapplet_1.2.1.bb b/packages/opie-multikeyapplet/opie-multikeyapplet_1.2.2.bb index ee8694a02d..e287e321c8 100644 --- a/packages/opie-multikeyapplet/opie-multikeyapplet_1.2.1.bb +++ b/packages/opie-multikeyapplet/opie-multikeyapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/multikeyapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/apps" diff --git a/packages/opie-multikeyapplet/opie-multikeyapplet_cvs.bb b/packages/opie-multikeyapplet/opie-multikeyapplet_cvs.bb index be6a1ed2d6..fb7346513f 100644 --- a/packages/opie-multikeyapplet/opie-multikeyapplet_cvs.bb +++ b/packages/opie-multikeyapplet/opie-multikeyapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/multikeyapplet \ ${HANDHELDS_CVS};module=opie/apps" diff --git a/packages/opie-networkapplet/opie-networkapplet_1.2.1.bb b/packages/opie-networkapplet/opie-networkapplet_1.2.2.bb index aae7d373b1..aae7d373b1 100644 --- a/packages/opie-networkapplet/opie-networkapplet_1.2.1.bb +++ b/packages/opie-networkapplet/opie-networkapplet_1.2.2.bb diff --git a/packages/opie-networksettings/opie-networksettings_1.2.1.bb b/packages/opie-networksettings/opie-networksettings_1.2.2.bb index e652b48e36..e652b48e36 100644 --- a/packages/opie-networksettings/opie-networksettings_1.2.1.bb +++ b/packages/opie-networksettings/opie-networksettings_1.2.2.bb diff --git a/packages/opie-notesapplet/opie-notesapplet_1.2.1.bb b/packages/opie-notesapplet/opie-notesapplet_1.2.2.bb index b0b468ec69..b0b468ec69 100644 --- a/packages/opie-notesapplet/opie-notesapplet_1.2.1.bb +++ b/packages/opie-notesapplet/opie-notesapplet_1.2.2.bb diff --git a/packages/opie-odict/opie-odict_1.2.1.bb b/packages/opie-odict/opie-odict_1.2.2.bb index eb9b93180d..eb9b93180d 100644 --- a/packages/opie-odict/opie-odict_1.2.1.bb +++ b/packages/opie-odict/opie-odict_1.2.2.bb diff --git a/packages/opie-oxygen/opie-oxygen_1.2.1.bb b/packages/opie-oxygen/opie-oxygen_1.2.2.bb index da2e79c01d..da2e79c01d 100644 --- a/packages/opie-oxygen/opie-oxygen_1.2.1.bb +++ b/packages/opie-oxygen/opie-oxygen_1.2.2.bb diff --git a/packages/opie-oyatzee/opie-oyatzee_1.2.1.bb b/packages/opie-oyatzee/opie-oyatzee_1.2.2.bb index 41e557f09f..41e557f09f 100644 --- a/packages/opie-oyatzee/opie-oyatzee_1.2.1.bb +++ b/packages/opie-oyatzee/opie-oyatzee_1.2.2.bb diff --git a/packages/opie-packagemanager/opie-packagemanager_1.2.1.bb b/packages/opie-packagemanager/opie-packagemanager_1.2.2.bb index 66dfd0604d..4e032baf63 100644 --- a/packages/opie-packagemanager/opie-packagemanager_1.2.1.bb +++ b/packages/opie-packagemanager/opie-packagemanager_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/${APPNAME};cvsdate=${SRCDATE} \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics;cvsdate=${SRCDATE} \ diff --git a/packages/opie-parashoot/opie-parashoot_1.2.1.bb b/packages/opie-parashoot/opie-parashoot_1.2.2.bb index 60816499b8..60816499b8 100644 --- a/packages/opie-parashoot/opie-parashoot_1.2.1.bb +++ b/packages/opie-parashoot/opie-parashoot_1.2.2.bb diff --git a/packages/opie-pcmciaapplet/opie-pcmciaapplet_1.2.1.bb b/packages/opie-pcmciaapplet/opie-pcmciaapplet_1.2.2.bb index 570155a275..565cec4272 100644 --- a/packages/opie-pcmciaapplet/opie-pcmciaapplet_1.2.1.bb +++ b/packages/opie-pcmciaapplet/opie-pcmciaapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/applets/pcmcia \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-pickboard/opie-pickboard_1.2.1.bb b/packages/opie-pickboard/opie-pickboard_1.2.2.bb index 9737c8d192..9737c8d192 100644 --- a/packages/opie-pickboard/opie-pickboard_1.2.1.bb +++ b/packages/opie-pickboard/opie-pickboard_1.2.2.bb diff --git a/packages/opie-pics/opie-pics_1.2.1.bb b/packages/opie-pics/opie-pics_1.2.2.bb index 95c945ffd0..95c945ffd0 100644 --- a/packages/opie-pics/opie-pics_1.2.1.bb +++ b/packages/opie-pics/opie-pics_1.2.2.bb diff --git a/packages/opie-pics/opie-pics_cvs.bb b/packages/opie-pics/opie-pics_cvs.bb index 55b3caf94d..7574464e02 100644 --- a/packages/opie-pics/opie-pics_cvs.bb +++ b/packages/opie-pics/opie-pics_cvs.bb @@ -1,7 +1,7 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/pics \ ${HANDHELDS_CVS};module=opie/pics-hires" diff --git a/packages/opie-pimconverter/opie-pimconverter_1.2.1.bb b/packages/opie-pimconverter/opie-pimconverter_1.2.2.bb index b1920c1290..011d9bfdbd 100644 --- a/packages/opie-pimconverter/opie-pimconverter_1.2.1.bb +++ b/packages/opie-pimconverter/opie-pimconverter_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/tools/pimconverter \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-pimconverter/opie-pimconverter_cvs.bb b/packages/opie-pimconverter/opie-pimconverter_cvs.bb index 736ecca4aa..671a37401f 100644 --- a/packages/opie-pimconverter/opie-pimconverter_cvs.bb +++ b/packages/opie-pimconverter/opie-pimconverter_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/tools/pimconverter \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-powerchord/opie-powerchord_1.2.1.bb b/packages/opie-powerchord/opie-powerchord_1.2.2.bb index 81edc26a73..81edc26a73 100644 --- a/packages/opie-powerchord/opie-powerchord_1.2.1.bb +++ b/packages/opie-powerchord/opie-powerchord_1.2.2.bb diff --git a/packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_1.2.1.bb b/packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_1.2.2.bb index 3e3dc6d919..247a163f67 100644 --- a/packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_1.2.1.bb +++ b/packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/applets/pyquicklaunch \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_cvs.bb b/packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_cvs.bb index c0e9c777e5..dc7e3c78ef 100644 --- a/packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_cvs.bb +++ b/packages/opie-pyquicklaunchapplet/opie-pyquicklaunchapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/noncore/applets/pyquicklaunch \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-qasteroids/opie-qasteroids_1.2.1.bb b/packages/opie-qasteroids/opie-qasteroids_1.2.2.bb index 19ed04a4ec..19ed04a4ec 100644 --- a/packages/opie-qasteroids/opie-qasteroids_1.2.1.bb +++ b/packages/opie-qasteroids/opie-qasteroids_1.2.2.bb diff --git a/packages/opie-qcop/opie-qcop_1.2.1.bb b/packages/opie-qcop/opie-qcop_1.2.2.bb index bcde99c437..bcde99c437 100644 --- a/packages/opie-qcop/opie-qcop_1.2.1.bb +++ b/packages/opie-qcop/opie-qcop_1.2.2.bb diff --git a/packages/opie-qss/opie-qss_1.2.1.bb b/packages/opie-qss/opie-qss_1.2.2.bb index 1ef8cb4c29..1ef8cb4c29 100644 --- a/packages/opie-qss/opie-qss_1.2.1.bb +++ b/packages/opie-qss/opie-qss_1.2.2.bb diff --git a/packages/opie-quicklauncher/opie-quicklauncher_1.2.1.bb b/packages/opie-quicklauncher/opie-quicklauncher_1.2.2.bb index bda2b41f8d..bda2b41f8d 100644 --- a/packages/opie-quicklauncher/opie-quicklauncher_1.2.1.bb +++ b/packages/opie-quicklauncher/opie-quicklauncher_1.2.2.bb diff --git a/packages/opie-rdesktop/opie-rdesktop_1.2.1.bb b/packages/opie-rdesktop/opie-rdesktop_1.2.2.bb index 57991916f4..57991916f4 100644 --- a/packages/opie-rdesktop/opie-rdesktop_1.2.1.bb +++ b/packages/opie-rdesktop/opie-rdesktop_1.2.2.bb diff --git a/packages/opie-reader/opie-reader_1.2.1.bb b/packages/opie-reader/opie-reader_1.2.2.bb index 6765f70718..6765f70718 100644 --- a/packages/opie-reader/opie-reader_1.2.1.bb +++ b/packages/opie-reader/opie-reader_1.2.2.bb diff --git a/packages/opie-recorder/opie-recorder_1.2.1.bb b/packages/opie-recorder/opie-recorder_1.2.2.bb index 7bc13602bc..7bc13602bc 100644 --- a/packages/opie-recorder/opie-recorder_1.2.1.bb +++ b/packages/opie-recorder/opie-recorder_1.2.2.bb diff --git a/packages/opie-remote/opie-remote_1.2.1.bb b/packages/opie-remote/opie-remote_1.2.2.bb index a71e0657aa..a71e0657aa 100644 --- a/packages/opie-remote/opie-remote_1.2.1.bb +++ b/packages/opie-remote/opie-remote_1.2.2.bb diff --git a/packages/opie-restartapplet/opie-restartapplet2_1.2.1.bb b/packages/opie-restartapplet/opie-restartapplet2_1.2.2.bb index d38fcba863..d38fcba863 100644 --- a/packages/opie-restartapplet/opie-restartapplet2_1.2.1.bb +++ b/packages/opie-restartapplet/opie-restartapplet2_1.2.2.bb diff --git a/packages/opie-restartapplet/opie-restartapplet_1.2.1.bb b/packages/opie-restartapplet/opie-restartapplet_1.2.2.bb index c4473724bd..c4473724bd 100644 --- a/packages/opie-restartapplet/opie-restartapplet_1.2.1.bb +++ b/packages/opie-restartapplet/opie-restartapplet_1.2.2.bb diff --git a/packages/opie-restartapplet2/opie-restartapplet2_1.2.1.bb b/packages/opie-restartapplet2/opie-restartapplet2_1.2.2.bb index f1bdf5299a..f1bdf5299a 100644 --- a/packages/opie-restartapplet2/opie-restartapplet2_1.2.1.bb +++ b/packages/opie-restartapplet2/opie-restartapplet2_1.2.2.bb diff --git a/packages/opie-rotateapplet/opie-rotateapplet_1.2.1.bb b/packages/opie-rotateapplet/opie-rotateapplet_1.2.2.bb index 48674b9dce..48674b9dce 100644 --- a/packages/opie-rotateapplet/opie-rotateapplet_1.2.1.bb +++ b/packages/opie-rotateapplet/opie-rotateapplet_1.2.2.bb diff --git a/packages/opie-screenshotapplet/opie-screenshotapplet_1.2.1.bb b/packages/opie-screenshotapplet/opie-screenshotapplet_1.2.2.bb index ccc414ef94..3df01b4a55 100644 --- a/packages/opie-screenshotapplet/opie-screenshotapplet_1.2.1.bb +++ b/packages/opie-screenshotapplet/opie-screenshotapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/screenshotapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/apps \ diff --git a/packages/opie-screenshotapplet/opie-screenshotapplet_cvs.bb b/packages/opie-screenshotapplet/opie-screenshotapplet_cvs.bb index d03726301c..e06983da74 100644 --- a/packages/opie-screenshotapplet/opie-screenshotapplet_cvs.bb +++ b/packages/opie-screenshotapplet/opie-screenshotapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/screenshotapplet \ ${HANDHELDS_CVS};module=opie/apps \ diff --git a/packages/opie-search/opie-search_1.2.1.bb b/packages/opie-search/opie-search_1.2.2.bb index f2682401f0..f2682401f0 100644 --- a/packages/opie-search/opie-search_1.2.1.bb +++ b/packages/opie-search/opie-search_1.2.2.bb diff --git a/packages/opie-security/opie-security_1.2.1.bb b/packages/opie-security/opie-security_1.2.2.bb index 7ebe6cf5a0..ecdf14a187 100644 --- a/packages/opie-security/opie-security_1.2.1.bb +++ b/packages/opie-security/opie-security_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/settings/security \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-security/opie-security_cvs.bb b/packages/opie-security/opie-security_cvs.bb index 980b03b7c1..7f68f03cad 100644 --- a/packages/opie-security/opie-security_cvs.bb +++ b/packages/opie-security/opie-security_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/settings/security \ ${HANDHELDS_CVS};module=opie/pics \ diff --git a/packages/opie-securityplugins/opie-securityplugin-blueping_1.2.1.bb b/packages/opie-securityplugins/opie-securityplugin-blueping_1.2.2.bb index 65de7b78ec..65de7b78ec 100644 --- a/packages/opie-securityplugins/opie-securityplugin-blueping_1.2.1.bb +++ b/packages/opie-securityplugins/opie-securityplugin-blueping_1.2.2.bb diff --git a/packages/opie-securityplugins/opie-securityplugin-dummy_1.2.1.bb b/packages/opie-securityplugins/opie-securityplugin-dummy_1.2.2.bb index 4a5bc3c2e0..4a5bc3c2e0 100644 --- a/packages/opie-securityplugins/opie-securityplugin-dummy_1.2.1.bb +++ b/packages/opie-securityplugins/opie-securityplugin-dummy_1.2.2.bb diff --git a/packages/opie-securityplugins/opie-securityplugin-notice_1.2.1.bb b/packages/opie-securityplugins/opie-securityplugin-notice_1.2.2.bb index 08bd1b13c0..08bd1b13c0 100644 --- a/packages/opie-securityplugins/opie-securityplugin-notice_1.2.1.bb +++ b/packages/opie-securityplugins/opie-securityplugin-notice_1.2.2.bb diff --git a/packages/opie-securityplugins/opie-securityplugin-pin_1.2.1.bb b/packages/opie-securityplugins/opie-securityplugin-pin_1.2.2.bb index c5ccde6b5c..c5ccde6b5c 100644 --- a/packages/opie-securityplugins/opie-securityplugin-pin_1.2.1.bb +++ b/packages/opie-securityplugins/opie-securityplugin-pin_1.2.2.bb diff --git a/packages/opie-sfcave/opie-sfcave_1.2.1.bb b/packages/opie-sfcave/opie-sfcave_1.2.2.bb index fda3aae425..fda3aae425 100644 --- a/packages/opie-sfcave/opie-sfcave_1.2.1.bb +++ b/packages/opie-sfcave/opie-sfcave_1.2.2.bb diff --git a/packages/opie-sh-snes/opie-sh-snes_1.2.1.bb b/packages/opie-sh-snes/opie-sh-snes_1.2.2.bb index c541bc78ed..c541bc78ed 100644 --- a/packages/opie-sh-snes/opie-sh-snes_1.2.1.bb +++ b/packages/opie-sh-snes/opie-sh-snes_1.2.2.bb diff --git a/packages/opie-sh-snes/opie-sh-snes_cvs.bb b/packages/opie-sh-snes/opie-sh-snes_cvs.bb index 0ce2a6b704..a8fb137b9e 100644 --- a/packages/opie-sh-snes/opie-sh-snes_cvs.bb +++ b/packages/opie-sh-snes/opie-sh-snes_cvs.bb @@ -1,5 +1,5 @@ include ${PN}.inc #Remove the dash below when 1.2.1 changes -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" diff --git a/packages/opie-sh/opie-sh_1.2.1.bb b/packages/opie-sh/opie-sh_1.2.2.bb index 69de686ed0..69de686ed0 100644 --- a/packages/opie-sh/opie-sh_1.2.1.bb +++ b/packages/opie-sh/opie-sh_1.2.2.bb diff --git a/packages/opie-sheet/opie-sheet_1.2.1.bb b/packages/opie-sheet/opie-sheet_1.2.2.bb index a231ee9a90..a231ee9a90 100644 --- a/packages/opie-sheet/opie-sheet_1.2.1.bb +++ b/packages/opie-sheet/opie-sheet_1.2.2.bb diff --git a/packages/opie-snake/opie-snake_1.2.1.bb b/packages/opie-snake/opie-snake_1.2.2.bb index 9bff0ac043..9bff0ac043 100644 --- a/packages/opie-snake/opie-snake_1.2.1.bb +++ b/packages/opie-snake/opie-snake_1.2.2.bb diff --git a/packages/opie-solitaire/opie-solitaire_1.2.1.bb b/packages/opie-solitaire/opie-solitaire_1.2.2.bb index 5cd42c8d53..5cd42c8d53 100644 --- a/packages/opie-solitaire/opie-solitaire_1.2.1.bb +++ b/packages/opie-solitaire/opie-solitaire_1.2.2.bb diff --git a/packages/opie-sounds/opie-sounds_1.2.1.bb b/packages/opie-sounds/opie-sounds_1.2.2.bb index 8053e4f26e..8053e4f26e 100644 --- a/packages/opie-sounds/opie-sounds_1.2.1.bb +++ b/packages/opie-sounds/opie-sounds_1.2.2.bb diff --git a/packages/opie-sounds/opie-sounds_cvs.bb b/packages/opie-sounds/opie-sounds_cvs.bb index 63854616fa..f430ca0aee 100644 --- a/packages/opie-sounds/opie-sounds_cvs.bb +++ b/packages/opie-sounds/opie-sounds_cvs.bb @@ -1,6 +1,6 @@ include ${PN}.inc # Remove the dash below when 1.2.1 changes in PV -PV = "1.2.1+cvs-${SRCDATE}" +PV = "1.2.2+cvs-${SRCDATE}" SRC_URI = "${HANDHELDS_CVS};module=opie/sounds" diff --git a/packages/opie-sshkeys/opie-sshkeys_1.2.1.bb b/packages/opie-sshkeys/opie-sshkeys_1.2.2.bb index f04ccf5609..f04ccf5609 100644 --- a/packages/opie-sshkeys/opie-sshkeys_1.2.1.bb +++ b/packages/opie-sshkeys/opie-sshkeys_1.2.2.bb diff --git a/packages/opie-stumbler/opie-stumbler_1.2.1.bb b/packages/opie-stumbler/opie-stumbler_1.2.2.bb index 93b3c1ff67..93b3c1ff67 100644 --- a/packages/opie-stumbler/opie-stumbler_1.2.1.bb +++ b/packages/opie-stumbler/opie-stumbler_1.2.2.bb diff --git a/packages/opie-style-flat/opie-style-flat_1.2.1.bb b/packages/opie-style-flat/opie-style-flat_1.2.2.bb index 5e55870851..5e55870851 100644 --- a/packages/opie-style-flat/opie-style-flat_1.2.1.bb +++ b/packages/opie-style-flat/opie-style-flat_1.2.2.bb diff --git a/packages/opie-style-fresh/opie-style-fresh_1.2.1.bb b/packages/opie-style-fresh/opie-style-fresh_1.2.2.bb index 9e56bb2750..9e56bb2750 100644 --- a/packages/opie-style-fresh/opie-style-fresh_1.2.1.bb +++ b/packages/opie-style-fresh/opie-style-fresh_1.2.2.bb diff --git a/packages/opie-style-liquid/opie-style-liquid_1.2.1.bb b/packages/opie-style-liquid/opie-style-liquid_1.2.2.bb index fd1e93900f..fd1e93900f 100644 --- a/packages/opie-style-liquid/opie-style-liquid_1.2.1.bb +++ b/packages/opie-style-liquid/opie-style-liquid_1.2.2.bb diff --git a/packages/opie-style-metal/opie-style-metal_1.2.1.bb b/packages/opie-style-metal/opie-style-metal_1.2.2.bb index 014734d8b3..014734d8b3 100644 --- a/packages/opie-style-metal/opie-style-metal_1.2.1.bb +++ b/packages/opie-style-metal/opie-style-metal_1.2.2.bb diff --git a/packages/opie-style-phase/opie-style-phase_1.2.1.bb b/packages/opie-style-phase/opie-style-phase_1.2.2.bb index ee41eb027c..ee41eb027c 100644 --- a/packages/opie-style-phase/opie-style-phase_1.2.1.bb +++ b/packages/opie-style-phase/opie-style-phase_1.2.2.bb diff --git a/packages/opie-style-web/opie-style-web_1.2.1.bb b/packages/opie-style-web/opie-style-web_1.2.2.bb index dda9db378c..dda9db378c 100644 --- a/packages/opie-style-web/opie-style-web_1.2.1.bb +++ b/packages/opie-style-web/opie-style-web_1.2.2.bb diff --git a/packages/opie-suspendapplet/opie-suspendapplet_1.2.1.bb b/packages/opie-suspendapplet/opie-suspendapplet_1.2.2.bb index e88f417b7c..e88f417b7c 100644 --- a/packages/opie-suspendapplet/opie-suspendapplet_1.2.1.bb +++ b/packages/opie-suspendapplet/opie-suspendapplet_1.2.2.bb diff --git a/packages/opie-symlinker/opie-symlinker_1.2.1.bb b/packages/opie-symlinker/opie-symlinker_1.2.2.bb index 682493bafd..682493bafd 100644 --- a/packages/opie-symlinker/opie-symlinker_1.2.1.bb +++ b/packages/opie-symlinker/opie-symlinker_1.2.2.bb diff --git a/packages/opie-sysinfo/opie-sysinfo_1.2.1.bb b/packages/opie-sysinfo/opie-sysinfo_1.2.2.bb index 6aa27a6242..6aa27a6242 100644 --- a/packages/opie-sysinfo/opie-sysinfo_1.2.1.bb +++ b/packages/opie-sysinfo/opie-sysinfo_1.2.2.bb diff --git a/packages/opie-systemtime/opie-systemtime_1.2.1.bb b/packages/opie-systemtime/opie-systemtime_1.2.2.bb index 97fa149a56..97fa149a56 100644 --- a/packages/opie-systemtime/opie-systemtime_1.2.1.bb +++ b/packages/opie-systemtime/opie-systemtime_1.2.2.bb diff --git a/packages/opie-tableviewer/opie-tableviewer_1.2.1.bb b/packages/opie-tableviewer/opie-tableviewer_1.2.2.bb index 3d9158d616..3d9158d616 100644 --- a/packages/opie-tableviewer/opie-tableviewer_1.2.1.bb +++ b/packages/opie-tableviewer/opie-tableviewer_1.2.2.bb diff --git a/packages/opie-taskbar/opie-taskbar.inc b/packages/opie-taskbar/opie-taskbar.inc index 6ca4e12d78..3f6c8bca2e 100644 --- a/packages/opie-taskbar/opie-taskbar.inc +++ b/packages/opie-taskbar/opie-taskbar.inc @@ -86,6 +86,15 @@ do_install() { install -m 0644 ${WORKDIR}/pics/capslock.xpm ${D}${palmtopdir}/pics/ install -m 0644 ${WORKDIR}/pics/numlock.xpm ${D}${palmtopdir}/pics/ + + case ${MACHINE} in + c7x0) + install -d ${D}${sysconfdir}/apm/event.d/ + install -m 0755 ${WORKDIR}/qpe-suspend-resume ${D}${sysconfdir}/apm/event.d/00-qpe-suspend-resume.sh + ;; + *) + ;; + esac } updatercd_postinst_mnci() { @@ -97,6 +106,6 @@ fi update-rc.d $D ${INITSCRIPT_NAME} ${INITSCRIPT_PARAMS} } -FILES_opie-taskbar_append = " /etc ${palmtopdir}/apps ${palmtopdir}/pics" +FILES_opie-taskbar_append = " ${sysconfdir} ${palmtopdir}/apps ${palmtopdir}/pics" PACKAGE_ARCH = "${MACHINE_ARCH}" diff --git a/packages/opie-taskbar/opie-taskbar/c7x0/qpe-suspend-resume b/packages/opie-taskbar/opie-taskbar/c7x0/qpe-suspend-resume new file mode 100644 index 0000000000..be37519512 --- /dev/null +++ b/packages/opie-taskbar/opie-taskbar/c7x0/qpe-suspend-resume @@ -0,0 +1,33 @@ +#!/bin/sh + +QTDIR=/opt/QtPalmtop +LD_LIBRARY_PATH=$QTDIR +export LD_LIBRARY_PATH QTDIR +LOGGING=0 +log() { + if [ $LOGGING -eq 1 ]; then + echo "$(date +%y/%m/%d-%H:%m:%S): $@" >> /var/log/qte.log + fi +} + +retcode=1 +tries=3 + +if [ "$1" = suspend ]; then + while [ $retcode -ne 0 -a $tries -gt 0 ]; do + log "-> $QTDIR/bin/qcop QPE/System 'aboutToSuspend()'" + $QTDIR/bin/qcop QPE/System 'aboutToSuspend()' + retcode=$? + tries=`expr $tries - 1` + log "<- Result $retcode" + done +elif [ "$1" = resume ]; then + while [ $retcode -ne 0 -a $tries -gt 0 ]; do + log "-> $QTDIR/bin/qcop QPE/System 'returnFromSuspend()'" + $QTDIR/bin/qcop QPE/System 'returnFromSuspend()' + retcode=$? + tries=`expr $tries - 1` + log "<- Result $retcode" + done +fi + diff --git a/packages/opie-taskbar/opie-taskbar_1.2.1.bb b/packages/opie-taskbar/opie-taskbar_1.2.2.bb index 359ea213ec..440ddf6465 100644 --- a/packages/opie-taskbar/opie-taskbar_1.2.1.bb +++ b/packages/opie-taskbar/opie-taskbar_1.2.2.bb @@ -1,5 +1,4 @@ include ${PN}.inc -PR = "r3" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/apps/calibrate \ ${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/settings/mediummount \ @@ -15,3 +14,5 @@ SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/apps/calibrate \ file://qpe.conf \ file://locale.conf \ file://opie_defaults" + +SRC_URI_append_c7x0 = " file://qpe-suspend-resume" diff --git a/packages/opie-taskbar/opie-taskbar_cvs.bb b/packages/opie-taskbar/opie-taskbar_cvs.bb index f1874cf82a..63ce8c0d7f 100644 --- a/packages/opie-taskbar/opie-taskbar_cvs.bb +++ b/packages/opie-taskbar/opie-taskbar_cvs.bb @@ -1,6 +1,5 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r3" SRC_URI = "${HANDHELDS_CVS};module=opie/core/apps/calibrate \ ${HANDHELDS_CVS};module=opie/noncore/settings/mediummount \ @@ -16,3 +15,5 @@ SRC_URI = "${HANDHELDS_CVS};module=opie/core/apps/calibrate \ file://qpe.conf \ file://locale.conf \ file://opie_defaults" + +SRC_URI_append_c7x0 = " file://qpe-suspend-resume" diff --git a/packages/opie-tetrix/opie-tetrix_1.2.1.bb b/packages/opie-tetrix/opie-tetrix_1.2.2.bb index 25435cb30a..25435cb30a 100644 --- a/packages/opie-tetrix/opie-tetrix_1.2.1.bb +++ b/packages/opie-tetrix/opie-tetrix_1.2.2.bb diff --git a/packages/opie-textedit/opie-textedit_1.2.1.bb b/packages/opie-textedit/opie-textedit_1.2.2.bb index f2e144d3ca..f2e144d3ca 100644 --- a/packages/opie-textedit/opie-textedit_1.2.1.bb +++ b/packages/opie-textedit/opie-textedit_1.2.2.bb diff --git a/packages/opie-theme/opie-theme_1.2.1.bb b/packages/opie-theme/opie-theme_1.2.2.bb index e79214dc88..e79214dc88 100644 --- a/packages/opie-theme/opie-theme_1.2.1.bb +++ b/packages/opie-theme/opie-theme_1.2.2.bb diff --git a/packages/opie-tictac/opie-tictac_1.2.1.bb b/packages/opie-tictac/opie-tictac_1.2.2.bb index e8c07ccf64..e8c07ccf64 100644 --- a/packages/opie-tictac/opie-tictac_1.2.1.bb +++ b/packages/opie-tictac/opie-tictac_1.2.2.bb diff --git a/packages/opie-tinykate/opie-tinykate_1.2.1.bb b/packages/opie-tinykate/opie-tinykate_1.2.2.bb index 70b03dfdd1..70b03dfdd1 100644 --- a/packages/opie-tinykate/opie-tinykate_1.2.1.bb +++ b/packages/opie-tinykate/opie-tinykate_1.2.2.bb diff --git a/packages/opie-today-addressbookplugin/opie-today-addressbookplugin_1.2.1.bb b/packages/opie-today-addressbookplugin/opie-today-addressbookplugin_1.2.2.bb index 5e3bc26ae3..5e3bc26ae3 100644 --- a/packages/opie-today-addressbookplugin/opie-today-addressbookplugin_1.2.1.bb +++ b/packages/opie-today-addressbookplugin/opie-today-addressbookplugin_1.2.2.bb diff --git a/packages/opie-today-datebookplugin/opie-today-datebookplugin_1.2.1.bb b/packages/opie-today-datebookplugin/opie-today-datebookplugin_1.2.2.bb index a52ba48ef4..a52ba48ef4 100644 --- a/packages/opie-today-datebookplugin/opie-today-datebookplugin_1.2.1.bb +++ b/packages/opie-today-datebookplugin/opie-today-datebookplugin_1.2.2.bb diff --git a/packages/opie-today-fortuneplugin/opie-today-fortuneplugin_1.2.1.bb b/packages/opie-today-fortuneplugin/opie-today-fortuneplugin_1.2.2.bb index 90eec22eca..90eec22eca 100644 --- a/packages/opie-today-fortuneplugin/opie-today-fortuneplugin_1.2.1.bb +++ b/packages/opie-today-fortuneplugin/opie-today-fortuneplugin_1.2.2.bb diff --git a/packages/opie-today-mailplugin/opie-today-mailplugin_1.2.1.bb b/packages/opie-today-mailplugin/opie-today-mailplugin_1.2.2.bb index d9fa557397..d9fa557397 100644 --- a/packages/opie-today-mailplugin/opie-today-mailplugin_1.2.1.bb +++ b/packages/opie-today-mailplugin/opie-today-mailplugin_1.2.2.bb diff --git a/packages/opie-today-stocktickerplugin/opie-today-stocktickerplugin_1.2.1.bb b/packages/opie-today-stocktickerplugin/opie-today-stocktickerplugin_1.2.2.bb index b98d8170a6..b98d8170a6 100644 --- a/packages/opie-today-stocktickerplugin/opie-today-stocktickerplugin_1.2.1.bb +++ b/packages/opie-today-stocktickerplugin/opie-today-stocktickerplugin_1.2.2.bb diff --git a/packages/opie-today-todolistplugin/opie-today-todolistplugin_1.2.1.bb b/packages/opie-today-todolistplugin/opie-today-todolistplugin_1.2.2.bb index 73bd121a45..73bd121a45 100644 --- a/packages/opie-today-todolistplugin/opie-today-todolistplugin_1.2.1.bb +++ b/packages/opie-today-todolistplugin/opie-today-todolistplugin_1.2.2.bb diff --git a/packages/opie-today-weatherplugin/opie-today-weatherplugin_1.2.1.bb b/packages/opie-today-weatherplugin/opie-today-weatherplugin_1.2.2.bb index 6da83c79dc..6da83c79dc 100644 --- a/packages/opie-today-weatherplugin/opie-today-weatherplugin_1.2.1.bb +++ b/packages/opie-today-weatherplugin/opie-today-weatherplugin_1.2.2.bb diff --git a/packages/opie-today/opie-today_1.2.1.bb b/packages/opie-today/opie-today_1.2.2.bb index 6200f9e4e8..6200f9e4e8 100644 --- a/packages/opie-today/opie-today_1.2.1.bb +++ b/packages/opie-today/opie-today_1.2.2.bb diff --git a/packages/opie-todo/opie-todo_1.2.1.bb b/packages/opie-todo/opie-todo_1.2.2.bb index 21151ae14a..21151ae14a 100644 --- a/packages/opie-todo/opie-todo_1.2.1.bb +++ b/packages/opie-todo/opie-todo_1.2.2.bb diff --git a/packages/opie-tonleiter/opie-tonleiter_1.2.1.bb b/packages/opie-tonleiter/opie-tonleiter_1.2.2.bb index f24f4864d3..f24f4864d3 100644 --- a/packages/opie-tonleiter/opie-tonleiter_1.2.1.bb +++ b/packages/opie-tonleiter/opie-tonleiter_1.2.2.bb diff --git a/packages/opie-unikeyboard/opie-unikeyboard_1.2.1.bb b/packages/opie-unikeyboard/opie-unikeyboard_1.2.2.bb index d83f21559f..d83f21559f 100644 --- a/packages/opie-unikeyboard/opie-unikeyboard_1.2.1.bb +++ b/packages/opie-unikeyboard/opie-unikeyboard_1.2.2.bb diff --git a/packages/opie-usermanager/opie-usermanager_1.2.1.bb b/packages/opie-usermanager/opie-usermanager_1.2.2.bb index a37dc07e42..a37dc07e42 100644 --- a/packages/opie-usermanager/opie-usermanager_1.2.1.bb +++ b/packages/opie-usermanager/opie-usermanager_1.2.2.bb diff --git a/packages/opie-vmemo-settings/opie-vmemo-settings_1.2.1.bb b/packages/opie-vmemo-settings/opie-vmemo-settings_1.2.2.bb index 0ae8478846..0ae8478846 100644 --- a/packages/opie-vmemo-settings/opie-vmemo-settings_1.2.1.bb +++ b/packages/opie-vmemo-settings/opie-vmemo-settings_1.2.2.bb diff --git a/packages/opie-vmemo/opie-vmemo_1.2.1.bb b/packages/opie-vmemo/opie-vmemo_1.2.2.bb index e7a2703c24..e7a2703c24 100644 --- a/packages/opie-vmemo/opie-vmemo_1.2.1.bb +++ b/packages/opie-vmemo/opie-vmemo_1.2.2.bb diff --git a/packages/opie-volumeapplet/opie-volumeapplet_1.2.1.bb b/packages/opie-volumeapplet/opie-volumeapplet_1.2.2.bb index 38cf693d0e..112ad749ae 100644 --- a/packages/opie-volumeapplet/opie-volumeapplet_1.2.1.bb +++ b/packages/opie-volumeapplet/opie-volumeapplet_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/core/applets/volumeapplet \ ${HANDHELDS_CVS};tag=${TAG};module=opie/apps" diff --git a/packages/opie-volumeapplet/opie-volumeapplet_cvs.bb b/packages/opie-volumeapplet/opie-volumeapplet_cvs.bb index 50e180dd8f..0d4c369198 100644 --- a/packages/opie-volumeapplet/opie-volumeapplet_cvs.bb +++ b/packages/opie-volumeapplet/opie-volumeapplet_cvs.bb @@ -1,7 +1,6 @@ include ${PN}.inc PV = "${OPIE_CVS_PV}" -PR = "r1" SRC_URI = "${HANDHELDS_CVS};module=opie/core/applets/volumeapplet \ ${HANDHELDS_CVS};module=opie/apps" diff --git a/packages/opie-vtapplet/opie-vtapplet_1.2.1.bb b/packages/opie-vtapplet/opie-vtapplet_1.2.2.bb index 44a61cccd1..44a61cccd1 100644 --- a/packages/opie-vtapplet/opie-vtapplet_1.2.1.bb +++ b/packages/opie-vtapplet/opie-vtapplet_1.2.2.bb diff --git a/packages/opie-wellenreiter/opie-wellenreiter_1.2.1.bb b/packages/opie-wellenreiter/opie-wellenreiter_1.2.2.bb index 7dc43ad8d6..8d06318bb5 100644 --- a/packages/opie-wellenreiter/opie-wellenreiter_1.2.1.bb +++ b/packages/opie-wellenreiter/opie-wellenreiter_1.2.2.bb @@ -1,6 +1,5 @@ include ${PN}.inc -PR = "r1" SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/net/wellenreiter \ ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \ diff --git a/packages/opie-wirelessapplet/opie-wirelessapplet_1.2.1.bb b/packages/opie-wirelessapplet/opie-wirelessapplet_1.2.2.bb index b20c5f5f73..b20c5f5f73 100644 --- a/packages/opie-wirelessapplet/opie-wirelessapplet_1.2.1.bb +++ b/packages/opie-wirelessapplet/opie-wirelessapplet_1.2.2.bb diff --git a/packages/opie-wordgame/opie-wordgame_1.2.1.bb b/packages/opie-wordgame/opie-wordgame_1.2.2.bb index faf4d44ef8..faf4d44ef8 100644 --- a/packages/opie-wordgame/opie-wordgame_1.2.1.bb +++ b/packages/opie-wordgame/opie-wordgame_1.2.2.bb diff --git a/packages/opie-write/opie-write_1.2.1.bb b/packages/opie-write/opie-write_1.2.2.bb index 8a4cc0ebc5..8a4cc0ebc5 100644 --- a/packages/opie-write/opie-write_1.2.1.bb +++ b/packages/opie-write/opie-write_1.2.2.bb diff --git a/packages/opie-zkbapplet/opie-zkbapplet_1.2.1.bb b/packages/opie-zkbapplet/opie-zkbapplet_1.2.2.bb index 95216c7570..95216c7570 100644 --- a/packages/opie-zkbapplet/opie-zkbapplet_1.2.1.bb +++ b/packages/opie-zkbapplet/opie-zkbapplet_1.2.2.bb diff --git a/packages/opie-zlines/opie-zlines_1.2.1.bb b/packages/opie-zlines/opie-zlines_1.2.2.bb index 8a1ad20373..8a1ad20373 100644 --- a/packages/opie-zlines/opie-zlines_1.2.1.bb +++ b/packages/opie-zlines/opie-zlines_1.2.2.bb diff --git a/packages/opie-zsafe/opie-zsafe_1.2.1.bb b/packages/opie-zsafe/opie-zsafe_1.2.2.bb index 7e2c2a020b..7e2c2a020b 100644 --- a/packages/opie-zsafe/opie-zsafe_1.2.1.bb +++ b/packages/opie-zsafe/opie-zsafe_1.2.2.bb diff --git a/packages/opie-zsame/opie-zsame_1.2.1.bb b/packages/opie-zsame/opie-zsame_1.2.2.bb index 0c4691b578..0c4691b578 100644 --- a/packages/opie-zsame/opie-zsame_1.2.1.bb +++ b/packages/opie-zsame/opie-zsame_1.2.2.bb diff --git a/packages/perl/perl-5.8.7/config.sh-sh3-linux b/packages/perl/perl-5.8.7/config.sh-sh3-linux index bbbb12360b..d3bee1e4ed 100644 --- a/packages/perl/perl-5.8.7/config.sh-sh3-linux +++ b/packages/perl/perl-5.8.7/config.sh-sh3-linux @@ -36,10 +36,10 @@ api_subversion='0' api_version='8' api_versionstring='5.8.0' ar='ar' -archlib='/usr/lib/perl5/5.8.7/sh4-linux' -archlibexp='/usr/lib/perl5/5.8.7/sh4-linux' +archlib='/usr/lib/perl5/5.8.7/sh3-linux' +archlibexp='/usr/lib/perl5/5.8.7/sh3-linux' archname64='' -archname='sh4-linux' +archname='sh3-linux' archobjs='' asctime_r_proto='0' awk='awk' @@ -55,11 +55,11 @@ castflags='0' cat='cat' cc='gcc' cccdlflags='-fPIC' -ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.7/sh4-linux/CORE' +ccdlflags='-Wl,-E -Wl,-rpath,/usr/lib/perl5/5.8.7/sh3-linux/CORE' ccflags='-D_REENTRANT -D_GNU_SOURCE -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' ccname='gcc' -ccsymbols='__GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=3 __GXX_ABI_VERSION=102 __NO_INLINE__=1 __PTRDIFF_TYPE__=int __SH4__=1 __SIZE_TYPE__=unsigned __STDC_HOSTED__=1 __gnu_linux__=1 __linux=1 __linux__=1 __sh__=1 __unix=1 __unix__=1 system=posix' +ccsymbols='__GNUC_MINOR__=2 __GNUC_PATCHLEVEL__=3 __GXX_ABI_VERSION=102 __NO_INLINE__=1 __PTRDIFF_TYPE__=int __SH3__=1 __SIZE_TYPE__=unsigned __STDC_HOSTED__=1 __gnu_linux__=1 __linux=1 __linux__=1 __sh__=1 __unix=1 __unix__=1 system=posix' ccversion='' cf_by='Red Hat, Inc.' cf_email='Red Hat, Inc.@localhost.localdomain' @@ -671,7 +671,7 @@ inc_version_list='' inc_version_list_init='0' incpath='' inews='' -installarchlib='./install_me_here/usr/lib/perl5/5.8.7/sh4-linux' +installarchlib='./install_me_here/usr/lib/perl5/5.8.7/sh3-linux' installbin='./install_me_here/usr/bin' installhtml1dir='' installhtml3dir='' @@ -681,7 +681,7 @@ installprefix='./install_me_here/usr' installprefixexp='./install_me_here/usr' installprivlib='./install_me_here/usr/lib/perl5/5.8.7' installscript='./install_me_here/usr/bin' -installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.8.7/sh4-linux' +installsitearch='./install_me_here/usr/lib/perl5/site_perl/5.8.7/sh3-linux' installsitebin='./install_me_here/usr/bin' installsitehtml1dir='' installsitehtml3dir='' @@ -760,10 +760,10 @@ modetype='mode_t' more='more' multiarch='undef' mv='' -myarchname='sh4-linux' +myarchname='sh3-linux' mydomain='.localdomain' myhostname='localhost' -myuname='linux np51r 2.6.4 #175 fri nov 5 16:49:36 est 2004 sh4 unknown ' +myuname='linux np51r 2.6.4 #175 fri nov 5 16:49:36 est 2004 sh3 unknown ' n='-n' need_va_copy='undef' netdb_hlen_type='size_t' @@ -873,8 +873,8 @@ sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 6, 17, 29, 31, 0' sig_size='68' signal_t='void' -sitearch='/usr/lib/perl5/site_perl/5.8.7/sh4-linux' -sitearchexp='/usr/lib/perl5/site_perl/5.8.7/sh4-linux' +sitearch='/usr/lib/perl5/site_perl/5.8.7/sh3-linux' +sitearchexp='/usr/lib/perl5/site_perl/5.8.7/sh3-linux' sitebin='/usr/bin' sitebinexp='/usr/bin' sitehtml1dir='' diff --git a/packages/psmisc/psmisc-21.8/libintl-link.patch b/packages/psmisc/psmisc-21.8/libintl-link.patch new file mode 100644 index 0000000000..d9cdd90d71 --- /dev/null +++ b/packages/psmisc/psmisc-21.8/libintl-link.patch @@ -0,0 +1,29 @@ +uClibc needs to link against an external libintl but it doesn't do this by +default. The configure script correctly figures out if this is needed, but +doesn't actually link to the libraries it decides on. This makes it link to +them if they are needed: + +--- psmisc-22.2/src/Makefile.am 2006/06/28 00:14:07 1.1 ++++ psmisc-22.2/src/Makefile.am 2006/06/28 00:14:24 +@@ -5,15 +5,19 @@ + + oldfuser_SOURCES = oldfuser.c comm.h signals.c signals.h loop.h i18n.h + ++oldfuser_LDADD = @INTLLIBS@ ++ + fuser_SOURCES = fuser.c comm.h signals.c signals.h i18n.h fuser.h + ++fuser_LDADD = @INTLLIBS@ ++ + killall_SOURCES = killall.c comm.h signals.c signals.h i18n.h + +-killall_LDADD = @SELINUX_LIB@ ++killall_LDADD = @SELINUX_LIB@ @INTLLIBS@ + + pstree_SOURCES = pstree.c comm.h i18n.h + +-pstree_LDADD = @TERMCAP_LIB@ @SELINUX_LIB@ ++pstree_LDADD = @TERMCAP_LIB@ @SELINUX_LIB@ @INTLLIBS@ + + BUILT_SOURCES = signames.h + diff --git a/packages/psmisc/psmisc_21.8.bb b/packages/psmisc/psmisc_21.8.bb index 4d10633a3f..f7d6828a94 100644 --- a/packages/psmisc/psmisc_21.8.bb +++ b/packages/psmisc/psmisc_21.8.bb @@ -3,11 +3,12 @@ DESCRIPTION = "procfs tools" SECTION = "base" PRIORITY = "required" MAINTAINER = "Greg Gilbert <greg@treke.net>" -DEPENDS = "ncurses" -PR = "r0" +DEPENDS = "ncurses virtual/libintl" +PR = "r1" SRC_URI = "${SOURCEFORGE_MIRROR}/psmisc/psmisc-${PV}.tar.gz \ - file://signames-header-fix.patch;patch=1" + file://signames-header-fix.patch;patch=1 \ + file://libintl-link.patch;patch=1" S = "${WORKDIR}/psmisc-${PV}" inherit autotools gettext diff --git a/packages/pvrusb2-mci/files/.mtn2git_empty b/packages/pvrusb2-mci/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/pvrusb2-mci/files/.mtn2git_empty diff --git a/packages/pvrusb2-mci/files/firmware.hotplug b/packages/pvrusb2-mci/files/firmware.hotplug new file mode 100755 index 0000000000..40673a7b74 --- /dev/null +++ b/packages/pvrusb2-mci/files/firmware.hotplug @@ -0,0 +1,61 @@ +#!/bin/sh +# +# Firmware-specific hotplug policy agent. +# +# Kernel firmware hotplug params include: +# +# ACTION=%s [add or remove] +# DEVPATH=%s [in 2.5 kernels, /sys/$DEVPATH] +# FIRMWARE=%s +# +# HISTORY: +# +# 24-Jul-2003 Initial version of "new" hotplug agent. +# +# $Id: firmware.agent,v 1.3 2004/03/14 15:52:56 ukai Exp $ +# + +cd /etc/hotplug.d/firmware +. ./hotplug.functions +# DEBUG=yes export DEBUG + +# directory of the firmware files +FIRMWARE_DIR=/lib/firmware + +# mountpoint of sysfs +SYSFS=$(sed -n 's/^.* \([^ ]*\) sysfs .*$/\1/p' /proc/mounts) + +# use /proc for 2.4 kernels +if [ "$SYSFS" = "" ]; then + SYSFS=/proc +fi + +# +# What to do with this firmware hotplug event? +# +case "$ACTION" in + +add) + if [ ! -e $SYSFS/$DEVPATH/loading ]; then + sleep 1 + fi + + if [ -f "$FIRMWARE_DIR/$FIRMWARE" ]; then + echo 1 > $SYSFS/$DEVPATH/loading + cp "$FIRMWARE_DIR/$FIRMWARE" $SYSFS/$DEVPATH/data + echo 0 > $SYSFS/$DEVPATH/loading + else + echo -1 > $SYSFS/$DEVPATH/loading + fi + + ;; + +remove) + ;; + +*) + mesg "Firmware '$ACTION' event not supported" + exit 1 + ;; + +esac diff --git a/packages/pvrusb2-mci/files/hotplug.functions b/packages/pvrusb2-mci/files/hotplug.functions new file mode 100755 index 0000000000..e3cc7e6e7a --- /dev/null +++ b/packages/pvrusb2-mci/files/hotplug.functions @@ -0,0 +1,193 @@ +# +# Setup and BASH utility functions for use in hotplug agents +# +# Most essential parameters are passed from the kernel using +# environment variables. For more information, see the docs +# on-line at http://linux-hotplug.sourceforge.net or the +# sources for each hotplug-aware kernel subsystem. +# +# $Id: hotplug.functions,v 1.26 2004/04/01 07:33:32 kroah Exp $ +# +# + +# DEBUG=yes; export DEBUG +PATH=/bin:/sbin:/usr/sbin:/usr/bin + +KERNEL=`uname -r` +MODULE_DIR=/lib/modules/$KERNEL + +HOTPLUG_DIR=/etc/hotplug + +if [ -f /etc/sysconfig/hotplug ]; then + . /etc/sysconfig/hotplug +fi + +if [ -x /usr/bin/logger ]; then + LOGGER=/usr/bin/logger +elif [ -x /bin/logger ]; then + LOGGER=/bin/logger +else + unset LOGGER +fi +# +# for diagnostics +# +if [ -t 1 -o -z "$LOGGER" ]; then + mesg () { + echo "$@" + } +else + mesg () { + $LOGGER -t $(basename $0)"[$$]" "$@" + } +fi + +debug_mesg () { + test "$DEBUG" = "" -o "$DEBUG" = no && return + mesg "$@" +} + + +# +# Not "modprobe --autoclean" ... one driver module can handle many +# devices. Unloading should be done when no devices are present. +# Autocleaning happens if none of the devices are open, once any of +# them gets opened; wrong timing. +# +MODPROBE="/sbin/modprobe -s -q" +#MODPROBE="/sbin/modprobe -vs" + + +#################################################################### +# +# usage: load_driver type filename description +# +# modprobes driver module(s) if appropriate, and optionally +# invokes a driver-specific setup script (or user-mode driver). +# +# the "modules.*map" format file is guaranteed to exist +# +load_drivers () +{ + local LOADED TYPE FILENAME DESCRIPTION LISTER + DRIVERS="" + + # make this routine more readable + TYPE=$1 + FILENAME=$2 + DESCRIPTION=$3 + + # should we use usbmodules, pcimodules? not on 2.5+, because sysfs + # ought to expose the data we need to find all candidate drivers. + # (on 2.5.48 it does for usb; but maybe not yet for pci.) + case "$KERNEL" in + 2.2*|2.3*|2.4*) LISTER=`which ${TYPE}modules` ;; + *) LISTER="" ;; + esac + + if [ "$LISTER" != "" ]; then + # lister programs MIGHT be preferable to parsing from shell scripts: + # - usbmodules used for (a) multi-interface devices, (b) coldplug + # - pcimodules used only for coldplug + case $TYPE in + usb) + # "usbutils-0.8" (or later) is needed in $PATH + # only works if we have usbfs + # ... reads more descriptors than are passed in env + # ... doesn't handle comment syntax either + if [ "$DEVICE" = "" -o ! -f "$DEVICE" ]; then + LISTER= + else + DRIVERS=`$LISTER --mapfile $FILENAME --device $DEVICE` + fi ;; + + pci) + debug_mesg "pcimodules is scanning more than $PCI_SLOT ..." + DRIVERS=`$LISTER` + ;; + esac + fi + + # try parsing by shell scripts if no luck yet + if [ "$DRIVERS" = "" ]; then + ${TYPE}_map_modules < $FILENAME + fi + + # FIXME remove dups and blacklisted modules from $DRIVERS here + + if [ "$DRIVERS" = "" ]; then + return + fi + + # Note that DRIVERS aren't all going to be modules. + # For USB, some user-mode drivers or setup scripts may be listed. + debug_mesg Setup $DRIVERS for $DESCRIPTION + + # either kernel or user mode drivers may need to be set up + for MODULE in $DRIVERS + do + # maybe driver modules need loading + LOADED=false + if ! lsmod | grep -q "^$(echo $MODULE|sed -e 's/-/_/g') " > /dev/null 2>&1; then + if grep -q "^$MODULE\$" $HOTPLUG_DIR/blacklist \ + >/dev/null 2>&1; then + debug_mesg "... blacklisted module: $MODULE" + continue + fi + + # statically linked modules aren't shown by 'lsmod', + # and user mode drivers will ONLY have a setup script; + # it's not an error if a module doesn't exist or won't load. + if $MODPROBE -n $MODULE >/dev/null 2>&1 && + ! $MODPROBE $MODULE >/dev/null 2>&1 ; then + mesg "... can't load module $MODULE" + else + # /etc/modules.conf may have set non-default module + # parameters ... handle per-device parameters in apps + # (ioctls etc) not in setup scripts or modules.conf + LOADED=true + fi + else + # This module is already loaded + LOADED=true + fi + + # always run setup scripts after any matching kernel code has had + # a chance to do its thing, no matter whether it was dynamically + # or statically linked, or if there is only a user mode driver. + # the script might re-enumerate usb devices after firmware download, + # giving kernel code another chance. + if [ -x $HOTPLUG_DIR/$TYPE/$MODULE ]; then + debug_mesg Module setup $MODULE for $DESCRIPTION + $HOTPLUG_DIR/$TYPE/$MODULE + LOADED=true + fi + + if [ "$LOADED" = "false" ]; then + mesg "missing kernel or user mode driver $MODULE " + fi + if echo "$MODULE" | grep -q "usb-storage" > /dev/null 2>&1 ; then + [ -x /usr/sbin/updfstab ] && /usr/sbin/updfstab + fi + done +} + +#################################################################### +# +# usage: log_to_stdout filename +# +# writes a copy of the current hotplug event to stdout. +# add buffering, to avoid interleaving reports! +# +log_to_stdout () +{ + if [ -x /bin/date ]; then + echo "HOTPLUG_TIME='$(/bin/date)'" + fi + + env | egrep -v '^PATH=|^PWD=|^_=|^OLDPWD=|^SHLVL=|^HOME=' + echo '' + # empty line terminates events +} + +# vim:syntax=sh diff --git a/packages/qt/qt4-x11-free-4.1.1/configurable-cpu-extensions.patch b/packages/qt/qt4-x11-free-4.1.1/configurable-cpu-extensions.patch deleted file mode 100644 index ab943db1ff..0000000000 --- a/packages/qt/qt4-x11-free-4.1.1/configurable-cpu-extensions.patch +++ /dev/null @@ -1,34 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- qt-x11-opensource-src-4.1.1/configure~configurable-cpu-extensions -+++ qt-x11-opensource-src-4.1.1/configure -@@ -564,6 +564,12 @@ - VAL=$1 - fi - ;; -+ -nosse) -+ CFG_SSE="no" -+ ;; -+ -sse) -+ CFG_SSE="yes" -+ ;; - -iwmmxt) - CFG_IWMMXT="yes" - ;; -@@ -1759,13 +1765,6 @@ - fi - fi - --# detect sse support --if $unixtests/sse.test $XQMAKESPEC $OPT_VERBOSE; then -- CFG_HAVE_SSE=no --else -- CFG_HAVE_SSE=yes --fi -- - # check iwmmxt support - if [ "$CFG_IWMMXT" = "yes" ]; then - if ! $unixtests/iwmmxt.test $XQMAKESPEC $OPT_VERBOSE; then diff --git a/packages/qt/qt4-x11-free-4.1.1/cross-compile.patch b/packages/qt/qt4-x11-free-4.1.1/cross-compile.patch deleted file mode 100644 index 7c8665c9c1..0000000000 --- a/packages/qt/qt4-x11-free-4.1.1/cross-compile.patch +++ /dev/null @@ -1,159 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- qt-x11-opensource-src-4.1.1/configure~cross-compile -+++ qt-x11-opensource-src-4.1.1/configure -@@ -534,7 +534,7 @@ - UNKNOWN_ARG=yes - fi - ;; -- -prefix|-docdir|-headerdir|-plugindir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-buildkey|-sdk) -+ -prefix|-docdir|-headerdir|-plugindir|-datadir|-libdir|-bindir|-translationdir|-sysconfdir|-examplesdir|-demosdir|-depths|-make|-nomake|-platform|-xplatform|-buildkey|-sdk|-crossarch) - VAR=`echo $1 | sed "s,^-\(.*\),\1,"` - shift - VAL=$1 -@@ -845,6 +845,9 @@ - xplatform) - XPLATFORM="$VAL" - ;; -+ crossarch) -+ CROSSARCH="$VAL" -+ ;; - debug-and-release) - if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then - CFG_DEBUG_RELEASE="$VAL" -@@ -1698,131 +1701,7 @@ - echo "Determining system architecture... ($UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_MACHINE)" - fi - --if [ "$PLATFORM" != "$XPLATFORM" -a "$CFG_EMBEDDED" != "no" ]; then -- case "$CFG_EMBEDDED" in -- x86) -- ARCH=i386 -- ;; -- x86_64) -- ARCH=x86_64 -- ;; -- ipaq|sharp) -- ARCH=arm -- ;; -- *) -- ARCH="$CFG_EMBEDDED" -- ;; -- esac --else -- case "$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_MACHINE" in -- IRIX*:*:*) -- ARCH=`uname -p` -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " SGI ($ARCH)" -- fi -- ;; -- SunOS:5*:*) -- case "$UNAME_MACHINE" in -- sun4u) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " Sun SPARC (sparc)" -- fi -- ARCH=sparc -- ;; -- i86pc) -- case "$PLATFORM" in -- *-64) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 64-bit AMD 80x86 (x86_64)" -- fi -- ARCH=x86_64 -- ;; -- *) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 32-bit Intel 80x86 (i386)" -- fi -- ARCH=i386 -- ;; -- esac -- esac -- ;; -- Darwin:*:*) -- case "$UNAME_MACHINE" in -- Power?Macintosh) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 32-bit Apple PowerPC (powerpc)" -- fi -- ;; -- x86) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 32-bit Intel 80x86 (i386)" -- fi -- ;; -- esac -- ARCH=macosx -- ;; -- AIX:*:00????????00) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 64-bit IBM PowerPC (powerpc)" -- fi -- ARCH=powerpc -- ;; -- HP-UX:*:9000*) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " HP PA-RISC (parisc)" -- fi -- ARCH=parisc -- ;; -- *:*:i?86) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 32-bit Intel 80x86 (i386)" -- fi -- ARCH=i386 -- ;; -- *:*:x86_64|*:*:amd64) -- if [ "$PLATFORM" = "linux-g++-32" ]; then -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 32 bit on 64-bit AMD 80x86 (i386)" -- fi -- ARCH=i386 -- else -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 64-bit AMD 80x86 (x86_64)" -- fi -- ARCH=x86_64 -- fi -- ;; -- *:*:ppc) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " 32-bit PowerPC (powerpc)" -- fi -- ARCH=powerpc -- ;; -- *:*:s390*) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " IBM S/390 (s390)" -- fi -- ARCH=s390 -- ;; -- *:*:*) -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " Trying '$UNAME_MACHINE'..." -- fi -- ARCH="$UNAME_MACHINE" -- ;; -- esac --fi -- --if [ -d "$relpath/src/corelib/arch/$ARCH" ]; then -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " '$ARCH' is supported" -- fi --else -- if [ "$OPT_VERBOSE" = "yes" ]; then -- echo " '$ARCH' is unsupported, using 'generic'" -- fi -- ARCH=generic --fi -+ARCH="$CROSSARCH" - - if [ "$OPT_VERBOSE" = "yes" ]; then - echo "System architecture: '$ARCH'" diff --git a/packages/qt/qt4-x11-free-4.1.1/fix-mkspecs.patch b/packages/qt/qt4-x11-free-4.1.1/fix-mkspecs.patch deleted file mode 100644 index e927df9c7d..0000000000 --- a/packages/qt/qt4-x11-free-4.1.1/fix-mkspecs.patch +++ /dev/null @@ -1,102 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- qt-x11-opensource-src-4.1.1/mkspecs/linux-g++/qmake.conf~fix-qmakespec -+++ qt-x11-opensource-src-4.1.1/mkspecs/linux-g++/qmake.conf -@@ -8,7 +8,7 @@ - QT += core gui - QMAKE_INCREMENTAL_STYLE = sublib - --QMAKE_CC = gcc -+QMAKE_CC = $(OE_QMAKE_CC) - QMAKE_LEX = flex - QMAKE_LEXFLAGS = - QMAKE_YACC = yacc -@@ -16,19 +16,19 @@ - QMAKE_YACCFLAGS_MANGLE = -p $base -b $base - QMAKE_YACC_HEADER = $base.tab.h - QMAKE_YACC_SOURCE = $base.tab.c --QMAKE_CFLAGS = -pipe -+QMAKE_CFLAGS = -pipe $(OE_QMAKE_CFLAGS) - QMAKE_CFLAGS_DEPS = -M - QMAKE_CFLAGS_WARN_ON = -Wall -W - QMAKE_CFLAGS_WARN_OFF = -w --QMAKE_CFLAGS_RELEASE = -O2 -+QMAKE_CFLAGS_RELEASE = -O2 - QMAKE_CFLAGS_DEBUG = -g - QMAKE_CFLAGS_SHLIB = -fPIC - QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses - QMAKE_CFLAGS_THREAD = -D_REENTRANT - QMAKE_CFLAGS_HIDESYMS = -fvisibility=hidden - --QMAKE_CXX = g++ --QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -+QMAKE_CXX = $(OE_QMAKE_CXX) -+QMAKE_CXXFLAGS = $$QMAKE_CFLAGS $(OE_QMAKE_CXXFLAGS) - QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS - QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON - QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF -@@ -41,37 +41,37 @@ - - QMAKE_INCDIR = - QMAKE_LIBDIR = --QMAKE_INCDIR_X11 = /usr/X11R6/include --QMAKE_LIBDIR_X11 = /usr/X11R6/lib --QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS] --QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS] --QMAKE_INCDIR_OPENGL = /usr/X11R6/include --QMAKE_LIBDIR_OPENGL = /usr/X11R6/lib -+QMAKE_INCDIR_X11 = -+QMAKE_LIBDIR_X11 = -+QMAKE_INCDIR_QT = $(OE_QMAKE_INCDIR_QT) -+QMAKE_LIBDIR_QT = $(OE_QMAKE_LIBDIR_QT) -+QMAKE_INCDIR_OPENGL = -+QMAKE_LIBDIR_OPENGL = - --QMAKE_LINK = g++ --QMAKE_LINK_SHLIB = g++ --QMAKE_LFLAGS = -+QMAKE_LINK = $(OE_QMAKE_LINK) -+QMAKE_LINK_SHLIB = $(OE_QMAKE_LINK) -+QMAKE_LFLAGS = $(OE_QMAKE_LDFLAGS) - QMAKE_LFLAGS_RELEASE = - QMAKE_LFLAGS_DEBUG = - QMAKE_LFLAGS_SHLIB = -shared - QMAKE_LFLAGS_PLUGIN = $$QMAKE_LFLAGS_SHLIB - QMAKE_LFLAGS_SONAME = -Wl,-soname, - QMAKE_LFLAGS_THREAD = --QMAKE_RPATH = -Wl,-rpath, -+QMAKE_RPATH = -Wl,-rpath-link, - - QMAKE_LIBS = - QMAKE_LIBS_DYNLOAD = -ldl --QMAKE_LIBS_X11 = -lXext -lX11 -lm --QMAKE_LIBS_X11SM = -lSM -lICE -+QMAKE_LIBS_X11 = $(OE_QMAKE_LIBS_X11) -+QMAKE_LIBS_X11SM = $(OE_QMAKE_LIBS_X11SM) - QMAKE_LIBS_NIS = -lnsl - QMAKE_LIBS_OPENGL = -lGLU -lGL - QMAKE_LIBS_OPENGL_QT = -lGL - QMAKE_LIBS_THREAD = -lpthread - --QMAKE_MOC = $$[QT_INSTALL_BINS]/moc --QMAKE_UIC = $$[QT_INSTALL_BINS]/uic -+QMAKE_MOC = $(OE_QMAKE_MOC) -+QMAKE_UIC = $(OE_QMAKE_UIC) - --QMAKE_AR = ar cqs -+QMAKE_AR = $(OE_QMAKE_AR) cqs - QMAKE_RANLIB = - - QMAKE_TAR = tar -cf -@@ -83,7 +83,7 @@ - QMAKE_MOVE = mv -f - QMAKE_DEL_FILE = rm -f - QMAKE_DEL_DIR = rmdir --QMAKE_STRIP = strip -+QMAKE_STRIP = $(OE_QMAKE_STRIP) - QMAKE_STRIPFLAGS_LIB += --strip-unneeded - QMAKE_CHK_DIR_EXISTS = test -d - QMAKE_MKDIR = mkdir -p diff --git a/packages/qt/qt4-x11-free-4.1.1/fix-resinit-declaration.patch b/packages/qt/qt4-x11-free-4.1.1/fix-resinit-declaration.patch deleted file mode 100644 index fcd5de6f97..0000000000 --- a/packages/qt/qt4-x11-free-4.1.1/fix-resinit-declaration.patch +++ /dev/null @@ -1,16 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- qt-x11-opensource-src-4.1.1/src/qt3support/network/q3dns.cpp~fix-resinit-declaration -+++ qt-x11-opensource-src-4.1.1/src/qt3support/network/q3dns.cpp -@@ -30,7 +30,7 @@ - # include <netinet/in.h> - # include <arpa/nameser.h> - # include <resolv.h> --extern "C" int res_init(); -+extern "C" int res_init() throw(); - #endif - - // POSIX Large File Support redefines open -> open64 diff --git a/packages/qt/qt4-x11-free-4.1.1/gcc4_1.patch b/packages/qt/qt4-x11-free-4.1.1/gcc4_1.patch deleted file mode 100644 index 392aaf4f5f..0000000000 --- a/packages/qt/qt4-x11-free-4.1.1/gcc4_1.patch +++ /dev/null @@ -1,50 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- qt-x11-opensource-src-4.1.1/src/corelib/tools/qchar.h~gcc4_1.patch -+++ qt-x11-opensource-src-4.1.1/src/corelib/tools/qchar.h -@@ -219,7 +219,7 @@ - inline const char toLatin1() const; - inline const ushort unicode() const { return ucs; } - #ifdef Q_NO_PACKED_REFERENCE -- inline ushort &unicode() { return *(&ucs); } -+ inline ushort &unicode() { return *((ushort*)&ucs); } - #else - inline ushort &unicode() { return ucs; } - #endif ---- qt-x11-opensource-src-4.1.1/src/gui/kernel/qapplication_x11.cpp~gcc4_1.patch -+++ qt-x11-opensource-src-4.1.1/src/gui/kernel/qapplication_x11.cpp -@@ -1193,6 +1193,18 @@ - } - } - -+static void getXDefault(const char *group, const char *key, float *val) -+{ -+ char *str = XGetDefault(X11->display, group, key); -+ if (str) { -+ char *end = 0; -+ float v = strtod(str, &end); -+ if (str != end) -+ *val = v; -+ } -+} -+ -+ - static void getXDefault(const char *group, const char *key, bool *val) - { - char *str = XGetDefault(X11->display, group, key); ---- qt-x11-opensource-src-4.1.1/src/corelib/global/qglobal.h~gcc4_1.patch -+++ qt-x11-opensource-src-4.1.1/src/corelib/global/qglobal.h -@@ -720,8 +720,8 @@ - - #if defined(QT_COORD_TYPE) - typedef QT_COORD_TYPE qreal; --#elif defined(__arm__) --typedef float qreal; -+//#elif defined(__arm__) -+//typedef float qreal; - #else - typedef double qreal; - #endif diff --git a/packages/qt/qt4-x11-free-4.1.1/no-qmake.patch b/packages/qt/qt4-x11-free-4.1.1/no-qmake.patch deleted file mode 100644 index 324f44303a..0000000000 --- a/packages/qt/qt4-x11-free-4.1.1/no-qmake.patch +++ /dev/null @@ -1,16 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- qt-x11-opensource-src-4.1.1/configure~no-qmake -+++ qt-x11-opensource-src-4.1.1/configure -@@ -2548,7 +2548,7 @@ - fi - - # build qmake --if true; then ###[ '!' -f "$outpath/bin/qmake" ]; -+if false; then ###[ '!' -f "$outpath/bin/qmake" ]; - echo "Creating qmake. Please wait..." - - OLD_QCONFIG_H= diff --git a/packages/qt/qt4-x11-free-4.1.1/no-tools.patch b/packages/qt/qt4-x11-free-4.1.1/no-tools.patch deleted file mode 100644 index 2bda49c9c5..0000000000 --- a/packages/qt/qt4-x11-free-4.1.1/no-tools.patch +++ /dev/null @@ -1,16 +0,0 @@ - -# -# Patch managed by http://www.holgerschurig.de/patcher.html -# - ---- qt-x11-opensource-src-4.1.1/src/src.pro~no-tools -+++ qt-x11-opensource-src-4.1.1/src/src.pro -@@ -3,7 +3,7 @@ - - # this order is important - win32:SUBDIRS += winmain --SUBDIRS += tools/moc tools/rcc tools/uic corelib xml gui sql network svg -+SUBDIRS += corelib xml gui sql network svg - !embedded:contains(QT_CONFIG, opengl): SUBDIRS += opengl - contains(QT_CONFIG, qt3support): SUBDIRS += qt3support - !cross_compile { diff --git a/packages/qt/qt4-x11-free-4.1.2/fix-asm-constraints.patch b/packages/qt/qt4-x11-free-4.1.2/fix-asm-constraints.patch new file mode 100644 index 0000000000..93fc52d055 --- /dev/null +++ b/packages/qt/qt4-x11-free-4.1.2/fix-asm-constraints.patch @@ -0,0 +1,16 @@ + +# +# Signed off by Michael 'Mickey' Lauer <mickey@Vanille.de> +# + +--- qt-x11-opensource-src-4.1.2/src/corelib/arch/arm/arch/qatomic.h~fix-asm-constraints ++++ qt-x11-opensource-src-4.1.2/src/corelib/arch/arm/arch/qatomic.h +@@ -32,7 +32,7 @@ + { + register int ret; + asm volatile("swpb %0,%1,[%2]" +- : "=r"(ret) ++ : "&=r"(ret) + : "r"(newval), "r"(ptr) + : "cc", "memory"); + return ret; diff --git a/packages/qt/qt4-x11-free_4.1.1.bb b/packages/qt/qt4-x11-free_4.1.1.bb deleted file mode 100644 index 7a4874c83a..0000000000 --- a/packages/qt/qt4-x11-free_4.1.1.bb +++ /dev/null @@ -1,138 +0,0 @@ -DESCRIPTION = "Qt/X11 Version ${PV}" -SECTION = "x11/libs" -PRIORITY = "optional" -HOMEPAGE = "http://www.trolltech.com" -LICENSE = "GPL QPL" -MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>" -DEPENDS = "uicmoc4-native qmake2-native freetype jpeg libx11 xft libxext libxrender libxrandr libxcursor" -PROVIDES = "qt4x11" -PR = "r5" - -SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz \ - file://cross-compile.patch;patch=1 \ - file://fix-resinit-declaration.patch;patch=1 \ - file://no-tools.patch;patch=1 \ - file://no-qmake.patch;patch=1 \ - file://gcc4_1.patch;patch=1 \ - file://configurable-cpu-extensions.patch;patch=1 \ - file://fix-mkspecs.patch;patch=1" -S = "${WORKDIR}/qt-x11-opensource-src-${PV}" - -PARALLEL_MAKE = "" - -inherit qmake-base qt4x11 pkgconfig - -export QTDIR = "${S}" -STAGING_QT_DIR = "${STAGING_DIR}/${TARGET_SYS}/qt4" -export ARCH = "${TARGET_ARCH}" -export ARCH_i686 = "x86" -EXTRA_OEMAKE = "-e" - -# FIXME: -# * add missing options -QT_CONFIG_FLAGS = "-release -shared -qt-zlib -system-libjpeg -no-nas-sound -no-sm -no-libmng -qt-libpng -no-gif -no-xinerama \ - -no-tablet -no-xkb -no-nis -no-cups -no-opengl \ - -nosse \ - -no-sql-ibase -no-sql-mysql -no-sql-odbc -no-sql-psql -no-sql-sqlite -no-sql-sqlite2 \ - -verbose -stl -no-accessibility" - -EXTRA_ENV = 'QMAKE="${STAGING_BINDIR}/qmake2 -after DEFINES+=QT_NO_XIM INCPATH+=${STAGING_INCDIR} \ - INCPATH+=${STAGING_INCDIR}/freetype2 LIBS+=-L${STAGING_LIBDIR}" \ - QMAKESPEC="${QMAKESPEC}" LINK="${CXX} -Wl,-rpath-link,${STAGING_LIBDIR}" \ - AR="${TARGET_PREFIX}ar cqs" \ - MOC="${STAGING_BINDIR}/moc4" UIC="${STAGING_BINDIR}/uic4" MAKE="make -e"' - -do_configure() { - echo "DEFINES -= QT_NO_CAST_TO_ASCII" >>src/qbase.pri - echo "DEFINES += QT_NO_XIM" >>src/qbase.pri - unset QMAKESPEC - #export QMAKESPEC="linux-oe-g++" - ln -sf ${STAGING_BINDIR}/qmake2 bin/qmake - #rm -rf ./mkspecs - #ln -sf ${QMAKE_MKSPEC_PATH} ./mkspecs - echo yes | ./configure -prefix / -platform ${TARGET_OS}-g++ -crossarch ${ARCH} ${QT_CONFIG_FLAGS} -fast \ - -L${STAGING_LIBDIR} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/freetype2 -I${STAGING_INCDIR}/mysql -} - -# FIXME: Might want to compile the cross tools for the -dev packages as well... -do_compile() { - unset CFLAGS CXXFLAGS - install -m 0755 ${STAGING_BINDIR}/rcc4 ${S}/bin/rcc - install -m 0755 ${STAGING_BINDIR}/moc4 ${S}/bin/moc - install -m 0755 ${STAGING_BINDIR}/uic4 ${S}/bin/uic - - oe_runmake ${EXTRA_ENV} -} - -PARTS = "3Support Core Designer DesignerComponents Gui Network Sql Svg Test Xml" - -do_stage() { - oe_runmake install INSTALL_ROOT=/ - install -m 0755 ${STAGING_BINDIR}/rcc4 ${STAGING_QT_DIR}/bin/rcc - install -m 0755 ${STAGING_BINDIR}/moc4 ${STAGING_QT_DIR}/bin/moc - install -m 0755 ${STAGING_BINDIR}/uic4 ${STAGING_QT_DIR}/bin/uic - -} - -# FIXME: Might want to call oe_runmake install INSTALL_ROOT=${D}/${prefix} as well... -# FIXME: Might want to install everything into ${libdir}/qt4/* to match the usual packing... -do_install() { - install -d ${D}${libdir} - install -d ${D}${bindir} - for part in ${PARTS} - do - oe_libinstall -so -C lib libQt$part ${D}${libdir} - done - oe_libinstall -a -C lib libQtAssistantClient ${STAGING_QT_DIR} - cp -pPR include/* ${D}${incdir} - cp -pPR plugins ${D}${libdir} - cp -pPR bin/* ${D}${bindir} - - install -d ${D}${bindir}/qt4-examples - for binary in `find examples -perm 0755 -type f` - do - install -m 0755 $binary ${D}${bindir}/qt4-examples/ - done - install -d ${D}${bindir}/qt4-demos - for binary in `find demos -perm 0755 -type f` - do - install -m 0755 $binary ${D}${bindir}/qt4-demos/ - done -} - -PACKAGES =+ "libqtcore4 libqtgui4 libqtnetwork4 libqtsql4 libqtsvg4 libqttest4 libqtxml4 \ - libqtdesigner4 libqtdesignercomponents4 libqt3support4 \ - qt4-assistant qt4-common qt4-designer qt4-demos qt4-examples qt4-linguist \ - qt4-plugins-accessible qt4-plugins-codecs qt4-plugins-designer qt4-plugins-imageformats qt4-plugins-sqldrivers" - -ALLOW_EMPTY = "1" -FILES_${PN} = "" -RDEPENDS_${PN} = "${PACKAGES}" - -FILES_libqtcore4 = "${libdir}/libQtCore.so*" -FILES_libqtgui4 = "${libdir}/libQtGui.so*" -FILES_libqtnetwork4 = "${libdir}/libQtNetwork.so*" -FILES_libqtsql4 = "${libdir}/libQtSql.so*" -FILES_libqtsvg4 = "${libdir}/libQtSvg.so*" -FILES_libqttest4 = "${libdir}/libQtTest.so*" -FILES_libqtxml4 = "${libdir}/libQtXml.so*" -FILES_libqtdesigner4 = "${libdir}/libQtDesigner.so*" -FILES_libqtdesignercomponents4 = "${libdir}/libQtDesignerComponents.so*" -FILES_libqt3support4 = "${libdir}/libQt3Support.so*" - -FILES_qt4-plugins-accessible = "${libdir}/plugins/accessible/*.so" -FILES_qt4-plugins-codecs = "${libdir}/plugins/codecs/*.so" -FILES_qt4-plugins-designer = "${libdir}/plugins/designer/*.so" -FILES_qt4-plugins-imageformats = "${libdir}/plugins/imageformats/*.so" -FILES_qt4-plugins-sqldrivers = "${libdir}/plugins/sqldrivers/*.so" - -FILES_qt4-assistant = "${bindir}/*assistant*" -FILES_qt4-designer = "${bindir}/*designer*" -FILES_qt4-linguist = "${bindir}/*linguist* ${bindir}/lrelease ${bindir}/lupdate ${bindir}/qm2ts" - -FILES_qt4-common = "${bindir}/qtconfig" -FILES_qt4-examples = "${bindir}/qt4-examples/*" -FILES_qt4-demos = "${bindir}/qtdemo ${bindir}/qt4-demos/*" - -FILES_${PN}-dev += "${bindir}/rcc ${bindir}/uic* ${bindir}/moc ${bindir}/qmake ${bindir}/syncqt \ - ${bindir}/qt3to4 ${bindir}/findtr" diff --git a/packages/qt/qt4-x11-free_4.1.2.bb b/packages/qt/qt4-x11-free_4.1.2.bb index f769047d71..9bff5f1c5c 100644 --- a/packages/qt/qt4-x11-free_4.1.2.bb +++ b/packages/qt/qt4-x11-free_4.1.2.bb @@ -6,7 +6,7 @@ LICENSE = "GPL QPL" MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>" DEPENDS = "uicmoc4-native qmake2-native freetype jpeg libx11 xft libxext libxrender libxrandr libxcursor" PROVIDES = "qt4x11" -PR = "r0" +PR = "r1" SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz \ file://cross-compile.patch;patch=1 \ @@ -15,7 +15,8 @@ SRC_URI = "ftp://ftp.trolltech.com/qt/source/qt-x11-opensource-src-${PV}.tar.gz file://no-qmake.patch;patch=1 \ file://gcc4_1.patch;patch=1 \ file://configurable-cpu-extensions.patch;patch=1 \ - file://fix-mkspecs.patch;patch=1" + file://fix-mkspecs.patch;patch=1 \ + file://fix-asm-constraints.patch;patch=1" S = "${WORKDIR}/qt-x11-opensource-src-${PV}" PARALLEL_MAKE = "" @@ -24,10 +25,23 @@ inherit qmake-base qt4x11 pkgconfig export QTDIR = "${S}" STAGING_QT_DIR = "${STAGING_DIR}/${TARGET_SYS}/qt4" -export ARCH = "${TARGET_ARCH}" -export ARCH_i686 = "x86" EXTRA_OEMAKE = "-e" +def qt_arch(d): + import bb, re + arch = bb.data.getVar('TARGET_ARCH', d, 1) + if re.match("^i.86$", arch): + arch = "x86" + elif re.match("^arm.*", arch): + arch = "arm" + elif arch == "x86_64": + arch = "x86" + elif arch == "mipsel": + arch = "mips" + return arch + +QT_ARCH := "${@qt_arch(d)}" + # FIXME: # * add missing options QT_CONFIG_FLAGS = "-release -shared -qt-zlib -system-libjpeg -no-nas-sound -no-sm -no-libmng -qt-libpng -no-gif -no-xinerama \ @@ -46,11 +60,12 @@ do_configure() { echo "DEFINES -= QT_NO_CAST_TO_ASCII" >>src/qbase.pri echo "DEFINES += QT_NO_XIM" >>src/qbase.pri unset QMAKESPEC - #export QMAKESPEC="linux-oe-g++" ln -sf ${STAGING_BINDIR}/qmake2 bin/qmake + ln -sf ./linux-g++ mkspecs/linux-gnueabi-g++ + #export QMAKESPEC="linux-oe-g++" #rm -rf ./mkspecs #ln -sf ${QMAKE_MKSPEC_PATH} ./mkspecs - echo yes | ./configure -prefix / -platform ${TARGET_OS}-g++ -crossarch ${ARCH} ${QT_CONFIG_FLAGS} -fast \ + echo yes | ./configure -prefix / -platform ${TARGET_OS}-g++ -crossarch ${QT_ARCH} ${QT_CONFIG_FLAGS} -fast \ -L${STAGING_LIBDIR} -I${STAGING_INCDIR} -I${STAGING_INCDIR}/freetype2 -I${STAGING_INCDIR}/mysql } diff --git a/packages/qte/qte-2.3.10/suspend-resume-hooks.patch b/packages/qte/qte-2.3.10/suspend-resume-hooks.patch index 34e6ba2133..c6e9f16e9a 100644 --- a/packages/qte/qte-2.3.10/suspend-resume-hooks.patch +++ b/packages/qte/qte-2.3.10/suspend-resume-hooks.patch @@ -1,12 +1,10 @@ -Suspend/Resume hooks for QScreen and usage from QApplication -Manuel Teira <manuel.teira@telefonica.net> # # Patch managed by http://www.holgerschurig.de/patcher.html # ---- qt-2.3.10/src/kernel/qgfx_qws.h~suspend-resume-hooks -+++ qt-2.3.10/src/kernel/qgfx_qws.h +--- qt-2.3.10.foo/src/kernel/qgfx_qws.h~suspend-resume-hooks ++++ qt-2.3.10.foo/src/kernel/qgfx_qws.h @@ -192,6 +192,8 @@ virtual int pixmapLinestepAlignment() { return 64; } @@ -16,8 +14,8 @@ Manuel Teira <manuel.teira@telefonica.net> virtual bool onCard(unsigned char *) const; virtual bool onCard(unsigned char *, ulong& out_offset) const; ---- qt-2.3.10/src/kernel/qapplication_qws.cpp~suspend-resume-hooks -+++ qt-2.3.10/src/kernel/qapplication_qws.cpp +--- qt-2.3.10.foo/src/kernel/qapplication_qws.cpp~suspend-resume-hooks ++++ qt-2.3.10.foo/src/kernel/qapplication_qws.cpp @@ -480,6 +480,7 @@ int region_offset_window; #ifndef QT_NO_COP @@ -35,7 +33,7 @@ Manuel Teira <manuel.teira@telefonica.net> queue.append(e); } #endif -@@ -851,6 +852,26 @@ +@@ -851,6 +852,42 @@ } } @@ -53,6 +51,22 @@ Manuel Teira <manuel.teira@telefonica.net> + if ( e->message.data() == QCString( "returnFromSuspend()" ) ) { + if ( qt_screen ) qt_screen->prepareToResume(); + delete e; ++ QWidgetList *list = QApplication::topLevelWidgets(); ++ if ( list ) { ++ QWidgetListIt it( *list ); ++ QWidget * w; ++ while ( (w=it.current()) != 0 ) { ++ ++it; ++ if ( !w->testWFlags(Qt::WType_Desktop) ) { ++ QETWidget *etw = (QETWidget*)w; ++ if ( etw->isVisible() ) { ++ etw->repaintHierarchy( etw->geometry(), TRUE ); ++ etw->repaintDecoration( qApp->desktop()->rect(), TRUE ); ++ } ++ } ++ } ++ delete list; ++ } + return TRUE; + } + return FALSE; diff --git a/packages/qte/qte-mt-static_2.3.10.bb b/packages/qte/qte-mt-static_2.3.10.bb index 4f2c0f945b..a71b2af103 100644 --- a/packages/qte/qte-mt-static_2.3.10.bb +++ b/packages/qte/qte-mt-static_2.3.10.bb @@ -1,5 +1,5 @@ require qte-common_${PV}.inc -PR = "r2" +PR = "r3" EXTRA_OECONF += "-static" diff --git a/packages/qte/qte-mt_2.3.10.bb b/packages/qte/qte-mt_2.3.10.bb index 90e84fe38d..95a67d2ef4 100644 --- a/packages/qte/qte-mt_2.3.10.bb +++ b/packages/qte/qte-mt_2.3.10.bb @@ -1,5 +1,5 @@ require qte-common_${PV}.inc -PR = "r2" +PR = "r3" EXTRA_OECONF += "-thread" diff --git a/packages/qte/qte_2.3.10.bb b/packages/qte/qte_2.3.10.bb index b1c4616f22..ed684a00c7 100644 --- a/packages/qte/qte_2.3.10.bb +++ b/packages/qte/qte_2.3.10.bb @@ -1,3 +1,3 @@ require qte-common_${PV}.inc -PR = "r43" +PR = "r44" diff --git a/packages/radlib/files/.mtn2git_empty b/packages/radlib/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/radlib/files/.mtn2git_empty diff --git a/packages/radlib/files/Makefile.am.patch b/packages/radlib/files/Makefile.am.patch new file mode 100644 index 0000000000..e1e0e47c2c --- /dev/null +++ b/packages/radlib/files/Makefile.am.patch @@ -0,0 +1,24 @@ +--- radlib-2.6.2/src/Makefile.am.orig 2006-07-01 18:56:09.000000000 +0200 ++++ radlib-2.6.2/src/Makefile.am 2006-07-01 18:56:48.000000000 +0200 +@@ -14,8 +14,8 @@ +
+ if MYSQL
+ MY_INCLUDES = \
+- -I$(prefix)/include/mysql \
+- -I/usr/include/mysql
++ -I$(prefix)/include/mysql
++
+ MY_SOURCES = \
+ $(top_srcdir)/database/mysql/my_database.c \
+ $(top_srcdir)/src/raddatabase.c
+@@ -24,8 +24,8 @@ + endif
+ if PGRESQL
+ PG_INCLUDES = \
+- -I$(prefix)/include \
+- -I/usr/include
++ -I$(prefix)/include
++
+ PG_SOURCES = \
+ $(top_srcdir)/database/postgresql/pg_database.c \
+ $(top_srcdir)/src/raddatabase.c
diff --git a/packages/radlib/radlib-common.inc b/packages/radlib/radlib-common.inc index 528515b2cd..ba0f6db019 100644 --- a/packages/radlib/radlib-common.inc +++ b/packages/radlib/radlib-common.inc @@ -4,7 +4,8 @@ DESCRIPTION = "radlib is a rapid application development library for unix interp MAINTAINER = "Mark Teel (mark@teel.ws)" HOMEPAGE = "http://www.radlib.teel.ws/" -SRC_URI = "${SOURCEFORGE_MIRROR}/radlib/radlib-${PV}.tar.gz" +SRC_URI = "${SOURCEFORGE_MIRROR}/radlib/radlib-${PV}.tar.gz \ + file://Makefile.am.patch;patch=1" S = "${WORKDIR}/radlib-${PV}" diff --git a/packages/radlib/radlib-mysql_2.6.2.bb b/packages/radlib/radlib-mysql_2.6.2.bb index 93375c8300..61b5b8c5ef 100644 --- a/packages/radlib/radlib-mysql_2.6.2.bb +++ b/packages/radlib/radlib-mysql_2.6.2.bb @@ -1,3 +1,3 @@ include radlib-common.inc include radlib-mysql.inc -PR = "r0" +PR = "r1" diff --git a/packages/radlib/radlib_2.6.2.bb b/packages/radlib/radlib_2.6.2.bb index be5f2d0257..a123adc785 100644 --- a/packages/radlib/radlib_2.6.2.bb +++ b/packages/radlib/radlib_2.6.2.bb @@ -1,3 +1,3 @@ include radlib-common.inc include radlib.inc -PR = "r0" +PR = "r1" diff --git a/packages/radlib/x b/packages/radlib/x new file mode 100644 index 0000000000..c27c3cae43 --- /dev/null +++ b/packages/radlib/x @@ -0,0 +1 @@ + file://Makefile.am.patch;patch=1" diff --git a/packages/reiser4progs/files/key_large.c.patch b/packages/reiser4progs/files/key_large.c.patch new file mode 100644 index 0000000000..11fc694ebd --- /dev/null +++ b/packages/reiser4progs/files/key_large.c.patch @@ -0,0 +1,20 @@ +--- ./plugin/key/key_large/key_large.c.orig 2006-07-01 16:22:38.000000000 +0200 ++++ ./plugin/key/key_large/key_large.c 2006-07-01 16:23:06.000000000 +0200 +@@ -266,7 +266,7 @@ + ordering |= HASHED_NAME_MASK; + + offset = plug_call(hash->o.hash_ops, build, +- name + INLINE_CHARS, ++ (unsigned char *)name + INLINE_CHARS, + len - INLINE_CHARS); + } + +@@ -382,7 +382,7 @@ + .get_name = key_large_get_name + }; + +-static reiser4_plug_t key_large_plug = { ++reiser4_plug_t key_large_plug = { + .cl = class_init, + .id = {KEY_LARGE_ID, 0, KEY_PLUG_TYPE}, + #ifndef ENABLE_MINIMAL diff --git a/packages/reiser4progs/files/key_short.c.patch b/packages/reiser4progs/files/key_short.c.patch new file mode 100644 index 0000000000..0c5bea9ee2 --- /dev/null +++ b/packages/reiser4progs/files/key_short.c.patch @@ -0,0 +1,20 @@ +--- x/plugin/key/key_short/key_short.c.orig 2006-07-01 16:14:46.000000000 +0200 ++++ x/plugin/key/key_short/key_short.c 2006-07-01 16:16:50.000000000 +0200 +@@ -248,7 +248,7 @@ + objectid |= HASHED_NAME_MASK; + + offset = plug_call(hash->o.hash_ops, build, +- name + OBJECTID_CHARS, ++ (unsigned char*)name + OBJECTID_CHARS, + len - OBJECTID_CHARS); + } + +@@ -367,7 +367,7 @@ + .get_name = key_short_get_name + }; + +-static reiser4_plug_t key_short_plug = { ++reiser4_plug_t key_short_plug = { + .cl = class_init, + .id = {KEY_SHORT_ID, 0, KEY_PLUG_TYPE}, + #ifndef ENABLE_MINIMAL diff --git a/packages/reiser4progs/files/oid40.c.patch b/packages/reiser4progs/files/oid40.c.patch new file mode 100644 index 0000000000..9e3cf89490 --- /dev/null +++ b/packages/reiser4progs/files/oid40.c.patch @@ -0,0 +1,11 @@ +--- x/plugin/oid/oid40/oid40.c.orig 2006-07-01 16:07:13.000000000 +0200 ++++ x/plugin/oid/oid40/oid40.c 2006-07-01 16:07:33.000000000 +0200 +@@ -201,7 +201,7 @@ + .slink_locality = oid40_slink_locality + }; + +-static reiser4_plug_t oid40_plug = { ++reiser4_plug_t oid40_plug = { + .cl = class_init, + .id = {OID_REISER40_ID, 0, OID_PLUG_TYPE}, + .label = "oid40", diff --git a/packages/reiser4progs/reiser4progs_1.0.4.bb b/packages/reiser4progs/reiser4progs_1.0.4.bb index afce90c93d..07f5e68a09 100644 --- a/packages/reiser4progs/reiser4progs_1.0.4.bb +++ b/packages/reiser4progs/reiser4progs_1.0.4.bb @@ -1,14 +1,17 @@ # This package builds tools to manipulate Reiser4 file systems, # the libaal package must be built and installed as well to # run these tools. -PR = "r0" +PR = "r1" DESCRIPTION = "User-level tools for Reiser4 filesystems" HOMEPAGE = "http://www.namesys.com" MAINTAINER = "John Bowler <jbowler@acm.org>" SECTION = "base" LICENSE = "GPL-2" -SRC_URI = "ftp://ftp.namesys.com/pub/${PN}/${P}.tar.gz \ +SRC_URI = "ftp://ftp.namesys.com/pub/${PN}/old-versions/${P}.tar.gz \ + file://oid40.c.patch;patch=1 \ + file://key_short.c.patch;patch=1 \ + file://key_large.c.patch;patch=1 \ file://align.patch;patch=1" LIBAAL = "libaal" diff --git a/packages/samba/samba-essential_3.0.20.bb b/packages/samba/samba-essential_3.0.20.bb index 50d4e432e5..4cee9541bd 100644 --- a/packages/samba/samba-essential_3.0.20.bb +++ b/packages/samba/samba-essential_3.0.20.bb @@ -1,4 +1,4 @@ -PR = "r3" +PR = "r4" SRC_URI = "http://us2.samba.org/samba/ftp/stable/samba-${PV}.tar.gz \ file://configure.patch;patch=1 \ @@ -42,6 +42,8 @@ do_install_append() { rm -f ${D}/sbin/mount.smbfs rmdir ${D}/sbin install -d "${D}${sysconfdir}/init.d" + install -d "${D}${sysconfdir}/samba/private" + install -c -m 755 ${WORKDIR}/init-essential ${D}${sysconfdir}/init.d/samba install -d "${D}${sysconfdir}/samba" diff --git a/packages/scummvm/files/gcc-4.x.x-accept.patch b/packages/scummvm/files/gcc-4.x.x-accept.patch new file mode 100644 index 0000000000..f69eb0f229 --- /dev/null +++ b/packages/scummvm/files/gcc-4.x.x-accept.patch @@ -0,0 +1,11 @@ +--- scummvm-0.6.1b/configure_orig 2006-07-01 16:42:17.000000000 +0000 ++++ scummvm-0.6.1b/configure 2006-07-01 16:48:04.000000000 +0000 +@@ -362,7 +362,7 @@ + fi + + case $cxx_version in +- 2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9]) ++ 2.95.[2-9]|2.95.[2-9][-.]*|3.[0-9]|3.[0-9].[0-9]|4.[0-9].[0-9]) + _cxx_major=`echo $cxx_version | cut -d '.' -f 1` + _cxx_minor=`echo $cxx_version | cut -d '.' -f 2` + cxx_version="$cxx_version, ok" diff --git a/packages/scummvm/files/sh3-arch-0.9.0+.patch b/packages/scummvm/files/sh3-arch-0.9.0+.patch new file mode 100644 index 0000000000..3cd0505654 --- /dev/null +++ b/packages/scummvm/files/sh3-arch-0.9.0+.patch @@ -0,0 +1,18 @@ +--- scummvm-0.9.0/configure_orig 2006-07-01 18:16:04.000000000 +0000 ++++ scummvm-0.9.0/configure 2006-07-01 18:19:09.000000000 +0000 +@@ -762,6 +762,15 @@ + type_2_byte='short' + type_4_byte='int' + ;; ++ sh3-linux) ++ echo "Cross-compiling to $_host, forcing endianness, aligment and type sizes" ++ DEFINES="$DEFINES -DUNIX" ++ _def_endianness='#define SCUMM_LITTLE_ENDIAN' ++ _def_align='#define SCUMM_NEED_ALIGMENT' ++ type_1_byte='char' ++ type_2_byte='short' ++ type_4_byte='int' ++ ;; + ppc-amigaos) + echo "Cross-compiling to $_host, forcing endianness, alignment and type sizes" + _def_endianness='#define SCUMM_BIG_ENDIAN' diff --git a/packages/scummvm/files/sh3-linux-new-arch.patch b/packages/scummvm/files/sh3-linux-new-arch.patch new file mode 100644 index 0000000000..b59d727458 --- /dev/null +++ b/packages/scummvm/files/sh3-linux-new-arch.patch @@ -0,0 +1,18 @@ +--- scummvm-0.6.1b/configure_orig 2006-07-01 17:15:30.000000000 +0000 ++++ scummvm-0.6.1b/configure 2006-07-01 17:19:41.000000000 +0000 +@@ -462,6 +462,15 @@ + type_2_byte='short' + type_4_byte='int' + ;; ++ sh3-linux) ++ echo "Crosscompiling to $_host, forcing endianess, aligment and type sizes" ++ DEFINES="$DEFINES -DUNIX" ++ _def_endianess='#define SCUMM_LITTLE_ENDIAN' ++ _def_align='#define SCUMM_NEED_ALiGMENT' ++ type_1_byte='char' ++ type_2_byte='short' ++ type_4_byte='int' ++ ;; + *) + echo "Cross-compiling to unknown target, please add your target to configure." + exit 1 diff --git a/packages/scummvm/files/tail-obselete-fix.patch b/packages/scummvm/files/tail-obselete-fix.patch new file mode 100644 index 0000000000..1737133e25 --- /dev/null +++ b/packages/scummvm/files/tail-obselete-fix.patch @@ -0,0 +1,11 @@ +--- scummvm-0.6.1b/configure_orig 2006-07-01 16:42:17.000000000 +0000 ++++ scummvm-0.6.1b/configure 2006-07-01 16:43:12.000000000 +0000 +@@ -355,7 +355,7 @@ + + echocheck "compiler version" + +-cxx_name=`( $cc -v ) 2>&1 | tail -1 | cut -d ' ' -f 1` ++cxx_name=`( $cc -v ) 2>&1 | tail -n 1 | cut -d ' ' -f 1` + cxx_version=`( $CXX -dumpversion ) 2>&1` + if test "$?" -gt 0; then + cxx_version="not found" diff --git a/packages/scummvm/scummvm.inc b/packages/scummvm/scummvm.inc index 88c6f13d9d..e39397be06 100644 --- a/packages/scummvm/scummvm.inc +++ b/packages/scummvm/scummvm.inc @@ -3,8 +3,7 @@ SECTION = "games" PRIORITY = "optional" LICENSE = "GPL" -SRC_URI = "${SOURCEFORGE_MIRROR}/scummvm/scummvm-${PV}.tar.bz2 \ - file://tremor.patch;patch=1" +SRC_URI = "http://puzzle.dl.sourceforge.net/scummvm/scummvm-${PV}.tar.bz2" inherit autotools diff --git a/packages/scummvm/scummvm_0.6.1b.bb b/packages/scummvm/scummvm_0.6.1b.bb index 6f805b6b4d..313737bc92 100644 --- a/packages/scummvm/scummvm_0.6.1b.bb +++ b/packages/scummvm/scummvm_0.6.1b.bb @@ -1,6 +1,10 @@ include scummvm.inc DEPENDS = "virtual/libsdl libmad tremor libogg zlib libmpeg2" -SRC_URI += " file://mouse.patch;patch=1 " +SRC_URI += " file://mouse.patch;patch=1 \ + file://gcc-4.x.x-accept.patch;patch=1 \ + file://sh3-linux-new-arch.patch;patch=1 \ + file://tail-obselete-fix.patch;patch=1 \ + file://tremor.patch;patch=1" do_compile() { oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS} -lmpeg2" \ diff --git a/packages/scummvm/scummvm_0.9.0.bb b/packages/scummvm/scummvm_0.9.0.bb new file mode 100644 index 0000000000..2f8e9382bb --- /dev/null +++ b/packages/scummvm/scummvm_0.9.0.bb @@ -0,0 +1,10 @@ +include scummvm.inc +DEPENDS = "virtual/libsdl libmad libvorbis libogg zlib libmpeg2" +SRC_URI += "file://sh3-arch-0.9.0+.patch;patch=1" + +do_compile() { + oe_runmake CC="${CC}" CXX="${CXX}" CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS} -lmpeg2" \ + DEFINES="-DUNIX -DSCUMM_NEED_ALIGNMENT -DUSE_MAD -DUSE_VORBIS -DUSE_ZLIB -DUSE_MPEG2" +} + + diff --git a/packages/suspend-desktop/suspend-desktop_1.0.bb b/packages/suspend-desktop/suspend-desktop_1.0.bb index 4586b61978..5ad9ec9478 100644 --- a/packages/suspend-desktop/suspend-desktop_1.0.bb +++ b/packages/suspend-desktop/suspend-desktop_1.0.bb @@ -1,4 +1,4 @@ -PR = "r0" +PR = "r1" SECTION = "gpe" PRIORITY = "optional" DESCRIPTION = "Suspend feature for the application launcher menu." @@ -8,7 +8,7 @@ DEPENDS = "gpe-conf" RDEPENDS = "gpe-conf" RRECOMMENDS = "apm" PACKAGES = ${PN} - +PACKAGE_ARCH = "all" SRC_URI = "file://suspend.desktop \ file://suspend.sh" @@ -21,6 +21,6 @@ do_compile() { do_install() { install -d ${D}/${bindir} install -d ${D}/${datadir}/applications - install -m644 ${WORKDIR}/suspend.desktop ${D}/${datadir}/applications/suspend.desktop - install -m755 ${WORKDIR}/suspend.sh ${D}/${bindir}/suspend.sh + install -m 644 ${WORKDIR}/suspend.desktop ${D}/${datadir}/applications/suspend.desktop + install -m 755 ${WORKDIR}/suspend.sh ${D}/${bindir}/suspend.sh } diff --git a/packages/sword/sword_1.5.8.bb b/packages/sword/sword_1.5.8.bb index 8bb469295f..b16e1fb013 100644 --- a/packages/sword/sword_1.5.8.bb +++ b/packages/sword/sword_1.5.8.bb @@ -5,15 +5,23 @@ Bible software with a constantly growing list of front-ends \ SECTION = "libs" PRIORITY = "optional" LICENSE = "GPL" -DEPENDS = "curl" -PR ="r1" +PR = "r2" SRC_URI = "http://www.crosswire.org/ftpmirror/pub/sword/source/v1.5/sword-${PV}.tar.gz" inherit autotools pkgconfig -EXTRA_OECONF = "--without-clucene --with-curl" +EXTRA_OECONF = "--without-clucene --without-curl" do_stage() { -autotools_stage_all + oe_libinstall -so -C lib libsword ${STAGING_LIBDIR} + + install -d ${STAGING_INCDIR}/sword/ + for f in include/*.h + do + install -m 0644 $f ${STAGING_INCDIR}/sword/ + done + } + +FILES_${PN} = "${libdir}/libsword*so ${sysconfdir} ${bindir} ${datadir}" diff --git a/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.1_2.3.0.bb b/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.1_2.3.0.bb new file mode 100644 index 0000000000..4145408fc4 --- /dev/null +++ b/packages/sylpheed/sylpheed-claws-plugin-gtkhtml2-viewer-0.10.1_2.3.0.bb @@ -0,0 +1,6 @@ +include sylpheed-claws-extra-plugins.inc + +DEPENDS_append = " gtkhtml2" + +S = ${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/gtkhtml2_viewer-0.10.1 + diff --git a/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.3.0.bb b/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.3.0.bb new file mode 100644 index 0000000000..c616cfb8ff --- /dev/null +++ b/packages/sylpheed/sylpheed-claws-plugin-maildir-0.24.1_2.3.0.bb @@ -0,0 +1,6 @@ +include sylpheed-claws-extra-plugins.inc + +DEPENDS_append = " db" + +S = ${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/maildir-0.24.1 + diff --git a/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.5_2.3.0.bb b/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.5_2.3.0.bb new file mode 100644 index 0000000000..7cb0c16238 --- /dev/null +++ b/packages/sylpheed/sylpheed-claws-plugin-rssyl-0.5_2.3.0.bb @@ -0,0 +1,6 @@ +include sylpheed-claws-extra-plugins.inc + +DEPENDS_append = " libxml2 curl glib-2.0 gtk+" + +S = ${WORKDIR}/sylpheed-claws-extra-plugins-${PV}/rssyl-0.5 + diff --git a/packages/sylpheed/sylpheed-claws_2.3.1.bb b/packages/sylpheed/sylpheed-claws_2.3.1.bb new file mode 100644 index 0000000000..0308e60964 --- /dev/null +++ b/packages/sylpheed/sylpheed-claws_2.3.1.bb @@ -0,0 +1,35 @@ +SECTION = "x11/network" +DESCRIPTION = "Mail user agent" +DEPENDS = "gtk+ gpgme libetpan libgnomeprint aspell" +MAINTAINER = "Graeme Gregory <dp@xora.org.uk>" +LICENSE = "GPL" +PR = "r0" + +SRC_URI = "${SOURCEFORGE_MIRROR}/sylpheed-claws/sylpheed-claws-${PV}.tar.bz2" + + +FILES_${PN} = "${bindir} ${datadir}/pixmaps ${datadir}/applications" + +EXTRA_OECONF = "--disable-aspell --disable-openssl --disable-aspell-test \ + --disable-dillo-viewer-plugin --with-aspell-prefix=${STAGING_DIR}/${HOST_SYS} \ + --enable-aspell" + +CFLAGS += "-D_GNU_SOURCE" + +do_configure_prepend() { + mkdir -p m4 +} + +inherit autotools pkgconfig + +do_install_append() { + install -d ${D}${datadir}/applications + install -m 0644 sylpheed-claws.desktop ${D}${datadir}/applications/ + install -d ${D}${datadir}/pixmaps + install -m 0644 sylpheed-claws.png ${D}${datadir}/pixmaps/ +} + +do_stage () { + autotools_stage_all +} + diff --git a/packages/wireless-tools/wireless-tools_29-pre10.bb b/packages/wireless-tools/wireless-tools_29-pre10.bb new file mode 100644 index 0000000000..6b5abbcd00 --- /dev/null +++ b/packages/wireless-tools/wireless-tools_29-pre10.bb @@ -0,0 +1,42 @@ +DESCRIPTION = "Tools for the Linux Standard Wireless Extension Subsystem" +HOMEPAGE = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Tools.html" +SECTION = "base" +PRIORITY = "optional" +MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>, Marcin Juszkiewicz <openembedded@hrw.one.pl>" +LICENSE = "GPL" + +SRC_URI = "http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.pre10.tar.gz \ + file://man.patch;patch=1 \ + file://wireless-tools.if-pre-up" + +S = "${WORKDIR}/wireless_tools.29" + +CFLAGS =+ "-I${S}" +EXTRA_OEMAKE = "-e 'BUILD_SHARED=y' \ + 'INSTALL_DIR=${D}${base_sbindir}' \ + 'INSTALL_LIB=${D}${libdir}' \ + 'INSTALL_INC=${D}${includedir}' \ + 'INSTALL_MAN=${D}${mandir}'" + +do_compile() { + oe_runmake all libiw.a +} + +do_stage() { + install -m 0644 wireless.h ${STAGING_INCDIR}/ + install -m 0644 iwlib.h ${STAGING_INCDIR}/ + oe_libinstall -a -so libiw ${STAGING_LIBDIR}/ +} + +do_install() { + oe_runmake PREFIX=${D} install-iwmulticall install-dynamic + install -d ${D}${sysconfdir}/network/if-pre-up.d + install ${WORKDIR}/wireless-tools.if-pre-up ${D}${sysconfdir}/network/if-pre-up.d/wireless-tools +} + +PACKAGES = "libiw libiw-dev libiw-doc ${PN} ${PN}-doc" +FILES_libiw = "${libdir}/*.so.*" +FILES_libiw-dev = "${libdir}/*.a ${libdir}/*.so ${includedir}" +FILES_libiw-doc = "${mandir}/man7" +FILES_${PN} = "${bindir} ${sbindir} ${base_sbindir} ${base_bindir} ${sysconfdir}/network" +FILES_${PN}-doc = "${mandir}/man8" diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.3/config.in b/packages/wlan-ng/wlan-ng-modules-0.2.3/config.in index c78bef10b6..27baca26fb 100644 --- a/packages/wlan-ng/wlan-ng-modules-0.2.3/config.in +++ b/packages/wlan-ng/wlan-ng-modules-0.2.3/config.in @@ -15,7 +15,7 @@ WLAN_DEBUG=n CROSS_COMPILE_ENABLED=n CROSS_COMPILE= HOST_COMPILE= -PRISM2_PLX=y -PRISM2_PCMCIA=y -PRISM2_PCI=y +PRISM2_PLX=n +PRISM2_PCMCIA=n +PRISM2_PCI=n PRISM2_USB=y diff --git a/packages/wlan-ng/wlan-ng-modules-0.2.3/modules-symvers.patch b/packages/wlan-ng/wlan-ng-modules-0.2.3/modules-symvers.patch new file mode 100644 index 0000000000..77b33e6573 --- /dev/null +++ b/packages/wlan-ng/wlan-ng-modules-0.2.3/modules-symvers.patch @@ -0,0 +1,75 @@ +Index: Configure +=================================================================== +--- linux-wlan-ng-devel.orig/Configure (revision 1772) ++++ linux-wlan-ng-devel/Configure (working copy) +@@ -269,6 +269,12 @@ + write_bool KERN_25 + fi + ++# flag to indicate new kbuild for modules in 2-6-17 ++if [ $VERSION_CODE -gt `version 2 6 16` ] ; then ++ KERN_26=y ++ write_bool KERN_26 ++fi ++ + if [ "$SRC_RELEASE" != "$CUR_RELEASE" ] ; then + $ECHO "WARNING: the current running kernel is actually version $CUR_RELEASE." + fi +Index: src/p80211/Makefile +=================================================================== +--- linux-wlan-ng-devel.orig/src/p80211/Makefile (revision 1772) ++++ linux-wlan-ng-devel/src/p80211/Makefile (working copy) +@@ -72,15 +72,18 @@ + + PWD := $(shell pwd) + default: +- ++ifeq ($(KERN_26),y) ++ $(MAKE) -C $(LINUX_SRC) M='$(PWD)' WLAN_SRC=$(WLAN_SRC) ++ cp Modules.symvers ../prism2/driver ++else + ifeq ($(KERN_25), y) + $(MAKE) -C $(LINUX_SRC) M='$(PWD)/.. $(PWD)' WLAN_SRC=$(WLAN_SRC) modules + else + $(MAKE) -C $(LINUX_SRC) SUBDIRS=$(PWD) WLAN_SRC=$(WLAN_SRC) modules + endif # KERN_25 +- ++endif # KERN_26 + clean: +- rm -f *.o *.ko .*.cmd *.mod.c *.flags .*.flags ++ rm -f *.o *.ko .*.cmd *.mod.c *.flags .*.flags Modules.symvers + + install: + mkdir -p $(TARGET_MODDIR) +Index: src/prism2/driver/Makefile +=================================================================== +--- linux-wlan-ng-devel.orig/src/prism2/driver/Makefile (revision 1772) ++++ linux-wlan-ng-devel/src/prism2/driver/Makefile (working copy) +@@ -83,19 +83,26 @@ + PWD := $(shell pwd) + + default: ++#if new kbuild in 2.6.17 or later ++ifeq ($(KERN_26), y) ++ $(MAKE) -C $(LINUX_SRC) M='$(PWD)' WLAN_SRC=$(WLAN_SRC) ++ ++else + ifeq ($(KERN_25), y) + $(MAKE) -C $(LINUX_SRC) M='$(PWD)/../.. $(PWD)' WLAN_SRC=$(WLAN_SRC) \ + modules ++ + else # kbuild 2.4 + $(MAKE) -C $(LINUX_SRC) SUBDIRS=$(PWD) WLAN_SRC=$(WLAN_SRC) \ + modules + + endif # kbuild switch ++endif # KERN_26 + + endif #KERNELRELEASE + + clean: +- rm -f *.o *.ko .*.cmd *.mod.c *.flags .*.flags ++ rm -f *.o *.ko .*.cmd *.mod.c *.flags .*.flags Modules.symvers + + install: + ifeq ($(KERN_25), y) diff --git a/packages/wlan-ng/wlan-ng-modules.inc b/packages/wlan-ng/wlan-ng-modules.inc index 53910d47b9..623275c921 100644 --- a/packages/wlan-ng/wlan-ng-modules.inc +++ b/packages/wlan-ng/wlan-ng-modules.inc @@ -64,6 +64,7 @@ FILES_wlan-ng-modules-usb = "/lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_usb${ FILES_wlan-ng-modules-cs = "/lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_cs${KERNEL_OBJECT_SUFFIX}" FILES_wlan-ng-modules-pci = "/lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_pci${KERNEL_OBJECT_SUFFIX} \ /lib/modules/${KERNEL_VERSION}/wlan-ng/prism2_plx${KERNEL_OBJECT_SUFFIX}" +RDEPENDS_wlan-ng-modules-p80211 = "wlan-ng-utils" RDEPENDS_wlan-ng-modules-usb = "wlan-ng-modules-p80211" RDEPENDS_wlan-ng-modules-cs = "wlan-ng-modules-p80211" RDEPENDS_wlan-ng-modules-pci = "wlan-ng-modules-p80211" diff --git a/packages/wlan-ng/wlan-ng-modules_0.2.3.bb b/packages/wlan-ng/wlan-ng-modules_0.2.3.bb index accf682a38..d8e8826fa6 100644 --- a/packages/wlan-ng/wlan-ng-modules_0.2.3.bb +++ b/packages/wlan-ng/wlan-ng-modules_0.2.3.bb @@ -1,8 +1,9 @@ include wlan-ng-modules.inc -PR = "r2" +PR = "r3" SRC_URI += "ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-${PV}.tar.bz2 \ file://prism2sta_commsqual_defer.patch;patch=1 \ + file://modules-symvers.patch;patch=1 \ file://usb-owner.patch;patch=1 " S = "${WORKDIR}/linux-wlan-ng-${PV}" diff --git a/packages/wview/files/.mtn2git_empty b/packages/wview/files/.mtn2git_empty new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/packages/wview/files/.mtn2git_empty diff --git a/packages/wview/files/Makefile.am.patch b/packages/wview/files/Makefile.am.patch new file mode 100644 index 0000000000..1c35ee8c29 --- /dev/null +++ b/packages/wview/files/Makefile.am.patch @@ -0,0 +1,24 @@ +--- wview-3.1.3/wunderground/Makefile.am.orig 2006-07-01 18:28:45.000000000 +0200 ++++ wview-3.1.3/wunderground/Makefile.am 2006-07-01 18:29:23.000000000 +0200 +@@ -9,8 +9,6 @@ + INCLUDES = \ + -I$(top_srcdir)/common \ + -I$(prefix)/include \ +- -I/usr/include \ +- -I/usr/local/include \ + -D_GNU_SOURCE \ + -DBUILD_WVWUNDERGROUND + +@@ -36,10 +34,10 @@ + endif + + # define library directories +-wvwunderd_LDFLAGS = -L/usr/lib -L/usr/local/lib -L$(prefix)/lib ++wvwunderd_LDFLAGS = -L$(prefix)/lib + + if DB_MYSQL +-wvwunderd_LDFLAGS += -L$(prefix)/lib/mysql -L/usr/lib/mysql ++wvwunderd_LDFLAGS += -L$(prefix)/lib/mysql + else + if DB_PGRESQL + wvwunderd_LDFLAGS += -L$(prefix)/lib -L$(prefix)/pgsql/lib diff --git a/packages/wview/wview-common.inc b/packages/wview/wview-common.inc index 0efeee271c..0df0707718 100644 --- a/packages/wview/wview-common.inc +++ b/packages/wview/wview-common.inc @@ -5,13 +5,14 @@ MAINTAINER = "Mark Teel (mark@teel.ws)" HOMEPAGE = "http://www.wviewweather.com/" DEPENDS += " bash util-linux gd openssl curl update-rc.d" -SRC_URI = "${SOURCEFORGE_MIRROR}/wview/wview-${PV}.tar.gz" +SRC_URI = "${SOURCEFORGE_MIRROR}/wview/wview-${PV}.tar.gz \ + file://Makefile.am.patch;patch=1" S = "${WORKDIR}/wview-${PV}" inherit autotools -EXTRA_OECONF += " --enable-wunderground" +EXTRA_OECONF += "--prefix=${D} --enable-wunderground" do_install_append() { install -d ${D}/${sysconfdir}/init.d diff --git a/packages/wview/wview-sim_3.1.3.bb b/packages/wview/wview-sim_3.1.3.bb index 919e322f42..3f07aecc82 100644 --- a/packages/wview/wview-sim_3.1.3.bb +++ b/packages/wview/wview-sim_3.1.3.bb @@ -1,4 +1,4 @@ include wview-common.inc include wview.inc EXTRA_OECONF += " --enable-station-sim" -PR = "r0" +PR = "r1" diff --git a/packages/wview/wview-vpro_3.1.3.bb b/packages/wview/wview-vpro_3.1.3.bb index 1933e077b5..4c84152f3b 100644 --- a/packages/wview/wview-vpro_3.1.3.bb +++ b/packages/wview/wview-vpro_3.1.3.bb @@ -1,4 +1,4 @@ include wview-common.inc include wview.inc EXTRA_OECONF += " --enable-station-vpro" -PR = "r0" +PR = "r1" diff --git a/packages/wview/wview-wxt510_3.1.3.bb b/packages/wview/wview-wxt510_3.1.3.bb index b7b0ef236d..84f175f1d8 100644 --- a/packages/wview/wview-wxt510_3.1.3.bb +++ b/packages/wview/wview-wxt510_3.1.3.bb @@ -1,4 +1,4 @@ include wview-common.inc include wview.inc EXTRA_OECONF += " --enable-station-wxt510" -PR = "r0" +PR = "r1" diff --git a/packages/xinetd/xinetd/service.c.patch b/packages/xinetd/xinetd/service.c.patch new file mode 100644 index 0000000000..b94ae2184f --- /dev/null +++ b/packages/xinetd/xinetd/service.c.patch @@ -0,0 +1,24 @@ +--- xinetd-2.3.13/xinetd/service.c.orig 2006-07-01 19:14:23.000000000 +0200 ++++ xinetd-2.3.13/xinetd/service.c 2006-07-01 19:22:28.000000000 +0200 +@@ -764,8 +764,8 @@ + return FAILED; + + if ( last == NULL ) { +- last = SAIN( SVC_LAST_DGRAM_ADDR(sp) ) = +- SAIN( calloc( 1, sizeof(union xsockaddr) ) ); ++ last = SAIN(calloc( 1, sizeof(union xsockaddr) ) ); ++ SVC_LAST_DGRAM_ADDR(sp) = (union xsockaddr *)last; + } + + (void) time( ¤t_time ) ; +@@ -791,8 +791,8 @@ + return FAILED; + + if( last == NULL ) { +- last = SAIN6(SVC_LAST_DGRAM_ADDR(sp)) = +- SAIN6(calloc( 1, sizeof(union xsockaddr) ) ); ++ last = SAIN6(calloc( 1, sizeof(union xsockaddr) ) ); ++ SVC_LAST_DGRAM_ADDR(sp) = (union xsockaddr *)last; + } + + (void) time( ¤t_time ) ; diff --git a/packages/xinetd/xinetd_2.3.13.bb b/packages/xinetd/xinetd_2.3.13.bb index 699667cb26..4e67384d45 100644 --- a/packages/xinetd/xinetd_2.3.13.bb +++ b/packages/xinetd/xinetd_2.3.13.bb @@ -1,11 +1,12 @@ DEPENDS = "" DESCRIPTION = "Highly configurable, modular and secure inetd" MAINTAINER = "NSLU2 Linux <nslu2-linux@yahoogroups.com>" -PR="r3" +PR="r4" SRC_URI = "http://www.xinetd.org/xinetd-${PV}.tar.gz \ file://xinetd.init \ file://xinetd.conf \ + file://service.c.patch;patch=1 \ " EXTRA_OECONF="--disable-nls" diff --git a/packages/zile/zile_2.2.15.bb b/packages/zile/zile_2.2.15.bb new file mode 100644 index 0000000000..ca6ced7b18 --- /dev/null +++ b/packages/zile/zile_2.2.15.bb @@ -0,0 +1,11 @@ +DESCRIPTION = "Zile is lossy Emacs." +HOMEPAGE = "http://zile.sourceforge.net/" +LICENSE = "GPL" +DEPENDS = "ncurses" +MAINTAINER = "Michael 'Mickey' Lauer <mickey@Vanille.de>" +SECTION = "console/editors" +PR = "r0" + +SRC_URI = "${SOURCEFORGE_MIRROR}/zile/zile-${PV}.tar.gz" + +inherit autotools diff --git a/site/arm-linux b/site/arm-linux index 1f6287abb5..ce15c881e8 100644 --- a/site/arm-linux +++ b/site/arm-linux @@ -10,10 +10,13 @@ ac_cv_sizeof_char=${ac_cv_sizeof_char=1} ac_cv_sizeof_wchar_t=${ac_cv_sizeof_wchar_t=1} ac_cv_sizeof_unsigned_char=${ac_cv_sizeof_unsigned_char=1} ac_cv_sizeof_bool=${ac_cv_sizeof_bool=1} +ac_cv_sizeof_char_p=${ac_cv_sizeof_int_p=4} ac_cv_sizeof_int=${ac_cv_sizeof_int=4} +ac_cv_sizeof_int_p=${ac_cv_sizeof_int_p=4} ac_cv_sizeof_long=${ac_cv_sizeof_long=4} ac_cv_sizeof_long_int=${ac_cv_sizeof_long_int=4} ac_cv_sizeof_long_long=${ac_cv_sizeof_long_long=8} +ac_cv_sizeof_off_t=${ac_cv_sizeof_off_t=4} ac_cv_sizeof_short=${ac_cv_sizeof_short=2} ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2} ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4} @@ -21,7 +24,9 @@ ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4} ac_cv_sizeof_float=${ac_cv_sizeof_float=4} ac_cv_sizeof_double=${ac_cv_sizeof_double=8} ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8} +ac_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4} ac_cv_sizeof_unsigned_short=${ac_cv_sizeof_unsigned_short=2} +ac_cv_sizeof_unsigned=${ac_cv_sizeof_unsigned=4} ac_cv_sizeof_unsigned_int=${ac_cv_sizeof_unsigned_int=4} ac_cv_sizeof_unsigned_long=${ac_cv_sizeof_unsigned_long=4} ac_cv_sizeof_unsigned_long_long=${ac_cv_sizeof_unsigned_long_long=8} @@ -299,3 +304,4 @@ dpkg_cv___va_copy=${ac_cv___va_copy=yes} # enca yeti_cv_func_scanf_modif_size_t=yes + diff --git a/site/armeb-linux b/site/armeb-linux index 452e3abbf7..3b47d0cd96 100644 --- a/site/armeb-linux +++ b/site/armeb-linux @@ -16,6 +16,9 @@ ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2} ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4} ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4} ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4} +ac_cv_sizeof_unsigned=${ac_cv_sizeof_unsigned=4} +ac_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4} ac_cv_sys_restartable_syscalls=yes ac_cv_uchar=${ac_cv_uchar=no} diff --git a/site/armeb-linux-uclibc b/site/armeb-linux-uclibc index 89a2a3f104..54c529b1ff 100644 --- a/site/armeb-linux-uclibc +++ b/site/armeb-linux-uclibc @@ -16,6 +16,9 @@ ac_cv_sizeof_short_int=${ac_cv_sizeof_short_int=2} ac_cv_sizeof_size_t=${ac_cv_sizeof_size_t=4} ac_cv_sizeof_void_p=${ac_cv_sizeof_void_p=4} ac_cv_sizeof_long_double=${ac_cv_sizeof_long_double=8} +ac_cv_sizeof_char_p=${ac_cv_sizeof_char_p=4} +ac_cv_sizeof_unsigned=${ac_cv_sizeof_unsigned=4} +ac_cv_sizeof_ptrdiff_t=${glib_cv_sizeof_ptrdiff_t=4} ac_cv_sys_restartable_syscalls=yes ac_cv_uchar=${ac_cv_uchar=no} diff --git a/site/sh4-linux-uclibc b/site/sh4-linux-uclibc index 178d05e8e7..734e0924f7 100644 --- a/site/sh4-linux-uclibc +++ b/site/sh4-linux-uclibc @@ -30,3 +30,8 @@ sudo_cv_uid_t_len=${sudo_cv_uid_t_len=10} # vim ac_cv_sizeof_int=${ac_cv_sizeof_int=4} + +# ipsec-tools +ac_cv_va_copy=${ac_cv_va_copy=no} +ac_cv___va_copy=${ac_cv___va_copy=yes} +racoon_cv_bug_getaddrinfo=${racoon_cv_bug_getaddrinfo=no} |