summaryrefslogtreecommitdiffstats
path: root/misc
diff options
context:
space:
mode:
Diffstat (limited to 'misc')
-rw-r--r--misc/KeePass/KeePass.SlackBuild2
-rw-r--r--misc/KeePass/KeePass.info6
-rw-r--r--misc/OSCAR/OSCAR.SlackBuild8
-rw-r--r--misc/OSCAR/OSCAR.info6
-rw-r--r--misc/Publican/Publican.SlackBuild145
-rw-r--r--misc/Publican/Publican.info21
-rw-r--r--misc/Publican/README28
-rw-r--r--misc/Publican/catalog27
-rw-r--r--misc/Publican/slack-desc19
-rw-r--r--misc/QCMA/QCMA.SlackBuild4
-rw-r--r--misc/QCMA/qcma-avdecoder.patch.gzbin0 -> 309 bytes
-rw-r--r--misc/anymeal/Makefile-am.patch10
-rw-r--r--misc/anymeal/README4
-rw-r--r--misc/anymeal/anymeal.SlackBuild (renamed from misc/scim-chewing/scim-chewing.SlackBuild)51
-rw-r--r--misc/anymeal/anymeal.info10
-rw-r--r--misc/anymeal/configure-ac.patch34
-rw-r--r--misc/anymeal/doinst.sh14
-rw-r--r--misc/anymeal/slack-desc19
-rw-r--r--misc/ardesia/010-ardesia-gcc10-fix.patch22
-rw-r--r--misc/ardesia/README59
-rw-r--r--misc/ardesia/ardesia.SlackBuild33
-rw-r--r--misc/ardesia/ardesia.info2
-rw-r--r--misc/ardesia/doinst.sh2
-rw-r--r--misc/ascii/ascii.SlackBuild6
-rw-r--r--misc/asr-manpages/README12
-rw-r--r--misc/asr-manpages/asr-manpages.info2
-rw-r--r--misc/asterixInspector/asterixInspector.SlackBuild20
-rw-r--r--misc/asterixInspector/asterixInspector.desktop3
-rw-r--r--misc/asterixInspector/asterixInspector.info6
-rw-r--r--misc/asterixInspector/doinst.sh6
-rw-r--r--misc/bbrun/bbrun.SlackBuild28
-rw-r--r--misc/bchunk/README3
-rw-r--r--misc/bchunk/bchunk.SlackBuild6
-rw-r--r--misc/bdf2psf/bdf2psf.SlackBuild82
-rw-r--r--misc/bdf2psf/bdf2psf.info10
-rw-r--r--misc/bdfresize/bdfresize.SlackBuild29
-rw-r--r--misc/bdfresize/bdfresize.info2
-rw-r--r--misc/bdfresize/check_factor_args.diff48
-rw-r--r--misc/bee-host/README10
-rw-r--r--misc/bee-host/bee-host.SlackBuild114
-rw-r--r--misc/bee-host/bee-host.info10
-rw-r--r--misc/bee-host/slack-desc19
-rw-r--r--misc/beep/README25
-rw-r--r--misc/beep/beep.SlackBuild6
-rw-r--r--misc/binclock/README5
-rw-r--r--misc/binclock/binclock.SlackBuild93
-rw-r--r--misc/binclock/binclock.info10
-rw-r--r--misc/binclock/slack-desc19
-rw-r--r--misc/biosdisk/README11
-rw-r--r--misc/biosdisk/biosdisk.info2
-rw-r--r--misc/birthday/birthday.SlackBuild6
-rw-r--r--misc/bitwarden-desktop/README3
-rw-r--r--misc/bitwarden-desktop/bitwarden-desktop.SlackBuild93
-rw-r--r--misc/bitwarden-desktop/bitwarden-desktop.info10
-rw-r--r--misc/bitwarden-desktop/doinst.sh (renamed from misc/nvclock/doinst.sh)1
-rw-r--r--misc/bitwarden-desktop/slack-desc19
-rw-r--r--misc/bodr/bodr.SlackBuild21
-rw-r--r--misc/boncuk/README12
-rw-r--r--misc/boncuk/boncuk.SlackBuild7
-rw-r--r--misc/boncuk/boncuk.info2
-rw-r--r--misc/boxes/boxes.SlackBuild6
-rw-r--r--misc/boxes/boxes.info2
-rw-r--r--misc/bsdmainutils/README37
-rw-r--r--misc/bsdsfv/README9
-rw-r--r--misc/bsdsfv/bsdsfv.SlackBuild36
-rw-r--r--misc/ccze/README4
-rw-r--r--misc/cflow/cflow.SlackBuild6
-rw-r--r--misc/chm2pdf/README3
-rw-r--r--misc/chm2pdf/chm2pdf.SlackBuild2
-rw-r--r--misc/ciso/README5
-rw-r--r--misc/ciso/ciso.193
-rw-r--r--misc/ciso/ciso.SlackBuild65
-rw-r--r--misc/ciso/ciso.h.patch14
-rw-r--r--misc/ciso/ciso.info4
-rw-r--r--misc/ciso/ciso.rst66
-rw-r--r--misc/ciso/compilefix.diff54
-rw-r--r--misc/ciso/fix_includes.patch13
-rw-r--r--misc/ciso/slack-desc6
-rw-r--r--misc/cksfv/README15
-rw-r--r--misc/clawsker/README12
-rw-r--r--misc/clawsker/clawsker.SlackBuild5
-rw-r--r--misc/clawsker/clawsker.info8
-rw-r--r--misc/clawsker/doinst.sh9
-rw-r--r--misc/cliphist/README9
-rw-r--r--misc/cliphist/cliphist.SlackBuild103
-rw-r--r--misc/cliphist/cliphist.info12
-rw-r--r--misc/cliphist/slack-desc19
-rw-r--r--misc/cp437/cp437.SlackBuild5
-rw-r--r--misc/cp437/cp437.info2
-rw-r--r--misc/cups-pk-helper/README10
-rw-r--r--misc/cups-pk-helper/cups-pk-helper.SlackBuild109
-rw-r--r--misc/cups-pk-helper/cups-pk-helper.info10
-rw-r--r--misc/cups-pk-helper/slack-desc19
-rw-r--r--misc/cwiid/README2
-rw-r--r--misc/cwiid/add_other_plugins_#487498.patch394
-rw-r--r--misc/cwiid/bluetooth-linker.patch48
-rw-r--r--misc/cwiid/cwiid.SlackBuild95
-rw-r--r--misc/cwiid/cwiid.info12
-rw-r--r--misc/cwiid/doinst.sh4
-rw-r--r--misc/cwiid/lswm.154
-rw-r--r--misc/cwiid/python310.patch11
-rw-r--r--misc/cwiid/wmgui.desktop11
-rw-r--r--misc/cwiid/wmgui.xpm552
-rw-r--r--misc/dcc/README13
-rw-r--r--misc/dcc/dcc.SlackBuild2
-rw-r--r--misc/dcc/dcc.info6
-rw-r--r--misc/dcc/slack-desc2
-rw-r--r--misc/deb2tgz/deb2tgz.SlackBuild4
-rw-r--r--misc/deb2tgz/deb2tgz.info8
-rw-r--r--misc/deroff/deroff.SlackBuild5
-rw-r--r--misc/deroff/deroff.info2
-rw-r--r--misc/dex/README4
-rw-r--r--misc/dex/dex.SlackBuild (renamed from misc/protobuf3/protobuf3.SlackBuild)60
-rw-r--r--misc/dex/dex.info10
-rw-r--r--misc/dex/slack-desc (renamed from misc/floating-IPS/slack-desc)24
-rw-r--r--misc/discount/README2
-rw-r--r--misc/discount/discount.SlackBuild77
-rw-r--r--misc/discount/discount.info10
-rw-r--r--misc/dmg2img/dmg2img.info2
-rw-r--r--misc/doclifter/README19
-rw-r--r--misc/doclifter/doclifter.SlackBuild67
-rw-r--r--misc/doclifter/doclifter.info10
-rw-r--r--misc/doclifter/slack-desc10
-rw-r--r--misc/dos2unix/README13
-rw-r--r--misc/dos2unix/dos2unix.SlackBuild30
-rw-r--r--misc/dos2unix/dos2unix.info10
-rw-r--r--misc/dos2unix/slack-desc2
-rw-r--r--misc/drg2sbg/README20
-rw-r--r--misc/drg2sbg/drg2sbg.SlackBuild6
-rw-r--r--misc/dtmflib/README4
-rw-r--r--misc/dtmflib/dtmflib.SlackBuild99
-rw-r--r--misc/dtmflib/dtmflib.info10
-rw-r--r--misc/dtmflib/manpage.diff75
-rw-r--r--misc/dtmflib/slack-desc19
-rw-r--r--misc/dvtm/README6
-rw-r--r--misc/dvtm/dvtm.SlackBuild6
-rw-r--r--misc/dwdiff/README21
-rw-r--r--misc/dwdiff/config.pkg.patch12
-rw-r--r--misc/dwdiff/dwdiff.SlackBuild14
-rw-r--r--misc/dwdiff/dwdiff.info6
-rw-r--r--misc/dwdiff/src-option.c.patch14
-rw-r--r--misc/fbcat/README14
-rw-r--r--misc/fbcat/fbcat.SlackBuild16
-rw-r--r--misc/fbcat/fbcat.info10
-rw-r--r--misc/fbdump/README16
-rw-r--r--misc/fbdump/fbdump.SlackBuild12
-rw-r--r--misc/fbdump/fbdump.info6
-rw-r--r--misc/fcitx-mozc/fcitx-mozc.SlackBuild181
-rw-r--r--misc/fcitx-mozc/fcitx-mozc.info36
-rw-r--r--misc/fcitx5-chewing/README2
-rw-r--r--misc/fcitx5-chewing/doinst.sh5
-rw-r--r--misc/fcitx5-chewing/fcitx5-chewing.SlackBuild104
-rw-r--r--misc/fcitx5-chewing/fcitx5-chewing.info10
-rw-r--r--misc/fcitx5-chewing/slack-desc19
-rw-r--r--misc/fcitx5-chinese-addons/README4
-rw-r--r--misc/fcitx5-chinese-addons/doinst.sh12
-rw-r--r--misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild104
-rw-r--r--misc/fcitx5-chinese-addons/fcitx5-chinese-addons.info10
-rw-r--r--misc/fcitx5-chinese-addons/slack-desc19
-rw-r--r--misc/fcitx5-configtool/README6
-rw-r--r--misc/fcitx5-configtool/doinst.sh (renamed from misc/sbo-templates/doinst.sh)0
-rw-r--r--misc/fcitx5-configtool/fcitx5-configtool.SlackBuild109
-rw-r--r--misc/fcitx5-configtool/fcitx5-configtool.info10
-rw-r--r--misc/fcitx5-configtool/slack-desc19
-rw-r--r--misc/fcitx5-gtk/README15
-rw-r--r--misc/fcitx5-gtk/fcitx5-gtk.SlackBuild103
-rw-r--r--misc/fcitx5-gtk/fcitx5-gtk.info10
-rw-r--r--misc/fcitx5-gtk/slack-desc19
-rw-r--r--misc/fcitx5-mcbopomofo/README2
-rw-r--r--misc/fcitx5-mcbopomofo/doinst.sh9
-rw-r--r--misc/fcitx5-mcbopomofo/fcitx5-mcbopomofo.SlackBuild105
-rw-r--r--misc/fcitx5-mcbopomofo/fcitx5-mcbopomofo.info10
-rw-r--r--misc/fcitx5-mcbopomofo/slack-desc19
-rw-r--r--misc/fcitx5-mozc/0005-Enable-verbose-build.patch30
-rw-r--r--misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch229
-rw-r--r--misc/fcitx5-mozc/0010-fix-build-gcc11.patch11
-rw-r--r--misc/fcitx5-mozc/0011-build-with-libstdc++.patch12
-rw-r--r--misc/fcitx5-mozc/0012-mozc-build-gcc.patch27
-rw-r--r--misc/fcitx5-mozc/README17
-rw-r--r--misc/fcitx5-mozc/README.emacs5
-rw-r--r--misc/fcitx5-mozc/fcitx5-mozc.SlackBuild216
-rw-r--r--misc/fcitx5-mozc/fcitx5-mozc.info30
-rw-r--r--misc/fcitx5-mozc/init.el_mozc4
-rw-r--r--misc/fcitx5-mozc/slack-desc19
-rw-r--r--misc/fcitx5-qt/README25
-rw-r--r--misc/fcitx5-qt/doinst.sh (renamed from misc/txt2tags/doinst.sh)0
-rw-r--r--misc/fcitx5-qt/fcitx5-qt.SlackBuild107
-rw-r--r--misc/fcitx5-qt/fcitx5-qt.info10
-rw-r--r--misc/fcitx5-qt/slack-desc (renamed from misc/protobuf3/slack-desc)22
-rw-r--r--misc/fcitx5-table-extra/README13
-rw-r--r--misc/fcitx5-table-extra/doinst.sh12
-rw-r--r--misc/fcitx5-table-extra/fcitx5-table-extra.SlackBuild104
-rw-r--r--misc/fcitx5-table-extra/fcitx5-table-extra.info10
-rw-r--r--misc/fcitx5-table-extra/slack-desc19
-rw-r--r--misc/fcitx5-table-other/README7
-rw-r--r--misc/fcitx5-table-other/doinst.sh12
-rw-r--r--misc/fcitx5-table-other/fcitx5-table-other.SlackBuild98
-rw-r--r--misc/fcitx5-table-other/fcitx5-table-other.info10
-rw-r--r--misc/fcitx5-table-other/slack-desc19
-rw-r--r--misc/fcitx5/README37
-rw-r--r--misc/fcitx5/doinst.sh (renamed from misc/readesm/doinst.sh)7
-rw-r--r--misc/fcitx5/fcitx5-autostart36
-rw-r--r--misc/fcitx5/fcitx5.SlackBuild (renamed from misc/fribid/fribid.SlackBuild)92
-rw-r--r--misc/fcitx5/fcitx5.info10
-rw-r--r--misc/fcitx5/slack-desc19
-rw-r--r--misc/feedbackd/63cba7867147edfa2525ef85af667d48a6b0752e.diff16
-rw-r--r--misc/feedbackd/README5
-rw-r--r--misc/feedbackd/doinst.sh6
-rw-r--r--misc/feedbackd/feedbackd.SlackBuild127
-rw-r--r--misc/feedbackd/feedbackd.info12
-rw-r--r--misc/feedbackd/slack-desc19
-rw-r--r--misc/figlet-contributed/README18
-rw-r--r--misc/figlet/figlet.info2
-rw-r--r--misc/flips/README18
-rw-r--r--misc/flips/doinst.sh9
-rw-r--r--misc/flips/flips.SlackBuild119
-rw-r--r--misc/flips/flips.info10
-rw-r--r--misc/flips/slack-desc (renamed from misc/igal2/slack-desc)22
-rw-r--r--misc/floating-IPS/README2
-rw-r--r--misc/floating-IPS/floating-IPS.info10
-rw-r--r--misc/font-unscii/doinst.sh22
-rw-r--r--misc/font-unscii/douninst.sh25
-rw-r--r--misc/font-unscii/font-unscii.SlackBuild9
-rw-r--r--misc/font-unscii/font-unscii.info2
-rw-r--r--misc/fribid/README20
-rw-r--r--misc/fribid/fribid.info10
-rw-r--r--misc/funny-manpages/README6
-rw-r--r--misc/funny-manpages/funny-manpages.SlackBuild48
-rw-r--r--misc/funny-manpages/funny-manpages.info8
-rw-r--r--misc/funny-manpages/funny-manpages_1.3-5.diff244
-rw-r--r--misc/g15composer/README13
-rw-r--r--misc/g15composer/g15composer.SlackBuild6
-rw-r--r--misc/g15daemon/README12
-rw-r--r--misc/g15daemon/g15daemon.SlackBuild10
-rw-r--r--misc/g15stats/g15stats.SlackBuild6
-rw-r--r--misc/g810-led/g810-led.SlackBuild9
-rw-r--r--misc/g810-led/g810-led.gcc13.patch10
-rw-r--r--misc/g810-led/g810-led.info6
-rw-r--r--misc/gcp/README14
-rw-r--r--misc/ghostpcl/ghostpcl.SlackBuild2
-rw-r--r--misc/ghostpcl/ghostpcl.info6
-rw-r--r--misc/glogg/glogg.SlackBuild8
-rw-r--r--misc/glogg/glogg.info2
-rw-r--r--misc/gnome-mime-data/gnome-mime-data.SlackBuild42
-rw-r--r--misc/gnome-user-docs/README10
-rw-r--r--misc/gnome-user-docs/gnome-user-docs.SlackBuild104
-rw-r--r--misc/gnome-user-docs/gnome-user-docs.info10
-rw-r--r--misc/gnome-user-docs/slack-desc19
-rw-r--r--misc/go-md2man/go-md2man.SlackBuild3
-rw-r--r--misc/goldencheetah/README13
-rw-r--r--misc/goldencheetah/goldencheetah.SlackBuild40
-rw-r--r--misc/goldencheetah/goldencheetah.info6
-rw-r--r--misc/goldencheetah/patches/0001-Fix-Qwt-incompatibilities-with-Qt-5.15.0.patch114
-rw-r--r--misc/goldencheetah/patches/0001-SEGV-on-Overview-Chart.patch22
-rw-r--r--misc/goldencheetah/patches/0002-View-on-Strava.patch50
-rw-r--r--misc/goldencheetah/patches/0003-Compatible-with-Strava.patchbin4931 -> 0 bytes
-rw-r--r--misc/goldencheetah/patches/0004-Connect-with-Strava.patchbin8081 -> 0 bytes
-rw-r--r--misc/goldencheetah/patches/0005-3.5-BUILD-INCREMENT.patch29
-rw-r--r--misc/gourmet/doinst.sh9
-rw-r--r--misc/gourmet/gourmet.SlackBuild3
-rw-r--r--misc/gourmet/gourmet.info4
-rw-r--r--misc/gourmet/slack-desc2
-rw-r--r--misc/gprename/README2
-rw-r--r--misc/gprename/gprename-makefile-fixups.patch81
-rw-r--r--misc/gprename/gprename.SlackBuild67
-rw-r--r--misc/gprename/gprename.info14
-rw-r--r--misc/gprename/slack-desc2
-rw-r--r--misc/gr-iqbal/gr-iqbal.SlackBuild4
-rw-r--r--misc/gr-iqbal/gr-iqbal.info6
-rw-r--r--misc/gramps/README8
-rw-r--r--misc/gramps/doinst.sh2
-rw-r--r--misc/gramps/gramps.info2
-rw-r--r--misc/grc/README49
-rw-r--r--misc/grc/doinst.sh20
-rw-r--r--misc/grc/grc.SlackBuild85
-rw-r--r--misc/grc/grc.csh48
-rw-r--r--misc/grc/grc.info10
-rw-r--r--misc/grc/ipaddr.diff11
-rw-r--r--misc/gxmessage/gxmessage.SlackBuild6
-rw-r--r--misc/gxmessage/gxmessage.info4
-rw-r--r--misc/gxmessage/slack-desc2
-rw-r--r--misc/hashkill/README24
-rw-r--r--misc/hashkill/hashkill.info10
-rw-r--r--misc/hashkill/slack-desc19
-rw-r--r--misc/heimdall/README30
-rw-r--r--misc/heimdall/heimdall.SlackBuild6
-rw-r--r--misc/heimdall/heimdall.info2
-rw-r--r--misc/heyu/heyu.SlackBuild14
-rw-r--r--misc/heyu/heyu.info10
-rw-r--r--misc/hoorex/README8
-rw-r--r--misc/hoorex/hoorex.SlackBuild4
-rw-r--r--misc/hxtools/README78
-rw-r--r--misc/hxtools/hxtools.SlackBuild196
-rw-r--r--misc/hxtools/hxtools.info14
-rw-r--r--misc/hxtools/shared_perl_lib.diff56
-rw-r--r--misc/hxtools/slack-desc19
-rw-r--r--misc/ibus-chewing/doinst.sh4
-rw-r--r--misc/ibus-chewing/ibus-chewing.SlackBuild6
-rw-r--r--misc/ibus-qt/ibus-qt.SlackBuild6
-rw-r--r--misc/ibus-qt/ibus-qt.info2
-rw-r--r--misc/ibus-skk/doinst.sh32
-rw-r--r--misc/ibus-skk/ibus-skk.SlackBuild6
-rw-r--r--misc/ibus-skk/ibus-skk.info2
-rw-r--r--misc/ibus-table-chinese/README23
-rw-r--r--misc/ibus-table-chinese/doinst.sh10
-rw-r--r--misc/ibus-table-chinese/ibus-table-chinese.SlackBuild83
-rw-r--r--misc/ibus-table-chinese/ibus-table-chinese.info12
-rw-r--r--misc/ibus-table-chinese/slack-desc19
-rw-r--r--misc/igal2/README3
-rw-r--r--misc/igal2/igal2.info10
-rw-r--r--misc/jmri/doinst.sh4
-rw-r--r--misc/jmri/jmri.SlackBuild12
-rw-r--r--misc/jmri/jmri.info8
-rw-r--r--misc/kasumi/README7
-rw-r--r--misc/kasumi/kasumi.SlackBuild1
-rw-r--r--misc/kasumi/kasumi.info2
-rw-r--r--misc/kde_cdemu/kde_cdemu.SlackBuild10
-rw-r--r--misc/kde_cdemu/kde_cdemu.info8
-rw-r--r--misc/kde_cdemu/slack-desc2
-rw-r--r--misc/keychain/README8
-rw-r--r--misc/klibc/klibc-2.0.3-kernel-uapi.patch77
-rw-r--r--misc/klibc/klibc.SlackBuild16
-rw-r--r--misc/klibc/klibc.info10
-rw-r--r--misc/kronometer/README9
-rw-r--r--misc/kronometer/kronometer.SlackBuild14
-rw-r--r--misc/kronometer/kronometer.info6
-rw-r--r--misc/lastpass-cli/lastpass-cli.SlackBuild2
-rw-r--r--misc/lbdb/lbdb.SlackBuild6
-rw-r--r--misc/libime/README2
-rw-r--r--misc/libime/libime.SlackBuild104
-rw-r--r--misc/libime/libime.info10
-rw-r--r--misc/libime/slack-desc (renamed from misc/fribid/slack-desc)22
-rw-r--r--misc/libydpdict/libydpdict.SlackBuild10
-rw-r--r--misc/libydpdict/libydpdict.info4
-rw-r--r--misc/linux_logo/linux_logo.SlackBuild6
-rw-r--r--misc/ltunify/README18
-rw-r--r--misc/ltunify/ltunify.SlackBuild2
-rw-r--r--misc/ltunify/ltunify.info6
-rw-r--r--misc/mdic/README6
-rw-r--r--misc/mdic/mdic.SlackBuild6
-rw-r--r--misc/mdic/mdic.info2
-rw-r--r--misc/megatunix/README15
-rw-r--r--misc/megatunix/megatunix.SlackBuild2
-rw-r--r--misc/modprobed-db/README16
-rw-r--r--misc/modprobed-db/modprobed-db.SlackBuild (renamed from misc/floating-IPS/floating-IPS.SlackBuild)43
-rw-r--r--misc/modprobed-db/modprobed-db.info10
-rw-r--r--misc/modprobed-db/slack-desc19
-rw-r--r--misc/moedict-desktop.app/README14
-rw-r--r--misc/moedict-desktop.app/moedict-desktop.app.SlackBuild9
-rw-r--r--misc/moreutils/README9
-rw-r--r--misc/moreutils/moreutils.SlackBuild14
-rw-r--r--misc/moreutils/moreutils.info6
-rw-r--r--misc/mosquitto/README14
-rw-r--r--misc/mosquitto/mosquitto.SlackBuild7
-rw-r--r--misc/mosquitto/mosquitto.info7
-rw-r--r--misc/myclippings/README14
-rw-r--r--misc/nfoview/nfoview.SlackBuild6
-rw-r--r--misc/no-more-secrets/no-more-secrets.SlackBuild4
-rw-r--r--misc/no-more-secrets/no-more-secrets.info6
-rw-r--r--misc/nordpass/README9
-rw-r--r--misc/nordpass/doinst.sh3
-rw-r--r--misc/nordpass/nordpass.SlackBuild93
-rw-r--r--misc/nordpass/nordpass.desktop14
-rw-r--r--misc/nordpass/nordpass.info10
-rw-r--r--misc/nordpass/slack-desc19
-rw-r--r--misc/nvclock/README8
-rw-r--r--misc/nvclock/nvclock.SlackBuild105
-rw-r--r--misc/nvclock/nvclock.info10
-rw-r--r--misc/nvclock/patches/nvclock-0.8b4-linkfix.patch18
-rw-r--r--misc/nvclock/patches/nvclock-fix_DESTDIR.patch145
-rw-r--r--misc/nvclock/patches/nvclock-use_ALL_CFLAGS.patch118
-rw-r--r--misc/nvclock/patches/nvclock-use_most_CFLAGS.patch93
-rw-r--r--misc/nvclock/slack-desc19
-rw-r--r--misc/open-simh/README67
-rw-r--r--misc/open-simh/open-simh.SlackBuild268
-rw-r--r--misc/open-simh/open-simh.info10
-rw-r--r--misc/open-simh/slack-desc19
-rw-r--r--misc/ophcrack/README4
-rw-r--r--misc/ophcrack/ophcrack.SlackBuild4
-rw-r--r--misc/ophcrack/ophcrack.info8
-rw-r--r--misc/ophcrack/slack-desc2
-rw-r--r--misc/owfs/README6
-rw-r--r--misc/owfs/owfs.SlackBuild43
-rw-r--r--misc/owfs/owfs.info6
-rw-r--r--misc/pam-u2f/README6
-rw-r--r--misc/pam-u2f/pam-u2f.SlackBuild (renamed from misc/hashkill/hashkill.SlackBuild)41
-rw-r--r--misc/pam-u2f/pam-u2f.info10
-rw-r--r--misc/pam-u2f/slack-desc (renamed from misc/readesm/slack-desc)22
-rw-r--r--misc/par/README2
-rw-r--r--misc/par/par.SlackBuild7
-rw-r--r--misc/par/par.info2
-rw-r--r--misc/par2cmdline-tbb/README14
-rw-r--r--misc/par2cmdline-tbb/par2cmdline-tbb.SlackBuild3
-rw-r--r--misc/par2cmdline-turbo/README5
-rw-r--r--misc/par2cmdline-turbo/par2cmdline-turbo.SlackBuild117
-rw-r--r--misc/par2cmdline-turbo/par2cmdline-turbo.info10
-rw-r--r--misc/par2cmdline-turbo/slack-desc19
-rw-r--r--misc/par2cmdline/README10
-rw-r--r--misc/pinfo/README9
-rw-r--r--misc/pinfo/doinst.sh5
-rw-r--r--misc/pinfo/douninst.sh6
-rw-r--r--misc/pinfo/fix_f9_f10_binds.diff16
-rw-r--r--misc/pinfo/man_page.diff62
-rw-r--r--misc/pinfo/ncurses-6.3.diff32
-rw-r--r--misc/pinfo/pinfo.SlackBuild29
-rw-r--r--misc/pinfo/pinfo.info2
-rw-r--r--misc/po4a/README78
-rw-r--r--misc/po4a/README_SBo.txt25
-rw-r--r--misc/po4a/po4a.SlackBuild115
-rw-r--r--misc/po4a/po4a.info10
-rw-r--r--misc/po4a/slack-desc8
-rw-r--r--misc/pokemon-colorscripts/README31
-rw-r--r--misc/pokemon-colorscripts/doinst.sh (renamed from misc/Publican/doinst.sh)13
-rw-r--r--misc/pokemon-colorscripts/pokemon-colorscripts-login.sh10
-rw-r--r--misc/pokemon-colorscripts/pokemon-colorscripts.SlackBuild88
-rw-r--r--misc/pokemon-colorscripts/pokemon-colorscripts.info10
-rw-r--r--misc/pokemon-colorscripts/slack-desc19
-rw-r--r--misc/portecle/portecle.info2
-rw-r--r--misc/projectM/README10
-rw-r--r--misc/projectM/doinst.sh6
-rw-r--r--misc/projectM/patch_use_LIB_SUFFIX.diff32
-rw-r--r--misc/projectM/patch_use_both_fonts.diff11
-rw-r--r--misc/projectM/projectM-2.1.0_gcc.patch63
-rw-r--r--misc/projectM/projectM.SlackBuild38
-rw-r--r--misc/projectM/projectM.info10
-rw-r--r--misc/projectM/slack-desc12
-rw-r--r--misc/protobuf/README14
-rw-r--r--misc/protobuf/protobuf.SlackBuild98
-rw-r--r--misc/protobuf/protobuf.info10
-rw-r--r--misc/protobuf/slack-desc19
-rw-r--r--misc/protobuf3/README27
-rw-r--r--misc/protobuf3/protobuf3.info10
-rw-r--r--misc/protobuf3/protobuf3.patch10
-rw-r--r--misc/python3-random-username/README5
-rw-r--r--misc/python3-random-username/python3-random-username.SlackBuild (renamed from misc/sbo-templates/sbo-templates.SlackBuild)42
-rw-r--r--misc/python3-random-username/python3-random-username.info10
-rw-r--r--misc/python3-random-username/slack-desc19
-rw-r--r--misc/ramdefrag/ramdefrag.info6
-rw-r--r--misc/rarcrack/README4
-rw-r--r--misc/rarcrack/rarcrack.SlackBuild3
-rw-r--r--misc/rarcrack/rarcrack.info2
-rw-r--r--misc/rbutil/doinst.sh4
-rw-r--r--misc/rbutil/patches/bundled-licenses.patch38
-rw-r--r--misc/rbutil/patches/rbutil-1.4.1-quazip.patch63
-rw-r--r--misc/rbutil/patches/rbutil-1.5.1-cmake.patch32
-rw-r--r--misc/rbutil/patches/rbutil-1.5.1-headers.patch17
-rw-r--r--misc/rbutil/patches/rbutil-1.5.1-system-quazip.patch150
-rw-r--r--misc/rbutil/patches/system-bzip2.patch12
-rw-r--r--misc/rbutil/patches/system-mspack.patch118
-rw-r--r--misc/rbutil/patches/system-tomcrypt.patch83
-rw-r--r--misc/rbutil/rbutil.SlackBuild99
-rw-r--r--misc/rbutil/rbutil.info8
-rw-r--r--misc/readesm/README5
-rw-r--r--misc/readesm/readesm.info10
-rw-r--r--misc/recode/README19
-rw-r--r--misc/recode/recode.SlackBuild45
-rw-r--r--misc/recode/recode.info12
-rw-r--r--misc/recode/slack-desc2
-rw-r--r--misc/rlwrap/rlwrap.SlackBuild5
-rw-r--r--misc/rlwrap/rlwrap.info6
-rw-r--r--misc/rmlint/README6
-rw-r--r--misc/rmlint/doinst.sh15
-rw-r--r--misc/rmlint/rmlint.SlackBuild (renamed from misc/readesm/readesm.SlackBuild)77
-rw-r--r--misc/rmlint/rmlint.info10
-rw-r--r--misc/rmlint/slack-desc19
-rw-r--r--misc/rsibreak/rsibreak.SlackBuild11
-rw-r--r--misc/rsibreak/rsibreak.info6
-rw-r--r--misc/rsnapshot/README31
-rw-r--r--misc/samdump2/openssl_compat.patch89
-rw-r--r--misc/samdump2/samdump2.SlackBuild8
-rw-r--r--misc/sbo-templates/README2
-rw-r--r--misc/sbo-templates/sbo-templates.info10
-rw-r--r--misc/sbo-templates/slack-desc19
-rw-r--r--misc/scim-chewing/README2
-rw-r--r--misc/scim-chewing/gtk.patch859
-rw-r--r--misc/scim-chewing/scim-chewing.info10
-rw-r--r--misc/sdcv/patches/01_gettext.patch14
-rw-r--r--misc/sdcv/patches/02_manpage.patch143
-rw-r--r--misc/sdcv/patches/03_c++.patch45
-rw-r--r--misc/sdcv/patches/04_format.patch21
-rw-r--r--misc/sdcv/patches/05_locales.patch80
-rw-r--r--misc/sdcv/patches/06_sk.po.patch134
-rw-r--r--misc/sdcv/patches/07_cs.po.patch145
-rw-r--r--misc/sdcv/patches/08_fr.po.patch158
-rw-r--r--misc/sdcv/patches/09_fix-tests.patch53
-rw-r--r--misc/sdcv/patches/10_use-env-home.patch31
-rw-r--r--misc/sdcv/patches/11_allignment.patch27
-rw-r--r--misc/sdcv/patches/12_fix-formats.patch35
-rw-r--r--misc/sdcv/patches/13_zlib-return-value.patch19
-rw-r--r--misc/sdcv/sdcv.SlackBuild42
-rw-r--r--misc/sdcv/sdcv.info8
-rw-r--r--misc/sdcv/slack-desc2
-rw-r--r--misc/seahorse-plugins/seahorse-plugins.SlackBuild6
-rw-r--r--misc/simh-classic/README28
-rw-r--r--misc/simh-classic/pdp11_defs.h.patch.gzbin0 -> 337 bytes
-rw-r--r--misc/simh-classic/simh-classic.SlackBuild157
-rw-r--r--misc/simh-classic/simh-classic.info10
-rw-r--r--misc/simh-classic/slack-desc19
-rw-r--r--misc/slop/slop.SlackBuild3
-rw-r--r--misc/solunar/README8
-rw-r--r--misc/solunar/solunar.SlackBuild6
-rw-r--r--misc/solunar/solunar.info2
-rw-r--r--misc/spotlighter/spotlighter.SlackBuild6
-rw-r--r--misc/ssss/patches/0004-Remove-the-direct-PayPal-link.patch22
-rw-r--r--misc/ssss/patches/series1
-rw-r--r--misc/ssss/slack-desc2
-rw-r--r--misc/ssss/ssss.116
-rw-r--r--misc/ssss/ssss.1.html177
-rw-r--r--misc/ssss/ssss.SlackBuild82
-rw-r--r--misc/ssss/ssss.info12
-rw-r--r--misc/stardict-tools/stardict-tools.SlackBuild47
-rw-r--r--misc/stardict-tools/stardict-tools.info8
-rw-r--r--misc/stardict-tools/stardict-tools.patch172
-rw-r--r--misc/stardict/patches/fixup_build_on_gcc44.patch8728
-rw-r--r--misc/stardict/patches/stardict-3.0.1-gcc47.patch24
-rw-r--r--misc/stardict/patches/stardict-transparent.patch101
-rw-r--r--misc/stardict/stardict.SlackBuild18
-rw-r--r--misc/stardict/stardict.info4
-rw-r--r--misc/subsurface/README12
-rw-r--r--misc/subsurface/subsurface.SlackBuild10
-rw-r--r--misc/sunwait/README10
-rw-r--r--misc/swege/README23
-rw-r--r--misc/swege/slack-desc19
-rw-r--r--misc/swege/swege.SlackBuild91
-rw-r--r--misc/swege/swege.info10
-rw-r--r--misc/tal/README14
-rw-r--r--misc/tal/tal.SlackBuild74
-rw-r--r--misc/tal/tal.info4
-rw-r--r--misc/tegaki-zinnia-japanese/tegaki-zinnia-japanese.SlackBuild47
-rw-r--r--misc/tidyp/tidyp.SlackBuild4
-rw-r--r--misc/tinytldr/README7
-rw-r--r--misc/tinytldr/slack-desc19
-rw-r--r--misc/tinytldr/tinytldr.SlackBuild79
-rw-r--r--misc/tinytldr/tinytldr.info10
-rw-r--r--misc/toilet/toilet.SlackBuild6
-rw-r--r--misc/torrentinfo/README9
-rw-r--r--misc/torrentinfo/torrentinfo.info2
-rw-r--r--misc/txt2regex/txt2regex.SlackBuild5
-rw-r--r--misc/txt2regex/txt2regex.info6
-rw-r--r--misc/txt2tags/txt2tags.SlackBuild102
-rw-r--r--misc/txt2tags/txt2tags.info10
-rw-r--r--misc/txt2tags/txt2tags.pngbin24257 -> 0 bytes
-rw-r--r--misc/utimer/utimer-0.4-fno-common.patch29
-rw-r--r--misc/utimer/utimer-0.4-locale.patch10
-rw-r--r--misc/utimer/utimer.SlackBuild3
-rw-r--r--misc/vdpauinfo/vdpauinfo.SlackBuild8
-rw-r--r--misc/vdpauinfo/vdpauinfo.info10
-rw-r--r--misc/vttest/vttest.SlackBuild11
-rw-r--r--misc/vttest/vttest.info10
-rw-r--r--misc/wcd/wcd.SlackBuild72
-rw-r--r--misc/wcd/wcd.info10
-rw-r--r--misc/weather/README37
-rw-r--r--misc/weather/doinst.sh11
-rw-r--r--misc/weather/weather.SlackBuild2
-rw-r--r--misc/wl-clipboard/README3
-rw-r--r--misc/wl-clipboard/slack-desc (renamed from misc/scim-chewing/slack-desc)22
-rw-r--r--misc/wl-clipboard/wl-clipboard.SlackBuild (renamed from misc/igal2/igal2.SlackBuild)77
-rw-r--r--misc/wl-clipboard/wl-clipboard.info10
-rw-r--r--misc/wmbday/wmbday.SlackBuild6
-rw-r--r--misc/wmbday/wmbday.info4
-rw-r--r--misc/xapian-omega/slack-desc2
-rw-r--r--misc/xapian-omega/xapian-omega.SlackBuild10
-rw-r--r--misc/xapian-omega/xapian-omega.info8
-rw-r--r--misc/xbanish/README2
-rw-r--r--misc/xbanish/xbanish.SlackBuild6
-rw-r--r--misc/xbanish/xbanish.info8
-rw-r--r--misc/xca/xca.SlackBuild2
-rw-r--r--misc/xca/xca.info6
-rw-r--r--misc/xcape/xcape.SlackBuild10
-rw-r--r--misc/xcape/xcape.info6
-rw-r--r--misc/xcb-imdkit/README8
-rw-r--r--misc/xcb-imdkit/slack-desc19
-rw-r--r--misc/xcb-imdkit/xcb-imdkit.SlackBuild103
-rw-r--r--misc/xcb-imdkit/xcb-imdkit.info10
-rw-r--r--misc/xdelta/README13
-rw-r--r--misc/xdelta/xdelta.SlackBuild4
-rw-r--r--misc/xdelta/xdelta.info2
-rw-r--r--misc/xvnkb/xvnkb.SlackBuild6
-rw-r--r--misc/xwinwrap/README4
-rw-r--r--misc/xwinwrap/xwinwrap.SlackBuild19
-rw-r--r--misc/xwinwrap/xwinwrap.info2
-rw-r--r--misc/yapet/doinst.sh3
-rw-r--r--misc/yapet/gcc6.patch11
-rw-r--r--misc/yapet/yapet.SlackBuild12
-rw-r--r--misc/yapet/yapet.info10
-rw-r--r--misc/yara/README16
-rw-r--r--misc/yara/slack-desc2
-rw-r--r--misc/yara/yara.SlackBuild12
-rw-r--r--misc/yara/yara.info12
-rw-r--r--misc/ydpdict/ydpdict.SlackBuild14
-rw-r--r--misc/ydpdict/ydpdict.info8
-rw-r--r--misc/ykpers/README19
-rw-r--r--misc/ykpers/ykpers.SlackBuild4
-rw-r--r--misc/yubioath-desktop/doinst.sh3
-rw-r--r--misc/yubioath-desktop/yubioath-desktop.SlackBuild1
-rw-r--r--misc/zinnia/zinnia.SlackBuild4
596 files changed, 9235 insertions, 16322 deletions
diff --git a/misc/KeePass/KeePass.SlackBuild b/misc/KeePass/KeePass.SlackBuild
index d04eb4df4f..c4d85f00d1 100644
--- a/misc/KeePass/KeePass.SlackBuild
+++ b/misc/KeePass/KeePass.SlackBuild
@@ -21,7 +21,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=KeePass
-VERSION=${VERSION:-2.47}
+VERSION=${VERSION:-2.56}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/misc/KeePass/KeePass.info b/misc/KeePass/KeePass.info
index 0ece240393..3bdc90fca6 100644
--- a/misc/KeePass/KeePass.info
+++ b/misc/KeePass/KeePass.info
@@ -1,8 +1,8 @@
PRGNAM="KeePass"
-VERSION="2.47"
+VERSION="2.56"
HOMEPAGE="https://keepass.info/"
-DOWNLOAD="http://downloads.sourceforge.net/keepass/KeePass-2.47-Source.zip"
-MD5SUM="7955b3b563317f69e5b014014b69020a"
+DOWNLOAD="https://downloads.sourceforge.net/keepass/KeePass-2.56-Source.zip"
+MD5SUM="c60e8c64af6744af11f1f256fff2460b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="mono"
diff --git a/misc/OSCAR/OSCAR.SlackBuild b/misc/OSCAR/OSCAR.SlackBuild
index 0f267f5102..b446062187 100644
--- a/misc/OSCAR/OSCAR.SlackBuild
+++ b/misc/OSCAR/OSCAR.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for OSCAR
-# Copyright 2019-2020 Zhu, Qun-Ying
+# Copyright 2019-2022 Zhu, Qun-Ying
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=OSCAR
-VERSION=${VERSION:-1.2.0}
+VERSION=${VERSION:-1.5.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -52,16 +52,12 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
diff --git a/misc/OSCAR/OSCAR.info b/misc/OSCAR/OSCAR.info
index 29a6492269..d550c49135 100644
--- a/misc/OSCAR/OSCAR.info
+++ b/misc/OSCAR/OSCAR.info
@@ -1,8 +1,8 @@
PRGNAM="OSCAR"
-VERSION="1.2.0"
+VERSION="1.5.1"
HOMEPAGE="https://www.sleepfiles.com/OSCAR/"
-DOWNLOAD="https://gitlab.com/pholy/OSCAR-code/-/archive/v1.2.0/OSCAR-code-v1.2.0.tar.bz2"
-MD5SUM="99c91ebbdd76a98de515aec66305f209"
+DOWNLOAD="https://gitlab.com/pholy/OSCAR-code/-/archive/v1.5.1/OSCAR-code-v1.5.1.tar.bz2"
+MD5SUM="f18116b475961618464c05079f333ba6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/Publican/Publican.SlackBuild b/misc/Publican/Publican.SlackBuild
deleted file mode 100644
index 0b786bca62..0000000000
--- a/misc/Publican/Publican.SlackBuild
+++ /dev/null
@@ -1,145 +0,0 @@
-#!/bin/bash
-
-# Slackware build script for Publican
-
-# Copyright 2018 Nikos Giotis <nikos.giotis@gmail.com>, Athens, GR
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-cd $(dirname $0) ; CWD=$(pwd)
-
-PRGNAM=Publican
-VERSION=${VERSION:-4.3.2}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-PKGTYPE=${PKGTYPE:-tgz}
-
-SRCNAM="$(printf $PRGNAM | cut -d- -f2-)"
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $SRCNAM-v$VERSION
-tar xvf $CWD/$SRCNAM-v$VERSION.tar.gz
-cd $SRCNAM-v$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-######################################################################################################
-# The following can be used to patch Publican to work around docbook validation issues
-# Don't use this, unless you know what you are doing!!!
-# This method produces documents that are depended upon the system's path
-#for i in $(find . -name '*.xml' -o -name '*.xmlt' -o -name '*.pm' -o -name '*.po' -o -name '*.xsl'); do
-# echo "patching $i"
-# sed -i 's|http://www.oasis-open.org/docbook/xml/4.5/dbcentx.mod|/usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod|g' $i
-# sed -i 's|http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd|/usr/share/xml/docbook/xml-dtd-4.5/docbookx.dtd|g' $i
-# sed -i 's|http://www.oasis-open.org/docbook/xml/$dtdver/docbookx.dtd|/usr/share/xml/docbook/xml-dtd-$dtdver/docbookx.dtd|g' $i
-#done
-#sed -i 's|PATH|file://usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod|g' catalog
-#sed -i 's|/usr/share/sgml/docbook|/usr/share/xml/docbook/xml|g' publican.spec
-######################################################################################################
-
-# Don't build regression tests in the user's guide
-sed -i 's|#condition: prod|condition: prod|g' Users_Guide/publican.cfg
-
-# Use the provided docbook xml catalog for building - some validation requires network to work
-sed -i "s|use warnings;|\$ENV{XML_CATALOG_FILES} = '$CWD/catalog';\nuse warnings;|1" bin/publican
-export XML_CATALOG_FILES=$CWD/catalog
-
-perl Build.PL --installdirs vendor \
- --config installvendorman1dir=/usr/man/man1 \
- --config installvendorman3dir=/usr/man/man3 \
-
-./Build
-./Build test verbose=1
-./Build install \
- --destdir $PKG
-
-# Fix xml validation errors for docbook 4.5 for the resulting package
-# by using the provided docbook 4.5 catalog
-cp $CWD/catalog $PKG/usr/share/publican/catalog
-sed -i "s|$CWD/catalog|/usr/share/publican/catalog|1" $PKG/usr/bin/publican
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-
-find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
-
-find $PKG -depth -type d -empty -delete || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- COPYING LICENSE README TODO \
- $PKG/usr/doc/$PRGNAM-$VERSION
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/Users_Guide
-cp -a Users_Guide/build/en-US/html-desktop/* $PKG/usr/doc/$PRGNAM-$VERSION/Users_Guide
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mv $PKG/etc/publican-website.cfg $PKG/etc/publican-website.cfg.new
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/Publican/Publican.info b/misc/Publican/Publican.info
deleted file mode 100644
index b428b2cb37..0000000000
--- a/misc/Publican/Publican.info
+++ /dev/null
@@ -1,21 +0,0 @@
-PRGNAM="Publican"
-VERSION="4.3.2"
-HOMEPAGE="https://sourceware.org/publican/en-US/index.html"
-DOWNLOAD="https://sourceware.org/publican/releases/Publican-v4.3.2.tar.gz"
-MD5SUM="7f9726fe568b6b686f4bbe1fe2dd5439"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="perl-Archive-Zip perl-Config-Simple \
- perl-DateTime-Format-DateParse perl-File-Copy-Recursive \
- perl-File-Find-Rule perl-File-HomeDir perl-File-Inplace \
- perl-File-Slurp perl-File-Which perl-File-pushd perl-HTML-Formatter \
- perl-HTML-FormatText-WithLinks \
- perl-HTML-FormatText-WithLinks-AndTables perl-HTML-Tree \
- perl-HTML-WikiConverter-Markdown perl-IO-String perl-Lingua-EN-Fathom \
- perl-List-MoreUtils perl-Locale-Maketext-Lexicon \
- perl-Locale-Maketext-Gettext perl-Locale-Msgfmt perl-Locale-PO \
- perl-Module-Build perl-Sort-Versions perl-String-Similarity \
- perl-Syntax-Highlight-Engine-Kate perl-Text-CSV_XS perl-xml-libxml \
- perl-XML-LibXSLT perl-XML-TreeBuilder perl-DBD-SQLite perl-yaml wkhtmltox"
-MAINTAINER="Nikos Giotis"
-EMAIL="nikos.giotis@gmail.com"
diff --git a/misc/Publican/README b/misc/Publican/README
deleted file mode 100644
index 01189cdb17..0000000000
--- a/misc/Publican/README
+++ /dev/null
@@ -1,28 +0,0 @@
-Publican is a single source publishing tool based on DocBook XML.
-
-Important notes:
-
-While building the package an active network connection is required for
-both 4.5 and 5.0 document validation to work correctly.
-
-This package provides a fixed docbook catalog located at
-/usr/share/publican/catalog. Publican is patched to always use this
-catalog. There are some problems with docbook validation with the
-original slackware dockbook catalog and Publican's dependencies that
-result in validation problems and failures for docbook 4.5 documents.
-
-For more details see
-https://www.linuxquestions.org/questions/slackware-14/linuxdoc-tools-problem-when-validating-docbook-4-5-documents-4175623483/
-
-The resulting package picks the appropriate slackware's docbook 4.5
-xml's using the provided fixed catalog for docbook 4.5 documents. For
-documents that are written in docbook 5.0 an active network connection
-is required since docbook 5.0 is not included in slackware-14.2.
-
-fop is an alternative dependency to wkhtmltox for producing pdf
-documents. fop use is deprecated upstream and Publican is not
-compatible with fop version 2.0, an older fop version is required.
-The recommended dependency for correct pdf's is wkhtmltox.
-
-For more information on how to use publican, see the user's guide in
-/usr/doc/Publican-4.3.2/Users_Guide
diff --git a/misc/Publican/catalog b/misc/Publican/catalog
deleted file mode 100644
index 4b1ffc954a..0000000000
--- a/misc/Publican/catalog
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog V1.0//EN" "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
-<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
- <public publicId="-//OASIS//DTD DocBook XML V4.5//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/docbookx.dtd"/>
- <public publicId="-//OASIS//DTD DocBook CALS Table Model V4.5//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/calstblx.dtd"/>
- <public publicId="-//OASIS//DTD XML Exchange Table Model 19990315//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/soextblx.dtd"/>
- <public publicId="-//OASIS//ELEMENTS DocBook Information Pool V4.5//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/dbpoolx.mod"/>
- <public publicId="-//OASIS//ELEMENTS DocBook Document Hierarchy V4.5//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/dbhierx.mod"/>
- <public publicId="-//OASIS//ELEMENTS DocBook XML HTML Tables V4.5//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/htmltblx.mod"/>
- <public publicId="-//OASIS//ENTITIES DocBook Notations V4.5//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/dbnotnx.mod"/>
- <public publicId="-//OASIS//ENTITIES DocBook Character Entities V4.5//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/dbcentx.mod"/>
- <public publicId="-//OASIS//ENTITIES DocBook Additional General Entities V4.5//EN" uri="file:///usr/share/xml/docbook/xml-dtd-4.5/dbgenent.mod"/>
- <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.5" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <rewriteURI uriStartString="http://www.oasis-open.org/docbook/xml/4.5" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <public publicId="-//OASIS//DTD DocBook XML V4.1.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"/>
- <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.1.2" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <rewriteURI uriStartString="http://www.oasis-open.org/docbook/xml/4.1.2" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <public publicId="-//OASIS//DTD DocBook XML V4.2//EN" uri="http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"/>
- <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.2" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <rewriteURI uriStartString="http://www.oasis-open.org/docbook/xml/4.2" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <public publicId="-//OASIS//DTD DocBook XML V4.3//EN" uri="http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"/>
- <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.3" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <rewriteURI uriStartString="http://www.oasis-open.org/docbook/xml/4.3" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <public publicId="-//OASIS//DTD DocBook XML V4.4//EN" uri="http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd"/>
- <rewriteSystem systemIdStartString="http://www.oasis-open.org/docbook/xml/4.4" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
- <rewriteURI uriStartString="http://www.oasis-open.org/docbook/xml/4.4" rewritePrefix="file:///usr/share/xml/docbook/xml-dtd-4.5"/>
-</catalog>
diff --git a/misc/Publican/slack-desc b/misc/Publican/slack-desc
deleted file mode 100644
index eca1b7965e..0000000000
--- a/misc/Publican/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-Publican: Publican (Tool for publishing material authored in DocBook XML)
-Publican:
-Publican: Publican is a publication system, not just a DocBook processing tool.
-Publican: As well as ensuring your DocBook XML is valid, Publican works to
-Publican: ensure your XML is up to publishable standard.
-Publican:
-Publican: NOTE: Building Publican requires an active network connection!
-Publican: Resulting package requires network for docbook 5.0 documents,
-Publican: since only docbook 4.5 is included in slackware. See README.
-Publican:
-Publican: Homepage: https://sourceware.org/publican/en-US/index.html
diff --git a/misc/QCMA/QCMA.SlackBuild b/misc/QCMA/QCMA.SlackBuild
index 687b3b4576..cc3c097a3c 100644
--- a/misc/QCMA/QCMA.SlackBuild
+++ b/misc/QCMA/QCMA.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=QCMA
VERSION=${VERSION:-0.4.1}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -74,6 +74,8 @@ cd $TMP
rm -rf $SRCNAM-$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
cd $SRCNAM-$VERSION
+# thanks arch linux maintainer
+zcat $CWD/qcma-avdecoder.patch.gz | patch -p1
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
diff --git a/misc/QCMA/qcma-avdecoder.patch.gz b/misc/QCMA/qcma-avdecoder.patch.gz
new file mode 100644
index 0000000000..1de3b4c0a9
--- /dev/null
+++ b/misc/QCMA/qcma-avdecoder.patch.gz
Binary files differ
diff --git a/misc/anymeal/Makefile-am.patch b/misc/anymeal/Makefile-am.patch
new file mode 100644
index 0000000000..db305a9a78
--- /dev/null
+++ b/misc/anymeal/Makefile-am.patch
@@ -0,0 +1,10 @@
+--- anymeal-1.17/Makefile.am.orig 2022-11-01 20:12:48.379000000 -0000
++++ anymeal-1.17/Makefile.am 2022-11-01 20:12:53.568000000 -0000
+@@ -1,6 +1,6 @@
+ ACLOCAL_AMFLAGS = -I m4
+
+-SUBDIRS = anymeal tests
++SUBDIRS = anymeal
+
+ doc_DATA = README.md
+
diff --git a/misc/anymeal/README b/misc/anymeal/README
new file mode 100644
index 0000000000..c09fb704e9
--- /dev/null
+++ b/misc/anymeal/README
@@ -0,0 +1,4 @@
+AnyMeal is a free and open source recipe management software developed
+using SQLite3 and Qt5. It can manage a cookbook with more than 250,000
+MealMaster recipes, thereby allowing to import, export, search,
+display, edit, and print them.
diff --git a/misc/scim-chewing/scim-chewing.SlackBuild b/misc/anymeal/anymeal.SlackBuild
index 72b5f8de22..a8be0d73b8 100644
--- a/misc/scim-chewing/scim-chewing.SlackBuild
+++ b/misc/anymeal/anymeal.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for scim-chewing
+# Slackware build script for anymeal
-# Copyright 2009 Guan-Zhong Huang, Taiwan <imprazaguy@gmail.com>
+# Copyright 2022 SlackBuilds.org Project, Ben Collver, Earth-Planet, Universe
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,15 +24,15 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=scim-chewing
-VERSION=${VERSION:-0.3.4}
+PRGNAM=anymeal
+VERSION=${VERSION:-1.17}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -70,40 +70,51 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar -xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-patch -p1 -i $CWD/gtk.patch
+# disable googletest harness and add --without-windres configure option
+patch -p1 < $CWD/configure-ac.patch
+patch -p1 < $CWD/Makefile-am.patch
+
+autoreconf
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --build=$ARCH-slackware-linux \
--docdir=/usr/doc/$PRGNAM-$VERSION \
- --build=$ARCH-slackware-linux
+ --without-windres
make
make install DESTDIR=$PKG
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | \
+ grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+
+mkdir -p $PKG/usr/share/{applications,pixmaps}
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
+cp -a ChangeLog ChangeLog LICENSE README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
-
+/sbin/makepkg -p -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/anymeal/anymeal.info b/misc/anymeal/anymeal.info
new file mode 100644
index 0000000000..1549156ee5
--- /dev/null
+++ b/misc/anymeal/anymeal.info
@@ -0,0 +1,10 @@
+PRGNAM="anymeal"
+VERSION="1.17"
+HOMEPAGE="https://wedesoft.github.io/anymeal/"
+DOWNLOAD="https://github.com/wedesoft/anymeal/releases/download/v1.17/anymeal-1.17.tar.xz"
+MD5SUM="fc2c709656b99b757ed85db280e60d1a"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="recode"
+MAINTAINER="Ben Collver"
+EMAIL="bencollver@riseup.net"
diff --git a/misc/anymeal/configure-ac.patch b/misc/anymeal/configure-ac.patch
new file mode 100644
index 0000000000..772caae79a
--- /dev/null
+++ b/misc/anymeal/configure-ac.patch
@@ -0,0 +1,34 @@
+--- anymeal-1.17/configure.ac.orig 2022-11-01 20:41:56.815000000 -0000
++++ anymeal-1.17/configure.ac 2022-11-01 20:41:52.771000000 -0000
+@@ -15,17 +15,24 @@
+ AC_MSG_ERROR([Could not find flex])
+ fi
+
++AC_ARG_WITH(windres,
++ AS_HELP_STRING([--with-windres],
++ [Enable support for windres (default: auto)]),
++ [WINDRES=$with_windres], [WINDRES=auto])
++
+ dnl Check for windres.
+-AC_CHECK_PROG(WINDRES,windres,windres,no)
++if test "x$WINDRES" = "xauto"; then
++ AC_CHECK_PROG(WINDRES,windres,windres,no)
++fi
+ AM_CONDITIONAL([HAVE_WINDRES], [test "x$WINDRES" = "xwindres"])
+
+ dnl Check for Googletest framework.
+-if test "x$GTEST" = "x"; then
+- GTEST="/usr/src/googletest/googletest"
+-fi
+-AS_IF([test -e "$GTEST/src/gtest-all.cc"],
+- AC_SUBST(GTEST),
+- AC_MSG_ERROR([Could not find $GTEST/src/gtest-all.cc]))
++dnl if test "x$GTEST" = "x"; then
++dnl GTEST="/usr/src/googletest/googletest"
++dnl fi
++dnl AS_IF([test -e "$GTEST/src/gtest-all.cc"],
++dnl AC_SUBST(GTEST),
++dnl AC_MSG_ERROR([Could not find $GTEST/src/gtest-all.cc]))
+
+ dnl Check for recode-library.
+ AC_MSG_CHECKING([for recode-library])
diff --git a/misc/anymeal/doinst.sh b/misc/anymeal/doinst.sh
new file mode 100644
index 0000000000..0fb9c8b686
--- /dev/null
+++ b/misc/anymeal/doinst.sh
@@ -0,0 +1,14 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -x /usr/bin/update-mime-database ]; then
+ /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
diff --git a/misc/anymeal/slack-desc b/misc/anymeal/slack-desc
new file mode 100644
index 0000000000..a51fee3c81
--- /dev/null
+++ b/misc/anymeal/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+anymeal: anymeal (cooking recipe management program)
+anymeal:
+anymeal: AnyMeal is a free and open source recipe management software
+anymeal: developed using SQLite3 and Qt5. It can manage a cookbook with more
+anymeal: than 250,000 MealMaster recipes, thereby allowing to import, export,
+anymeal: search, display, edit, and print them.
+anymeal:
+anymeal: Homepage: https://wedesoft.github.io/anymeal/
+anymeal:
+anymeal:
+anymeal:
diff --git a/misc/ardesia/010-ardesia-gcc10-fix.patch b/misc/ardesia/010-ardesia-gcc10-fix.patch
new file mode 100644
index 0000000000..c422990195
--- /dev/null
+++ b/misc/ardesia/010-ardesia-gcc10-fix.patch
@@ -0,0 +1,22 @@
+--- a/src/bar.c
++++ b/src/bar.c
+@@ -26,6 +26,8 @@
+ #include <utils.h>
+ #include <bar.h>
+
++GtkBuilder *bar_gtk_builder = NULL;
++
+ /*
+ * Calculate the better position where put the bar.
+ */
+--- a/src/utils.h
++++ b/src/utils.h
+@@ -62,7 +62,7 @@
+
+
+ /* The gtk builder object of the bar window */
+-GtkBuilder *bar_gtk_builder;
++extern GtkBuilder *bar_gtk_builder;
+
+
+ #define PROGRAM_NAME "Ardesia"
diff --git a/misc/ardesia/README b/misc/ardesia/README
index 478efbc4c4..34eeaeb36d 100644
--- a/misc/ardesia/README
+++ b/misc/ardesia/README
@@ -1,7 +1,7 @@
Ardesia turns your screen into a digital sketchpad to annotate or draw
-on the entire screen. It also lets you record and stream it on the
-network with vlc. You can draw upon the desktop or import an image
-as well as annotate and redistribute it. Ardesia is also pressure
+on the entire screen. It also lets you record and stream it on the
+network with vlc. You can draw upon the desktop or import an image
+as well as annotate and redistribute it. Ardesia is also pressure
sensitive assuming your device is properly configured.
USER TIPS:
@@ -9,49 +9,52 @@ USER TIPS:
Ardesia functions differently under different window managers.
Fluxbox/Blackbox: D-
-Even with cairo-compmgr or xcompmgr these only function with a solid color
-background. You may have difficulty selecting tool box, try launching
-with '-d'. As for other minimalist window managers, you are on your own.
+Even with cairo-compmgr or xcompmgr these only function with a solid
+color background. You may have difficulty selecting tool box, try
+launching with '-d'. As for other minimalist window managers, you are
+on your own.
XFCE: C
-The drawing window has a title bar and you can't type in windows unless shaded
-or minimized. Unknown work around for this.
+The drawing window has a title bar and you can't type in windows
+unless shaded or minimized. Unknown work around for this.
KDE: A+
-Default KDE settings will darken the screen. To fix this
-System Settings > All Effects Tab > Shadow Properties > Uncheck Active windows
-have stronger shadows > Disable Shadows (important if running) > Click Apply.
-Optionally re-enable Shadows and click Apply.
+Default KDE settings will darken the screen. To fix this System
+Settings > All Effects Tab > Shadow Properties > Uncheck Active
+windows have stronger shadows > Disable Shadows (important if running)
+> Click Apply. Optionally re-enable Shadows and click Apply.
GNOME 3.0: F
Sorry, I have no work around for the issues with this window manager.
-- The Application hides the bar at the top (you can still access Activities
- with a shortcut key.
+- The Application hides the bar at the top (you can still access
+ Activities with a shortcut key.
- The Tool Box will always be below the drawing window.
-- Because of the tool box, the main features of pictures, pdf, an screen
- record can not be accessed.
+- Because of the tool box, the main features of pictures, pdf, and
+ screen record can not be accessed.
Other:
If you have 'focus' extensions that gray out everything but the focused
-window, you will probably have to disable it. However, if you are using
-compiz, you probably are not using ardesia because there is a plugin for all
-this functionality.
+window, you will probably have to disable it. However, if you are using
+compiz, you probably are not using ardesia because there is a plugin
+for all this functionality.
General:
-Depending on the window manager, you may need to launch as "ardesia -d" to
-obtain control of the tools panel. This may also require tweaking of other
-settings to have the pannel appear on top of the drawing overlay window. You
-may have to toggle "always on top" for the drawing window if you are capable
-of toggling it seperatly from the tool box window.
+Depending on the window manager, you may need to launch as "ardesia
+-d" to obtain control of the tools panel. This may also require
+tweaking of other settings to have the pannel appear on top of the
+drawing overlay window. You may have to toggle "always on top" for the
+drawing window if you are capable of toggling it seperatly from the
+tool box window.
-The "mouse option" only seems to effectively work in KDE and XFCE. This is
-a pass through mode that will interact with the desktop below the drawing
-window.
+The "mouse option" only seems to effectively work in KDE and
+XFCE. This is a pass through mode that will interact with the desktop
+below the drawing window.
The PDF export will allow you to add new pages to a pdf that are screen
captures of when the button is pressed. It does not save vector shapes.
-Here some xprops of the windows if you can control windows based on these:
+Here some xprops of the windows if you can control windows based on
+these:
Tool Box:
WM_CLASS(STRING) = "ardesia", "Ardesia"
diff --git a/misc/ardesia/ardesia.SlackBuild b/misc/ardesia/ardesia.SlackBuild
index 885b3de3d8..9bd0db1aa6 100644
--- a/misc/ardesia/ardesia.SlackBuild
+++ b/misc/ardesia/ardesia.SlackBuild
@@ -6,25 +6,27 @@
# Public Domain
+# 20220408 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - i486 => i586.
+# - remove /usr/share/doc.
+# - do not litter /root/ with desktop-ey files during the build.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ardesia
VERSION=${VERSION:-1.1}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -34,8 +36,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -56,12 +58,21 @@ cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
+# thanks arch linux maintainers
+patch -p1 < $CWD/010-ardesia-gcc10-fix.patch
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+# 20220408 bkw: this thing creates too many files in /root/.local,
+# /root/.config, /root/.gnome... setting HOME fixes it, but would break
+# ccache if it's in use, so:
+mkdir -p .tmphome
+export CCACHE_DIR=${CCACHE_DIR:-$HOME/.ccache}
+export HOME=$( pwd )/.tmphome
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -81,10 +92,12 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+rm -rf $PKG/usr/share/doc
+
# --docdir is not respected and does not install all of the standard document files
# Alternate Fail safe to the standard.
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS COPYING ChangeLog INSTALL NEWS README TODO $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS COPYING ChangeLog NEWS README TODO $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/ardesia/ardesia.info b/misc/ardesia/ardesia.info
index def32515e2..a3d16b1ecb 100644
--- a/misc/ardesia/ardesia.info
+++ b/misc/ardesia/ardesia.info
@@ -1,7 +1,7 @@
PRGNAM="ardesia"
VERSION="1.1"
HOMEPAGE="https://github.com/gfreeau/ardesia"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/ardesia-1.1.tar.gz"
+DOWNLOAD="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/ardesia/ardesia-1.1.tar.gz"
MD5SUM="b0abe145ce4ade50ab897ec658d2d664"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/ardesia/doinst.sh b/misc/ardesia/doinst.sh
index 4a25de5e6f..6f79eae735 100644
--- a/misc/ardesia/doinst.sh
+++ b/misc/ardesia/doinst.sh
@@ -4,7 +4,7 @@ fi
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
- /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ /usr/bin/gtk-update-icon-cache -f usr/share/ardesia/ui/icons >/dev/null 2>&1
fi
fi
diff --git a/misc/ascii/ascii.SlackBuild b/misc/ascii/ascii.SlackBuild
index 21493932c2..76a0b78a16 100644
--- a/misc/ascii/ascii.SlackBuild
+++ b/misc/ascii/ascii.SlackBuild
@@ -17,7 +17,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -35,8 +35,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/asr-manpages/README b/misc/asr-manpages/README
index f6760a6034..71d1ea6f74 100644
--- a/misc/asr-manpages/README
+++ b/misc/asr-manpages/README
@@ -1,8 +1,10 @@
alt.sysadmin.recovery manual pages
-A set of humorous manual pages developed on alt.sysadmin.recovery (don't treat
-them seriously!). They document a set of really useful tools that for some
-strange reason are not included in any implementation of Unix. This includes
-such famous commands as lart, sysadmin, luser, bosskill and others.
+A set of humorous manual pages developed on alt.sysadmin.recovery
+(don't treat them seriously!). They document a set of really
+useful tools that for some strange reason are not included in any
+implementation of Unix. This includes such famous commands as lart,
+sysadmin, luser, bosskill and others.
-The authors recommend these man pages should be installed on every system.
+The authors recommend these man pages should be installed on every
+system.
diff --git a/misc/asr-manpages/asr-manpages.info b/misc/asr-manpages/asr-manpages.info
index 4c95d09953..64fa06dcd2 100644
--- a/misc/asr-manpages/asr-manpages.info
+++ b/misc/asr-manpages/asr-manpages.info
@@ -1,7 +1,7 @@
PRGNAM="asr-manpages"
VERSION="1.3.6"
HOMEPAGE="http://packages.debian.org/stable/asr-manpages"
-DOWNLOAD="http://ftp.de.debian.org/debian/pool/main/a/asr-manpages/asr-manpages_1.3.orig.tar.gz"
+DOWNLOAD="https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/asr-manpages/1.3-6/asr-manpages_1.3.orig.tar.gz"
MD5SUM="ee77b619e01a2d841a45469708d90631"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/asterixInspector/asterixInspector.SlackBuild b/misc/asterixInspector/asterixInspector.SlackBuild
index e8fb43fda9..ecc22e8d08 100644
--- a/misc/asterixInspector/asterixInspector.SlackBuild
+++ b/misc/asterixInspector/asterixInspector.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for asterixInspector
-# Copyright 2012, 2013, 2018, 2019, 2020, 2021 Chris Abela, Malta
+# Copyright 2012, 2013, 2018, 2019, 2020, 2021, 2023 Chris Abela, Malta
# Copyright 2014 Ryan P.C. McQuen, ryanpcmcquen@member.fsf.org, WA
# All rights reserved.
#
@@ -23,10 +23,14 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220408 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - strip binary.
+# - abs path to icon in .desktop.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=asterixInspector
-VERSION=${VERSION:-0.13.1}
+VERSION=${VERSION:-0.13.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -39,9 +43,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -62,18 +63,15 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
qmake-qt5
make
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
mkdir -p $PKG/usr/{bin,share/{applications,pixmaps,asterixInspector}}
-cp -a asterixInspector $PKG/usr/bin
+install -s -m0755 asterixInspector $PKG/usr/bin
cp -a asterixSpecification $PKG/usr/share/asterixInspector
cat images/radar.svg > $PKG/usr/share/pixmaps/asterixInspector.svg
cat $CWD/asterixInspector.desktop > $PKG/usr/share/applications/asterixInspector.desktop
diff --git a/misc/asterixInspector/asterixInspector.desktop b/misc/asterixInspector/asterixInspector.desktop
index c48d3b0911..9a01f3018e 100644
--- a/misc/asterixInspector/asterixInspector.desktop
+++ b/misc/asterixInspector/asterixInspector.desktop
@@ -3,8 +3,7 @@ Name=asterixInspector
GenericName=A viewer for EUROCONTROL ASTERIX files
Categories=Utility;Education;
Exec=asterixInspector
-Icon=asterixInspector
+Icon=/usr/share/pixmaps/asterixInspector.svg
Terminal=false
Type=Application
StartupNotify=true
-
diff --git a/misc/asterixInspector/asterixInspector.info b/misc/asterixInspector/asterixInspector.info
index d9093d6b4f..f985338bd6 100644
--- a/misc/asterixInspector/asterixInspector.info
+++ b/misc/asterixInspector/asterixInspector.info
@@ -1,8 +1,8 @@
PRGNAM="asterixInspector"
-VERSION="0.13.1"
+VERSION="0.13.2"
HOMEPAGE="http://asterix.sourceforge.net"
-DOWNLOAD="http://sourceforge.net/projects/asterix/files/asterixInspector-0.13.1.tar.bz2"
-MD5SUM="50977af54b1ebb51c540f31df67becdf"
+DOWNLOAD="http://sourceforge.net/projects/asterix/files/asterixInspector-0.13.2.tar.bz2"
+MD5SUM="f65ceea9e374674e6a8a5a9d93b00a94"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/asterixInspector/doinst.sh b/misc/asterixInspector/doinst.sh
index aea0f894eb..9a8ded3c60 100644
--- a/misc/asterixInspector/doinst.sh
+++ b/misc/asterixInspector/doinst.sh
@@ -5,9 +5,3 @@ fi
if [ -x /usr/bin/update-mime-database ]; then
/usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi
-
-if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
- if [ -x /usr/bin/gtk-update-icon-cache ]; then
- /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
- fi
-fi
diff --git a/misc/bbrun/bbrun.SlackBuild b/misc/bbrun/bbrun.SlackBuild
index e4d57dd535..b334e2face 100644
--- a/misc/bbrun/bbrun.SlackBuild
+++ b/misc/bbrun/bbrun.SlackBuild
@@ -24,25 +24,26 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220404 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - set and use SLKCFLAGS.
+# - strip binary.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bbrun
VERSION=${VERSION:-1.6}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -52,6 +53,16 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
set -e
rm -rf $PKG
@@ -63,18 +74,19 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
patch -p0 -i $CWD/patches/$PRGNAM-$VERSION-list.patch
patch -p0 -i $CWD/patches/$PRGNAM-$VERSION-makefile.patch
cd $PRGNAM
+export CFLAGS="$SLKCFLAGS -fcommon"
make
mkdir -p $PKG/usr/bin
-cp bbrun $PKG/usr/bin
+install -s -m0755 bbrun $PKG/usr/bin
cd ..
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/misc/bchunk/README b/misc/bchunk/README
index 29247dbda5..d8a3705d00 100644
--- a/misc/bchunk/README
+++ b/misc/bchunk/README
@@ -1 +1,2 @@
-bchunk (bin chunker) is used for converting bin/cue images to ISO images.
+bchunk (bin chunker) is used for converting bin/cue images to ISO
+images.
diff --git a/misc/bchunk/bchunk.SlackBuild b/misc/bchunk/bchunk.SlackBuild
index c802b6d054..f1e495eb79 100644
--- a/misc/bchunk/bchunk.SlackBuild
+++ b/misc/bchunk/bchunk.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
diff --git a/misc/bdf2psf/bdf2psf.SlackBuild b/misc/bdf2psf/bdf2psf.SlackBuild
index 3eb90ec708..30e39142ad 100644
--- a/misc/bdf2psf/bdf2psf.SlackBuild
+++ b/misc/bdf2psf/bdf2psf.SlackBuild
@@ -2,37 +2,39 @@
# Slackware build script for bdf2psf
-# Copyright 2015 Didier Spaier Paruis, France
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# Originally written 2015 Didier Spaier Paris, France
+# Now maintained by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20230818 bkw: No changes, just a note to myself:
+# repology complains that this is outdated, and indeed Debian has a
+# v1.222. However, it's v1.222 of the 'parent' package, console-setup.
+# The contents of Debian's bdf2psf 1.207 and 1.222 .deb packages are
+# identical, except changelog.gz differences that document changes to
+# console-setup (none of which change the bdf2psf portion of it). So
+# this doesn't need an update.
+
+# 20221228 bkw: move ARCH assignment to top of script.
+
+# 20220110 bkw:
+# - take over maintenance.
+# - relicense as WTFPL, with permission from Didier.
+# - update for v1.207.
+# - get rid of temp files.
+# - simplify build.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bdf2psf
-VERSION=${VERSION:-1.131}
+VERSION=${VERSION:-1.207}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
+# perl script
+ARCH=noarch
+
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -42,34 +44,24 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-# perl script
-ARCH=noarch
-
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-ar xvf $CWD/$PRGNAM*deb
-rm control.tar.gz debian-binary
-mv data.tar.xz $PKG
cd $PKG
-tar xvvf data.tar.xz
-rm data.tar.xz
+ar p $CWD/${PRGNAM}_${VERSION}_all.deb data.tar.xz | tar xvfJ -
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-mkdir -p $PKG/usr/{doc/$PRGNAM-$VERSION,man/man1}
-mv $PKG/usr/share/doc/$PRGNAM/{README*,copyright} \
- $PKG/usr/doc/$PRGNAM-$VERSION
-mv $PKG/usr/share/man/man1/* $PKG/usr/man/man1
-rm -r $PKG/usr/share/{man,doc}
-
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+mv $PKG/usr/share/man $PKG/usr/man
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+mv $PKG/usr/share/doc/$PRGNAM/* $PKGDOC
+rm -rf $PKG/usr/share/doc
+
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/bdf2psf/bdf2psf.info b/misc/bdf2psf/bdf2psf.info
index f2b452bc8a..8c2ef4d5ed 100644
--- a/misc/bdf2psf/bdf2psf.info
+++ b/misc/bdf2psf/bdf2psf.info
@@ -1,10 +1,10 @@
PRGNAM="bdf2psf"
-VERSION="1.131"
+VERSION="1.207"
HOMEPAGE="https://packages.qa.debian.org/c/console-setup.html"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/bdf2psf_1.131_all.deb"
-MD5SUM="b2a8b8de9a3ff82cc2504e4568895fae"
+DOWNLOAD="https://slackware.uk/~urchlay/src/bdf2psf_1.207_all.deb"
+MD5SUM="b1e5c76a85c774b4101260d02c5e3661"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Didier Spaier"
-EMAIL="didier at slint dot fr"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/bdfresize/bdfresize.SlackBuild b/misc/bdfresize/bdfresize.SlackBuild
index cfeae4d3b5..4147516524 100644
--- a/misc/bdfresize/bdfresize.SlackBuild
+++ b/misc/bdfresize/bdfresize.SlackBuild
@@ -2,15 +2,19 @@
# Slackware build script for bdfresize
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20210910 bkw: BUILD=2
+# - fix FONTBOUNDINGBIX typo.
+# - add check_factor_args.diff.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bdfresize
VERSION=${VERSION:-1.5}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -22,9 +26,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -57,14 +58,22 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+# 20210910 bkw: this one-liner patch came from Debian
patch -p1 < $CWD/compilefix.diff
+# 20210910 bkw: fix typo in docs
+sed -i 's,FONTBOUNDINGBIX,FONTBOUNDINGBOX,g' README $PRGNAM.1
+
+# 20210910 bkw: if someone tries to use a decimal as a factor,
+# e.g. 1.5, bdfresize silently ignores the .5 and treats the argument
+# as just 1. This patch adds a check to make sure the factors consist
+# only of digits and 0 or 1 slashes. Patch is by the SlackBuild
+# author, who keeps trying to say "-f 1.5" despite all sanity...
+patch -p1 < $CWD/check_factor_args.diff
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
diff --git a/misc/bdfresize/bdfresize.info b/misc/bdfresize/bdfresize.info
index 725f577dc1..e97a07ccd9 100644
--- a/misc/bdfresize/bdfresize.info
+++ b/misc/bdfresize/bdfresize.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/bdfresize/check_factor_args.diff b/misc/bdfresize/check_factor_args.diff
new file mode 100644
index 0000000000..5b9ad32e2c
--- /dev/null
+++ b/misc/bdfresize/check_factor_args.diff
@@ -0,0 +1,48 @@
+diff -Naur bdfresize-1.5/bdfresize.c bdfresize-1.5.patched/bdfresize.c
+--- bdfresize-1.5/bdfresize.c 2001-01-16 07:11:11.000000000 -0500
++++ bdfresize-1.5.patched/bdfresize.c 2021-09-10 14:39:09.553534254 -0400
+@@ -48,6 +48,22 @@
+
+ static int line;
+
++static int factor_is_bad(const char *p) {
++ int slashes = 0;
++ while(*p) {
++ if(*p == '/') {
++ if(++slashes > 1)
++ return 1;
++ } else if(*p >= '0' && *p <= '9') {
++ /* NOP */
++ } else {
++ return 1;
++ }
++ p++;
++ }
++ return 0;
++}
++
+ int
+ main(int argc, char *argv[])
+ {
+@@ -64,18 +80,21 @@
+ if (blackness <= 0) err ++;
+ break;
+ case 'w':
++ err += factor_is_bad(optarg);
+ numerator_x = atoi(optarg);
+ denominator_x = strchr(optarg,'/')
+ ? atoi(strchr(optarg,'/')+1) : 1;
+ if (numerator_x <= 0 || denominator_x <= 0) err ++;
+ break;
+ case 'h':
++ err += factor_is_bad(optarg);
+ numerator_y = atoi(optarg);
+ denominator_y = strchr(optarg,'/')
+ ? atoi(strchr(optarg,'/')+1) : 1;
+ if (numerator_y <= 0 || denominator_y <= 0) err ++;
+ break;
+ case 'f':
++ err += factor_is_bad(optarg);
+ numerator_x = numerator_y = atoi(optarg);
+ denominator_x = denominator_y = strchr(optarg,'/')
+ ? atoi(strchr(optarg,'/')+1) : 1;
diff --git a/misc/bee-host/README b/misc/bee-host/README
new file mode 100644
index 0000000000..ba0fb101cd
--- /dev/null
+++ b/misc/bee-host/README
@@ -0,0 +1,10 @@
+Bee-host is a native messaging host application for Browser's External
+Editor extension, which allows to edit text fields with an external
+editor.
+
+Bee-host is required for the extension to work. The extension supports
+Mozilla Firefox, Google Chrome, and Chromium based browsers (Vivaldi,
+Brave, Mircosoft Edge, etc.). It can be installed from the Firefox and
+Chrome web stores:
+https://addons.mozilla.org/en-US/firefox/addon/external-editor/
+https://chromewebstore.google.com/detail/browsers-external-editor/moakhilhbeednkjahjmomncgigcoemoi
diff --git a/misc/bee-host/bee-host.SlackBuild b/misc/bee-host/bee-host.SlackBuild
new file mode 100644
index 0000000000..6273c371cf
--- /dev/null
+++ b/misc/bee-host/bee-host.SlackBuild
@@ -0,0 +1,114 @@
+#!/bin/bash
+
+# Slackware build script for bee-host
+
+# Copyright 2024, Alexander Verbovetsky, Moscow, Russia
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=bee-host
+VERSION=${VERSION:-1.3.7.2}
+SVERSION="1.3.7-2"
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$SVERSION
+tar xvf $CWD/$PRGNAM-$SVERSION.tar.gz
+cd $PRGNAM-$SVERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+sed -i -e 's|@BEECTL_MANIFEST_TARGET_PATH@|/usr/libexec/beectl|' \
+ *bee.json*
+install -Dm644 firefox*bee.json* \
+$PKG/usr/lib${LIBDIRSUFFIX}/mozilla/native-messaging-hosts/com.ruslan_osmanov.bee.json
+install -Dm644 chrome*bee.json* \
+$PKG/etc/opt/chrome/native-messaging-hosts/com.ruslan_osmanov.bee.json
+
+sed -i \
+ -e '/^# cJSON and cJSONUtils/,/^set(CJSON_DOWNLOAD_DIR "\${download_dir}")/d' \
+ -e '/^add_custom_command(TARGET beectl PRE_BUILD/,/COMMAND touch "\${CJSON_SOURCE_DIR}\/cJSON.c")/d' \
+ -e '/"\${CJSON_SOURCE_DIR}\/cJSON.c"/d' \
+ -e '/^add_dependencies(beectl cjson)/d' CMakeLists.txt
+
+mkdir -p build
+cd build
+ LDFLAGS+="-lcjson" cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ install -Dsm755 beectl -t $PKG/usr/libexec
+cd ..
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README.* changelog $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/bee-host/bee-host.info b/misc/bee-host/bee-host.info
new file mode 100644
index 0000000000..482bdfde9c
--- /dev/null
+++ b/misc/bee-host/bee-host.info
@@ -0,0 +1,10 @@
+PRGNAM="bee-host"
+VERSION="1.3.7.2"
+HOMEPAGE="https://github.com/rosmanov/bee-host"
+DOWNLOAD="https://github.com/rosmanov/bee-host/archive/1.3.7-2/bee-host-1.3.7-2.tar.gz"
+MD5SUM="27ca5456416ee0443d3af3594661999b"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="cJSON %README%"
+MAINTAINER="Alexander Verbovetsky"
+EMAIL="alik@ejik.org"
diff --git a/misc/bee-host/slack-desc b/misc/bee-host/slack-desc
new file mode 100644
index 0000000000..c008783dab
--- /dev/null
+++ b/misc/bee-host/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+bee-host: bee-host (native messaging app)
+bee-host:
+bee-host: Bee-host is a native messaging host application for Browser's
+bee-host: External Editor extension, which allows to edit text fields with
+bee-host: an external editor.
+bee-host:
+bee-host: Bee-host is required for the extension to work. The extension
+bee-host: supports Mozilla Firefox, Google Chrome, and Chromium based
+bee-host: browsers (Vivaldi, Brave, Mircosoft Edge, etc.).
+bee-host:
+bee-host: Homepage: https://github.com/rosmanov/bee-host
diff --git a/misc/beep/README b/misc/beep/README
index f78c1af8fd..845ecb4064 100644
--- a/misc/beep/README
+++ b/misc/beep/README
@@ -1,15 +1,14 @@
-beep does exactly what you would expect: it beeps.
+beep does exactly what you would expect: it beeps.
-Unlike printf("\a"), beep allows you to control pitch, duration, and
-repetitions. Its job is to live inside shell/perl scripts and allow more
-granularity than one would otherwise have. It is controlled completely
-through command line options. It's not supposed to be complex, and it
-isn't - but it makes system monitoring (or whatever else it gets hacked
-onto) that much more informative.
-
-You may need to set beep executable suid; thre are potential security
-issues with doing so, but the beep source code is very small and easily
-auditable, and you won't get a lot of use of it unless it's suid, but
-that's your call. See the SlackBuild script for the proper variable to
-change if you want to install it suid.
+Unlike printf("\a"), beep allows you to control pitch, duration, and
+repetitions. Its job is to live inside shell/perl scripts and allow
+more granularity than one would otherwise have. It is controlled
+completely through command line options. It's not supposed to be
+complex, and it isn't - but it makes system monitoring (or whatever
+else it gets hacked onto) that much more informative.
+You may need to set beep executable suid; thre are potential security
+issues with doing so, but the beep source code is very small and
+easily auditable, and you won't get a lot of use of it unless it's
+suid, but that's your call. See the SlackBuild script for the proper
+variable to change if you want to install it suid.
diff --git a/misc/beep/beep.SlackBuild b/misc/beep/beep.SlackBuild
index 1b1d736fbd..7bc0e4c052 100644
--- a/misc/beep/beep.SlackBuild
+++ b/misc/beep/beep.SlackBuild
@@ -17,7 +17,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -35,8 +35,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
elif [ "$ARCH" = "x86_64" ]; then
diff --git a/misc/binclock/README b/misc/binclock/README
new file mode 100644
index 0000000000..fdcf0c629c
--- /dev/null
+++ b/misc/binclock/README
@@ -0,0 +1,5 @@
+binclock is a simple program to display an ASCII binary clock in the
+terminal. Comes with fancy color support as well.
+
+You can also change the character it uses to display "dots" in a
+config file, stored either in ~/.binclockrc or /etc/binclockrc .
diff --git a/misc/binclock/binclock.SlackBuild b/misc/binclock/binclock.SlackBuild
new file mode 100644
index 0000000000..23ac200bd5
--- /dev/null
+++ b/misc/binclock/binclock.SlackBuild
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+# Slackware build script for binclock
+
+# Copyright 2023 Tobias M. Monckton
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=binclock
+VERSION=${VERSION:-1.5}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+# There's no need for LIBDIRSUFFIX for this piece of software, so only
+# set arch-appropriate SLKCFLAGS.
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ :
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p $PKG/usr/man/man1 $PKG/usr/bin $PKG/usr/bin
+make DESTDIR=$PKG CFLAGS="${SLKCFLAGS}"
+make install DESTDIR=$PKG MANPATH=$PKG/usr/man/man1 HOME=$(pwd) INSPATH=$PKG/usr/bin
+
+gzip -9 $PKG/usr/man/man1/$PRGNAM.1
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cp binclockrc $PKG/usr/doc/$PRGNAM-$VERSION/${PRGNAM}rc.example
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/binclock/binclock.info b/misc/binclock/binclock.info
new file mode 100644
index 0000000000..146d6ded1b
--- /dev/null
+++ b/misc/binclock/binclock.info
@@ -0,0 +1,10 @@
+PRGNAM="binclock"
+VERSION="1.5"
+HOMEPAGE="http://www.ngold.de/binclock/"
+DOWNLOAD="http://www.ngolde.de/download/binclock-1.5.tar.gz"
+MD5SUM="d26ea67970c782ee56c87595ed3bfef0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Tobias M. Monckton"
+EMAIL="tmmonckton@gmail.com"
diff --git a/misc/binclock/slack-desc b/misc/binclock/slack-desc
new file mode 100644
index 0000000000..06af6d2fcf
--- /dev/null
+++ b/misc/binclock/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+binclock: binclock (simple ASCII binary clock for the terminal)
+binclock:
+binclock: binclock is a simple ASCII binary clock for the terminal, with color
+binclock: support and the ability to customize the "dots" used for printing
+binclock: the system time.
+binclock:
+binclock:
+binclock:
+binclock:
+binclock:
+binclock:
diff --git a/misc/biosdisk/README b/misc/biosdisk/README
index 772fb9b368..eb6fc812be 100644
--- a/misc/biosdisk/README
+++ b/misc/biosdisk/README
@@ -1,7 +1,8 @@
-biosdisk is a bunch of scripts are creating disk images with freedos and
-autoexec.bat to automatically run the bios executable.
+biosdisk is a bunch of scripts are creating disk images with freedos
+and autoexec.bat to automatically run the bios executable.
-It should be suitable for any update of firmware or BIOS that can run from
-diskette and freeDOS.
+It should be suitable for any update of firmware or BIOS that can run
+from diskette and freeDOS.
-You can create (with mkisofs) a cd iso image that contains the floppy image.
+You can create (with mkisofs) a cd iso image that contains the floppy
+image.
diff --git a/misc/biosdisk/biosdisk.info b/misc/biosdisk/biosdisk.info
index e6295afde9..1507dc97e2 100644
--- a/misc/biosdisk/biosdisk.info
+++ b/misc/biosdisk/biosdisk.info
@@ -1,7 +1,7 @@
PRGNAM="biosdisk"
VERSION="0.75_2"
HOMEPAGE="https://web.archive.org/web/20130725184444/http://linux.dell.com/biosdisk/"
-DOWNLOAD="ftp://ftp.gunadarma.ac.id/mirrors/gentoo/distfiles/biosdisk-0.75-2.tar.gz"
+DOWNLOAD="https://slackware.uk/~urchlay/src/biosdisk-0.75-2.tar.gz"
MD5SUM="8add054007966fc176042bff92ee417c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/birthday/birthday.SlackBuild b/misc/birthday/birthday.SlackBuild
index 6f90ea847c..bdb38f81ac 100644
--- a/misc/birthday/birthday.SlackBuild
+++ b/misc/birthday/birthday.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/bitwarden-desktop/README b/misc/bitwarden-desktop/README
new file mode 100644
index 0000000000..4d233beb10
--- /dev/null
+++ b/misc/bitwarden-desktop/README
@@ -0,0 +1,3 @@
+Bitwarden
+
+Bitwarden client applications (desktop)
diff --git a/misc/bitwarden-desktop/bitwarden-desktop.SlackBuild b/misc/bitwarden-desktop/bitwarden-desktop.SlackBuild
new file mode 100644
index 0000000000..ec9dc75610
--- /dev/null
+++ b/misc/bitwarden-desktop/bitwarden-desktop.SlackBuild
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+# Slackware build script for bitwarden-desktop
+#
+# Copyright 2022 marav, Paris, FR
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=bitwarden-desktop
+SRCNAM=bitwarden
+VERSION=${VERSION:-2024.3.2}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ DEBARCH="i386"
+ echo "This package is currently only available for 64bit."
+ exit 1
+elif [ "$ARCH" = "x86_64" ]; then
+ DEBARCH="amd64"
+else
+ echo "Package for $(uname -m) architecture is not available."
+ exit 1
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $PKG
+ar p $CWD/Bitwarden-${VERSION}-amd64.deb data.tar.xz | tar Jxv
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a $PKG/usr/share/doc/$SRCNAM/* $PKG/opt/Bitwarden/LICENSE* \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+rm -rf $PKG/usr/share/doc
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/bitwarden-desktop/bitwarden-desktop.info b/misc/bitwarden-desktop/bitwarden-desktop.info
new file mode 100644
index 0000000000..967b85825c
--- /dev/null
+++ b/misc/bitwarden-desktop/bitwarden-desktop.info
@@ -0,0 +1,10 @@
+PRGNAM="bitwarden-desktop"
+VERSION="2024.3.2"
+HOMEPAGE="https://bitwarden.com/"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://github.com/bitwarden/clients/releases/download/desktop-v2024.3.2/Bitwarden-2024.3.2-amd64.deb"
+MD5SUM_x86_64="8d7d6ab9e973c6890267ea72c3e61e61"
+REQUIRES=""
+MAINTAINER="marav"
+EMAIL="marav8@free.fr"
diff --git a/misc/nvclock/doinst.sh b/misc/bitwarden-desktop/doinst.sh
index 4a25de5e6f..7c2b4d5242 100644
--- a/misc/nvclock/doinst.sh
+++ b/misc/bitwarden-desktop/doinst.sh
@@ -8,3 +8,4 @@ if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
fi
fi
+
diff --git a/misc/bitwarden-desktop/slack-desc b/misc/bitwarden-desktop/slack-desc
new file mode 100644
index 0000000000..283e680183
--- /dev/null
+++ b/misc/bitwarden-desktop/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+bitwarden-desktop: bitwarden-desktop (Open source password management solutions)
+bitwarden-desktop:
+bitwarden-desktop: Bitwarden is an Open source password management solutions for
+bitwarden-desktop: individuals, teams, and business organizations.
+bitwarden-desktop:
+bitwarden-desktop:
+bitwarden-desktop:
+bitwarden-desktop: https://github.com/bitwarden/clients
+bitwarden-desktop:
+bitwarden-desktop:
+bitwarden-desktop:
diff --git a/misc/bodr/bodr.SlackBuild b/misc/bodr/bodr.SlackBuild
index bf7f2e4636..9eeabe1256 100644
--- a/misc/bodr/bodr.SlackBuild
+++ b/misc/bodr/bodr.SlackBuild
@@ -22,19 +22,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220407 bkw: Modified by SlackBuilds.org, BUILD=3:
+# - do not install README with execute permissions.
+# - remove useless INSTALL from doc dir.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bodr
VERSION=${VERSION:-10}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -55,9 +56,9 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
./configure \
--prefix=/usr \
@@ -67,14 +68,12 @@ find -L . \
--docdir=/usr/doc/$PRGNAM-$VERSION
make
-make DESTDIR=$PKG install
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+make DESTDIR=$PKG install-strip
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+chmod 0644 README
cp -a \
- AUTHORS ChangeLog COPYING INSTALL NEWS README THANKS TODO \
+ AUTHORS ChangeLog COPYING NEWS README THANKS TODO \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/boncuk/README b/misc/boncuk/README
index cf824e2902..1748f8fc76 100644
--- a/misc/boncuk/README
+++ b/misc/boncuk/README
@@ -1,6 +1,8 @@
-Boncuk is a simple QT based Turkish-English and English-Turkish dictionary
-which can do off-line and on-line look-ups. By default, it will install
-the off-line word look-up database in /usr/share/boncuk/. If you don't
-want to use the off-line word database (to instead use only the on-line
-word look-up), run the script like this:
+Boncuk is a simple QT based Turkish-English and English-Turkish
+dictionary which can do off-line and on-line look-ups. By
+default, it will install the off-line word look-up database in
+/usr/share/boncuk/. If you don't want to use the off-line word
+database (to instead use only the on-line word look-up), run the
+script like this:
+
DICT_INSTALL=NO ./boncuk.SlackBuild.
diff --git a/misc/boncuk/boncuk.SlackBuild b/misc/boncuk/boncuk.SlackBuild
index cdf69a5ce7..4b63f48a30 100644
--- a/misc/boncuk/boncuk.SlackBuild
+++ b/misc/boncuk/boncuk.SlackBuild
@@ -36,7 +36,7 @@ DICT_VERSION=${DICT_VERSION:-0.1.1}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -54,8 +54,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -83,6 +83,7 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+. /etc/profile.d/qt4.sh
lrelease boncuk.pro
qmake QMAKE_CXXFLAGS="$SLKCFLAGS -fpermissive"
make
diff --git a/misc/boncuk/boncuk.info b/misc/boncuk/boncuk.info
index 342abee123..8c86404d5b 100644
--- a/misc/boncuk/boncuk.info
+++ b/misc/boncuk/boncuk.info
@@ -7,6 +7,6 @@ MD5SUM="7095e5b1de358d79eada315f47915d59 \
c02201294ec15d45549a05a9455b2811"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="qt4"
MAINTAINER="Ozan Türkyılmaz"
EMAIL="ozan.turkyilmaz@gmail.com"
diff --git a/misc/boxes/boxes.SlackBuild b/misc/boxes/boxes.SlackBuild
index 5e9e0d93e4..be62ad7ae1 100644
--- a/misc/boxes/boxes.SlackBuild
+++ b/misc/boxes/boxes.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/boxes/boxes.info b/misc/boxes/boxes.info
index ac14835fcf..55a96769ab 100644
--- a/misc/boxes/boxes.info
+++ b/misc/boxes/boxes.info
@@ -1,7 +1,7 @@
PRGNAM="boxes"
VERSION="1.1.2"
HOMEPAGE="http://boxes.thomasjensen.com/"
-DOWNLOAD="https://github.com/ascii-boxes/boxes/archive/v1.1.2.tar.gz"
+DOWNLOAD="https://github.com/ascii-boxes/boxes/archive/v1.1.2/boxes-1.1.2.tar.gz"
MD5SUM="9742c8a988869ed0803891f112ebbf5b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/bsdmainutils/README b/misc/bsdmainutils/README
index b7bf2d7296..80227492de 100644
--- a/misc/bsdmainutils/README
+++ b/misc/bsdmainutils/README
@@ -1,18 +1,21 @@
-This is the bsdmainutils package from Debian. It's a collection of common BSD
-utilities, compiled from different sources, by the Debian folks. It includes
-tools such as the classic 'calendar'.
+This is the bsdmainutils package from Debian. It's a collection of
+common BSD utilities, compiled from different sources, by the Debian
+folks. It includes tools such as the classic 'calendar'.
-This SlackBuild uses the Debian sources to create a suitable package for
-Slackware. Hdate (and it's python bindings) is a build-time dependency, that
-is built in this same package, but not installed. Because it's a package for
-Slackware, and not Debian, it bears the following differences from the
-original Debian package:
-- Utilities that conflict with Slackware's util-linux have been removed.
-- /etc/cron.daily/bsdmainutils and /etc/default/bsdmainutils have been
- installed in /usr/doc as cron.daily, and bsdmainutils.default, respectively.
- Please verify that these scripts work on your machine before using them in
- production. They were tailored for Debian, not Slackware!
-- The postinst and prerm scripts aren't installed, because they're unnecessary
- in the context of Slackware.
-- Slight structure alterations to fit with the Slackware filesystem. See the
- SlackBuild for more details.
+This SlackBuild uses the Debian sources to create a suitable
+package for Slackware. Hdate (and its python bindings) is a
+build-time dependency, that is built in this same package, but not
+installed. Because it's a package for Slackware, and not Debian, it
+bears the following differences from the original Debian package:
+
+- Utilities that conflict with Slackware's util-linux have been
+ removed.
+- /etc/cron.daily/bsdmainutils and /etc/default/bsdmainutils have
+ been installed in /usr/doc as cron.daily, and bsdmainutils.default,
+ respectively. Please verify that these scripts work on your machine
+ before using them in production. They were tailored for Debian, not
+ Slackware!
+- The postinst and prerm scripts aren't installed, because they're
+ unnecessary in the context of Slackware.
+- Slight structure alterations to fit with the Slackware filesystem.
+ See the SlackBuild for more details.
diff --git a/misc/bsdsfv/README b/misc/bsdsfv/README
index 81d988f3f5..b700f72ed6 100644
--- a/misc/bsdsfv/README
+++ b/misc/bsdsfv/README
@@ -5,5 +5,10 @@ You can use bsdsfv on your own computer as well as on your site.
It is known to be very flexible and can be used by other programs.
It is released under the terms of the BSD license.
-Added option COLOR=yes if you want color in output,
-it's very useful if you check big sfv files to find errors fast.
+Compile time option: by default, bsdsfv is built with color output
+support, which is very useful if you're checking big sfv files to find
+errors fast. You can export COLOR=no in the script's environment if
+you don't want color output.
+
+Note: there's no man page for bsdsfv. The documentation can be found
+in /usr/doc/bsdsfv-$VERSION/MANUAL instead.
diff --git a/misc/bsdsfv/bsdsfv.SlackBuild b/misc/bsdsfv/bsdsfv.SlackBuild
index ec0ca1d75d..f13cbb03bf 100644
--- a/misc/bsdsfv/bsdsfv.SlackBuild
+++ b/misc/bsdsfv/bsdsfv.SlackBuild
@@ -22,11 +22,15 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220404 bkw: Modified by SlackBuilds.org, BUILD=3:
+# - do not install non-troff MANUAL in /usr/man (use /usr/doc instead).
+# - enable COLOR=yes by default (COLOR=no supported still).
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=bsdsfv
VERSION=${VERSION:-1.18}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +42,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -49,7 +50,6 @@ fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-COLOR=${COLOR:-no}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
@@ -59,43 +59,41 @@ elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
fi
+set -e
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT $PKG/usr/bin
-cd $TMP || exit 1
+cd $TMP
rm -rf $PRGNAM-$VERSION
tar -xvzf $CWD/$PRGNAM-$VERSION.tar.gz || exit 1
mv $PRGNAM $PRGNAM-$VERSION
-cd $PRGNAM-$VERSION || exit 1
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
#64bit patch borrowed from gentoo
patch -p1 < $CWD/bsdsfv-1.18-64bit.patch
-if [ "$COLOR" != no ]; then
+if [ "${COLOR:-yes}" != no ]; then
#colorpatch made with help of pj's old gentoo patch
patch -p1 < $CWD/bsdsfv-1.18-color.patch
fi
-make CFLAGS="$SLKCFLAGS -Wall" || exit 1
-make INSTALL_PREFIX=$PKG/usr install || exit 1
+make CFLAGS="$SLKCFLAGS -Wall"
+make INSTALL_PREFIX=$PKG/usr install
find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-mkdir -p $PKG/usr/man/man1
-cp MANUAL $PKG/usr/man/man1/bsdsfv.1
-( cd $PKG/usr/man
- find . -type f -exec gzip -9 {} \;
- for i in $(find . -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
- )
+# 20220404 bkw: the MANUAL file is *not* a man page, and should not be
+# installed to /usr/man.
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README MANUAL $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/ccze/README b/misc/ccze/README
index aecca5ded1..a38b720f02 100644
--- a/misc/ccze/README
+++ b/misc/ccze/README
@@ -1,3 +1,3 @@
CCZE is a robust and modular log colorizer with plugins for apm, exim,
-fetchmail, httpd, postfix, procmail, squid, syslog, ulogd, vsftpd, xferlog,
-and more.
+fetchmail, httpd, postfix, procmail, squid, syslog, ulogd, vsftpd,
+xferlog, and more.
diff --git a/misc/cflow/cflow.SlackBuild b/misc/cflow/cflow.SlackBuild
index dedab2dca7..f65735cb97 100644
--- a/misc/cflow/cflow.SlackBuild
+++ b/misc/cflow/cflow.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/chm2pdf/README b/misc/chm2pdf/README
index 43fd702c71..392c4e2f90 100644
--- a/misc/chm2pdf/README
+++ b/misc/chm2pdf/README
@@ -1 +1,2 @@
-chm2pdf is a simple Python script that converts CHM files into PDF files.
+chm2pdf is a simple Python script that converts CHM files into PDF
+files.
diff --git a/misc/chm2pdf/chm2pdf.SlackBuild b/misc/chm2pdf/chm2pdf.SlackBuild
index dd528d79f8..206fe87703 100644
--- a/misc/chm2pdf/chm2pdf.SlackBuild
+++ b/misc/chm2pdf/chm2pdf.SlackBuild
@@ -35,7 +35,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
diff --git a/misc/ciso/README b/misc/ciso/README
index f6abc53f7e..e537efed35 100644
--- a/misc/ciso/README
+++ b/misc/ciso/README
@@ -1 +1,4 @@
-Ciso is a small tool to compress your psp iso to cso format.
+ciso (compress/decompress CSO images)
+
+ciso is a small tool to compress PlayStation Portable ISO images to
+CSO (compressed ISO) format, or decompress a CSO to an ISO.
diff --git a/misc/ciso/ciso.1 b/misc/ciso/ciso.1
new file mode 100644
index 0000000000..47d61eace6
--- /dev/null
+++ b/misc/ciso/ciso.1
@@ -0,0 +1,93 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "CISO" 1 "2022-01-26" "1.0.0" "SlackBuilds.org"
+.SH NAME
+ciso \- compress/decompress CSO images
+.\" RST source for ciso(1) man page. Convert with:
+.
+.\" rst2man.py ciso.rst > ciso.1
+.
+.\" rst2man.py comes from the SBo development/docutils package.
+.
+.SH SYNOPSIS
+.sp
+ciso \fIlevel\fP \fIinput\-file\fP \fIoutput\-file\fP
+.SH DESCRIPTION
+.sp
+CSO (compressed ISO) images are used with the Sony Playstation
+Portable game console.
+.sp
+\fBciso\fP compresses ISO images to CSO, or decompresses CSO to ISO. This
+is lossless compression.
+.sp
+To compress, set \fIlevel\fP to a number between 1 (least compression,
+fastest) and 9 (most compression, slowest). Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ciso 5 something.iso something.cso
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+To decompress, set \fIlevel\fP to 0 (zero). Example:
+.INDENT 0.0
+.INDENT 3.5
+.sp
+.nf
+.ft C
+ciso 0 something.cso something.iso
+.ft P
+.fi
+.UNINDENT
+.UNINDENT
+.sp
+All 3 arguments are required. With missing arguments, \fBciso\fP will
+print its built\-in usage message and exit.
+.sp
+The CSO images produced by \fIciso\fP are "version 1". For more information
+on the CSO image format, see: \fI\%https://en.wikipedia.org/wiki/.CSO\fP
+.SH COPYRIGHT
+.sp
+See the file /usr/doc/ciso\-1.0.0/license for license information.
+.SH AUTHORS
+.sp
+\fBciso\fP was written by BOOSTER.
+.sp
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+.SH SEE ALSO
+.sp
+The \fBciso\fP homepage: \fI\%https://sourceforge.net/projects/ciso/\fP
+.\" Generated by docutils manpage writer.
+.
diff --git a/misc/ciso/ciso.SlackBuild b/misc/ciso/ciso.SlackBuild
index 0262b5bddc..12b0356f31 100644
--- a/misc/ciso/ciso.SlackBuild
+++ b/misc/ciso/ciso.SlackBuild
@@ -2,31 +2,23 @@
# Slackware build script for ciso
-# Copyright 2008-2009 Tarantino Antonino <metrofox9@gmail.com>
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# Originally written by Tarantino Antonino.
+# Modified and now maintained by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20220126 bkw: BUILD=3
+# - take over maintenance.
+# - rework -p0 patches into one -p1 patch.
+# - add man page.
+# - actually use SLKCFLAGS.
+# - fix banner so it shows the right version number.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ciso
VERSION=${VERSION:-1.0.0}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +30,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -69,26 +58,28 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+chmod 644 *
+
+# Patch does this:
+# - fix x86_64 build.
+# - add missing includes.
+# - add CFLAGS support to Makefile.
+# - make the banner show the actual version number.
-# Patching the source for compiling better on x64 arch and for avoiding warnings during compilation
-patch -p0 < $CWD/ciso.h.patch
-patch -p0 < $CWD/fix_includes.patch
+patch -p1 < $CWD/compilefix.diff
mkdir -p $PKG/usr/bin
-make CC="gcc $SLKCFLAGS"
+make CFLAGS="$SLKCFLAGS -Wl,-s"
make install DESTDIR=$PKG
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+# 20220126 bkw: man page explains WTF a CSO image is (I didn't know).
+mkdir -p $PKG/usr/man/man1
+gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp license $PKG/usr/doc/$PRGNAM-$VERSION
-chmod 0644 $PKG/usr/doc/$PRGNAM-$VERSION/*
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a license $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/ciso/ciso.h.patch b/misc/ciso/ciso.h.patch
deleted file mode 100644
index ff8fc16dd1..0000000000
--- a/misc/ciso/ciso.h.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- ciso.h~ 2006-11-03 21:53:02.000000000 +0100
-+++ ciso.h 2010-06-27 13:54:03.148928062 +0200
-@@ -28,9 +28,9 @@
- typedef struct ciso_header
- {
- unsigned char magic[4]; /* +00 : 'C','I','S','O' */
-- unsigned long header_size; /* +04 : header size (==0x18) */
-+ uint32_t header_size; /* +04 : header size (==0x18) */
- unsigned long long total_bytes; /* +08 : number of original data size */
-- unsigned long block_size; /* +10 : number of compressed block size */
-+ uint32_t block_size; /* +10 : number of compressed block size */
- unsigned char ver; /* +14 : version 01 */
- unsigned char align; /* +15 : align of index value */
- unsigned char rsv_06[2]; /* +16 : reserved */
diff --git a/misc/ciso/ciso.info b/misc/ciso/ciso.info
index b110bb025e..fab0861594 100644
--- a/misc/ciso/ciso.info
+++ b/misc/ciso/ciso.info
@@ -6,5 +6,5 @@ MD5SUM="6091333f30fd61852d7d629b937aee34"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Tarantino Antonino"
-EMAIL="metrofox9@gmail.com"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/ciso/ciso.rst b/misc/ciso/ciso.rst
new file mode 100644
index 0000000000..6b2eb9c12f
--- /dev/null
+++ b/misc/ciso/ciso.rst
@@ -0,0 +1,66 @@
+.. RST source for ciso(1) man page. Convert with:
+.. rst2man.py ciso.rst > ciso.1
+.. rst2man.py comes from the SBo development/docutils package.
+
+.. |version| replace:: 1.0.0
+.. |date| date::
+
+====
+ciso
+====
+
+------------------------------
+compress/decompress CSO images
+------------------------------
+
+:Manual section: 1
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+ciso *level* *input-file* *output-file*
+
+DESCRIPTION
+===========
+
+CSO (compressed ISO) images are used with the Sony Playstation
+Portable game console.
+
+**ciso** compresses ISO images to CSO, or decompresses CSO to ISO. This
+is lossless compression.
+
+To compress, set *level* to a number between 1 (least compression,
+fastest) and 9 (most compression, slowest). Example::
+
+ ciso 5 something.iso something.cso
+
+To decompress, set *level* to 0 (zero). Example::
+
+ ciso 0 something.cso something.iso
+
+All 3 arguments are required. With missing arguments, **ciso** will
+print its built-in usage message and exit.
+
+The CSO images produced by *ciso* are "version 1". For more information
+on the CSO image format, see: https://en.wikipedia.org/wiki/.CSO
+
+COPYRIGHT
+=========
+
+See the file /usr/doc/ciso-|version|/license for license information.
+
+AUTHORS
+=======
+
+**ciso** was written by BOOSTER.
+
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+
+SEE ALSO
+========
+
+The **ciso** homepage: https://sourceforge.net/projects/ciso/
diff --git a/misc/ciso/compilefix.diff b/misc/ciso/compilefix.diff
new file mode 100644
index 0000000000..2c8d689c9a
--- /dev/null
+++ b/misc/ciso/compilefix.diff
@@ -0,0 +1,54 @@
+diff -Naur ciso-1.0.0/Makefile ciso-1.0.0.patched/Makefile
+--- ciso-1.0.0/Makefile 2006-11-03 15:13:32.000000000 -0500
++++ ciso-1.0.0.patched/Makefile 2022-01-26 13:07:45.226989171 -0500
+@@ -8,10 +8,10 @@
+
+ all : ciso
+ ciso : ciso.o
+- gcc -o ciso ciso.o -lz
++ gcc $(CFLAGS) -o ciso ciso.o -lz
+
+ ciso.o : ciso.c
+- gcc -o ciso.o -c ciso.c
++ gcc $(CFLAGS) -o ciso.o -c ciso.c
+
+ install :
+ $(INSTALL) -m 755 ciso $(USRBINDIR)/ciso
+diff -Naur ciso-1.0.0/ciso.c ciso-1.0.0.patched/ciso.c
+--- ciso-1.0.0/ciso.c 2006-11-03 15:53:29.000000000 -0500
++++ ciso-1.0.0.patched/ciso.c 2022-01-26 13:10:25.148974634 -0500
+@@ -22,8 +22,10 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <stdint.h>
+ #include <zlib.h> /* /usr(/local)/include/zlib.h */
+ #include <zconf.h>
++#include <string.h>
+
+ #include "ciso.h"
+
+@@ -401,7 +403,7 @@
+ int level;
+ int result;
+
+- fprintf(stderr, "Compressed ISO9660 converter Ver.1.01 by BOOSTER\n");
++ fprintf(stderr, "Compressed ISO9660 converter Ver.1.0.0 by BOOSTER\n");
+
+ if (argc != 4)
+ {
+diff -Naur ciso-1.0.0/ciso.h ciso-1.0.0.patched/ciso.h
+--- ciso-1.0.0/ciso.h 2006-11-03 15:53:02.000000000 -0500
++++ ciso-1.0.0.patched/ciso.h 2022-01-26 11:39:19.537471479 -0500
+@@ -28,9 +28,9 @@
+ typedef struct ciso_header
+ {
+ unsigned char magic[4]; /* +00 : 'C','I','S','O' */
+- unsigned long header_size; /* +04 : header size (==0x18) */
++ uint32_t header_size; /* +04 : header size (==0x18) */
+ unsigned long long total_bytes; /* +08 : number of original data size */
+- unsigned long block_size; /* +10 : number of compressed block size */
++ uint32_t block_size; /* +10 : number of compressed block size */
+ unsigned char ver; /* +14 : version 01 */
+ unsigned char align; /* +15 : align of index value */
+ unsigned char rsv_06[2]; /* +16 : reserved */
diff --git a/misc/ciso/fix_includes.patch b/misc/ciso/fix_includes.patch
deleted file mode 100644
index 3ba61e5628..0000000000
--- a/misc/ciso/fix_includes.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- ciso.c~ 2010-06-16 13:02:45.044863179 +0200
-+++ ciso.c 2010-06-16 13:02:13.348862969 +0200
-@@ -22,8 +22,10 @@
-
- #include <stdio.h>
- #include <stdlib.h>
-+#include <stdint.h>
- #include <zlib.h> /* /usr(/local)/include/zlib.h */
- #include <zconf.h>
-+#include <string.h>
-
- #include "ciso.h"
-
diff --git a/misc/ciso/slack-desc b/misc/ciso/slack-desc
index 034e66f537..8d944a8df4 100644
--- a/misc/ciso/slack-desc
+++ b/misc/ciso/slack-desc
@@ -6,11 +6,11 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-ciso: ciso (Compress ISOs)
+ciso: ciso (compress/decompress CSO images)
ciso:
-ciso: Ciso is a small tool to compress your psp iso to cso format.
+ciso: ciso is a small tool to compress PlayStation Portable ISO images to
+ciso: CSO (compressed ISO) format, or decompress a CSO to an ISO.
ciso:
-ciso: Homepage: http://www.ciso.tenshu.fr
ciso:
ciso:
ciso:
diff --git a/misc/cksfv/README b/misc/cksfv/README
index c42ea03260..99ca73292f 100644
--- a/misc/cksfv/README
+++ b/misc/cksfv/README
@@ -8,10 +8,11 @@ downloaded files. Also, it can be used to create new .sfv files.
cksfv is a command line tool that uses crc32 checksum to verify file
integrity. .sfv is simple file verification.
-There is a script to integrate this tool with GNOME's Nautilus file manager,
-but since GNOME isn't included in Slackware, it is included as part of the
-documentation instead of in the normal location. You can install it on your
-own or modify the SlackBuild script to do so. It can be found under the
-"./scripts" directory of the source code, and is called CheckSFV in the
-resulting package's documentation directory. All you need to do is to copy
-the "CheckSFV" file to $HOME/.gnome2/nautilus-scripts
+There is a script to integrate this tool with GNOME's Nautilus file
+manager, but since GNOME isn't included in Slackware, it is included
+as part of the documentation instead of in the normal location.
+You can install it on your own or modify the SlackBuild script to
+do so. It can be found under the "./scripts" directory of the source
+code, and is called CheckSFV in the resulting package's documentation
+directory. All you need to do is to copy the "CheckSFV" file to
+$HOME/.gnome2/nautilus-scripts
diff --git a/misc/clawsker/README b/misc/clawsker/README
index dae61a5b6c..3d247c408e 100644
--- a/misc/clawsker/README
+++ b/misc/clawsker/README
@@ -1,6 +1,6 @@
-Claws Mail has a high number of configurable options and, in order to keep
-the binary small and fast, some of these preferences which are not widely
-used are not provided with a graphical interface for inspection and/or
-modification. Users wanting to edit such preferences had to face editing
-the configuration text files directly; now it is possible to do so with a
-convenient GTK2 interface using Clawsker.
+Claws Mail has a high number of configurable options and, in order
+to keep the binary small and fast, some of these preferences which
+are not widely used are not provided with a graphical interface for
+inspection and/or modification. Users wanting to edit such preferences
+had to face editing the configuration text files directly; now it is
+possible to do so with a convenient GTK2 interface using Clawsker.
diff --git a/misc/clawsker/clawsker.SlackBuild b/misc/clawsker/clawsker.SlackBuild
index a4ebf55cea..9f5260869e 100644
--- a/misc/clawsker/clawsker.SlackBuild
+++ b/misc/clawsker/clawsker.SlackBuild
@@ -2,7 +2,7 @@
#
# Slackware build script for Clawsker
#
-# Copyright 2009-2017 Erik W. Hanson, Minneapolis, MN, USA
+# Copyright 2009-202 Erik W. Hanson, Minneapolis, MN, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=clawsker
-VERSION=${VERSION:-1.1.0}
+VERSION=${VERSION:-1.3.7}
ARCH=noarch
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
@@ -68,6 +68,7 @@ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION $PKG/install
cp -a AUTHORS COPYING NEWS README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/clawsker/clawsker.info b/misc/clawsker/clawsker.info
index 8ff06fd6b2..d37bc68e58 100644
--- a/misc/clawsker/clawsker.info
+++ b/misc/clawsker/clawsker.info
@@ -1,10 +1,10 @@
PRGNAM="clawsker"
-VERSION="1.1.0"
+VERSION="1.3.7"
HOMEPAGE="https://www.claws-mail.org/clawsker.php"
-DOWNLOAD="https://www.claws-mail.org/tools/clawsker-1.1.0.tar.xz"
-MD5SUM="c06d5e55660eba2b6f8c1be2d5d4c73e"
+DOWNLOAD="https://www.claws-mail.org/tools/clawsker-1.3.7.tar.xz"
+MD5SUM="a4280952be05a6b4b212f527d1fe982d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="perl-gtk2"
+REQUIRES="perl-Gtk3 perl-File-Which"
MAINTAINER="Erik Hanson"
EMAIL="erik@slackbuilds.org"
diff --git a/misc/clawsker/doinst.sh b/misc/clawsker/doinst.sh
new file mode 100644
index 0000000000..65c7e2eeb9
--- /dev/null
+++ b/misc/clawsker/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/misc/cliphist/README b/misc/cliphist/README
new file mode 100644
index 0000000000..6ba0b28388
--- /dev/null
+++ b/misc/cliphist/README
@@ -0,0 +1,9 @@
+cliphist (wayland clipboard manager)
+
+clipboard history “manager†for wayland. Features: Write clipboard
+changes to a history file, recall history with dmenu / rofi / wofi
+(or whatever other picker you like), both text and images are
+supported, clipboard is preserved byte-for-byte, leading / trailing
+whitespace / no whitespace or newlines are preserved, won’t break
+fancy editor selections like vim wordwise, linewise, block mode, no
+concept of a picker, only pipes.
diff --git a/misc/cliphist/cliphist.SlackBuild b/misc/cliphist/cliphist.SlackBuild
new file mode 100644
index 0000000000..b7a4ede8e5
--- /dev/null
+++ b/misc/cliphist/cliphist.SlackBuild
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+# Slackware build script for cliphist
+
+# Copyright 2024 Jay Lanagan (j@lngn.net), Detroit, MI, USA.
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=cliphist
+VERSION=${VERSION:-0.5.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
+cd $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-vendor-$VERSION.tar.gz
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CGO_CFLAGS="$SLKCFLAGS" \
+CGO_CXXFLAGS="$SLKCFLAGS" \
+go build -mod vendor -o bin/$PRGNAM *.go
+
+install -Dm755 -t $PKG/usr/bin $TMP/$PRGNAM-$VERSION/bin/$PRGNAM
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+rm -rf $PKG/usr/lib${LIBDIRSUFFIX}/*.la
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CHANGELOG.md LICENSE readme.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/cliphist/cliphist.info b/misc/cliphist/cliphist.info
new file mode 100644
index 0000000000..2dbff811ad
--- /dev/null
+++ b/misc/cliphist/cliphist.info
@@ -0,0 +1,12 @@
+PRGNAM="cliphist"
+VERSION="0.5.0"
+HOMEPAGE="https://github.com/sentriz/cliphist"
+DOWNLOAD="https://github.com/sentriz/cliphist/archive/v0.5.0/cliphist-0.5.0.tar.gz \
+ https://slackware.lngn.net/pub/source/cliphist/cliphist-vendor-0.5.0.tar.gz"
+MD5SUM="5c502fc1b0122ed75eacec2e0d82e583 \
+ ac9100760b4ca1ce037dcba5592669f2"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="google-go-lang wl-clipboard"
+MAINTAINER="Jay Lanagan"
+EMAIL="j@lngn.net"
diff --git a/misc/cliphist/slack-desc b/misc/cliphist/slack-desc
new file mode 100644
index 0000000000..59f29762fd
--- /dev/null
+++ b/misc/cliphist/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+cliphist: cliphist (wayland clipboard manager)
+cliphist:
+cliphist: clipboard history manager for wayland. Features: Write clipboard
+cliphist: changes to a history file, recall history with dmenu / rofi / wofi
+cliphist: (or whatever other picker you like), both text and images are
+cliphist: supported, clipboard is preserved byte-for-byte, leading / trailing
+cliphist: whitespace / no whitespace or newlines are preserved, won't break
+cliphist: fancy editor selections like vim wordwise, linewise, block mode, no
+cliphist: concept of a picker, only pipes.
+cliphist:
+cliphist: Homepage: https://github.com/sentriz/cliphist/
diff --git a/misc/cp437/cp437.SlackBuild b/misc/cp437/cp437.SlackBuild
index 7ca5a150fb..1c34843bc0 100644
--- a/misc/cp437/cp437.SlackBuild
+++ b/misc/cp437/cp437.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for cp437
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
@@ -22,9 +22,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/cp437/cp437.info b/misc/cp437/cp437.info
index 91933a7636..393bc7c7f7 100644
--- a/misc/cp437/cp437.info
+++ b/misc/cp437/cp437.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/cups-pk-helper/README b/misc/cups-pk-helper/README
new file mode 100644
index 0000000000..04f38354a7
--- /dev/null
+++ b/misc/cups-pk-helper/README
@@ -0,0 +1,10 @@
+cups-pk-helper is a PolicyKit helper to configure cups with
+fine-grained privileges.
+
+For example, it's possible to let users enable/disable printers without
+requiring a password, while still requiring a password for editing
+printer settings.
+
+To make it easy to integrate cups-pk-helper in system-config-printer,
+the D-Bus API is based to a large extent on the pycups one.
+
diff --git a/misc/cups-pk-helper/cups-pk-helper.SlackBuild b/misc/cups-pk-helper/cups-pk-helper.SlackBuild
new file mode 100644
index 0000000000..5736f6e81e
--- /dev/null
+++ b/misc/cups-pk-helper/cups-pk-helper.SlackBuild
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+# Slackware build script for cups-pk-helper
+
+# Copyright 2022, Bob Funk, Winnipeg Canada
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=cups-pk-helper
+VERSION=${VERSION:-0.2.7}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dstrip=true
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog HACKING NEWS README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/cups-pk-helper/cups-pk-helper.info b/misc/cups-pk-helper/cups-pk-helper.info
new file mode 100644
index 0000000000..f80ca0b529
--- /dev/null
+++ b/misc/cups-pk-helper/cups-pk-helper.info
@@ -0,0 +1,10 @@
+PRGNAM="cups-pk-helper"
+VERSION="0.2.7"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/cups-pk-helper/"
+DOWNLOAD="https://www.freedesktop.org/software/cups-pk-helper/releases/cups-pk-helper-0.2.7.tar.xz"
+MD5SUM="0cdadec9ea8f88b7fc7af8ca206da2bd"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Bob Funk"
+EMAIL="bobfunk11@gmail.com"
diff --git a/misc/cups-pk-helper/slack-desc b/misc/cups-pk-helper/slack-desc
new file mode 100644
index 0000000000..25b9eb048e
--- /dev/null
+++ b/misc/cups-pk-helper/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+cups-pk-helper: cups-pk-helper (cups PolicyKit Helper)
+cups-pk-helper:
+cups-pk-helper: cups-pk-helper is a PolicyKit helper to configure cups with
+cups-pk-helper: fine-grained privileges.
+cups-pk-helper:
+cups-pk-helper:
+cups-pk-helper:
+cups-pk-helper:
+cups-pk-helper:
+cups-pk-helper: https://www.freedesktop.org/wiki/Software/cups-pk-helper/
+cups-pk-helper:
diff --git a/misc/cwiid/README b/misc/cwiid/README
index 1731334a02..84ea5d363c 100644
--- a/misc/cwiid/README
+++ b/misc/cwiid/README
@@ -1,3 +1,5 @@
+cwiid (tools for the Nintendo Wii remote)
+
CWiid is a collection of Linux tools written in C for interfacing to the
Nintendo Wiimote, including an event-based API, an event/mouse/joystick
driver, and GUI/control panel.
diff --git a/misc/cwiid/add_other_plugins_#487498.patch b/misc/cwiid/add_other_plugins_#487498.patch
deleted file mode 100644
index c9d28963a1..0000000000
--- a/misc/cwiid/add_other_plugins_#487498.patch
+++ /dev/null
@@ -1,394 +0,0 @@
-Index: cwiid-0.6.00+svn184.orig/wminput/plugins/Makefile.in
-===================================================================
---- cwiid-0.6.00+svn184.orig.orig/wminput/plugins/Makefile.in 2008-06-24 21:43:05.000000000 +0200
-+++ cwiid-0.6.00+svn184.orig/wminput/plugins/Makefile.in 2009-03-27 13:15:50.000000000 +0100
-@@ -2,7 +2,7 @@
-
- include @top_builddir@/defs.mak
-
--PLUGINS = ir_ptr acc nunchuk_acc led nunchuk_stick2btn
-+PLUGINS = ir_ptr ir_fps acc nunchuk_acc led nunchuk_stick2btn nunchuk_kb
-
- all install clean distclean uninstall: TARGET += $(MAKECMDGOALS)
-
-Index: cwiid-0.6.00+svn184.orig/wminput/plugins/ir_fps/Makefile.in
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ cwiid-0.6.00+svn184.orig/wminput/plugins/ir_fps/Makefile.in 2009-03-27 13:15:50.000000000 +0100
-@@ -0,0 +1,15 @@
-+#Copyright (C) 2007 L. Donnie Smith
-+
-+include @top_builddir@/defs.mak
-+
-+PLUGIN_NAME = ir_fps
-+SOURCES = ir_fps.c
-+CFLAGS += -I@top_builddir@/wminput -I@top_builddir@/libcwiid
-+INST_DIR = $(CWIID_PLUGINS_DIR)
-+
-+include $(COMMON)/include/plugin.mak
-+
-+distclean: clean
-+ rm Makefile
-+
-+.PHONY: distclean
-Index: cwiid-0.6.00+svn184.orig/wminput/plugins/ir_fps/ir_fps.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ cwiid-0.6.00+svn184.orig/wminput/plugins/ir_fps/ir_fps.c 2009-03-27 13:15:50.000000000 +0100
-@@ -0,0 +1,162 @@
-+/* Copyright (C) 2007 L. Donnie Smith <cwiidabstrakraft.org>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ *
-+ */
-+
-+#include "wmplugin.h"
-+
-+#define DEBOUNCE_THRESHOLD 50
-+
-+//deadzone is a circle of diameter a 10th of the screen
-+#define DEADZONE (CWIID_IR_X_MAX*CWIID_IR_X_MAX+CWIID_IR_Y_MAX*CWIID_IR_Y_MAX)/100
-+
-+//speed is here
-+#define XSPEED 10/(CWIID_IR_X_MAX/2)
-+#define YSPEED 10/(CWIID_IR_Y_MAX/2)
-+
-+cwiid_wiimote_t *wiimote;
-+
-+static struct wmplugin_info info;
-+static struct wmplugin_data data;
-+
-+wmplugin_info_t wmplugin_info;
-+wmplugin_init_t wmplugin_init;
-+wmplugin_exec_t wmplugin_exec;
-+
-+struct wmplugin_info *wmplugin_info() {
-+ static unsigned char info_init = 0;
-+
-+ if (!info_init) {
-+ info.button_count = 0;
-+ info.axis_count = 2;
-+ info.axis_info[0].name = "X";
-+ info.axis_info[0].type = WMPLUGIN_REL;
-+ info.axis_info[0].max = CWIID_IR_X_MAX;
-+ info.axis_info[0].min = 0;
-+ info.axis_info[0].fuzz = 0;
-+ info.axis_info[0].flat = 0;
-+ info.axis_info[1].name = "Y";
-+ info.axis_info[1].type = WMPLUGIN_REL;
-+ info.axis_info[1].max = CWIID_IR_Y_MAX;
-+ info.axis_info[1].min = 0;
-+ info.axis_info[1].fuzz = 0;
-+ info.axis_info[1].flat = 0;
-+ info.param_count = 0;
-+ info_init = 1;
-+ }
-+ return &info;
-+}
-+
-+int wmplugin_init(int id, cwiid_wiimote_t *arg_wiimote)
-+{
-+ wiimote = arg_wiimote;
-+
-+ data.buttons = 0;
-+
-+ if (wmplugin_set_rpt_mode(id, CWIID_RPT_IR)) {
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+struct wmplugin_data *wmplugin_exec(int mesg_count, union cwiid_mesg mesg[])
-+{
-+ static int src_index = -1;
-+ static int debounce = 0;
-+ static uint8_t old_flag;
-+
-+ int i;
-+ uint8_t flag;
-+ struct cwiid_ir_mesg *ir_mesg;
-+ int dx, dy;
-+
-+ ir_mesg = NULL;
-+ for (i=0; i < mesg_count; i++) {
-+ if (mesg[i].type == CWIID_MESG_IR) {
-+ ir_mesg = &mesg[i].ir_mesg;
-+ }
-+ }
-+
-+ if (!ir_mesg) {
-+ return NULL;
-+ }
-+
-+ /* invalidate src index if source is no longer present */
-+ if ((src_index != -1) && !ir_mesg->src[src_index].valid) {
-+ if (debounce > DEBOUNCE_THRESHOLD) {
-+ src_index = -1;
-+ }
-+ else {
-+ debounce++;
-+ }
-+ }
-+ else {
-+ debounce = 0;
-+ }
-+
-+ /* of not set, pick largest available source */
-+ if (src_index == -1) {
-+ for (i=0; i < CWIID_IR_SRC_COUNT; i++) {
-+ if (ir_mesg->src[i].valid) {
-+ if ((src_index == -1) ||
-+ (ir_mesg->src[i].size > ir_mesg->src[src_index].size)) {
-+ src_index = i;
-+ }
-+ }
-+ }
-+ }
-+
-+ /* LEDs */
-+ switch (src_index) {
-+ case 0:
-+ flag = CWIID_LED1_ON;
-+ break;
-+ case 1:
-+ flag = CWIID_LED2_ON;
-+ break;
-+ case 2:
-+ flag = CWIID_LED3_ON;
-+ break;
-+ case 3:
-+ flag = CWIID_LED4_ON;
-+ break;
-+ default:
-+ flag = 0;
-+ break;
-+ }
-+ if (flag != old_flag) {
-+ cwiid_set_led(wiimote, flag);
-+ old_flag = flag;
-+ }
-+
-+ if ((src_index == -1) || !ir_mesg->src[src_index].valid) {
-+ data.axes[0].valid = data.axes[1].valid = 0;
-+ }
-+ else {
-+ data.axes[0].valid = data.axes[1].valid = 1;
-+ dx = CWIID_IR_X_MAX/2 - ir_mesg->src[src_index].pos[CWIID_X];
-+ dy = ir_mesg->src[src_index].pos[CWIID_Y] - CWIID_IR_Y_MAX/2;
-+ if (dx*dx+dy*dy > DEADZONE){
-+ data.axes[0].value = dx*XSPEED;
-+ data.axes[1].value = dy*YSPEED;
-+ }else {
-+ data.axes[0].value = 0;
-+ data.axes[1].value = 0;
-+ }
-+ }
-+ return &data;
-+}
-Index: cwiid-0.6.00+svn184.orig/wminput/plugins/nunchuk_kb/Makefile.in
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ cwiid-0.6.00+svn184.orig/wminput/plugins/nunchuk_kb/Makefile.in 2009-03-27 13:15:50.000000000 +0100
-@@ -0,0 +1,16 @@
-+#Copyright (C) 2007 L. Donnie Smith
-+
-+include @top_builddir@/defs.mak
-+
-+PLUGIN_NAME = nunchuk_kb
-+SOURCES = nunchuk_kb.c
-+CFLAGS += -I@top_builddir@/wminput -I@top_builddir@/libcwiid
-+LDLIBS += -lm
-+INST_DIR = $(CWIID_PLUGINS_DIR)
-+
-+include $(COMMON)/include/plugin.mak
-+
-+distclean: clean
-+ rm Makefile
-+
-+.PHONY: distclean
-Index: cwiid-0.6.00+svn184.orig/wminput/plugins/nunchuk_kb/nunchuk_kb.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ cwiid-0.6.00+svn184.orig/wminput/plugins/nunchuk_kb/nunchuk_kb.c 2009-03-27 13:15:50.000000000 +0100
-@@ -0,0 +1,116 @@
-+/* Copyright (C) 2007 L. Donnie Smith <cwiid@abstrakraft.org>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ *
-+ */
-+
-+#include <math.h>
-+
-+#include "wmplugin.h"
-+
-+/* Button flags */
-+#define STICK_KEY_UP 0x0001
-+#define STICK_KEY_DOWN 0x0002
-+#define STICK_KEY_RIGHT 0x0004
-+#define STICK_KEY_LEFT 0x0008
-+#define STICK_MID_VAL 128
-+#define STICK_NEUTRAL 20
-+
-+static unsigned char info_init = 0;
-+static struct wmplugin_info info;
-+static struct wmplugin_data data;
-+
-+static cwiid_wiimote_t *wiimote;
-+
-+static struct acc_cal acc_cal;
-+static int plugin_id;
-+
-+wmplugin_info_t wmplugin_info;
-+wmplugin_init_t wmplugin_init;
-+wmplugin_exec_t wmplugin_exec;
-+static void process_nunchuk(struct cwiid_nunchuk_mesg *mesg);
-+
-+static float Roll_Scale = 1.0;
-+static float Pitch_Scale = 1.0;
-+static float X_Scale = 1.0;
-+static float Y_Scale = 1.0;
-+
-+struct wmplugin_info *wmplugin_info() {
-+ if (!info_init) {
-+ info.button_count = 4;
-+ info.button_info[0].name = "Up";
-+ info.button_info[1].name = "Down";
-+ info.button_info[2].name = "Right";
-+ info.button_info[3].name = "Left";
-+ info.axis_count = 0;
-+ info_init = 1;
-+ }
-+ return &info;
-+}
-+
-+int wmplugin_init(int id, cwiid_wiimote_t *arg_wiimote)
-+{
-+ plugin_id = id;
-+ wiimote = arg_wiimote;
-+ data.buttons = 0;
-+ data.axes[0].valid = 1;
-+ data.axes[1].valid = 1;
-+ if (wmplugin_set_rpt_mode(id, CWIID_RPT_STATUS | CWIID_RPT_NUNCHUK)) {
-+ return -1;
-+ }
-+
-+ return 0;
-+}
-+
-+struct wmplugin_data *wmplugin_exec(int mesg_count, union cwiid_mesg mesg[])
-+{
-+ int i;
-+ enum cwiid_ext_type ext_type = CWIID_EXT_NONE;
-+ struct wmplugin_data *ret = NULL;
-+
-+ for (i=0; i < mesg_count; i++) {
-+ switch (mesg[i].type) {
-+ case CWIID_MESG_STATUS:
-+ if ((mesg[i].status_mesg.ext_type == CWIID_EXT_NUNCHUK) &&
-+ (ext_type != CWIID_EXT_NUNCHUK)) {
-+ if (cwiid_get_acc_cal(wiimote, CWIID_EXT_NUNCHUK, &acc_cal)) {
-+ wmplugin_err(plugin_id, "calibration error");
-+ }
-+ }
-+ ext_type = mesg[i].status_mesg.ext_type;
-+ break;
-+ case CWIID_MESG_NUNCHUK:
-+ process_nunchuk(&mesg[i].nunchuk_mesg);
-+ ret = &data;
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+
-+ return ret;
-+}
-+
-+static void process_nunchuk(struct cwiid_nunchuk_mesg *mesg)
-+{
-+ double stx=(double)mesg->stick[CWIID_X];
-+ double sty=(double)mesg->stick[CWIID_Y];
-+ data.buttons=0;
-+ if (sty > STICK_MID_VAL+STICK_NEUTRAL) data.buttons |= STICK_KEY_UP;
-+ if (sty < STICK_MID_VAL-STICK_NEUTRAL) data.buttons |= STICK_KEY_DOWN;
-+ if (stx > STICK_MID_VAL+STICK_NEUTRAL) data.buttons |= STICK_KEY_RIGHT;
-+ if (stx < STICK_MID_VAL-STICK_NEUTRAL) data.buttons |= STICK_KEY_LEFT;
-+}
-+
-Index: cwiid-0.6.00+svn184.orig/wminput/configs/fps_config
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ cwiid-0.6.00+svn184.orig/wminput/configs/fps_config 2009-03-27 13:15:50.000000000 +0100
-@@ -0,0 +1,32 @@
-+# Fps config for wminput by kyrlian
-+# needs plugins ir_fps and nunchuk_kb
-+# available from http://kyrlian.free.fr/binaries/cwiid/latest/
-+# wminput source and info at http://abstrakraft.org/cwiid/
-+
-+# IR for mouse REL - fps style
-+Plugin.ir_fps.X = REL_X
-+Plugin.ir_fps.Y = REL_Y
-+
-+#custom buttons
-+Wiimote.A = BTN_LEFT
-+Wiimote.B = BTN_RIGHT
-+Wiimote.Up = KEY_UP
-+Wiimote.Down = KEY_DOWN
-+Wiimote.Left = KEY_LEFT
-+Wiimote.Right = KEY_RIGHT
-+Wiimote.Minus = KEY_PAGEDOWN
-+Wiimote.Plus = KEY_PAGEUP
-+Wiimote.Home = KEY_ESC
-+
-+Wiimote.1 = KEY_TAB
-+Wiimote.2 = KEY_ESC
-+
-+Nunchuk.C = KEY_C
-+Nunchuk.Z = KEY_SPACE
-+
-+#plugin for nunchuk stick
-+Plugin.nunchuk_kb.Up = KEY_W
-+Plugin.nunchuk_kb.Down = KEY_S
-+Plugin.nunchuk_kb.Left = KEY_A
-+Plugin.nunchuk_kb.Right = KEY_D
-+
-Index: cwiid-0.6.00+svn184.orig/configure.ac
-===================================================================
---- cwiid-0.6.00+svn184.orig.orig/configure.ac 2008-06-24 21:43:05.000000000 +0200
-+++ cwiid-0.6.00+svn184.orig/configure.ac 2009-03-27 13:15:50.000000000 +0100
-@@ -142,8 +142,10 @@
- [wminput/Makefile]
- [wminput/plugins/Makefile]
- [wminput/plugins/ir_ptr/Makefile]
-+ [wminput/plugins/ir_fps/Makefile]
- [wminput/plugins/acc/Makefile]
- [wminput/plugins/nunchuk_acc/Makefile]
-+ [wminput/plugins/nunchuk_kb/Makefile]
- [wminput/plugins/led/Makefile]
- [wminput/plugins/nunchuk_stick2btn/Makefile]
- [lswm/Makefile]
diff --git a/misc/cwiid/bluetooth-linker.patch b/misc/cwiid/bluetooth-linker.patch
deleted file mode 100644
index dc22b918d5..0000000000
--- a/misc/cwiid/bluetooth-linker.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-diff -Naur cwiid-0.6.00.orig/lswm/Makefile.in cwiid-0.6.00/lswm/Makefile.in
---- cwiid-0.6.00.orig/lswm/Makefile.in 2007-07-28 18:47:03.000000000 +0000
-+++ cwiid-0.6.00/lswm/Makefile.in 2012-09-19 01:36:44.624050597 +0000
-@@ -8,7 +8,7 @@
-
- CFLAGS += -I@top_builddir@/libcwiid
- LDFLAGS += -L@top_builddir@/libcwiid
--LDLIBS += -lcwiid
-+LDLIBS += -lcwiid -lbluetooth
- INST_DIR = @bindir@
-
- include $(COMMON)/include/app.mak
-diff -Naur cwiid-0.6.00.orig/wmdemo/Makefile.in cwiid-0.6.00/wmdemo/Makefile.in
---- cwiid-0.6.00.orig/wmdemo/Makefile.in 2007-04-11 02:57:27.000000000 +0000
-+++ cwiid-0.6.00/wmdemo/Makefile.in 2012-09-19 01:37:25.008051673 +0000
-@@ -8,7 +8,7 @@
-
- CFLAGS += -I@top_builddir@/libcwiid
- LDFLAGS += -L@top_builddir@/libcwiid
--LDLIBS += -lcwiid
-+LDLIBS += -lcwiid -lbluetooth
- INST_DIR = @bindir@
-
- include $(COMMON)/include/app.mak
-diff -Naur cwiid-0.6.00.orig/wmgui/Makefile.in cwiid-0.6.00/wmgui/Makefile.in
---- cwiid-0.6.00.orig/wmgui/Makefile.in 2007-07-28 18:47:03.000000000 +0000
-+++ cwiid-0.6.00/wmgui/Makefile.in 2012-09-19 01:31:32.977042284 +0000
-@@ -8,7 +8,7 @@
-
- CFLAGS += @GTK_CFLAGS@ -I@top_builddir@/libcwiid
- LDFLAGS += -L@top_builddir@/libcwiid
--LDLIBS += @GTK_LIBS@ -lm -lcwiid
-+LDLIBS += @GTK_LIBS@ -lm -lcwiid -lbluetooth
- INST_DIR = @bindir@
-
- include $(COMMON)/include/app.mak
-diff -Naur cwiid-0.6.00.orig/wminput/Makefile.in cwiid-0.6.00/wminput/Makefile.in
---- cwiid-0.6.00.orig/wminput/Makefile.in 2007-07-28 18:47:03.000000000 +0000
-+++ cwiid-0.6.00/wminput/Makefile.in 2012-09-19 01:38:42.031053733 +0000
-@@ -14,7 +14,7 @@
- -DWMINPUT_CONFIG_DIR=\"$(WMINPUT_CONFIG_DIR)\" \
- -DCWIID_PLUGINS_DIR=\"$(CWIID_PLUGINS_DIR)\"
-
--LDLIBS += -lcwiid -ldl
-+LDLIBS += -lcwiid -ldl -lbluetooth -lpthread
- LDFLAGS += -L@top_builddir@/libcwiid -rdynamic
- INST_DIR = @bindir@
-
diff --git a/misc/cwiid/cwiid.SlackBuild b/misc/cwiid/cwiid.SlackBuild
index f419b3ae14..d8ddb2befe 100644
--- a/misc/cwiid/cwiid.SlackBuild
+++ b/misc/cwiid/cwiid.SlackBuild
@@ -2,10 +2,21 @@
# Slackware build script for cwiid
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20220410 bkw: BUILD=2
+# - *really* fix permissions on header.
+# - re-add --disable-ldconfig. configure claims it's unsupported, but
+# it actually works.
+
+# 20210910 bkw:
+# - Upgrade to 0.6.91_2 (Debian's 0.6.91-2).
+# - Actually apply SLKCFLAGS.
+# - Use icon, .desktop, lswm.1 from Debian tarball instead of
+# including in SBo git.
+
# 20170306 bkw:
# - Add --disable-ldconfig
@@ -18,11 +29,14 @@
# - Fixed permissions of config files and header
# - Added ir_fps and nunchuk_kb plugins
+# https://deb.debian.org/debian/pool/main/c/cwiid/cwiid_0.6.91-2.debian.tar.xz
+# https://deb.debian.org/debian/pool/main/c/cwiid/cwiid_0.6.91.orig.tar.xz
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=cwiid
-VERSION=${VERSION:-0.6.00+svn201}
-BUILD=${BUILD:-3}
+VERSION=${VERSION:-0.6.91_2}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -34,9 +48,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -62,64 +73,74 @@ fi
set -e
+TARVER=${VERSION/_*}
+DEBVER=${VERSION/*_}
+
+LIBDIR=/usr/lib$LIBDIRSUFFIX
+PKGLIB=$PKG/$LIBDIR
+
rm -rf $PKG
mkdir -p $TMP $PKG/usr $PKG/etc $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/${PRGNAM}_$VERSION.orig.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM
+tar xvf $CWD/${PRGNAM}_$TARVER.orig.tar.xz
+cd $PRGNAM
+tar xvf $CWD/${PRGNAM}_$TARVER-$DEBVER.debian.tar.xz
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
-# Underlinking fix (add -lbluetooth)
-patch -p1 < $CWD/bluetooth-linker.patch
+# this patch is debian-specific (calls dpkg):
+rm -f debian/patches/python-setup.py.patch
-# Add ir_fps and nunchuk_kb plugins (patch comes from Debian)
-patch -p1 < $CWD/"add_other_plugins_#487498.patch"
+for i in $( cat debian/patches/series ); do
+ [ -e $i ] && patch -p1 < debian/patches/$i
+done
+
+# re-enable this when needed
+#patch -p1 < $CWD/python310.patch
autoreconf -if
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
./configure \
- --disable-ldconfig \
--prefix=/usr \
- --libdir=/usr/lib$LIBDIRSUFFIX \
+ --libdir=$LIBDIR \
--sysconfdir=/etc \
--localstatedir=/var \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--mandir=/usr/man \
+ --disable-ldconfig \
--build=$ARCH-slackware-linux
-make
+# configure script ignores CFLAGS in the env. Can't use CFLAGS
+# nor DEBUGFLAGS with make... sneak them in this way.
+make WARNFLAGS="-Wall $SLKCFLAGS"
make install DESTDIR=$PKG
-# Config and include files get installed +x, fix
-find $PKG/etc/cwiid/wminput/ -maxdepth 1 -a -type f | xargs chmod 644
-chmod 644 $PKG/usr/include/*.h
+# no install-strip...
+strip $PKG/usr/bin/* \
+ $PKGLIB/*.so.?.? \
+ $PKGLIB/$PRGNAM/plugins/*.so \
+ $PKGLIB/python*/site-packages/*.so
-# Remove static library, configure doesn't accept --disable-static
-rm -f $PKG/usr/lib$LIBDIRSUFFIX/libcwiid.a
+# Header and configs get installed +x, fix
+chmod 644 $PKG/etc/cwiid/wminput/* $PKG/usr/include/cwiid.h
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+# Remove static library, configure doesn't accept --disable-static
+rm -f $PKGLIB/libcwiid.a
-find $PKG/usr/man -type f -exec gzip -9 {} \;
+gzip -9 $PKG/usr/man/man1/*
-# lswm man page borrowed from Debian
-gzip -9c $CWD/lswm.1 > $PKG/usr/man/man1/lswm.1.gz
+# Use Debian's extra man page, desktop file, icons.
+gzip -9c debian/lswm.1 > $PKG/usr/man/man1/lswm.1.gz
-# icon borrowed from Debian
mkdir -p $PKG/usr/share/pixmaps
-cat $CWD/wmgui.xpm > $PKG/usr/share/pixmaps/wmgui.xpm
+cp -a debian/icons/*.xpm $PKG/usr/share/pixmaps
-# .desktop borrowed from Debian and fixed so it validates
mkdir -p $PKG/usr/share/applications
-cat $CWD/wmgui.desktop > $PKG/usr/share/applications/wmgui.desktop
+sed -e '/^Icon/s,=.*,=/usr/share/pixmaps/wmgui.xpm,' \
+ -e '/^Categories/s,$,;Settings;,' \
+ debian/menus/wmgui.desktop > $PKG/usr/share/applications/wmgui.desktop
# init script written for this build
mkdir -p $PKG/etc/rc.d/
diff --git a/misc/cwiid/cwiid.info b/misc/cwiid/cwiid.info
index f2e8fb6625..21b287e8ec 100644
--- a/misc/cwiid/cwiid.info
+++ b/misc/cwiid/cwiid.info
@@ -1,10 +1,12 @@
PRGNAM="cwiid"
-VERSION="0.6.00+svn201"
-HOMEPAGE="http://abstrakraft.org/cwiid/"
-DOWNLOAD="http://ftp.debian.org/debian/pool/main/c/cwiid/cwiid_0.6.00+svn201.orig.tar.gz"
-MD5SUM="a57605bba039dd2d4460574574f950e7"
+VERSION="0.6.91_2"
+HOMEPAGE="https://packages.debian.org/sid/libcwiid1"
+DOWNLOAD="https://deb.debian.org/debian/pool/main/c/cwiid/cwiid_0.6.91.orig.tar.xz \
+ https://deb.debian.org/debian/pool/main/c/cwiid/cwiid_0.6.91-2.debian.tar.xz"
+MD5SUM="3af0651c9d81693d39bb69675885c3d7 \
+ 0a3361ed2a29e4b68d6798e2347725de"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/cwiid/doinst.sh b/misc/cwiid/doinst.sh
index 4a2e19e598..e52d1fc170 100644
--- a/misc/cwiid/doinst.sh
+++ b/misc/cwiid/doinst.sh
@@ -1,15 +1,11 @@
-
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
- # If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
- # toss the redundant copy
rm $NEW
fi
- # Otherwise, we leave the .new copy for the admin to consider...
}
preserve_perms() {
diff --git a/misc/cwiid/lswm.1 b/misc/cwiid/lswm.1
deleted file mode 100644
index e51ca794b2..0000000000
--- a/misc/cwiid/lswm.1
+++ /dev/null
@@ -1,54 +0,0 @@
-.\" Hey, EMACS: -*- nroff -*-
-.\" First parameter, NAME, should be all caps
-.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
-.\" other parameters are allowed: see man(7), man(1)
-.TH LSWM 1 "janvier 18, 2007"
-.\" Please adjust this date whenever revising the manpage.
-.\"
-.\" Some roff macros, for reference:
-.\" .nh disable hyphenation
-.\" .hy enable hyphenation
-.\" .ad l left justify
-.\" .ad b justify to both left and right margins
-.\" .nf disable filling
-.\" .fi enable filling
-.\" .br insert line break
-.\" .sp <n> insert n+1 empty lines
-.\" for manpage-specific macros, see man(7)
-.SH NAME
-lswm \- discover new wiimotes
-.SH SYNOPSIS
-.B lswm
-.RI [ options ]
-.br
-.SH DESCRIPTION
-This manual page documents briefly the
-.B lswm
-command.
-.PP
-.\" TeX users may be more comfortable with the \fB<whatever>\fP and
-.\" \fI<whatever>\fP escape sequences to invode bold face and italics,
-.\" respectively.
-.SH OPTIONS
-.TP
-.B \-h
-Show summary of options.
-.TP
-.B \-a
-List all bluetooth devices (not just wiimotes)
-.TP
-.B \-l
-Long format (device details)
-.TP
-.B \-q
-Quiet mode
-
-.SH SEE ALSO
-.BR wminput (1),
-.BR wmgui (1),
-.br
-.SH AUTHOR
-wmgui was written by L. Donnie Smith <cwiid@abstrakraft.org>
-.PP
-This manual page was written by Romain Beauxis <toots@rastageeks.org>,
-for the Debian project (but may be used by others).
diff --git a/misc/cwiid/python310.patch b/misc/cwiid/python310.patch
new file mode 100644
index 0000000000..5a835aef7e
--- /dev/null
+++ b/misc/cwiid/python310.patch
@@ -0,0 +1,11 @@
+--- cwiid/configure.ac.orig 2021-10-25 12:06:48.965614546 +0700
++++ cwiid/configure.ac 2021-10-25 12:07:01.190613822 +0700
+@@ -67,7 +67,7 @@
+ fi
+ AC_SUBST(PYTHON)
+ if test $PYTHON; then
+- PYTHON_VERSION=[`$PYTHON -c 'import sys; print (sys.version[:3])'`]
++ PYTHON_VERSION=[`$PYTHON -c 'import sys; print (sys.version[:4])'`]
+ AC_SUBST(PYTHON_VERSION)
+ AC_DEFINE([HAVE_PYTHON],1,[Define to 1 if python support is enabled])
+ fi
diff --git a/misc/cwiid/wmgui.desktop b/misc/cwiid/wmgui.desktop
deleted file mode 100644
index 39030cb597..0000000000
--- a/misc/cwiid/wmgui.desktop
+++ /dev/null
@@ -1,11 +0,0 @@
-[Desktop Entry]
-Name=Wmgui
-GenericName=Graphical user interface to the wiimote
-GenericName[fr]=Interface graphique pour la wiimote
-Comment=Simple GTK gui to the wiimote to test and display the wiimote data.
-Comment[fr]=Simple interface graphique pour la wiimote pour tester et afficher les informations de la wiimote.
-Exec=wmgui
-Icon=wmgui
-Terminal=false
-Type=Application
-Categories=Utility;HardwareSettings;Settings;
diff --git a/misc/cwiid/wmgui.xpm b/misc/cwiid/wmgui.xpm
deleted file mode 100644
index 6f66669f67..0000000000
--- a/misc/cwiid/wmgui.xpm
+++ /dev/null
@@ -1,552 +0,0 @@
-/* XPM */
-static char * wmgui_xpm[] = {
-"39 45 504 2",
-" c None",
-". c #010C2D",
-"+ c #000B2B",
-"@ c #000C2B",
-"# c #000B2A",
-"$ c #000C2A",
-"% c #000B29",
-"& c #000A29",
-"* c #000C30",
-"= c #000B2E",
-"- c #000A2D",
-"; c #000A2B",
-"> c #000A2A",
-", c #000B2D",
-"' c #000D2F",
-") c #000F35",
-"! c #000D33",
-"~ c #000C31",
-"{ c #000B30",
-"] c #000C2E",
-"^ c #000C2D",
-"/ c #000B2C",
-"( c #000D32",
-"_ c #010F35",
-": c #00153C",
-"< c #001139",
-"[ c #001037",
-"} c #000E35",
-"| c #000E34",
-"1 c #000D31",
-"2 c #000C2C",
-"3 c #000C2F",
-"4 c #000D34",
-"5 c #001138",
-"6 c #001840",
-"7 c #00153E",
-"8 c #00133C",
-"9 c #00123A",
-"0 c #001038",
-"a c #000F37",
-"b c #030F31",
-"c c #71737A",
-"d c #B0B0B1",
-"e c #B8B8B8",
-"f c #BCBCBC",
-"g c #BDBDBD",
-"h c #BEBEBE",
-"i c #BFBFBF",
-"j c #A4A5A7",
-"k c #2A3145",
-"l c #000F36",
-"m c #00143C",
-"n c #001C45",
-"o c #001943",
-"p c #001741",
-"q c #00163F",
-"r c #00143D",
-"s c #00123C",
-"t c #646872",
-"u c #E5E5E6",
-"v c #E5DDDF",
-"w c #DBD8D9",
-"x c #F5F5F5",
-"y c #F6F6F6",
-"z c #F8F8F8",
-"A c #F9F9F9",
-"B c #FAFAFA",
-"C c #DCDCDC",
-"D c #081432",
-"E c #00123B",
-"F c #001841",
-"G c #01214B",
-"H c #001D48",
-"I c #001B46",
-"J c #001A44",
-"K c #001842",
-"L c #001742",
-"M c #001640",
-"N c #A1A1A1",
-"O c #E8E8E8",
-"P c #DBD4D5",
-"Q c #DCD7D8",
-"R c #F7F7F7",
-"S c #F4F4F4",
-"T c #293449",
-"U c #001C46",
-"V c #00214C",
-"W c #00204B",
-"X c #001F49",
-"Y c #001E48",
-"Z c #001D47",
-"` c #001C47",
-" . c #9D9D9D",
-".. c #EFEFEF",
-"+. c #EBEBEB",
-"@. c #EDEDED",
-"#. c #D7D7D7",
-"$. c #D1D1D1",
-"%. c #2A374D",
-"&. c #001A46",
-"*. c #001B45",
-"=. c #001E49",
-"-. c #00244E",
-";. c #00234E",
-">. c #00224D",
-",. c #00214D",
-"'. c #00214E",
-"). c #00204D",
-"!. c #F2F2F2",
-"~. c #F1F1F1",
-"{. c #B9B9B9",
-"]. c #2A3A50",
-"^. c #00204C",
-"/. c #01254F",
-"(. c #00244F",
-"_. c #002550",
-":. c #002551",
-"<. c #002652",
-"[. c #002653",
-"}. c #002753",
-"|. c #002754",
-"1. c #002755",
-"2. c #002654",
-"3. c #D6D6D6",
-"4. c #C1C1C1",
-"5. c #E2E2E2",
-"6. c #D0D0D0",
-"7. c #2A3D54",
-"8. c #002552",
-"9. c #002450",
-"0. c #00224C",
-"a. c #002956",
-"b. c #002B58",
-"c. c #002C5A",
-"d. c #002D5B",
-"e. c #002D5C",
-"f. c #002D5E",
-"g. c #002C5C",
-"h. c #D9D9D9",
-"i. c #CBCBCB",
-"j. c #E1E1E1",
-"k. c #E4E4E4",
-"l. c #D4D4D4",
-"m. c #2A4058",
-"n. c #002C5B",
-"o. c #002B59",
-"p. c #002A58",
-"q. c #002854",
-"r. c #00204A",
-"s. c #002F5E",
-"t. c #003261",
-"u. c #003363",
-"v. c #003465",
-"w. c #003466",
-"x. c #003364",
-"y. c #F3F3F3",
-"z. c #CACACA",
-"A. c #2A435C",
-"B. c #003365",
-"C. c #003263",
-"D. c #003262",
-"E. c #00305F",
-"F. c #002E5C",
-"G. c #002855",
-"H. c #003463",
-"I. c #003868",
-"J. c #003A6C",
-"K. c #003C6E",
-"L. c #003C6F",
-"M. c #003B6D",
-"N. c #DFDFDF",
-"O. c #2A4760",
-"P. c #003A6D",
-"Q. c #00396A",
-"R. c #003666",
-"S. c #003362",
-"T. c #002957",
-"U. c #003160",
-"V. c #003767",
-"W. c #004173",
-"X. c #004376",
-"Y. c #004478",
-"Z. c #CDCDCD",
-"`. c #D3D3D3",
-" + c #2A4B65",
-".+ c #004174",
-"++ c #003F71",
-"@+ c #003B6C",
-"#+ c #004578",
-"$+ c #004A7D",
-"%+ c #004D81",
-"&+ c #004D7F",
-"*+ c #C9C9C9",
-"=+ c #D2D2D2",
-"-+ c #2A506A",
-";+ c #004B7F",
-">+ c #00487C",
-",+ c #003E70",
-"'+ c #003769",
-")+ c #003161",
-"!+ c #001944",
-"~+ c #001C48",
-"{+ c #00214F",
-"]+ c #002D5D",
-"^+ c #00396C",
-"/+ c #004F82",
-"(+ c #005588",
-"_+ c #005888",
-":+ c #2A556E",
-"<+ c #005386",
-"[+ c #00467A",
-"}+ c #003F72",
-"|+ c #00386A",
-"1+ c #003162",
-"2+ c #002B5B",
-"3+ c #002554",
-"4+ c #001B47",
-"5+ c #011943",
-"6+ c #001641",
-"7+ c #001844",
-"8+ c #001C49",
-"9+ c #002150",
-"0+ c #002757",
-"a+ c #004175",
-"b+ c #004A7E",
-"c+ c #005C8D",
-"d+ c #006290",
-"e+ c #CFCFCF",
-"f+ c #F0F0F0",
-"g+ c #2A5A71",
-"h+ c #005A8C",
-"i+ c #005184",
-"j+ c #004073",
-"k+ c #00386B",
-"l+ c #003163",
-"m+ c #002B5C",
-"n+ c #002655",
-"o+ c #00204E",
-"p+ c #001B48",
-"q+ c #001843",
-"r+ c #001541",
-"s+ c #001845",
-"t+ c #001C4A",
-"u+ c #002151",
-"v+ c #002758",
-"w+ c #002D5F",
-"x+ c #003366",
-"y+ c #003A6E",
-"z+ c #004276",
-"A+ c #005688",
-"B+ c #006291",
-"C+ c #006B95",
-"D+ c #2A5E74",
-"E+ c #005F8F",
-"F+ c #005486",
-"G+ c #00497D",
-"H+ c #004074",
-"I+ c #00386C",
-"J+ c #003164",
-"K+ c #002B5D",
-"L+ c #002556",
-"M+ c #00204F",
-"N+ c #001B49",
-"O+ c #001744",
-"P+ c #011843",
-"Q+ c #001642",
-"R+ c #001C4B",
-"S+ c #002152",
-"T+ c #002659",
-"U+ c #002C60",
-"V+ c #003267",
-"W+ c #003A6F",
-"X+ c #004377",
-"Y+ c #004D80",
-"Z+ c #005989",
-"`+ c #006693",
-" @ c #007198",
-".@ c #2A6075",
-"+@ c #006390",
-"@@ c #005687",
-"#@ c #004B7E",
-"$@ c #004075",
-"%@ c #00386D",
-"&@ c #003165",
-"*@ c #002B5E",
-"=@ c #002557",
-"-@ c #002050",
-";@ c #011B45",
-">@ c #001643",
-",@ c #001846",
-"'@ c #001B4C",
-")@ c #002053",
-"!@ c #002559",
-"~@ c #002B60",
-"{@ c #003268",
-"]@ c #003A70",
-"^@ c #004F81",
-"/@ c #005C8A",
-"(@ c #006994",
-"_@ c #007499",
-":@ c #D8D8D8",
-"<@ c #1D5468",
-"[@ c #006691",
-"}@ c #005887",
-"|@ c #004C7E",
-"1@ c #003065",
-"2@ c #002A5E",
-"3@ c #002457",
-"4@ c #001F51",
-"5@ c #001A4A",
-"6@ c #001745",
-"7@ c #001847",
-"8@ c #001B4D",
-"9@ c #001F53",
-"0@ c #002459",
-"a@ c #002B61",
-"b@ c #003B70",
-"c@ c #005181",
-"d@ c #005D8A",
-"e@ c #006B94",
-"f@ c #00769A",
-"g@ c #DADADA",
-"h@ c #C2C2C2",
-"i@ c #BBC2C7",
-"j@ c #AABAC6",
-"k@ c #ACACAC",
-"l@ c #C5C5C5",
-"m@ c #C3C3C3",
-"n@ c #195164",
-"o@ c #006792",
-"p@ c #005A88",
-"q@ c #004E7F",
-"r@ c #00386E",
-"s@ c #003066",
-"t@ c #00295E",
-"u@ c #002357",
-"v@ c #001E51",
-"w@ c #001A4B",
-"x@ c #00245A",
-"y@ c #004679",
-"z@ c #005281",
-"A@ c #005E8B",
-"B@ c #00779A",
-"C@ c #E5E5E5",
-"D@ c #C7C7C7",
-"E@ c #D5D5D5",
-"F@ c #CBCED0",
-"G@ c #B4BDC4",
-"H@ c #DDDDDD",
-"I@ c #00396E",
-"J@ c #00285F",
-"K@ c #002258",
-"L@ c #001D51",
-"M@ c #001743",
-"N@ c #001945",
-"O@ c #003269",
-"P@ c #005282",
-"Q@ c #00779B",
-"R@ c #ECECEC",
-"S@ c #011B46",
-"T@ c #00255A",
-"U@ c #003368",
-"V@ c #005D8B",
-"W@ c #006A94",
-"X@ c #EEEEEE",
-"Y@ c #E4E5E8",
-"Z@ c #E1E3E6",
-"`@ c #EAEBEC",
-" # c #195064",
-".# c #005988",
-"+# c #004D7E",
-"@# c #001C4C",
-"## c #002153",
-"$# c #005B8A",
-"%# c #006894",
-"&# c #007399",
-"*# c #E9E9EB",
-"=# c #D6D7DB",
-"-# c #C9CACE",
-";# c #E6E7EA",
-"># c #194F64",
-",# c #006591",
-"'# c #001F50",
-")# c #002759",
-"!# c #002D60",
-"~# c #003367",
-"{# c #003B6F",
-"]# c #005889",
-"^# c #006592",
-"/# c #006D96",
-"(# c #E9E9EA",
-"_# c #DBDCDF",
-":# c #D0D1D4",
-"<# c #E5E6E9",
-"[# c #194D63",
-"}# c #00618F",
-"|# c #005586",
-"1# c #001A49",
-"2# c #001D4B",
-"3# c #002251",
-"4# c #002858",
-"5# c #002E5F",
-"6# c #003467",
-"7# c #004277",
-"8# c #005587",
-"9# c #9B9B9B",
-"0# c #DBDCE0",
-"a# c #D1D2D6",
-"b# c #194A61",
-"c# c #005D8D",
-"d# c #005285",
-"e# c #001D4A",
-"f# c #002250",
-"g# c #002857",
-"h# c #002E5E",
-"i# c #004275",
-"j# c #005084",
-"k# c #005789",
-"l# c #005A89",
-"m# c #999999",
-"n# c #E8E9EB",
-"o# c #19455E",
-"p# c #004E82",
-"q# c #00477B",
-"r# c #003F73",
-"s# c #002555",
-"t# c #001A45",
-"u# c #001D49",
-"v# c #00224F",
-"w# c #002856",
-"x# c #002E5D",
-"y# c #003464",
-"z# c #004E80",
-"A# c #19405A",
-"B# c #003E71",
-"C# c #00376A",
-"D# c #00224E",
-"E# c #003869",
-"F# c #003E6F",
-"G# c #004579",
-"H# c #004477",
-"I# c #193B55",
-"J# c #003768",
-"K# c #003565",
-"L# c #003969",
-"M# c #003C70",
-"N# c #003B6E",
-"O# c #E9E9E9",
-"P# c #193751",
-"Q# c #003D71",
-"R# c #003D70",
-"S# c #002A57",
-"T# c #003567",
-"U# c #EAEAEA",
-"V# c #19334C",
-"W# c #003668",
-"X# c #003566",
-"Y# c #00234F",
-"Z# c #002C5D",
-"`# c #E3E3E3",
-" $ c #192F48",
-".$ c #002F60",
-"+$ c #00214B",
-"@$ c #002756",
-"#$ c #E7E7E7",
-"$$ c #B7B7B7",
-"%$ c #192C44",
-"&$ c #002451",
-"*$ c #192940",
-"=$ c #01244F",
-"-$ c #989898",
-";$ c #E4EAED",
-">$ c #EAECEC",
-",$ c #19263D",
-"'$ c #001F4A",
-")$ c #011F49",
-"!$ c #898989",
-"~$ c #E6E6E6",
-"{$ c #B6B6B6",
-"]$ c #131F36",
-"^$ c #001B44",
-"/$ c #353A45",
-"($ c #E0E0E0",
-"_$ c #717171",
-":$ c #011032",
-"<$ c #001740",
-"[$ c #00173F",
-"}$ c #00133B",
-"|$ c #000F33",
-"1$ c #242A38",
-"2$ c #56575B",
-"3$ c #5E6062",
-"4$ c #5F6063",
-"5$ c #5D5E61",
-"6$ c #43454C",
-"7$ c #09132D",
-"8$ c #00143B",
-"9$ c #000E33",
-"0$ c #000E36",
-"a$ c #000B2F",
-"b$ c #000C32",
-"c$ c #011137",
-"d$ c #000A2C",
-"e$ c #010B2D",
-" ",
-" . + @ @ # $ $ % & ",
-" * = - ; > > & & & & > ; , ' ",
-" ) ! ~ { ] ^ ^ , , / / , , , = * ( _ ",
-" : < [ } | ! ( 1 ^ ^ ^ ^ 2 2 3 1 1 ( 4 ) 5 ",
-" 6 7 8 9 < 0 a b c d e f g h i j k ) l a 0 9 m ",
-" n o p q 7 r 8 s t u v w x y z A B C D E E 8 r q F ",
-" G H I J o K L p M N O P Q x y R A B S T M M p p K J U ",
-" V W X Y Z ` ` ` I ...+.@.#.$.R A B S %.&.*.*.I U Z =.W ",
-" -.;.;.>.>.,.,.,.'.). ...!.~.$.{.S z B S ].).^.W W W W V >./. ",
-" -.(._.:.<.<.[.}.|.1.2. ...3.4.5.@.i 6.B S 7.2.[.8.:._.9.(.(.-. ",
-" 0.;.:.|.a.b.c.d.e.f.g. ...h.i.j.k.l.l.B S m.g.n.o.p.a.q.<.9.;.>. ",
-" X r.>.:.a.c.s.t.u.v.w.x. ...!.y.z.g !.A B S A.B.C.D.E.F.o.G.9.>.W ",
-" Z =.,.8.p.s.H.I.J.K.L.M. ...!.y.5.N.R A B S O.P.J.Q.R.S.F.T.:.V =.Y ",
-" *.H ,.[.o.U.V.K.W.X.Y.X. ...!.!.Z.`.y A B S +X..+++@+R.E.p.8.^.H I ",
-" K J H '.2.n.S.Q.++#+$+%+&+ ...!.z.*+`.=+A B S -+;+>+X.,+'+)+o.8.^.` J ",
-" p !+~+{+1.]+x.^+.+>+/+(+_+ ...!.i.6.6.6.A B S :+<+%+[+}+|+1+2+3+).4+o 5+ ",
-" 6+7+8+9+0+f.B.P.a+b+<+c+d+ ...!.+.$.e+f+A B S g+h+i+>+j+k+l+m+n+o+p+q+6+ ",
-" r+s+t+u+v+w+x+y+z+;+A+B+C+ ...!.y.x y R A B S D+E+F+G+H+I+J+K+L+M+N+O+6+ ",
-" P+Q+s+R+S+T+U+V+W+X+Y+Z+`+ @ ...!.y.x y R A B S .@+@@@#@$@%@&@*@=@-@N+O+Q+ ",
-" ;@>@,@'@)@!@~@{@]@Y.^@/@(@_@ ...+.!.!.f+R ~.z :@<@[@}@|@a+%@1@2@3@4@5@6@7+ ",
-" !+>@7@8@9@0@a@{@b@#+c@d@e@f@ .g@h@z.i@j@3.k@l@m@n@o@p@q@z+r@s@t@u@v@w@6@O+` ",
-" q+>@7@8@9@x@a@{@b@y@z@A@e@B@ .C@D@E@F@G@H@{.=+m@n@o@p@q@X.I@s@J@K@L@w@6@M@N@",
-" J >@7@8@9@x@a@O@b@y@P@A@C+Q@ ...!.y.f+R@R@R@R@m@n@o@p@q@X.I@s@J@K@L@w@6@O+` ",
-" S@>@,@8@)@T@a@U@b@#+c@V@W@f@ ...!.X@Y@Z@`@R@R@m@ #[@.#+#z+%@s@t@u@v@5@6@7+ ",
-" o >@,@@###T+U+U@b@Y.^@$#%#&# ...X@*#=#-#;#R@R@m@>#,#}@|@a+%@1@2@3@'#5@6@M@ ",
-" Q+,@@#S+)#!#~#{#X+Y+]#^#/# .@.R@(#_#:#<#R@R@m@[#}#|#$+$@%@&@*@=@'#1#6@Q+ ",
-" 6+s+2#3#4#5#6#{#7#;+8#E+,#9#+.R@*#0#a#;#R@R@m@b#c#d#>+H+I+J+K+L+M+N+O+Q+ ",
-" L N@e#f#g#h#w.y+i#G+j#k#l#m#+.R@R@*#n#+.R@R@m@o#A+p#q#r#k+l+m+s#o+p+7+P+ ",
-" K t#u#v#w#x#y#J.j+[+b+p#z#m#+.R@R@e+*+O R@R@m@A#p#b+#+B#C#1+2+3+).~+!+ ",
-" I =.D#1.d.u.E#F#.+X+G#H#m#+.R@j.6.C@*+R@R@m@I#[+H#.+K.J#)+o.8.^.` t# ",
-" Z =.D#|.c.U.K#L#@+K.M#N#m#+.R@O#h l@E@R@R@m@P#Q#R#M.Q.y#s.p.:.^.H Z ",
-" X W D#<.S#e.E.S.y#w.T#B.m#+.R@R@e+h@U#R@R@m@V#W#T#X#u.U.d.a.9.V =. ",
-" V Y#:.|.a.b.c.e.]+h#Z#m#+.R@`#$.3.i.R@R@m@ $.$5#x#e.c.S#}.9.>.+$ ",
-" -.Y#9.9.:.<.[.|.1.@$n+m#+.R@#$$$=+=+R@R@m@%$4#g#G.|.}.<.&$Y#;. ",
-" ;.>.,.V V V ,.'.{+o+m#+.R@R@5.#.R@R@R@m@*$f#v#D#D#>.>.D#;.=$ ",
-" W =.H Z ` ` ` ~+4+-$+.;$>$#$U#+.O R@m@,$8+H H H H =.'$V ",
-" )$U J o K F p p 6+!$~$R@R@R@R@R@R@+.{$]$K K K o J *.H ",
-" ^$F q 7 r m 8 8 /${$C j.j.j.j.($Z._$:$r r 7 q <$o ",
-" [$m }$< 5 [ [ |$1$2$3$4$4$4$5$6$7$0 0 < 9 m 7 ",
-" 8$5 l } | ! ! ! ! 9$9$9$9$9$9$9$9$| 0$[ 9 ",
-" ) ! ~ { a$] ] ] ] ] ] ] ] a$* b$4 c$ ",
-" * = d$; ; > > > > ; ; - = 1 ",
-" e$; @ @ # $ @ # ; ",
-" "};
diff --git a/misc/dcc/README b/misc/dcc/README
index 2da258260b..bfc07792e9 100644
--- a/misc/dcc/README
+++ b/misc/dcc/README
@@ -1,8 +1,9 @@
-The Distributed Checksum Clearinghouses or DCC is an anti-spam content filter
-that runs on a variety of operating systems. The counts can be used by SMTP
-servers and mail user agents to detect and reject or filter spam or unsolicited
-bulk mail. DCC servers exchange or "flood" common checksums. The checksums
-include values that are constant across common variations in bulk messages,
-including "personalizations."
+The Distributed Checksum Clearinghouses or DCC is an anti-spam content
+filter that runs on a variety of operating systems. The counts can
+be used by SMTP servers and mail user agents to detect and reject
+or filter spam or unsolicited bulk mail. DCC servers exchange or
+"flood" common checksums. The checksums include values that are
+constant across common variations in bulk messages, including
+"personalizations."
Note that this installs three setuid binaries in /usr/bin.
diff --git a/misc/dcc/dcc.SlackBuild b/misc/dcc/dcc.SlackBuild
index 5bbd2153b1..f811b4eb0d 100644
--- a/misc/dcc/dcc.SlackBuild
+++ b/misc/dcc/dcc.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=dcc
-VERSION=${VERSION:-1.3.158}
+VERSION=${VERSION:-1.3.163}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/misc/dcc/dcc.info b/misc/dcc/dcc.info
index 43647be46a..8aed5bcfc1 100644
--- a/misc/dcc/dcc.info
+++ b/misc/dcc/dcc.info
@@ -1,8 +1,8 @@
PRGNAM="dcc"
-VERSION="1.3.158"
+VERSION="1.3.163"
HOMEPAGE="https://www.rhyolite.com/dcc/"
-DOWNLOAD="https://www.dcc-servers.net/src/dcc/old/dcc-1.3.158.tar.Z"
-MD5SUM="bbdea80e544ade4f8a04081fa68f9e8a"
+DOWNLOAD="https://www.dcc-servers.net/src/dcc/old/dcc-1.3.163.tar.Z"
+MD5SUM="bfa9eba5e52e914ea25d8cbf89fa7e7d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/dcc/slack-desc b/misc/dcc/slack-desc
index e14c334d29..9f00fc14ae 100644
--- a/misc/dcc/slack-desc
+++ b/misc/dcc/slack-desc
@@ -16,4 +16,4 @@ dcc: common checksums. The checksums include values that are contant
dcc: accross common variations in bulk messages, including
dcc: "personalizations".
dcc:
-dcc: Homepage: http://www.rhyolite.com/dcc/
+dcc: Homepage: https://www.rhyolite.com/dcc/
diff --git a/misc/deb2tgz/deb2tgz.SlackBuild b/misc/deb2tgz/deb2tgz.SlackBuild
index 2b548bb686..81c04fc9b0 100644
--- a/misc/deb2tgz/deb2tgz.SlackBuild
+++ b/misc/deb2tgz/deb2tgz.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for deb2tgz
-# Copyright 2016 Vitor Borrego, Corroios, Portugal
+# Copyright 2023 Vitor Borrego, Corroios, Portugal
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=deb2tgz
-VERSION=${VERSION:-0.2}
+VERSION=${VERSION:-0.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/misc/deb2tgz/deb2tgz.info b/misc/deb2tgz/deb2tgz.info
index b71c61253e..943c282b21 100644
--- a/misc/deb2tgz/deb2tgz.info
+++ b/misc/deb2tgz/deb2tgz.info
@@ -1,10 +1,10 @@
PRGNAM="deb2tgz"
-VERSION="0.2"
+VERSION="0.3"
HOMEPAGE="https://github.com/vborrego/deb2tgz"
-DOWNLOAD="https://github.com/vborrego/deb2tgz/archive/0.2/deb2tgz-0.2.tar.gz"
-MD5SUM="83d6360c126bdfecfae2c125d3894649"
+DOWNLOAD="https://github.com/vborrego/deb2tgz/archive/0.3/deb2tgz-0.3.tar.gz"
+MD5SUM="7914df629473da02252590f1260c25fd"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Vitor Borrego"
-EMAIL="vitor@bitarus.allowed.org"
+EMAIL="vitor@bitarus.mooo.com"
diff --git a/misc/deroff/deroff.SlackBuild b/misc/deroff/deroff.SlackBuild
index 16c2500621..4a69eebcbb 100644
--- a/misc/deroff/deroff.SlackBuild
+++ b/misc/deroff/deroff.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for deroff
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
@@ -22,9 +22,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/deroff/deroff.info b/misc/deroff/deroff.info
index 150b3d2123..a2d1d38fb8 100644
--- a/misc/deroff/deroff.info
+++ b/misc/deroff/deroff.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/dex/README b/misc/dex/README
new file mode 100644
index 0000000000..492ded5b75
--- /dev/null
+++ b/misc/dex/README
@@ -0,0 +1,4 @@
+Program to generate and execute DesktopEntry files of type Application.
+Useful for windows managers that doesnt support the XDG Autostart
+specification.
+requires Sphinx for man pages generation.
diff --git a/misc/protobuf3/protobuf3.SlackBuild b/misc/dex/dex.SlackBuild
index 1cc6510ff2..76d63f3f6f 100644
--- a/misc/protobuf3/protobuf3.SlackBuild
+++ b/misc/dex/dex.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for protobuf3
+# Slackware build script for dex
-# Copyright 2017-2021 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
+# Copyright 2022 Damian Perticone, Berisso, Argentina
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,17 +24,12 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=protobuf3
-VERSION=${VERSION:-3.17.3}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
+PRGNAM=dex
+VERSION=${VERSION:-0.9.0}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-GTEST=googletest-release
-GTESTVERSION=${GTESTVERSION:-1.8.1}
-
-SRCNAM=protobuf
-
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@@ -51,9 +46,9 @@ if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
exit 0
fi
-TMP=${TMP:-/tmp/SBo}
+TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
+OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
@@ -69,14 +64,14 @@ else
LIBDIRSUFFIX=""
fi
-set -e
+set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $SRCNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
-cd $SRCNAM-$VERSION
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -84,35 +79,22 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-patch -p1 < $CWD/protobuf3.patch
-
-./autogen.sh
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --disable-static \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --enable-static=no \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
-
-# Install the python bindings
-cd python
-python setup.py install --root=$PKG
-python3 setup.py install --root=$PKG
-cd ..
+make install PREFIX=/usr MANPREFIX=/usr/man DESTDIR=$PKG
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+rm -rf $PKG/usr/share/
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a BUILD *.txt LICENSE *.md $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a CHANGELOG.md LICENSE README.rst $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/dex/dex.info b/misc/dex/dex.info
new file mode 100644
index 0000000000..d0ee993c09
--- /dev/null
+++ b/misc/dex/dex.info
@@ -0,0 +1,10 @@
+PRGNAM="dex"
+VERSION="0.9.0"
+HOMEPAGE="https://github.com/jceb/dex"
+DOWNLOAD="https://github.com/jceb/dex/archive/v0.9.0/dex-0.9.0.tar.gz"
+MD5SUM="dfe9ecae8f7588c03942f5b292c8ac78"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="Sphinx"
+MAINTAINER="Damian Perticone"
+EMAIL="mjolnirdam@gmail.com"
diff --git a/misc/floating-IPS/slack-desc b/misc/dex/slack-desc
index 5bd0249a79..def6a9ca99 100644
--- a/misc/floating-IPS/slack-desc
+++ b/misc/dex/slack-desc
@@ -5,15 +5,15 @@
# You must make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':' except on otherwise blank lines.
- |-----handy-ruler------------------------------------------------------|
-floating-IPS: floating-IPS (IPS and BPS patcher)
-floating-IPS:
-floating-IPS: Floating IPS is a patcher for IPS and BPS files.
-floating-IPS:
-floating-IPS: Homepage: https://www.smwcentral.net/?p=viewthread&t=61289
-floating-IPS:
-floating-IPS:
-floating-IPS:
-floating-IPS:
-floating-IPS:
-floating-IPS:
+ |-----handy-ruler------------------------------------------------------|
+dex: dex (DesktopEntry Execution)
+dex:
+dex:
+dex: Dex is a program to generate and execute DesktopEntry files of the
+dex: Application type.
+dex:
+dex: Homepage: https:/github.com/jceb/dex
+dex:
+dex:
+dex:
+dex:
diff --git a/misc/discount/README b/misc/discount/README
index ffa5bab9fb..14d818f134 100644
--- a/misc/discount/README
+++ b/misc/discount/README
@@ -1,3 +1,5 @@
+discount (implementation of Markdown text to html language in C)
+
Discount is an implementation of John Gruber's Markdown text to HTML
language written by David Loren Parsons. There's not much that
differentiates it from any of the existing Markdown implementations
diff --git a/misc/discount/discount.SlackBuild b/misc/discount/discount.SlackBuild
index 1d74355809..53903f2ec0 100644
--- a/misc/discount/discount.SlackBuild
+++ b/misc/discount/discount.SlackBuild
@@ -2,30 +2,22 @@
# Slackware build script for discount
-# Copyright 2018-2020 Donald Cooley, South Haven, Indiana USA
-# Copyright (c) 2011-2015, Antonio Hernández Blas <hba.nihilismus@gmail.com>
-# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are met:
-# 1.- Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
-# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# Original author: Antonio Hernández Blas.
+# Formerly maintained by Donald Cooley and later Brandon Pribula.
+# Now maintained by B. Watson (urchlay@slackware.uk).
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20230914 bkw:
+# - take over maintenance.
+# - update for v2.2.7d.
+# - don't install VERSION in doc dir.
+# - add MAKETEST option, disabled by default, to run 'make test'.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=discount
-VERSION=${VERSION:-2.2.7}
+VERSION=${VERSION:-2.2.7d}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +30,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -70,20 +59,17 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
# Disable ldconfig use during 'make install'
sed -i 's/LDCONFIG=.*$/LDCONFIG=true/g' configure.inc
# Fix file permission
-sed -i 's/PROG_INSTALL -m 444/PROG_INSTALL -m 644/g' configure.inc
+sed -i '/PROG_INSTALL/s,-m 444,-m 644,g' configure.inc
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -103,28 +89,17 @@ CXXFLAGS="$SLKCFLAGS" \
make -j1
-mkdir -p $PKG/usr/{bin,lib${LIBDIRSUFFIX},include}
-make install.everything DESTDIR=$PKG
+[ "${MAKETEST:-no}" = "yes" ] && make -j1 test
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-if [ -d $PKG/usr/share/man ]; then
- mv $PKG/usr/share/man $PKG/usr
-fi
-
-if [ -d $PKG/usr/man ]; then
- ( cd $PKG/usr/man
- find . -type f -exec gzip -9 {} \;
- for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
- )
-fi
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- COPYRIGHT CREDITS INSTALL README VERSION \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+mkdir -p $PKG/usr/{bin,lib${LIBDIRSUFFIX},include}
+make -j1 install.everything DESTDIR=$PKG
+strip $PKG/usr/bin/* $PKG/usr/lib*/*.so.*.*.*
+gzip -9 $PKG/usr/man/man*/*
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a COPYRIGHT CREDITS README $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/discount/discount.info b/misc/discount/discount.info
index f0cf9121cc..4accb9cdce 100644
--- a/misc/discount/discount.info
+++ b/misc/discount/discount.info
@@ -1,10 +1,10 @@
PRGNAM="discount"
-VERSION="2.2.7"
+VERSION="2.2.7d"
HOMEPAGE="https://www.pell.portland.or.us/~orc/Code/discount/"
-DOWNLOAD="https://github.com/Orc/discount/archive/v2.2.7/discount-2.2.7.tar.gz"
-MD5SUM="c02c81bea757667fbaf0fefdf9b3749c"
+DOWNLOAD="https://github.com/Orc/discount/archive/v2.2.7d/discount-2.2.7d.tar.gz"
+MD5SUM="5081a7d74b0986f8e288bca53f367500"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Donald Cooley"
-EMAIL="chytraeu@sdf.org"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/dmg2img/dmg2img.info b/misc/dmg2img/dmg2img.info
index e9add05f7f..9c56e9a2b8 100644
--- a/misc/dmg2img/dmg2img.info
+++ b/misc/dmg2img/dmg2img.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
+EMAIL="kingbeowulf@linuxgalaxy.org"
diff --git a/misc/doclifter/README b/misc/doclifter/README
index be6e5ab4be..acbba9eb69 100644
--- a/misc/doclifter/README
+++ b/misc/doclifter/README
@@ -1,12 +1,19 @@
-doclifter lifts documents in nroff markups to XML-DocBook.
+doclifter (convert nroff markup to XML-DocBook)
This package ships two Python scripts:
-_doclifter translates documents written in troff macros like man pages to
- DocBook, that can then be converted to other formats or translated.
-_manlifter is a mass-conversion script and test harness for doclifter.
- It can find and convert _all_ man pages in your system with one simple
- command, but in a few cases.
+
+- doclifter translates documents written in troff macros (like man
+ pages) to DocBook, that can then be converted to other formats or
+ translated.
+
+- manlifter is a mass-conversion script and test harness for doclifter.
+ It can find and convert _all_ man pages in your system with one simple
+ command.
See the man pages, also in HTML format in /usr/doc/docfilter*/html
docfilter's author is Eric S. Raymond.
+
+Optional runtime dependency: plotutils. This is required for
+converting PIC diagrams to SVG. Not many man pages actually require
+this.
diff --git a/misc/doclifter/doclifter.SlackBuild b/misc/doclifter/doclifter.SlackBuild
index 2c4e54079b..7d03efd46c 100644
--- a/misc/doclifter/doclifter.SlackBuild
+++ b/misc/doclifter/doclifter.SlackBuild
@@ -2,40 +2,32 @@
# Slackware build script for doclifter
-# Copyright 2015 Didier Spaier Paris, France
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# Originally written 2015 Didier Spaier Paris, France
+# Now maintained by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20240312 bkw: update for v2.21.
+
+# 20220110 bkw:
+# - take over maintenance.
+# - relicense as WTFPL with permission from Didier.
+# - update for v2.20.
+# - tweak README and slack-desc.
+# - simplify build.
+# - document plotutils optional dep (search for pic2plot in the man page).
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=doclifter
-VERSION=${VERSION:-2.15}
+VERSION=${VERSION:-2.21}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-# We package Python scripts, so:
+# We're packaging only Python scripts, so:
ARCH=noarch
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -54,24 +46,21 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/html $PKG/usr/man/man1 $PKG/usr/bin
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
-cp doclifter manlifter $PKG/usr/bin
-gzip <doclifter.1 >$PKG/usr/man/man1/doclifter.1.gz
-gzip <manlifter.1 >$PKG/usr/man/man1/manlifter.1.gz
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC/html $PKG/usr/man/man1 $PKG/usr/bin
-xmlto xhtml-nochunks doclifter.xml
-xmlto xhtml-nochunks manlifter.xml
-cp -a doclifter.html manlifter.html $PKG/usr/doc/$PRGNAM-$VERSION/html
+for i in {doc,man}lifter; do
+ install -m0755 $i $PKG/usr/bin
+ gzip -9c < $i.1 > $PKG/usr/man/man1/$i.1.gz
+ xmlto xhtml-nochunks $i.xml
+ cp -a $i.html $PKGDOC/html
+done
-cp -a COPYING README TODO $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cp -a COPYING README TODO PATCHES $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/doclifter/doclifter.info b/misc/doclifter/doclifter.info
index 9a3444a5a0..3efc8a8859 100644
--- a/misc/doclifter/doclifter.info
+++ b/misc/doclifter/doclifter.info
@@ -1,10 +1,10 @@
PRGNAM="doclifter"
-VERSION="2.15"
+VERSION="2.21"
HOMEPAGE="http://www.catb.org/~esr/doclifter/"
-DOWNLOAD="http://www.catb.org/~esr/doclifter/doclifter-2.15.tar.gz"
-MD5SUM="2615cdf2081d31c003d8a41c1c5201c2"
+DOWNLOAD="http://www.catb.org/~esr/doclifter/doclifter-2.21.tar.gz"
+MD5SUM="d2187658786f48ccfa9e76d56a2144b8"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Didier Spaier"
-EMAIL="didier at slint dot fr"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/doclifter/slack-desc b/misc/doclifter/slack-desc
index 75b6489a68..0505eace63 100644
--- a/misc/doclifter/slack-desc
+++ b/misc/doclifter/slack-desc
@@ -6,13 +6,13 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-doclifter: doclifter (convert document)
+doclifter: doclifter (convert nroff markup to XML-DocBook)
doclifter:
-doclifter: doclifter lifts documents in nroff markups to XML-DocBook.
+doclifter: doclifter lifts documents in nroff markup to XML-DocBook.
doclifter: This package ships two Python scripts:
-doclifter: _doclifter translates documents written in troff macros like man
-doclifter: pages to DocBook, that can then be converted to other formats.
-doclifter: _manlifter is a mass-conversion script and test harness for
+doclifter: - doclifter translates documents written in troff macros (like man
+doclifter: pages) to DocBook, that can then be converted to other formats.
+doclifter: - manlifter is a mass-conversion script and test harness for
doclifter: doclifter.
doclifter:
doclifter: docfilter's author is Eric S. Raymond.
diff --git a/misc/dos2unix/README b/misc/dos2unix/README
index 150030612c..deb06ad6ab 100644
--- a/misc/dos2unix/README
+++ b/misc/dos2unix/README
@@ -14,11 +14,18 @@ to Mac by Erwin in 2010.
Features:
Native language support:
- Dutch, English, Esperanto, German, and Spanish.
- Automatically skips binary and non-regular files in-place, paired,
- or stdio mode conversion.
+ Brazilian Portugese, Chinese (simplified/traditional),
+ Danish, Dutch, English, Esperanto, French, Friulian,
+ German, Hungarian, Japanese, Norwegian Bokmaal, Polish,
+ Russian, Serbian, Spanish, Swedish, Ukrainian,
+ and Vietnamese.
+
+ In-place, paired, or stdio mode conversion.
Keep original file dates option.
7-bit and ISO conversion modes like SunOS dos2unix.
+ Conversion of Unicode UTF-16 files.
+ Handles Unicode Byte Order Mark (BOM).
+ Display file information.
Dos2Unix includes:
dos2unix - DOS/MAC to UNIX text file format converter.
diff --git a/misc/dos2unix/dos2unix.SlackBuild b/misc/dos2unix/dos2unix.SlackBuild
index 35095126ea..5f39d827ce 100644
--- a/misc/dos2unix/dos2unix.SlackBuild
+++ b/misc/dos2unix/dos2unix.SlackBuild
@@ -1,5 +1,11 @@
#!/bin/bash
+
# Slackware build script for dos2unix
+
+# Copyright 2023 K. Eugene Carlson, Tsukuba, Japan
+
+# Copyright 2022 Brandon Pribula, BC Canada
+
# copyright 2017-2020 Donald Cooley, South Haven, IN, USA
# Ryan P.C. McQuen | Everett, WA
@@ -27,7 +33,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=dos2unix
-VERSION=${VERSION:-7.4.1}
+VERSION=${VERSION:-7.5.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -69,39 +75,33 @@ find -L . \
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
RPM_OPT_FLAGS="$SLKCFLAGS" \
- make
+make
make check
-make \
- prefix=$PKG/usr \
- docdir=$PKG/usr/doc/$PRGNAM-$VERSION \
- mandir=$PKG/usr/man \
- install
+make strip
+make install \
+ prefix=/usr \
+ docdir=/usr/doc/$PRGNAM-$VERSION \
+ mandir=/usr/man \
+ DESTDIR=$PKG
# Put _all_ man pages under usr/man
mv $PKG/usr/share/man/* $PKG/usr/man
rmdir $PKG/usr/share/man
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-cp -a *.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm $PKG/usr/doc/$PRGNAM-$VERSION/INSTALL.txt
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/dos2unix/dos2unix.info b/misc/dos2unix/dos2unix.info
index 9ca31f2a25..d0a99a7c1a 100644
--- a/misc/dos2unix/dos2unix.info
+++ b/misc/dos2unix/dos2unix.info
@@ -1,10 +1,10 @@
PRGNAM="dos2unix"
-VERSION="7.4.1"
+VERSION="7.5.2"
HOMEPAGE="https://waterlan.home.xs4all.nl/dos2unix.html"
-DOWNLOAD="https://waterlan.home.xs4all.nl/dos2unix/dos2unix-7.4.1.tar.gz"
-MD5SUM="6b402c10899416707da60188cd6bb0f3"
+DOWNLOAD="https://waterlan.home.xs4all.nl/dos2unix/dos2unix-7.5.2.tar.gz"
+MD5SUM="646272020848c9b673de24c4e8e3422e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Donald Cooley"
-EMAIL="chytraeu@sdf.org"
+MAINTAINER="K. Eugene Carlson"
+EMAIL="kvngncrlsn@gmail.com"
diff --git a/misc/dos2unix/slack-desc b/misc/dos2unix/slack-desc
index 40424dc391..f78d986b85 100644
--- a/misc/dos2unix/slack-desc
+++ b/misc/dos2unix/slack-desc
@@ -14,6 +14,6 @@ dos2unix: modeled after dos2unix/unix2dos under SunOS/Solaris. They have
dos2unix: similar conversion modes, namely ascii, 7bit and iso.
dos2unix:
dos2unix:
-dos2unix: https://www.xs4all.nl/~waterlan/dos2unix.html
dos2unix:
+dos2unix: Homepage: https://www.xs4all.nl/~waterlan/dos2unix.html
dos2unix:
diff --git a/misc/drg2sbg/README b/misc/drg2sbg/README
index 4b05c19e61..e35377f641 100644
--- a/misc/drg2sbg/README
+++ b/misc/drg2sbg/README
@@ -4,16 +4,16 @@ source SBaGen format.
I-Doser is a company that produces Binaural brainwaves to simulate
different states.
-The problem is that they don't provide a doser application for Linux, and
-their mp3 collection is limited, with this program you can convert the
-.drg file to an .sbg and then using SBaGen (an open source application
-that they use as main engine to generate the tones) you can convert it
-to wav and (if desired) to mp3 or similar.
+The problem is that they don't provide a doser application for
+Linux, and their mp3 collection is limited, with this program you can
+convert the .drg file to an .sbg and then using SBaGen (an open source
+application that they use as main engine to generate the tones) you
+can convert it to wav and (if desired) to mp3 or similar.
-This project will never be possible without the help of "The Unofficial
-I-Doser Blog" and their steAlth's DRG Author by konstAnt and khAttAm
-to tell the truth this is a rip off stripped version of konstAnt and
-KhAttAm steAlth's DRG Author. They did all the work with the .drg files,
-I just port some parts of it to C.
+This project will never be possible without the help of "The
+Unofficial I-Doser Blog" and their steAlth's DRG Author by konstAnt
+and khAttAm to tell the truth this is a rip off stripped version of
+konstAnt and KhAttAm steAlth's DRG Author. They did all the work with
+the .drg files, I just port some parts of it to C.
Optional dependency: sbagen (to play and/or convert sbg files to WAV)
diff --git a/misc/drg2sbg/drg2sbg.SlackBuild b/misc/drg2sbg/drg2sbg.SlackBuild
index a9121247eb..ed44361ae9 100644
--- a/misc/drg2sbg/drg2sbg.SlackBuild
+++ b/misc/drg2sbg/drg2sbg.SlackBuild
@@ -34,7 +34,7 @@ DOCS="AUTHORS ChangeLog README COPYING"
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -52,8 +52,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/dtmflib/README b/misc/dtmflib/README
new file mode 100644
index 0000000000..c47f42babb
--- /dev/null
+++ b/misc/dtmflib/README
@@ -0,0 +1,4 @@
+dtmflib (synthesizes dialling tones)
+
+dtmflib is a library and command-line tool that synthesizes DTMF (aka
+TouchTone) telephone dialling tones.
diff --git a/misc/dtmflib/dtmflib.SlackBuild b/misc/dtmflib/dtmflib.SlackBuild
new file mode 100644
index 0000000000..a93e3ed757
--- /dev/null
+++ b/misc/dtmflib/dtmflib.SlackBuild
@@ -0,0 +1,99 @@
+#!/bin/bash
+
+# Slackware build script for dtmflib
+
+# Written by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# Note: although this has "lib" in the name, and actually does install
+# a library and header, I'm putting it under misc/ because it's going
+# to be more useful as a standalone app (the dtmf command).
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=dtmflib
+VERSION=${VERSION:-20210112_6609071}
+COMMIT=${COMMIT:-6609071ba383e7a6d9bf7f7fd9d75bbdd1d8d717}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$COMMIT
+tar xvf $CWD/$PRGNAM-$COMMIT.tar.gz
+cd $PRGNAM-$COMMIT
+chown -R root:root .
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
+
+# add a trailing newline to the -h help message.
+sed -i '/-V version/s,";,\\n";,' src/dtmfutil.cpp
+
+# man page contains a wildly inaccurate description (copied from some
+# other utility?), bad grammar, and bad formatting; clean it up.
+patch -p1 < $CWD/manpage.diff
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make
+make install-strip DESTDIR=$PKG
+rm -f $PKG/usr/lib*/*.la
+gzip -9 $PKG/usr/man/man*/*
+
+# don't bother with the tiny README.
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a AUTHORS COPYING NEWS README.md $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/dtmflib/dtmflib.info b/misc/dtmflib/dtmflib.info
new file mode 100644
index 0000000000..fcefe17fc0
--- /dev/null
+++ b/misc/dtmflib/dtmflib.info
@@ -0,0 +1,10 @@
+PRGNAM="dtmflib"
+VERSION="20210112_6609071"
+HOMEPAGE="https://github.com/gbonacini/dtmflib"
+DOWNLOAD="https://github.com/gbonacini/dtmflib/archive/6609071ba383e7a6d9bf7f7fd9d75bbdd1d8d717/dtmflib-6609071ba383e7a6d9bf7f7fd9d75bbdd1d8d717.tar.gz"
+MD5SUM="e315fb1a3e17df0fb33281fc8620a4ad"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/dtmflib/manpage.diff b/misc/dtmflib/manpage.diff
new file mode 100644
index 0000000000..ff11c447d1
--- /dev/null
+++ b/misc/dtmflib/manpage.diff
@@ -0,0 +1,75 @@
+diff --git a/doc/dtmf.1 b/doc/dtmf.1
+index b52d32f..96e6166 100644
+--- a/doc/dtmf.1
++++ b/doc/dtmf.1
+@@ -1,34 +1,46 @@
+-.TH DTMF 1 "JAN 2019" Linux "User Manuals"
++.TH DTMF 1 "April 2024" dtmflib-20210112_6609071 "SlackBuilds.org"
+ .SH NAME
+ dtmf \- a tool to generate DTMF tones. DTMF encoder/decoder for regular files.
+ .SH SYNOPSIS
+-.B dtmf [-s string to play]
++.B dtmf [-s string ]
+ .br
+-.B | [ -b input file to convert] [ -c input file to convert] [-t tone file] [-o output file]
++.B | [ -b input_file] [ -c input_file] [-t tone_file] [-o output_file]
+ .br
+-.B | [-h] | [-V]
++.B | [-h] | [-V]
+ .SH DESCRIPTION
+-dtmf is listening for events on file system involving file or directories and it's able to send a notification and/or perform actiotions using a the plugins availables. For example, it's possible to send notifications by email, Apache Kafka messages, snmp traps, syslog-ng log entries or simply writing on the cosole.
++.B dtmf
++generates DTMF (aka TouchTone) tones and sends them to the sound card, or encodes
++files as a series of DTMF tones and saves the result to a text file of digits, or decodes a
++previously-encoded file.
+ .SH OPTIONS
+-.IP -b\ input\ file
+-It is a regular file (binary or text) that will be
+-converted in tone coding.
+-.IP -c\ input\ file
+-It is a regular file (binary or text) that will be
+-converted in tone coding intended for IOT/mocrocontroller devices, using a coding that doesn't need synchronization.
+-.IP -t\ input\ file
+-It contains a sequence of tones that will be converted back to the initial file (binary or text).
+-.IP -o\ output\ file
+-This flag is necessary if -b or -t is specified. This file will contain the encoded/decode data.
+-.IP -s\ string
+-The string, with one or more ascii characters representing tones (01234567890ABCD#*), will be reproduced by sound card.
+-.IP -h
+-print this help message.
+-.IP -V
+-version information.
++.TP
++\fB\-b\fR \fIinput_file\fR
++Regular file (binary or text) that will be
++converted to tone coding.
++.TP
++\fB\-c\fR \fIinput_file\fR
++Regular file (binary or text) that will be
++converted to tone coding intended for IOT/mocrocontroller devices, using a coding that doesn't need synchronization.
++.TP
++\fB\-t\fR \fItone_file\fR
++Audio file containing a sequence of tones that will be converted back to the initial file (binary or text).
++.TP
++\fB\-o\fR \fIoutput_file\fR
++This flag is necessary if -b or -t is specified. This file will contain the encoded/decode data.
++.TP
++\fB\-s\fR \fIstring\fR
++The string, with one or more ASCII characters representing tones (01234567890ABCD#*), will be reproduced by sound card.
++.TP
++\fB\-h\fR
++print help message and exit.
++.TP
++\fB\-V\fR
++print version information and exit.
+ .SH BUGS
+ This program is a beta version, changes are possible. Please send me bug report to address specified here.
+ .SH AUTHOR
+-Gabriele Bonacini <gabriele.bonacini@protonmail.com>
+-.SH "SEE ALSO"
+-.BR DTMF(1)
++Gabriele Bonacini <gabriele.bonacini@protonmail.com> is the author of
++\fBdtmf\fR.
++.P
++This man page was modified by B. Watson <urchlay@slackware.uk> for use by the
++SlackBuilds.org project.
diff --git a/misc/dtmflib/slack-desc b/misc/dtmflib/slack-desc
new file mode 100644
index 0000000000..48bb9b826c
--- /dev/null
+++ b/misc/dtmflib/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+dtmflib: dtmflib (synthesizes dialling tones)
+dtmflib:
+dtmflib: dtmflib is a library and command-line tool that synthesizes DTMF (aka
+dtmflib: TouchTone) telephone dialling tones.
+dtmflib:
+dtmflib:
+dtmflib:
+dtmflib:
+dtmflib:
+dtmflib:
+dtmflib:
diff --git a/misc/dvtm/README b/misc/dvtm/README
index 47aad9e365..678bfbc83d 100644
--- a/misc/dvtm/README
+++ b/misc/dvtm/README
@@ -1,4 +1,4 @@
dvtm brings the concept of tiling window management, popularized by
-X11-window managers like dwm to the console. As a console window manager it
-tries to make it easy to work with multiple console based programs like vim,
-mutt, cmus or irssi.
+X11-window managers like dwm, to the console. As a console window
+manager it tries to make it easy to work with multiple console based
+programs like vim, mutt, cmus or irssi.
diff --git a/misc/dvtm/dvtm.SlackBuild b/misc/dvtm/dvtm.SlackBuild
index 47642abcc6..3a6459d8cc 100644
--- a/misc/dvtm/dvtm.SlackBuild
+++ b/misc/dvtm/dvtm.SlackBuild
@@ -36,7 +36,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -54,8 +54,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/dwdiff/README b/misc/dwdiff/README
index 3ddc5c5bdb..6bdfcf26cb 100644
--- a/misc/dwdiff/README
+++ b/misc/dwdiff/README
@@ -1,11 +1,12 @@
-dwdiff is a diff program that operates at the word level instead of the
-line level. It is different from wdiff in that it allows the user to
-specify what should be considered whitespace, and in that it takes an
-optional list of characters that should be considered delimiters.
-Delimiters are single characters that are treated as if they are words,
-even when there is no whitespace separating them from preceding words or
-delimiters. dwdiff is mostly commandline compatible with wdiff. Only the
---autopager, --terminal and --avoid-wraps options are not supported.
+dwdiff is a diff program that operates at the word level instead of
+the line level. It is different from wdiff in that it allows the user
+to specify what should be considered whitespace, and in that it takes
+an optional list of characters that should be considered delimiters.
+Delimiters are single characters that are treated as if they are
+words, even when there is no whitespace separating them from preceding
+words or delimiters. dwdiff is mostly commandline compatible with
+wdiff. Only the --autopager, --terminal and --avoid-wraps options are
+not supported.
The default output from dwdiff is the new text, with the deleted and
inserted parts annotated with markers. Command line options are
@@ -14,5 +15,5 @@ available to change both what is printed, and the markers.
If you wish to have nl manpages and/or de, fr, nl, ru localization pass
'NLS="de fr nl ru"' (or whichever of them is wanted) to the SlackBuild.
-If you wish to enable the handling of Unicode text, pass "UNICODE=yes" to
-the SlackBuild script.
+If you wish to enable the handling of Unicode text, pass "UNICODE=yes"
+to the SlackBuild script.
diff --git a/misc/dwdiff/config.pkg.patch b/misc/dwdiff/config.pkg.patch
new file mode 100644
index 0000000000..2cf3efd515
--- /dev/null
+++ b/misc/dwdiff/config.pkg.patch
@@ -0,0 +1,12 @@
+diff -ru dwdiff-2.1.4.orig/config.pkg dwdiff-2.1.4/config.pkg
+--- dwdiff-2.1.4.orig/config.pkg 2020-12-13 06:38:01.000000000 -0500
++++ dwdiff-2.1.4/config.pkg 2021-10-26 09:04:45.389583300 -0400
+@@ -11,6 +11,8 @@
+ # You should have received a copy of the GNU General Public License
+ # along with this program. If not, see <http://www.gnu.org/licenses/>.
+
++INSTALLDIRS="mandir"
++
+ EXTENSIONS="c verbose_compile gettext"
+
+ SWITCHES="+unicode +dwfilter"
diff --git a/misc/dwdiff/dwdiff.SlackBuild b/misc/dwdiff/dwdiff.SlackBuild
index cbca68bd60..1a9690b08d 100644
--- a/misc/dwdiff/dwdiff.SlackBuild
+++ b/misc/dwdiff/dwdiff.SlackBuild
@@ -7,14 +7,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=dwdiff
-VERSION=${VERSION:-2.0.1}
+VERSION=${VERSION:-2.1.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -32,8 +32,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -59,7 +59,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tgz
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
@@ -68,8 +68,10 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 \
-o -perm 400 \) -exec chmod 644 {} \;
+# Patch for configure --mandir
+patch -p1 < $CWD/config.pkg.patch
# Patch for a build failure if not building with unicode.
-patch -p1 < $CWD/doDiff.c.patch
+patch -p1 < $CWD/src-option.c.patch
# This is one messed up makefile - and its configure doesn't accept '--build'
CC="gcc -fgnu89-inline" \
diff --git a/misc/dwdiff/dwdiff.info b/misc/dwdiff/dwdiff.info
index baaf8cfee3..a5f37453fb 100644
--- a/misc/dwdiff/dwdiff.info
+++ b/misc/dwdiff/dwdiff.info
@@ -1,8 +1,8 @@
PRGNAM="dwdiff"
-VERSION="2.0.1"
+VERSION="2.1.4"
HOMEPAGE="https://os.ghalkes.nl/dwdiff.html"
-DOWNLOAD="https://os.ghalkes.nl/dist/dwdiff-2.0.1.tgz"
-MD5SUM="1d87b54187515ecbfa803df505999e79"
+DOWNLOAD="https://os.ghalkes.nl/dist/dwdiff-2.1.4.tar.bz2"
+MD5SUM="4e7b332b1e9e1a9b6f119f39532ed24f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/dwdiff/src-option.c.patch b/misc/dwdiff/src-option.c.patch
new file mode 100644
index 0000000000..682fbbea85
--- /dev/null
+++ b/misc/dwdiff/src-option.c.patch
@@ -0,0 +1,14 @@
+diff -ru dwdiff-2.1.4.orig/src/option.c dwdiff-2.1.4/src/option.c
+--- dwdiff-2.1.4.orig/src/option.c 2020-12-13 06:38:01.000000000 -0500
++++ dwdiff-2.1.4/src/option.c 2021-10-26 08:48:13.189583300 -0400
+@@ -470,8 +470,10 @@
+ option.output = stdout;
+
+ initOptions();
++#ifdef USE_UNICODE
+ UErrorCode error = U_ZERO_ERROR;
+ ONLY_UNICODE(option.decomposition = unorm2_getNFDInstance(&error);)
++#endif
+
+ option.needStartStop = true;
+
diff --git a/misc/fbcat/README b/misc/fbcat/README
index 926e05e60e..6b18bbf38b 100644
--- a/misc/fbcat/README
+++ b/misc/fbcat/README
@@ -1,10 +1,12 @@
fbcat (take screenshots of the framebuffer console)
-fbcat takes a screenshot using the framebuffer device and stores it in a
-PPM file. Also provided is a fbgrab command, which takes PNG screenshots
-and supports several useful options (such as changing consoles).
+fbcat takes a screenshot using the framebuffer device and stores it
+in a PPM file. Also provided is a fbgrab command, which takes PNG
+screenshots and supports several useful options (such as changing
+consoles).
-The following visuals are supported: TRUECOLOR, DIRECTCOLOR, PSEUDOCOLOR,
-STATIC_PSEUDOCOLOR, MONO01, MONO10.
+The following visuals are supported: TRUECOLOR, DIRECTCOLOR,
+PSEUDOCOLOR, STATIC_PSEUDOCOLOR, MONO01, MONO10.
-On the SlackBuild author's system, fbcat runs about 3x as fast as fbdump.
+On the SlackBuild author's system, fbcat runs about 3x as fast as
+fbdump.
diff --git a/misc/fbcat/fbcat.SlackBuild b/misc/fbcat/fbcat.SlackBuild
index 35f9efa382..ba8175cbb4 100644
--- a/misc/fbcat/fbcat.SlackBuild
+++ b/misc/fbcat/fbcat.SlackBuild
@@ -2,14 +2,16 @@
# Slackware build script for fbcat
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20210910 bkw: update for v0.5.2.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=fbcat
-VERSION=${VERSION:-0.5.1}
+VERSION=${VERSION:-0.5.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -22,9 +24,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -57,11 +56,8 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
sed -i "s,-g -O2,$SLKCFLAGS," Makefile
make
diff --git a/misc/fbcat/fbcat.info b/misc/fbcat/fbcat.info
index 5466c852ad..aa1e5a5b29 100644
--- a/misc/fbcat/fbcat.info
+++ b/misc/fbcat/fbcat.info
@@ -1,10 +1,10 @@
PRGNAM="fbcat"
-VERSION="0.5.1"
-HOMEPAGE="http://jwilk.net/software/fbcat"
-DOWNLOAD="https://github.com/jwilk/fbcat/releases/download/0.5.1/fbcat-0.5.1.tar.gz"
-MD5SUM="944fd3854bfe00971bfcd830f6c94497"
+VERSION="0.5.2"
+HOMEPAGE="https://jwilk.net/software/fbcat"
+DOWNLOAD="https://github.com/jwilk/fbcat/releases/download/0.5.2/fbcat-0.5.2.tar.gz"
+MD5SUM="b54912af77a865f550cab9f54f840f54"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/fbdump/README b/misc/fbdump/README
index c7cd539bb1..43c62d8ed7 100644
--- a/misc/fbdump/README
+++ b/misc/fbdump/README
@@ -1,15 +1,17 @@
fbdump (captures the visible portion of framebuffer to stdout)
-fbdump is a simple tool that captures the contents of the visible portion of
-the Linux framebuffer device and writes it to the standard output as a PPM
-file. In other words, it takes a screenshot of anything running on the
-framebuffer. It currently has fairly complete support for packed-pixel
-framebuffer types and also works with the VGA16 framebuffer driver.
+fbdump is a simple tool that captures the contents of the visible
+portion of the Linux framebuffer device and writes it to the standard
+output as a PPM file. In other words, it takes a screenshot of
+anything running on the framebuffer. It currently has fairly complete
+support for packed-pixel framebuffer types and also works with the
+VGA16 framebuffer driver.
To get a popular image format, issue a command like:
fbdump | pnmtopng > shot.png
Note: fbdump is rather slow on modern systems with high-resolution
-framebuffers at 32-bit color depth. On the maintainer's system, it takes
-8 seconds to dump a 1920x1080x32 framebuffer. Be patient.
+framebuffers at 32-bit color depth. On some systems, it takes several
+seconds to dump a 1920x1080x32 framebuffer. Be patient. Or use fbcat
+instead.
diff --git a/misc/fbdump/fbdump.SlackBuild b/misc/fbdump/fbdump.SlackBuild
index e504c42a50..53fce81492 100644
--- a/misc/fbdump/fbdump.SlackBuild
+++ b/misc/fbdump/fbdump.SlackBuild
@@ -26,7 +26,7 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# Now maintained by B. Watson (yalhcru@gmail.com)
+# Now maintained by B. Watson (urchlay@slackware.uk)
# 20170324 bkw:
# - take over maintenance.
@@ -58,9 +58,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -93,11 +90,8 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# 20170324 bkw: maybe returning from main() used to cause stdout to
# be flushed, back when fbdump was new... but these days we need to
diff --git a/misc/fbdump/fbdump.info b/misc/fbdump/fbdump.info
index 790bce43a3..543ba417cc 100644
--- a/misc/fbdump/fbdump.info
+++ b/misc/fbdump/fbdump.info
@@ -1,10 +1,10 @@
PRGNAM="fbdump"
VERSION="0.4.2"
-HOMEPAGE="http://www.rcdrummond.net/fbdump/"
-DOWNLOAD="http://www.rcdrummond.net/fbdump/fbdump-0.4.2.tar.gz"
+HOMEPAGE="https://www.rcdrummond.net/fbdump/"
+DOWNLOAD="https://www.rcdrummond.net/fbdump/fbdump-0.4.2.tar.gz"
MD5SUM="85ae97c0800a2caf2b04ad7764e3915b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/fcitx-mozc/fcitx-mozc.SlackBuild b/misc/fcitx-mozc/fcitx-mozc.SlackBuild
index 8c266f0eea..55d0abd24f 100644
--- a/misc/fcitx-mozc/fcitx-mozc.SlackBuild
+++ b/misc/fcitx-mozc/fcitx-mozc.SlackBuild
@@ -1,31 +1,17 @@
#!/bin/bash
+
# Slackware build script for fcitx-mozc
-# Issued under The MIT License (MIT)
-#
-# Copyright 2016 Kuro_CODE25
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
+
+# Copyright 2015-2023 Kuro_CODE25 JAPAN
+# All rights reserved.
#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
+# Licensed under the MIT License.
+# See https://opensource.org/licenses/MIT for details.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=fcitx-mozc
-VERSION=${VERSION:-2.17.2313.102.1}
+VERSION=${VERSION:-2.26.4360.102.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +24,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -49,7 +32,6 @@ fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-BLDBASEDIR=$TMP/$PRGNAM-$VERSION
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
@@ -67,42 +49,40 @@ fi
set -e
-BLDTYPE=Release
-
-# source rev. and version.
-ZIPCODE_REL=201511
-PROTOBUF_REV=172019c40bf548908ab09bfd276074c929d48415
-GYP_REV=e2e928bacd07fead99a18cb08d64cb24e131d3e5
-JAPNESE_USAGE_DICT_REV=e5b3425575734c323e1d947009dd74709437b684
-MOZC_REV=3306d3314499a54a4064b8b80bbc1bce3f6cfac4
-FCITX_PATCH_VER=2.17.2313.102.1
-
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
mkdir -p $PRGNAM-$VERSION
cd $PRGNAM-$VERSION
-echo "prepare source file..."
-# unzip packages
+ZIPCODE_REL=202011
+PROTOBUF_REV=fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a
+GYP_REV=caa60026e223fc501e8b337fd5086ece4028b1c6
+JAPANESE_USAGE_DICT_REV=e5b3425575734c323e1d947009dd74709437b684
+ABSEIL_CPP_REV=0f3bb466b868b523cf1dc9b2aaaed65c77b28862
+BREAKPAD_REV=216cea7bca53fa441a3ee0d0f5fd339a3a894224
+GOOGLETEST_REV=703bd9caab50b139428cea1aaff9974ebee5742e
+JSONCPP_REV=11086dd6a7eba04289944367ca82cea71299ed70
+MOZC_REV=ca82d39d08df3359fdf5c653a1f56b3e95cbe2ce
unzip ${CWD}/x-ken-all-${ZIPCODE_REL}.zip
unzip ${CWD}/jigyosyo-${ZIPCODE_REL}.zip
unzip ${CWD}/mozc-$MOZC_REV.zip
-unzip ${CWD}/japanese-usage-dictionary-$JAPNESE_USAGE_DICT_REV.zip
+unzip ${CWD}/japanese-usage-dictionary-$JAPANESE_USAGE_DICT_REV.zip
unzip ${CWD}/gyp-$GYP_REV.zip
unzip ${CWD}/protobuf-$PROTOBUF_REV.zip
-
-# extact tar file
-tar -xvf ${CWD}/fcitx-mozc-icon.tar.gz
-
-cp $CWD/fcitx-mozc-${FCITX_PATCH_VER}.patch .
-
-# rename directory
+unzip ${CWD}/googletest-$GOOGLETEST_REV.zip
+unzip ${CWD}/jsoncpp-$JSONCPP_REV.zip
+unzip ${CWD}/breakpad-$BREAKPAD_REV.zip
+unzip ${CWD}/abseil-cpp-$ABSEIL_CPP_REV.zip
mv mozc-$MOZC_REV mozc
-mv japanese-usage-dictionary-$JAPNESE_USAGE_DICT_REV japanese_usage_dictionary
+mv japanese-usage-dictionary-$JAPANESE_USAGE_DICT_REV japanese_usage_dictionary
mv protobuf-$PROTOBUF_REV protobuf
mv gyp-$GYP_REV gyp
+mv googletest-$GOOGLETEST_REV googletest
+mv jsoncpp-$JSONCPP_REV jsoncpp
+mv breakpad-$BREAKPAD_REV breakpad
+mv abseil-cpp-$ABSEIL_CPP_REV abseil-cpp
chown -R root:root .
find -L . \
@@ -111,76 +91,71 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# Apply fcitx patch
-cd $BLDBASEDIR/mozc/src
-echo "Apply fcitx patch ..."
-rm unix/fcitx -rf
-patch -Np2 -i "$BLDBASEDIR/fcitx-mozc-${FCITX_PATCH_VER}.patch"
-
-# Generate zip code seed
-echo "Generating zip code seed ..."
-python2 dictionary/gen_zip_code_seed.py --zip_code="$BLDBASEDIR/x-ken-all.csv" --jigyosyo="$BLDBASEDIR/JIGYOSYO.CSV" >> data/dictionary_oss/dictionary09.txt
-echo "Done."
-
-# Copy third party deps
-echo "Copy third party deps ..."
-cd $BLDBASEDIR
-for dep in gyp protobuf japanese_usage_dictionary
-do
- cp -a $dep mozc/src/third_party/
-done
-
-# build package
-echo "build package..."
CFLAGS="${CFLAGS} -fvisibility=hidden"
CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
-cd $BLDBASEDIR/mozc/src
-
-_targets="server/server.gyp:mozc_server gui/gui.gyp:mozc_tool unix/fcitx/fcitx.gyp:fcitx-mozc"
+cd $TMP/$PRGNAM-$VERSION/mozc/src
+rm unix/fcitx5/fcitx5.gyp
+PYTHONPATH="$PWD:$PYTHONPATH" python3 dictionary/gen_zip_code_seed.py \
+ --zip_code="$TMP/$PRGNAM-$VERSION/x-ken-all.csv" \
+ --jigyosyo="$TMP/$PRGNAM-$VERSION/JIGYOSYO.CSV" >> data/dictionary_oss/dictionary09.txt
-GYP_DEFINES="document_dir=/usr/share/licenses/$pkgname use_libzinnia=1" python2 build_mozc.py gyp --noqt
-sed -i 's|command = $cxx -MMD -MF $out.d $defines $includes $cflags $cflags_cc $cflags_pch_cc -c $in -o $out|command = $cxx -MMD -MF $out.d $defines $includes -D__STRICT_ANSI__ $cflags $cflags_cc $cflags_pch_cc -c $in -o $out|' out_linux/Release/build.ninja
-python2 build_mozc.py build -c $BLDTYPE $_targets
-
-# Extract license part of mozc
-head -n 29 server/mozc_server.cc > LICENSE
+cd $TMP/$PRGNAM-$VERSION
+for dep in gyp protobuf japanese_usage_dictionary googletest jsoncpp breakpad abseil-cpp
+do
+ cp -a $dep mozc/src/third_party/
+done
-BLDTYPE=Release
+cd $TMP/$PRGNAM-$VERSION/mozc/src
+QTDIR=/usr GYP_DEFINES="document_dir=/usr/share/licenses/$PRGNAM use_libzinnia=1" python3 build_mozc.py gyp
+sed -i 's|python|python3|' ../scripts/build
+TARGETS="server/server.gyp:mozc_server gui/gui.gyp:mozc_tool unix/fcitx/fcitx.gyp:fcitx-mozc" \
+ _bldtype=Release ../scripts/build
-# install mozc to /usr/lib even if 64 bit
-install -D -m 755 out_linux/${BLDTYPE}/mozc_server "${PKG}/usr/lib/mozc/mozc_server"
-install -m 755 out_linux/${BLDTYPE}/mozc_tool "${PKG}/usr/lib/mozc/mozc_tool"
+PREFIX=${PKG}/usr
+_bldtype=Release
-install -d "${PKG}/usr/share/licenses/$pkgname/"
-install -m 644 LICENSE data/installer/*.html "${PKG}/usr/share/licenses/${pkgname}/"
+install -D -m 755 "out_linux/${_bldtype}/mozc_server" "${PREFIX}/lib${LIBDIRSUFFIX}/mozc/mozc_server"
+install -D -m 755 "out_linux/${_bldtype}/mozc_tool" "${PREFIX}/lib${LIBDIRSUFFIX}/mozc/mozc_tool"
+install -d "${PREFIX}/share/doc/mozc/"
+install -m 644 data/installer/*.html "${PREFIX}/share/doc/mozc/"
-for mofile in out_linux/${BLDTYPE}/gen/unix/fcitx/po/*.mo
+for mofile in out_linux/${_bldtype}/gen/unix/fcitx/po/*.mo
do
- filename=`basename $mofile`
- lang=${filename/.mo/}
- install -D -m 644 "$mofile" "${PKG}/usr/share/locale/$lang/LC_MESSAGES/fcitx-mozc.mo"
+ filename=`basename $mofile`
+ lang=${filename/.mo/}
+ install -D -m 644 "$mofile" "${PREFIX}/share/locale/$lang/LC_MESSAGES/fcitx-mozc.mo"
done
-install -D -m 755 out_linux/${BLDTYPE}/fcitx-mozc.so "${PKG}/usr/lib${LIBDIRSUFFIX}/fcitx/fcitx-mozc.so"
-install -D -m 644 unix/fcitx/fcitx-mozc.conf "${PKG}/usr/share/fcitx/addon/fcitx-mozc.conf"
-install -D -m 644 unix/fcitx/mozc.conf "${PKG}/usr/share/fcitx/inputmethod/mozc.conf"
-
-install -d "${PKG}/usr/share/fcitx/mozc/icon"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-alpha_full.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-alpha_full.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-alpha_half.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-alpha_half.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-direct.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-direct.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-hiragana.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-hiragana.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-katakana_full.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-katakana_full.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-katakana_half.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-katakana_half.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-dictionary.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-dictionary.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-properties.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-properties.png"
-install -m 644 "$BLDBASEDIR/fcitx-mozc-icons/mozc-tool.png" "${PKG}/usr/share/fcitx/mozc/icon/mozc-tool.png"
+install -D -m 755 "out_linux/${_bldtype}/fcitx-mozc.so" "${PREFIX}/lib${LIBDIRSUFFIX}/fcitx/fcitx-mozc.so"
+install -D -m 644 unix/fcitx/fcitx-mozc.conf "${PREFIX}/share/fcitx/addon/fcitx-mozc.conf"
+install -D -m 644 unix/fcitx/mozc.conf "${PREFIX}/share/fcitx/inputmethod/mozc.conf"
+
+install -d "${PREFIX}/share/fcitx/mozc/icon"
+install -D -m 644 data/images/product_icon_32bpp-128.png "${PREFIX}/share/fcitx/mozc/icon/mozc.png"
+install -D -m 644 ../scripts/icons/ui-alpha_full.png "${PREFIX}/share/fcitx/mozc/icon/mozc-alpha_full.png"
+install -D -m 644 ../scripts/icons/ui-alpha_half.png "${PREFIX}/share/fcitx/mozc/icon/mozc-alpha_half.png"
+install -D -m 644 ../scripts/icons/ui-direct.png "${PREFIX}/share/fcitx/mozc/icon/mozc-direct.png"
+install -D -m 644 ../scripts/icons/ui-hiragana.png "${PREFIX}/share/fcitx/mozc/icon/mozc-hiragana.png"
+install -D -m 644 ../scripts/icons/ui-katakana_full.png "${PREFIX}/share/fcitx/mozc/icon/mozc-katakana_full.png"
+install -D -m 644 ../scripts/icons/ui-katakana_half.png "${PREFIX}/share/fcitx/mozc/icon/mozc-katakana_half.png"
+install -D -m 644 ../scripts/icons/ui-dictionary.png "${PREFIX}/share/fcitx/mozc/icon/mozc-dictionary.png"
+install -D -m 644 ../scripts/icons/ui-properties.png "${PREFIX}/share/fcitx/mozc/icon/mozc-properties.png"
+install -D -m 644 ../scripts/icons/ui-tool.png "${PREFIX}/share/fcitx/mozc/icon/mozc-tool.png"
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+cd $TMP/$PRGNAM-$VERSION/mozc
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS CONTRIBUTORS LICENSE README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
-
-# install slack-desc
cat $CWD/slack-desc > $PKG/install/slack-desc
cd $PKG
diff --git a/misc/fcitx-mozc/fcitx-mozc.info b/misc/fcitx-mozc/fcitx-mozc.info
index d3b06e4644..c64e701fdf 100644
--- a/misc/fcitx-mozc/fcitx-mozc.info
+++ b/misc/fcitx-mozc/fcitx-mozc.info
@@ -1,24 +1,28 @@
PRGNAM="fcitx-mozc"
-VERSION="2.17.2313.102.1"
+VERSION="2.26.4360.102.1"
HOMEPAGE="https://fcitx-im.org"
-DOWNLOAD="http://download.fcitx-im.org/fcitx-mozc/fcitx-mozc-2.17.2313.102.1.patch \
- http://download.fcitx-im.org/fcitx-mozc/fcitx-mozc-icon.tar.gz \
- https://slackware.uk/sbosrcarch/by-name/misc/fcitx-mozc/jigyosyo-201511.zip \
- https://slackware.uk/sbosrcarch/by-name/misc/fcitx-mozc/x-ken-all-201511.zip \
- https://github.com/google/mozc/archive/3306d3314499a54a4064b8b80bbc1bce3f6cfac4/mozc-3306d3314499a54a4064b8b80bbc1bce3f6cfac4.zip \
+DOWNLOAD="https://github.com/abseil/abseil-cpp/archive/0f3bb466b868b523cf1dc9b2aaaed65c77b28862/abseil-cpp-0f3bb466b868b523cf1dc9b2aaaed65c77b28862.zip \
+ https://github.com/google/breakpad/archive/216cea7bca53fa441a3ee0d0f5fd339a3a894224/breakpad-216cea7bca53fa441a3ee0d0f5fd339a3a894224.zip \
+ https://github.com/google/googletest/archive/703bd9caab50b139428cea1aaff9974ebee5742e/googletest-703bd9caab50b139428cea1aaff9974ebee5742e.zip \
+ https://github.com/chromium/gyp/archive/caa60026e223fc501e8b337fd5086ece4028b1c6/gyp-caa60026e223fc501e8b337fd5086ece4028b1c6.zip \
https://github.com/hiroyuki-komatsu/japanese-usage-dictionary/archive/e5b3425575734c323e1d947009dd74709437b684/japanese-usage-dictionary-e5b3425575734c323e1d947009dd74709437b684.zip \
- https://github.com/google/protobuf/archive/172019c40bf548908ab09bfd276074c929d48415/protobuf-172019c40bf548908ab09bfd276074c929d48415.zip \
- https://github.com/adblockplus/gyp/archive/e2e928bacd07fead99a18cb08d64cb24e131d3e5/gyp-e2e928bacd07fead99a18cb08d64cb24e131d3e5.zip"
-MD5SUM="45fc59b37e21fc9d19875a9a45683688 \
- 80fe2ef127b70649df22d133822ac8a7 \
- 6a077e9aef4d8510cb4863e15ad2aed2 \
- 613677880579f1dc03f0637d42abaf0c \
- 1b6d8aa97cb9801d214de0f47fee0242 \
+ https://slackware.uk/~urchlay/src/jigyosyo-202011.zip \
+ https://github.com/open-source-parsers/jsoncpp/archive/11086dd6a7eba04289944367ca82cea71299ed70/jsoncpp-11086dd6a7eba04289944367ca82cea71299ed70.zip \
+ https://github.com/fcitx/mozc/archive/ca82d39d08df3359fdf5c653a1f56b3e95cbe2ce/mozc-ca82d39d08df3359fdf5c653a1f56b3e95cbe2ce.zip \
+ https://github.com/protocolbuffers/protobuf/archive/fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a/protobuf-fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a.zip \
+ https://slackware.uk/~urchlay/src/x-ken-all-202011.zip"
+MD5SUM="4f23c5fcb19a7ef0fb6ce0f636d480e3 \
+ d87baf3e820df3f32e278633f8cf2904 \
+ 768da4173ee9df3248b8f828747982ad \
+ 699c5af5c6d7e19835afb5292d151f91 \
a6eb1da9ad7ceffcb9683003332abf7e \
- 828b7ffb92b4a01cce10312cdef4f532 \
- fe502a9242ba799406b1141b5085a24d"
+ c5f9c8f0149f5350cfd9dfcfa876aed4 \
+ 2390d646496db0bcec0ffa6bbfee2435 \
+ 257fcb244249a3c65c576cceb5cbb7c8 \
+ cb4b1baed208474284161b7abd5cc17c \
+ 669ae868ea978ca06909a2d4562eaf0a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="zinnia"
+REQUIRES=""
MAINTAINER="Kuro_CODE25"
EMAIL="kuro.code25@gmail.com"
diff --git a/misc/fcitx5-chewing/README b/misc/fcitx5-chewing/README
new file mode 100644
index 0000000000..284b815cac
--- /dev/null
+++ b/misc/fcitx5-chewing/README
@@ -0,0 +1,2 @@
+fcitx5-chewing is the chewing wrapper for fcitx5. Required
+dependencies are fcitx5 and libchewing.
diff --git a/misc/fcitx5-chewing/doinst.sh b/misc/fcitx5-chewing/doinst.sh
new file mode 100644
index 0000000000..4110f5514d
--- /dev/null
+++ b/misc/fcitx5-chewing/doinst.sh
@@ -0,0 +1,5 @@
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/misc/fcitx5-chewing/fcitx5-chewing.SlackBuild b/misc/fcitx5-chewing/fcitx5-chewing.SlackBuild
new file mode 100644
index 0000000000..2c3572d0a0
--- /dev/null
+++ b/misc/fcitx5-chewing/fcitx5-chewing.SlackBuild
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Copyright 2022 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-chewing
+VERSION=${VERSION:-5.1.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* README* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-chewing/fcitx5-chewing.info b/misc/fcitx5-chewing/fcitx5-chewing.info
new file mode 100644
index 0000000000..881b0acbd8
--- /dev/null
+++ b/misc/fcitx5-chewing/fcitx5-chewing.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5-chewing"
+VERSION="5.1.1"
+HOMEPAGE="https://download.fcitx-im.org/fcitx5/fcitx5-chewing/"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/fcitx5-chewing/fcitx5-chewing-5.1.1.tar.xz"
+MD5SUM="02c058c159db4bd69147a7a71d015c76"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fcitx5 libchewing"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fcitx5-chewing/slack-desc b/misc/fcitx5-chewing/slack-desc
new file mode 100644
index 0000000000..c0be98c5d0
--- /dev/null
+++ b/misc/fcitx5-chewing/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5-chewing: fcitx5-chewing (Chewing input method engine wrapper for fcitx5)
+fcitx5-chewing:
+fcitx5-chewing: Fcitx wrapper for the chewing input method engine.
+fcitx5-chewing:
+fcitx5-chewing: Homepage: https://fcitx-im.org/wiki/Fcitx_5
+fcitx5-chewing:
+fcitx5-chewing:
+fcitx5-chewing:
+fcitx5-chewing:
+fcitx5-chewing:
+fcitx5-chewing:
diff --git a/misc/fcitx5-chinese-addons/README b/misc/fcitx5-chinese-addons/README
new file mode 100644
index 0000000000..30a7236fd9
--- /dev/null
+++ b/misc/fcitx5-chinese-addons/README
@@ -0,0 +1,4 @@
+fcitx5-chinese-addons provides pinyin and table input method support
+for fcitx5. Released under LGPL-2.1+.
+
+im/pinyin/emoji.txt is derived from Unicode CLDR with modification.
diff --git a/misc/fcitx5-chinese-addons/doinst.sh b/misc/fcitx5-chinese-addons/doinst.sh
new file mode 100644
index 0000000000..ca71fd3c40
--- /dev/null
+++ b/misc/fcitx5-chinese-addons/doinst.sh
@@ -0,0 +1,12 @@
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
+if [ -e usr/share/glib-2.0/schemas ]; then
+ if [ -x /usr/bin/glib-compile-schemas ]; then
+ /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
+ fi
+fi
+
diff --git a/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild b/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild
new file mode 100644
index 0000000000..2d1e5c5a1f
--- /dev/null
+++ b/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.SlackBuild
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Copyright 2022-2023 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-chinese-addons
+VERSION=${VERSION:-5.1.4}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-${VERSION}_dict.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.info b/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.info
new file mode 100644
index 0000000000..35482d7a7e
--- /dev/null
+++ b/misc/fcitx5-chinese-addons/fcitx5-chinese-addons.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5-chinese-addons"
+VERSION="5.1.4"
+HOMEPAGE="https://github.com/fcitx/fcitx5-chinese-addons"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/fcitx5-chinese-addons/fcitx5-chinese-addons-5.1.4_dict.tar.xz"
+MD5SUM="cc8dcac68aebfcf836160fe3fd0108e6"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fcitx5-qt libime"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fcitx5-chinese-addons/slack-desc b/misc/fcitx5-chinese-addons/slack-desc
new file mode 100644
index 0000000000..01fc72e5f1
--- /dev/null
+++ b/misc/fcitx5-chinese-addons/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5-chinese-addons: fcitx5-chinese-addons (Chinese related addon for fcitx5)
+fcitx5-chinese-addons:
+fcitx5-chinese-addons: This provides pinyin and table input method support for fcitx5.
+fcitx5-chinese-addons: Released under LGPL-2.1+.
+fcitx5-chinese-addons:
+fcitx5-chinese-addons:
+fcitx5-chinese-addons:
+fcitx5-chinese-addons:
+fcitx5-chinese-addons:
+fcitx5-chinese-addons: Homepage: https://github.com/fcitx/fcitx5-chinese-addons
+fcitx5-chinese-addons:
diff --git a/misc/fcitx5-configtool/README b/misc/fcitx5-configtool/README
new file mode 100644
index 0000000000..929c275144
--- /dev/null
+++ b/misc/fcitx5-configtool/README
@@ -0,0 +1,6 @@
+Fcitx5-configtool provides the configuration GUI for Fcitx5.
+
+Do note that although this package could be installed along with the
+bundled kcm-fcitx, they are considered conflicting packages in some
+other distros (like Arch), so depending on your situation, you may
+uninstall and blacklist kcm-fcitx before installing this package.
diff --git a/misc/sbo-templates/doinst.sh b/misc/fcitx5-configtool/doinst.sh
index 5fb28930db..5fb28930db 100644
--- a/misc/sbo-templates/doinst.sh
+++ b/misc/fcitx5-configtool/doinst.sh
diff --git a/misc/fcitx5-configtool/fcitx5-configtool.SlackBuild b/misc/fcitx5-configtool/fcitx5-configtool.SlackBuild
new file mode 100644
index 0000000000..50b647d7ba
--- /dev/null
+++ b/misc/fcitx5-configtool/fcitx5-configtool.SlackBuild
@@ -0,0 +1,109 @@
+#!/bin/bash
+
+# Copyright 2022-2023 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-configtool
+VERSION=${VERSION:-5.1.4}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+# patch desktop file to conform with standards
+if [ -f $PKG/usr/share/applications/kcm_fcitx5.desktop ]; then
+ sed -i 's/True/true/g' $PKG/usr/share/applications/kcm_fcitx5.desktop
+fi
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-configtool/fcitx5-configtool.info b/misc/fcitx5-configtool/fcitx5-configtool.info
new file mode 100644
index 0000000000..1afb7bbbe8
--- /dev/null
+++ b/misc/fcitx5-configtool/fcitx5-configtool.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5-configtool"
+VERSION="5.1.4"
+HOMEPAGE="https://github.com/fcitx/fcitx5-configtool"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/fcitx5-configtool/fcitx5-configtool-5.1.4.tar.xz"
+MD5SUM="25e7b02ee957e15d10ce632483f3e0e9"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fcitx5-qt"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fcitx5-configtool/slack-desc b/misc/fcitx5-configtool/slack-desc
new file mode 100644
index 0000000000..663a547c50
--- /dev/null
+++ b/misc/fcitx5-configtool/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5-configtool: fcitx5-configtool (Configuration Tool for Fcitx5)
+fcitx5-configtool:
+fcitx5-configtool: Configuration Tool for Fcitx5.
+fcitx5-configtool:
+fcitx5-configtool: Homepage: https://fcitx-im.org/wiki/Fcitx_5
+fcitx5-configtool:
+fcitx5-configtool:
+fcitx5-configtool:
+fcitx5-configtool:
+fcitx5-configtool:
+fcitx5-configtool:
diff --git a/misc/fcitx5-gtk/README b/misc/fcitx5-gtk/README
new file mode 100644
index 0000000000..aa8eaf0727
--- /dev/null
+++ b/misc/fcitx5-gtk/README
@@ -0,0 +1,15 @@
+fcitx5-gtk provides the GTK IM modules and libraries for fcitx5.
+
+If you enable GObject Introspection (via the ENABLE_GIR CMake
+variable), make install will install some files to the system's GIR
+directories regardless of what CMAKE_INSTALL_PREFIX is set to.
+
+If you have installed it to a custom prefix, you'll need to update the
+GTK input method module cache. This is done by invoking
+gtk-query-immodules-3.0 (or gtk-query-immodules-3.0 for GTK 2) and
+setting GTK_PATH to point at fcitx5-gtk's GTK library install path
+beforehand. For example:
+
+ GTK_PATH=/your/install/path/lib/gtk-3.0 gtk-query-immodules-3.0 \
+ --update-cache
+
diff --git a/misc/fcitx5-gtk/fcitx5-gtk.SlackBuild b/misc/fcitx5-gtk/fcitx5-gtk.SlackBuild
new file mode 100644
index 0000000000..dcdf5d7681
--- /dev/null
+++ b/misc/fcitx5-gtk/fcitx5-gtk.SlackBuild
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+# Copyright 2022 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-gtk
+VERSION=${VERSION:-5.1.2}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* README* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-gtk/fcitx5-gtk.info b/misc/fcitx5-gtk/fcitx5-gtk.info
new file mode 100644
index 0000000000..ae6a61cb21
--- /dev/null
+++ b/misc/fcitx5-gtk/fcitx5-gtk.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5-gtk"
+VERSION="5.1.2"
+HOMEPAGE="https://github.com/fcitx/fcitx5-gtk"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/fcitx5-gtk/fcitx5-gtk-5.1.2.tar.xz"
+MD5SUM="8e7e17fd0569b1f7492812f455fbf7b8"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fcitx5"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fcitx5-gtk/slack-desc b/misc/fcitx5-gtk/slack-desc
new file mode 100644
index 0000000000..5cd05489ea
--- /dev/null
+++ b/misc/fcitx5-gtk/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5-gtk: fcitx5-gtk (Gtk IM modules and DBus client library for fcitx5)
+fcitx5-gtk:
+fcitx5-gtk: Gtk IM module for fcitx5 and glib based dbus client library.
+fcitx5-gtk:
+fcitx5-gtk: Homepage: https://fcitx-im.org/wiki/Fcitx_5
+fcitx5-gtk:
+fcitx5-gtk:
+fcitx5-gtk:
+fcitx5-gtk:
+fcitx5-gtk:
+fcitx5-gtk:
diff --git a/misc/fcitx5-mcbopomofo/README b/misc/fcitx5-mcbopomofo/README
new file mode 100644
index 0000000000..8830b9ec24
--- /dev/null
+++ b/misc/fcitx5-mcbopomofo/README
@@ -0,0 +1,2 @@
+Please refer to the wiki for other tips and tricks:
+https://github.com/openvanilla/fcitx5-mcbopomofo/wiki/
diff --git a/misc/fcitx5-mcbopomofo/doinst.sh b/misc/fcitx5-mcbopomofo/doinst.sh
new file mode 100644
index 0000000000..65c7e2eeb9
--- /dev/null
+++ b/misc/fcitx5-mcbopomofo/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/misc/fcitx5-mcbopomofo/fcitx5-mcbopomofo.SlackBuild b/misc/fcitx5-mcbopomofo/fcitx5-mcbopomofo.SlackBuild
new file mode 100644
index 0000000000..26c2e7fcb9
--- /dev/null
+++ b/misc/fcitx5-mcbopomofo/fcitx5-mcbopomofo.SlackBuild
@@ -0,0 +1,105 @@
+#!/bin/bash
+
+# Copyright 2022 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-mcbopomofo
+VERSION=${VERSION:-2.7}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} \
+ -DENABLE_TEST=no ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSE* README* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-mcbopomofo/fcitx5-mcbopomofo.info b/misc/fcitx5-mcbopomofo/fcitx5-mcbopomofo.info
new file mode 100644
index 0000000000..991cc07626
--- /dev/null
+++ b/misc/fcitx5-mcbopomofo/fcitx5-mcbopomofo.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5-mcbopomofo"
+VERSION="2.7"
+HOMEPAGE="https://github.com/openvanilla/fcitx5-mcbopomofo"
+DOWNLOAD="https://github.com/openvanilla/fcitx5-mcbopomofo/archive/2.7/fcitx5-mcbopomofo-2.7.tar.gz"
+MD5SUM="ca825bab093fe4ba6f81cda92970f1ba"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fcitx5"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fcitx5-mcbopomofo/slack-desc b/misc/fcitx5-mcbopomofo/slack-desc
new file mode 100644
index 0000000000..957f0f00ee
--- /dev/null
+++ b/misc/fcitx5-mcbopomofo/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5-mcbopomofo: fcitx5-mcbopomofo (mcbopomofo input method for Fcitx5)
+fcitx5-mcbopomofo:
+fcitx5-mcbopomofo: The Linux version of the mcbopomofo input method on macOS for fcitx5.
+fcitx5-mcbopomofo: It includes goodies such as auto-choosing candidate phrases, custom
+fcitx5-mcbopomofo: phrases, and different zhuyin layouts (such as E-TEN and Hsu).
+fcitx5-mcbopomofo:
+fcitx5-mcbopomofo: Homepage: https://github.com/openvanilla/fcitx5-mcbopomofo
+fcitx5-mcbopomofo:
+fcitx5-mcbopomofo:
+fcitx5-mcbopomofo:
+fcitx5-mcbopomofo:
diff --git a/misc/fcitx5-mozc/0005-Enable-verbose-build.patch b/misc/fcitx5-mozc/0005-Enable-verbose-build.patch
new file mode 100644
index 0000000000..7b7aa127e4
--- /dev/null
+++ b/misc/fcitx5-mozc/0005-Enable-verbose-build.patch
@@ -0,0 +1,30 @@
+From c3bb9b9aeaf6b19aadd76f4c5a526a9d2a38d35a Mon Sep 17 00:00:00 2001
+From: Nobuhiro Iwamatsu <iwamatsu@debian.org>
+Date: Sun, 27 Dec 2020 22:34:54 +0900
+Subject: [PATCH 5/7] Enable verbose build
+
+Description: Enable verboase build
+Forwarded: Not need
+Last-Update: 2022-05-05
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@debian.org>
+---
+ src/build_mozc.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/build_mozc.py b/src/build_mozc.py
+index 305784de..fe5cf817 100755
+--- a/src/build_mozc.py
++++ b/src/build_mozc.py
+@@ -588,7 +588,7 @@ def BuildWithNinja(options, targets):
+
+ for target in targets:
+ (_, target_name) = target.split(':')
+- RunOrDie([ninja, '-C', build_arg, target_name])
++ RunOrDie([ninja, '-v', '-C', build_arg, target_name])
+
+
+ def BuildOnWindows(targets):
+--
+2.36.0
+
diff --git a/misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch b/misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch
new file mode 100644
index 0000000000..19b55f0f3c
--- /dev/null
+++ b/misc/fcitx5-mozc/0008-renderer-Convert-Gtk2-to-Gtk3.patch
@@ -0,0 +1,229 @@
+From b9ae4c57de95a7d73640cce5776540d8d841b0c2 Mon Sep 17 00:00:00 2001
+From: Nobuhiro Iwamatsu <iwamatsu@debian.org>
+Date: Fri, 6 May 2022 16:16:30 +0900
+Subject: [PATCH] renderer: Convert Gtk2 to Gtk3
+
+Description: renderer: Convert Gtk2 to Gtk3
+Forwarded: Not need
+Last-Update: 2022-05-07
+
+Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@debian.org>
+---
+ src/renderer/mozc_renderer_main.cc | 2 +-
+ src/renderer/renderer.gyp | 7 +++----
+ src/renderer/unix/candidate_window.cc | 4 ++--
+ src/renderer/unix/gtk_wrapper.cc | 4 ++--
+ src/renderer/unix/infolist_window.cc | 4 ++--
+ src/renderer/unix/pango_wrapper.cc | 15 +++------------
+ src/renderer/unix/pango_wrapper.h | 3 +--
+ src/renderer/unix/text_renderer.cc | 5 ++---
+ src/renderer/unix/text_renderer.h | 3 +--
+ src/renderer/unix/text_renderer_interface.h | 2 +-
+ 10 files changed, 18 insertions(+), 31 deletions(-)
+
+diff --git a/src/renderer/mozc_renderer_main.cc b/src/renderer/mozc_renderer_main.cc
+index 85a0ae10..3b596d67 100644
+--- a/src/renderer/mozc_renderer_main.cc
++++ b/src/renderer/mozc_renderer_main.cc
+@@ -80,7 +80,7 @@ int main(int argc, char *argv[]) {
+ #ifdef OS_WIN
+ mozc::ScopedCOMInitializer com_initializer;
+ #elif defined(ENABLE_GTK_RENDERER)
+- gtk_set_locale();
++ setlocale(LC_ALL, "");
+ #if !GLIB_CHECK_VERSION(2, 31, 0)
+ // There are not g_thread_init function in glib>=2.31.0.
+ // http://developer.gnome.org/glib/2.31/glib-Deprecated-Thread-APIs.html#g-thread-init
+diff --git a/src/renderer/renderer.gyp b/src/renderer/renderer.gyp
+index 78eb6a75..34141a4a 100644
+--- a/src/renderer/renderer.gyp
++++ b/src/renderer/renderer.gyp
+@@ -532,15 +532,14 @@
+ # Required 'cflags' and 'link_settings' will be automatically
+ # injected into any target which directly or indirectly depends
+ # on this target.
+- 'target_name': 'gtk2_build_environment',
++ 'target_name': 'gtk3_build_environment',
+ 'type': 'none',
+ 'variables': {
+ 'target_pkgs' : [
+ 'glib-2.0',
+ 'gobject-2.0',
+ 'gthread-2.0',
+- 'gtk+-2.0',
+- 'gdk-2.0',
++ 'gtk+-3.0',
+ ],
+ },
+ 'all_dependent_settings': {
+@@ -583,7 +582,7 @@
+ '../ipc/ipc.gyp:ipc',
+ '../protocol/protocol.gyp:genproto_config_proto#host',
+ '../protocol/protocol.gyp:renderer_proto',
+- 'gtk2_build_environment',
++ 'gtk3_build_environment',
+ 'renderer_server',
+ 'renderer_style_handler',
+ 'table_layout',
+diff --git a/src/renderer/unix/candidate_window.cc b/src/renderer/unix/candidate_window.cc
+index bb0a346b..287f6871 100644
+--- a/src/renderer/unix/candidate_window.cc
++++ b/src/renderer/unix/candidate_window.cc
+@@ -85,7 +85,7 @@ CandidateWindow::CandidateWindow(TableLayoutInterface *table_layout,
+
+ bool CandidateWindow::OnPaint(GtkWidget *widget, GdkEventExpose *event) {
+ draw_tool_->Reset(
+- cairo_factory_->CreateCairoInstance(GetCanvasWidget()->window));
++ cairo_factory_->CreateCairoInstance(gtk_widget_get_window(GetCanvasWidget())));
+
+ DrawBackground();
+ DrawShortcutBackground();
+@@ -263,7 +263,7 @@ void CandidateWindow::DrawFrame() {
+ }
+
+ void CandidateWindow::Initialize() {
+- text_renderer_->Initialize(GetCanvasWidget()->window);
++ text_renderer_->Initialize(GetCanvasWidget());
+ }
+
+ void CandidateWindow::UpdateScrollBarSize() {
+diff --git a/src/renderer/unix/gtk_wrapper.cc b/src/renderer/unix/gtk_wrapper.cc
+index 83d206d7..92c5483f 100644
+--- a/src/renderer/unix/gtk_wrapper.cc
++++ b/src/renderer/unix/gtk_wrapper.cc
+@@ -49,7 +49,7 @@ void GtkWrapper::GSignalConnect(gpointer instance, const gchar *signal,
+ }
+
+ void GtkWrapper::GtkWidgetHideAll(GtkWidget *widget) {
+- gtk_widget_hide_all(widget);
++ gtk_widget_hide(widget);
+ }
+
+ void GtkWrapper::GtkWidgetShowAll(GtkWidget *widget) {
+@@ -135,7 +135,7 @@ void GtkWrapper::GtkWidgetRealize(GtkWidget *widget) {
+
+ void GtkWrapper::GdkWindowSetTypeHint(GtkWidget *widget,
+ GdkWindowTypeHint hint) {
+- gdk_window_set_type_hint(widget->window, hint);
++ gdk_window_set_type_hint(gtk_widget_get_window(widget), hint);
+ }
+
+ } // namespace gtk
+diff --git a/src/renderer/unix/infolist_window.cc b/src/renderer/unix/infolist_window.cc
+index 253f9659..f76f4c93 100644
+--- a/src/renderer/unix/infolist_window.cc
++++ b/src/renderer/unix/infolist_window.cc
+@@ -100,7 +100,7 @@ Rect InfolistWindow::GetCandidateColumnInClientCord() const {
+
+ bool InfolistWindow::OnPaint(GtkWidget *widget, GdkEventExpose *event) {
+ draw_tool_->Reset(
+- cairo_factory_->CreateCairoInstance(GetCanvasWidget()->window));
++ cairo_factory_->CreateCairoInstance(gtk_widget_get_window(GetCanvasWidget())));
+ Draw();
+ return true;
+ }
+@@ -237,7 +237,7 @@ int InfolistWindow::DrawRow(int row, int ypos) {
+ }
+
+ void InfolistWindow::Initialize() {
+- text_renderer_->Initialize(GetCanvasWidget()->window);
++ text_renderer_->Initialize(GetCanvasWidget());
+ }
+
+ void InfolistWindow::ReloadFontConfig(const std::string &font_description) {
+diff --git a/src/renderer/unix/pango_wrapper.cc b/src/renderer/unix/pango_wrapper.cc
+index 8f87699a..545072a3 100644
+--- a/src/renderer/unix/pango_wrapper.cc
++++ b/src/renderer/unix/pango_wrapper.cc
+@@ -88,21 +88,12 @@ void PangoWrapper::AttributesUnref(PangoAttrList *attribute) {
+
+ PangoContext *PangoWrapper::GetContext() { return context_; }
+
+-PangoWrapper::PangoWrapper(GdkDrawable *drawable) : gc_(gdk_gc_new(drawable)) {
+- GdkScreen *screen = gdk_drawable_get_screen(drawable);
+- renderer_ = gdk_pango_renderer_new(screen);
+- gdk_pango_renderer_set_drawable(GDK_PANGO_RENDERER(renderer_), drawable);
+- gdk_pango_renderer_set_gc(GDK_PANGO_RENDERER(renderer_), gc_);
+- context_ = gdk_pango_context_get();
++PangoWrapper::PangoWrapper(GtkWidget *window) {
++ context_ = gtk_widget_get_pango_context(window);
+ }
+
+ PangoWrapper::~PangoWrapper() {
+- gdk_pango_renderer_set_override_color(GDK_PANGO_RENDERER(renderer_),
+- PANGO_RENDER_PART_FOREGROUND, nullptr);
+- gdk_pango_renderer_set_drawable(GDK_PANGO_RENDERER(renderer_), nullptr);
+- gdk_pango_renderer_set_gc(GDK_PANGO_RENDERER(renderer_), nullptr);
+- g_object_unref(gc_);
+- g_object_unref(context_);
++ g_object_unref(G_OBJECT(context_));
+ }
+
+ } // namespace gtk
+diff --git a/src/renderer/unix/pango_wrapper.h b/src/renderer/unix/pango_wrapper.h
+index 7c41cc54..c7c7fb04 100644
+--- a/src/renderer/unix/pango_wrapper.h
++++ b/src/renderer/unix/pango_wrapper.h
+@@ -57,7 +57,7 @@ class PangoLayoutWrapper : public PangoLayoutWrapperInterface {
+
+ class PangoWrapper : public PangoWrapperInterface {
+ public:
+- explicit PangoWrapper(GdkDrawable *drawable);
++ explicit PangoWrapper(GtkWidget *window);
+ virtual ~PangoWrapper();
+ virtual void RendererDrawLayout(PangoLayoutWrapperInterface *layout, int x,
+ int y);
+@@ -68,7 +68,6 @@ class PangoWrapper : public PangoWrapperInterface {
+ private:
+ PangoRenderer *renderer_;
+ PangoContext *context_;
+- GdkGC *gc_;
+ DISALLOW_COPY_AND_ASSIGN(PangoWrapper);
+ };
+ } // namespace gtk
+diff --git a/src/renderer/unix/text_renderer.cc b/src/renderer/unix/text_renderer.cc
+index 164f01bc..4ba96ea2 100644
+--- a/src/renderer/unix/text_renderer.cc
++++ b/src/renderer/unix/text_renderer.cc
+@@ -39,9 +39,8 @@ namespace gtk {
+
+ TextRenderer::TextRenderer(FontSpecInterface *font_spec)
+ : font_spec_(font_spec), pango_(nullptr) {}
+-
+-void TextRenderer::Initialize(GdkDrawable *drawable) {
+- pango_.reset(new PangoWrapper(drawable));
++void TextRenderer::Initialize(GtkWidget *window) {
++ pango_.reset(new PangoWrapper(window));
+ }
+
+ void TextRenderer::SetUpPangoLayout(const std::string &str,
+diff --git a/src/renderer/unix/text_renderer.h b/src/renderer/unix/text_renderer.h
+index c4cd2430..ba36b052 100644
+--- a/src/renderer/unix/text_renderer.h
++++ b/src/renderer/unix/text_renderer.h
+@@ -50,8 +50,7 @@ class TextRenderer : public TextRendererInterface {
+ public:
+ explicit TextRenderer(FontSpecInterface *font_spec);
+ virtual ~TextRenderer() {}
+-
+- virtual void Initialize(GdkDrawable *drawable);
++ virtual void Initialize(GtkWidget *window);
+ virtual Size GetPixelSize(FontSpecInterface::FONT_TYPE font_type,
+ const std::string &str);
+ virtual Size GetMultiLinePixelSize(FontSpecInterface::FONT_TYPE font_type,
+diff --git a/src/renderer/unix/text_renderer_interface.h b/src/renderer/unix/text_renderer_interface.h
+index db823217..9c569f6a 100644
+--- a/src/renderer/unix/text_renderer_interface.h
++++ b/src/renderer/unix/text_renderer_interface.h
+@@ -44,7 +44,7 @@ class TextRendererInterface {
+ TextRendererInterface() {}
+ virtual ~TextRendererInterface() {}
+
+- virtual void Initialize(GdkDrawable *drawable) = 0;
++ virtual void Initialize(GtkWidget *window) = 0;
+ // Returns boundary rectangle size of actual rendered text.
+ virtual Size GetPixelSize(FontSpecInterface::FONT_TYPE font_type,
+ const std::string &str) = 0;
+--
+2.36.0
+
diff --git a/misc/fcitx5-mozc/0010-fix-build-gcc11.patch b/misc/fcitx5-mozc/0010-fix-build-gcc11.patch
new file mode 100644
index 0000000000..eea54d6178
--- /dev/null
+++ b/misc/fcitx5-mozc/0010-fix-build-gcc11.patch
@@ -0,0 +1,11 @@
+diff --color -rupN mozc.orig/src/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc mozc/src/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc
+--- mozc.orig/src/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc 2021-03-15 22:29:19.136624465 +0800
++++ mozc/src/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc 2021-03-15 22:29:50.682448271 +0800
+@@ -37,6 +37,7 @@
+
+ #include <algorithm>
+ #include <array>
++#include <limits>
+ #include "absl/base/internal/hide_ptr.h"
+ #include "absl/base/internal/raw_logging.h"
+ #include "absl/base/internal/spinlock.h"
diff --git a/misc/fcitx5-mozc/0011-build-with-libstdc++.patch b/misc/fcitx5-mozc/0011-build-with-libstdc++.patch
new file mode 100644
index 0000000000..f36b595a59
--- /dev/null
+++ b/misc/fcitx5-mozc/0011-build-with-libstdc++.patch
@@ -0,0 +1,12 @@
+diff --git a/src/gyp/common.gypi b/src/gyp/common.gypi
+index 0635068..dd8043e 100644
+--- a/src/gyp/common.gypi
++++ b/src/gyp/common.gypi
+@@ -105,7 +105,6 @@
+ ],
+ # Libraries for GNU/Linux environment.
+ 'linux_ldflags': [
+- '-lc++',
+ '-pthread',
+ ],
+
diff --git a/misc/fcitx5-mozc/0012-mozc-build-gcc.patch b/misc/fcitx5-mozc/0012-mozc-build-gcc.patch
new file mode 100644
index 0000000000..5d8f74faff
--- /dev/null
+++ b/misc/fcitx5-mozc/0012-mozc-build-gcc.patch
@@ -0,0 +1,27 @@
+Index: b/gyp/common.gypi
+===================================================================
+--- a/gyp/common.gypi
++++ b/gyp/common.gypi
+@@ -128,9 +128,9 @@
+ 'compiler_host_version_int': 304, # Clang 3.4 or higher
+ }],
+ ['target_platform=="Linux"', {
+- 'compiler_target': 'clang',
++ 'compiler_target': 'gcc',
+ 'compiler_target_version_int': 304, # Clang 3.4 or higher
+- 'compiler_host': 'clang',
++ 'compiler_host': 'gcc',
+ 'compiler_host_version_int': 304, # Clang 3.4 or higher
+ }],
+ ],
+@@ -445,8 +445,8 @@
+ ['target_platform=="Linux"', {
+ 'make_global_settings': [
+ ['AR', '<!(which ar)'],
+- ['CC', '<!(which clang)'],
+- ['CXX', '<!(which clang++)'],
++ ['CC', '<!(which gcc)'],
++ ['CXX', '<!(which g++)'],
+ ['LD', '<!(which ld)'],
+ ['NM', '<!(which nm)'],
+ ['READELF', '<!(which readelf)'],
diff --git a/misc/fcitx5-mozc/README b/misc/fcitx5-mozc/README
new file mode 100644
index 0000000000..c28cca4c8c
--- /dev/null
+++ b/misc/fcitx5-mozc/README
@@ -0,0 +1,17 @@
+Fcitx5-mozc is Mozc engine for fcitx5.
+Mozc is a Japanese Input Method Editor (IME) designed for multi-platform
+
+What's Mozc?
+For historical reasons, the project name Mozc has two different meanings
+
+Internal code name of Google Japanese Input that is still commonly used
+inside Google.
+Project name to release a subset of Google Japanese Input in the form of
+ source code under OSS license without any warranty nor user support.
+In this repository, Mozc means the second definition unless otherwise
+noted.
+
+Detailed differences between Google Japanese Input and Mozc are
+described in About Branding.
+( https://github.com/fcitx/mozc/blob/fcitx/docs/about_branding.md )
+
diff --git a/misc/fcitx5-mozc/README.emacs b/misc/fcitx5-mozc/README.emacs
new file mode 100644
index 0000000000..95e994333c
--- /dev/null
+++ b/misc/fcitx5-mozc/README.emacs
@@ -0,0 +1,5 @@
+# for emacs, create {HOME}/.emacs.d/init.el with followng lines
+
+(require 'mozc) ; or (load-file "/path/to/mozc.el")
+(setq default-input-method "japanese-mozc")
+(setq mozc-candidate-style 'overlay)
diff --git a/misc/fcitx5-mozc/fcitx5-mozc.SlackBuild b/misc/fcitx5-mozc/fcitx5-mozc.SlackBuild
new file mode 100644
index 0000000000..2d679c9fce
--- /dev/null
+++ b/misc/fcitx5-mozc/fcitx5-mozc.SlackBuild
@@ -0,0 +1,216 @@
+#!/bin/bash
+
+# Slackware build script for bazel
+
+# Copyright 2022 Isaac Yu <isaacyu1@isaacyu1.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-mozc
+VERSION=${VERSION:-2.26.4360.102.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+BLDBASEDIR=$TMP/$PRGNAM-$VERSION
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+BLDTYPE=Release
+_bldtype=Release
+
+# source rev. and version.
+MOZC_REV=ca82d39d08df3359fdf5c653a1f56b3e95cbe2ce
+GYP_REV=caa60026e223fc501e8b337fd5086ece4028b1c6
+PROTOBUF_REV=fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a
+ABSEIL_CPP_REV=0f3bb466b868b523cf1dc9b2aaaed65c77b28862
+BREAKPAD_REV=2022.07.12
+GOOGLETEST_REV=703bd9caab50b139428cea1aaff9974ebee5742e
+JSONCPP_REV=42e892d96e47b1f6e29844cc705e148ec4856448
+JAPANESE_USAGE_DICT_REV=e5b3425575734c323e1d947009dd74709437b684
+ZIPCODE_REL=202110
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+mkdir -p $PRGNAM-$VERSION
+cd $PRGNAM-$VERSION
+echo "prepare source file..."
+# unzip packages
+unzip $CWD/mozc-$MOZC_REV.zip
+unzip $CWD/gyp-$GYP_REV.zip
+unzip $CWD/protobuf-$PROTOBUF_REV.zip
+unzip $CWD/abseil-cpp-$ABSEIL_CPP_REV.zip
+unzip $CWD/breakpad-${BREAKPAD_REV}.zip
+unzip $CWD/googletest-$GOOGLETEST_REV.zip
+unzip $CWD/jsoncpp-$JSONCPP_REV.zip
+unzip $CWD/japanese-usage-dictionary-$JAPANESE_USAGE_DICT_REV.zip
+unzip $CWD/jigyosyo-$ZIPCODE_REL.zip
+unzip $CWD/x-ken-all-$ZIPCODE_REL.zip
+# extact tar file
+tar -xvf ${CWD}/fcitx-mozc-icon.tar.gz
+
+# rename directory
+mv mozc-$MOZC_REV mozc
+mv gyp-$GYP_REV gyp
+mv protobuf-$PROTOBUF_REV protobuf
+mv abseil-cpp-$ABSEIL_CPP_REV abseil-cpp
+mv breakpad-$BREAKPAD_REV breakpad
+mv googletest-$GOOGLETEST_REV googletest
+mv jsoncpp-$JSONCPP_REV jsoncpp
+mv japanese-usage-dictionary-$JAPANESE_USAGE_DICT_REV japanese_usage_dictionary
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+cd $BLDBASEDIR/mozc
+# prepare zip code dictionary
+unzip -d src/data/dictionary_oss $CWD/jigyosyo-$ZIPCODE_REL.zip
+unzip -d src/data/dictionary_oss $CWD/x-ken-all-$ZIPCODE_REL.zip
+
+cd src/dictionary
+# Generate zip code seed
+sed -i "s/from dictionary import zip_code_util/import zip_code_util/g" gen_zip_code_seed.py
+
+cd ../data/dictionary_oss
+echo "Generating zip code seed ..."
+python3 ../../dictionary/gen_zip_code_seed.py --zip_code=x-ken-all.csv --jigyosyo=JIGYOSYO.CSV >> dictionary09.txt
+echo "Done."
+
+cd $BLDBASEDIR/mozc/scripts
+# Use python3 instead of python in slackware
+sed 's/python/python3/g' -i build
+# fix libdir path of fcitx5-mozc.so for Slackware
+sed 's/lib/lib64/g' -i install_fcitx5
+
+cd ../src
+# We won't need fcitx4 (disable fcitx4 target)
+rm unix/fcitx/fcitx.gyp
+
+cd ../../
+# Copy third party deps
+echo "Copy third party deps ..."
+for dep in abseil-cpp breakpad googletest jsoncpp gyp protobuf japanese_usage_dictionary
+do
+ cp -a $dep mozc/src/third_party/
+done
+
+cd $BLDBASEDIR/mozc/
+# Enable verbose build
+echo "... Apply 0005-Enable-verbose-build.patch"
+patch -p1 < $CWD/0005-Enable-verbose-build.patch
+# Use Gtk3 instead of Gtk2
+echo "... Apply 0008-renderer-Convert-Gtk2-to-Gtk3.patch"
+patch -p1 < $CWD/0008-renderer-Convert-Gtk2-to-Gtk3.patch
+# Fix build with gcc-11
+echo "... Apply 0010-fix-build-gcc11.patch"
+patch -p1 < $CWD/0010-fix-build-gcc11.patch
+# Buil with libstdc++
+echo "... Apply 0011-build-with-libstdc++.patch"
+patch -p1 < $CWD/0011-build-with-libstdc++.patch
+
+cd src/
+# Build with gcc instead of clang
+echo "... Apply 0012-mozc-build-gcc.patch"
+patch -p1 < $CWD/0012-mozc-build-gcc.patch
+
+# Fix compatibility with google-glog 0.3.3 (symbol conflict)
+CFLAGS="${CFLAGS} -fvisibility=hidden"
+CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
+
+# build package with gyp
+echo "build package..."
+_buildtype=Release
+TARGETS="unix/emacs/emacs.gyp:mozc_emacs_helper server/server.gyp:mozc_server gui/gui.gyp:mozc_tool unix/fcitx5/fcitx5.gyp:fcitx5-mozc"
+_targets="unix/emacs/emacs.gyp:mozc_emacs_helper server/server.gyp:mozc_server gui/gui.gyp:mozc_tool unix/fcitx5/fcitx5.gyp:fcitx5-mozc"
+
+sed -i 's|python|python3|' ../scripts/build_fcitx5
+QT_BASE_PATH=/usr/include/qt5 QTDIR=/usr GYP_DEFINES="document_dir=/usr/share/licenses/$PRGNAM use_libzinnia=1" python3 build_mozc.py gyp
+python3 build_mozc.py build -c $_bldtype $_targets
+
+
+# Extract license part of mozc
+head -n 29 server/mozc_server.cc > LICENSE
+
+export PREFIX="$PKG/usr"
+export _bldtype
+bash ../scripts/install_server
+
+install -d "$PKG/usr/share/licenses/$PRGNAM/"
+install -m 644 LICENSE data/installer/*.html "$PKG/usr/share/licenses/$PRGNAM/"
+
+install -d "${PREFIX}/share/fcitx5/addon"
+install -d "${PREFIX}/share/fcitx5/inputmethod"
+install -d "${PREFIX}/lib64/fcitx5"
+bash ../scripts/install_fcitx5
+
+# Install emacs_helper
+install -Dm644 ../LICENSE $PKG/usr/share/licenses/emacs-mozc/LICENSE
+install -Dm644 data/installer/credits_en.html $PKG/usr/share/licenses/emacs-mozc/credits_en.html
+install -Dm755 out_linux/Release/mozc_emacs_helper $PKG/usr/bin/mozc_emacs_helper
+install -Dm644 unix/emacs/mozc.el $PKG/usr/share/emacs/site-lisp/mozc.el
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+
+cp $CWD/init.el_mozc $CWD/README.emacs $PKG/usr/doc/$PRGNAM-$VERSION/
+cp $CWD/*.patch $PKG/usr/doc/$PRGNAM-$VERSION/
+cp $CWD/$PRGNAM.SlackBuild $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+# install slack-desc
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-mozc/fcitx5-mozc.info b/misc/fcitx5-mozc/fcitx5-mozc.info
new file mode 100644
index 0000000000..03adb5de53
--- /dev/null
+++ b/misc/fcitx5-mozc/fcitx5-mozc.info
@@ -0,0 +1,30 @@
+PRGNAM="fcitx5-mozc"
+VERSION="2.26.4360.102.1"
+HOMEPAGE="https://github.com/fcitx/mozc/"
+DOWNLOAD="https://github.com/fcitx/mozc/archive/ca82d39d08df3359fdf5c653a1f56b3e95cbe2ce/mozc-ca82d39d08df3359fdf5c653a1f56b3e95cbe2ce.zip \
+ https://github.com/chromium/gyp/archive/caa60026e223fc501e8b337fd5086ece4028b1c6/gyp-caa60026e223fc501e8b337fd5086ece4028b1c6.zip \
+ https://github.com/protocolbuffers/protobuf/archive/fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a/protobuf-fde7cf7358ec7cd69e8db9be4f1fa6a5c431386a.zip \
+ https://github.com/abseil/abseil-cpp/archive/0f3bb466b868b523cf1dc9b2aaaed65c77b28862/abseil-cpp-0f3bb466b868b523cf1dc9b2aaaed65c77b28862.zip \
+ https://github.com/google/breakpad/archive/v2022.07.12/breakpad-2022.07.12.zip \
+ https://github.com/google/googletest/archive/703bd9caab50b139428cea1aaff9974ebee5742e/googletest-703bd9caab50b139428cea1aaff9974ebee5742e.zip \
+ https://github.com/open-source-parsers/jsoncpp/archive/42e892d96e47b1f6e29844cc705e148ec4856448/jsoncpp-42e892d96e47b1f6e29844cc705e148ec4856448.zip \
+ https://github.com/hiroyuki-komatsu/japanese-usage-dictionary/archive/e5b3425575734c323e1d947009dd74709437b684/japanese-usage-dictionary-e5b3425575734c323e1d947009dd74709437b684.zip \
+ https://gitlab.com/BrLi/brli-aur/-/raw/fcitx5-mozc-ut/jigyosyo-202110.zip \
+ https://gitlab.com/BrLi/brli-aur/-/raw/fcitx5-mozc-ut/x-ken-all-202110.zip \
+ https://download.fcitx-im.org/fcitx-mozc/fcitx-mozc-icon.tar.gz"
+MD5SUM="257fcb244249a3c65c576cceb5cbb7c8 \
+ 699c5af5c6d7e19835afb5292d151f91 \
+ cb4b1baed208474284161b7abd5cc17c \
+ 4f23c5fcb19a7ef0fb6ce0f636d480e3 \
+ 981e935b3b61091ca6f968a296f44eb9 \
+ 768da4173ee9df3248b8f828747982ad \
+ b56b146335d7c296ddef5a88235f1438 \
+ a6eb1da9ad7ceffcb9683003332abf7e \
+ 35031b342c827861681081e4052b472b \
+ a4b62ae420004b55a72fe6a40bb09ee1 \
+ 80fe2ef127b70649df22d133822ac8a7"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fcitx5 bazel"
+MAINTAINER="JW(Shinichi Abe)"
+EMAIL="shin1.abe@nifty.com"
diff --git a/misc/fcitx5-mozc/init.el_mozc b/misc/fcitx5-mozc/init.el_mozc
new file mode 100644
index 0000000000..d44689a094
--- /dev/null
+++ b/misc/fcitx5-mozc/init.el_mozc
@@ -0,0 +1,4 @@
+(set-language-environment "Japanese")
+(require 'mozc) ; or (load-file "/usr/share/emacs/site-lisp/emacs-mozc/mozc.el")
+(setq default-input-method "japanese-mozc")
+(setq mozc-candidate-style 'overlay)
diff --git a/misc/fcitx5-mozc/slack-desc b/misc/fcitx5-mozc/slack-desc
new file mode 100644
index 0000000000..a5613dfaf2
--- /dev/null
+++ b/misc/fcitx5-mozc/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5-mozc: fcitx5-mozc (Mozc engine for fcitx5)
+fcitx5-mozc:
+fcitx5-mozc: fcitx5-mozc is Mozc, Japanese input method editor, engine for fcitx5.
+fcitx5-mozc:
+fcitx5-mozc: Homepage: https://fcitx-im.org
+fcitx5-mozc:
+fcitx5-mozc:
+fcitx5-mozc:
+fcitx5-mozc:
+fcitx5-mozc:
+fcitx5-mozc:
diff --git a/misc/fcitx5-qt/README b/misc/fcitx5-qt/README
new file mode 100644
index 0000000000..2f83854aea
--- /dev/null
+++ b/misc/fcitx5-qt/README
@@ -0,0 +1,25 @@
+fcitx5-qt is the Qt im-module for fcitx5 and it needs to be installed
+in order to use fcitx5 with Qt-based applications. It currently
+supports Qt4, Qt5 and Qt6.
+
+You'll need several Qt modules if you're going to enable Qt5/Qt6
+support, namely QtCore, QtDbus, QtWidgets and QtX11Extras. Qt5 is
+bundled in Slackware, however if you want Qt6 support you're on your
+own; but any app that requires Qt6 on SBo at this point should have
+already pulled all the dependencies in.
+
+Relevant CMake options are ENABLE_QT4, ENABLE_QT5 and ENABLE_QT6.
+ENABLE_QT4 is turned off by default, ENABLE_QT5 and ENABLE_QT6 are
+turned on by default. However to avoid pulling in excess dependencies,
+Qt6 support is turned off in the SlackBuild. If you need Qt4 or Qt6
+support, you might want to turn the flags on/off depending on the Qt
+version you are using. To enable Qt4, you need to modify
+
+ -DENABLE_QT4=Off \
+
+from "Off" to "On". Similarly, to turn on Qt6 support, turn
+
+ -DENABLE_QT6=Off \
+ -DENABLE_QT6_WAYLAND_WORKAROUND=Off ..
+
+from "Off" to "On".
diff --git a/misc/txt2tags/doinst.sh b/misc/fcitx5-qt/doinst.sh
index 5fb28930db..5fb28930db 100644
--- a/misc/txt2tags/doinst.sh
+++ b/misc/fcitx5-qt/doinst.sh
diff --git a/misc/fcitx5-qt/fcitx5-qt.SlackBuild b/misc/fcitx5-qt/fcitx5-qt.SlackBuild
new file mode 100644
index 0000000000..d60735c8c4
--- /dev/null
+++ b/misc/fcitx5-qt/fcitx5-qt.SlackBuild
@@ -0,0 +1,107 @@
+#!/bin/bash
+
+# Copyright 2022-2023 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-qt
+VERSION=${VERSION:-5.1.5}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} \
+ -DENABLE_QT4=Off \
+ -DENABLE_QT6=Off \
+ -DENABLE_QT6_WAYLAND_WORKAROUND=Off ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* README* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-qt/fcitx5-qt.info b/misc/fcitx5-qt/fcitx5-qt.info
new file mode 100644
index 0000000000..750d7f18ab
--- /dev/null
+++ b/misc/fcitx5-qt/fcitx5-qt.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5-qt"
+VERSION="5.1.5"
+HOMEPAGE="https://github.com/fcitx/fcitx5-qt"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/fcitx5-qt/fcitx5-qt-5.1.5.tar.xz"
+MD5SUM="91d1b828b5263843117c3d8a2c0fb1d0"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fcitx5"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/protobuf3/slack-desc b/misc/fcitx5-qt/slack-desc
index 440a1c6d9a..701a0d8e04 100644
--- a/misc/protobuf3/slack-desc
+++ b/misc/fcitx5-qt/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-protobuf3: protobuf3 (Google's data interchange format)
-protobuf3:
-protobuf3: Protocol Buffers are Google's language-neutral, platform-neutral,
-protobuf3: extensible mechanism for serializing structured data.
-protobuf3:
-protobuf3: This package contains protobuf API version 3.
-protobuf3:
-protobuf3:
-protobuf3: Project URL: https://github.com/google/protobuf
-protobuf3:
-protobuf3:
+fcitx5-qt: fcitx5-qt (Qt libraries for Fcitx5)
+fcitx5-qt:
+fcitx5-qt: Qt library and IM module for fcitx5
+fcitx5-qt:
+fcitx5-qt: Homepage: https://fcitx-im.org/wiki/Fcitx_5
+fcitx5-qt:
+fcitx5-qt:
+fcitx5-qt:
+fcitx5-qt:
+fcitx5-qt:
+fcitx5-qt:
diff --git a/misc/fcitx5-table-extra/README b/misc/fcitx5-table-extra/README
new file mode 100644
index 0000000000..a65ebaddbf
--- /dev/null
+++ b/misc/fcitx5-table-extra/README
@@ -0,0 +1,13 @@
+fcitx5-table-extra provides extra table for Fcitx5, including Boshiamy,
+Zhengma, Cangjie, and Quick.
+
+Zhengma's patent is expired at 2009.
+Boshiamy's patent is expired at 2003.11.11.
+Cangjie's author drop Cangjie's patent in 1982.
+
+The code of this package are released under GPLv3 or later.
+
+All the data file is now in public domain.
+
+For expired patent references, see the original README on the website:
+https://github.com/fcitx/fcitx5-table-extra
diff --git a/misc/fcitx5-table-extra/doinst.sh b/misc/fcitx5-table-extra/doinst.sh
new file mode 100644
index 0000000000..ca71fd3c40
--- /dev/null
+++ b/misc/fcitx5-table-extra/doinst.sh
@@ -0,0 +1,12 @@
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
+if [ -e usr/share/glib-2.0/schemas ]; then
+ if [ -x /usr/bin/glib-compile-schemas ]; then
+ /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
+ fi
+fi
+
diff --git a/misc/fcitx5-table-extra/fcitx5-table-extra.SlackBuild b/misc/fcitx5-table-extra/fcitx5-table-extra.SlackBuild
new file mode 100644
index 0000000000..c2b8eb2f25
--- /dev/null
+++ b/misc/fcitx5-table-extra/fcitx5-table-extra.SlackBuild
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Copyright 2022 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-table-extra
+VERSION=${VERSION:-5.1.4}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-${VERSION}.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-table-extra/fcitx5-table-extra.info b/misc/fcitx5-table-extra/fcitx5-table-extra.info
new file mode 100644
index 0000000000..71d6cd7f26
--- /dev/null
+++ b/misc/fcitx5-table-extra/fcitx5-table-extra.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5-table-extra"
+VERSION="5.1.4"
+HOMEPAGE="https://github.com/fcitx/fcitx5-table-extra"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/fcitx5-table-extra/fcitx5-table-extra-5.1.4.tar.xz"
+MD5SUM="de95e17779128e331bc14f7b32eebd9d"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="libime fcitx5"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fcitx5-table-extra/slack-desc b/misc/fcitx5-table-extra/slack-desc
new file mode 100644
index 0000000000..5c5f732685
--- /dev/null
+++ b/misc/fcitx5-table-extra/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5-table-extra: fcitx5-table-extra (Extra table input methods for fcitx5)
+fcitx5-table-extra:
+fcitx5-table-extra: fcitx5-table-extra provides extra table for Fcitx5, including
+fcitx5-table-extra: Boshiamy, Zhengma, Cangjie, and Quick.
+fcitx5-table-extra:
+fcitx5-table-extra:
+fcitx5-table-extra:
+fcitx5-table-extra:
+fcitx5-table-extra:
+fcitx5-table-extra: Homepage: https://github.com/fcitx/fcitx5-table-extra
+fcitx5-table-extra:
diff --git a/misc/fcitx5-table-other/README b/misc/fcitx5-table-other/README
new file mode 100644
index 0000000000..85f68343b7
--- /dev/null
+++ b/misc/fcitx5-table-other/README
@@ -0,0 +1,7 @@
+fcitx-table-other provides some other tables for Fcitx, fork from
+ibus-table-others, scim-tables.
+
+Most of the table in this package is non-Chinese table. They are listed
+under /tables by language.
+
+The package is released under GPLv3+.
diff --git a/misc/fcitx5-table-other/doinst.sh b/misc/fcitx5-table-other/doinst.sh
new file mode 100644
index 0000000000..ca71fd3c40
--- /dev/null
+++ b/misc/fcitx5-table-other/doinst.sh
@@ -0,0 +1,12 @@
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
+if [ -e usr/share/glib-2.0/schemas ]; then
+ if [ -x /usr/bin/glib-compile-schemas ]; then
+ /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
+ fi
+fi
+
diff --git a/misc/fcitx5-table-other/fcitx5-table-other.SlackBuild b/misc/fcitx5-table-other/fcitx5-table-other.SlackBuild
new file mode 100644
index 0000000000..bded45b468
--- /dev/null
+++ b/misc/fcitx5-table-other/fcitx5-table-other.SlackBuild
@@ -0,0 +1,98 @@
+#!/bin/bash
+
+# Copyright 2022 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=fcitx5-table-other
+VERSION=${VERSION:-5.1.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+ARCH=noarch
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-${VERSION}.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5-table-other/fcitx5-table-other.info b/misc/fcitx5-table-other/fcitx5-table-other.info
new file mode 100644
index 0000000000..0e87257e56
--- /dev/null
+++ b/misc/fcitx5-table-other/fcitx5-table-other.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5-table-other"
+VERSION="5.1.1"
+HOMEPAGE="https://github.com/fcitx/fcitx5-table-other"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/fcitx5-table-other/fcitx5-table-other-5.1.1.tar.xz"
+MD5SUM="75d0b6f0bad6e781b1d358aaa7c593e3"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="libime fcitx5"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fcitx5-table-other/slack-desc b/misc/fcitx5-table-other/slack-desc
new file mode 100644
index 0000000000..600f1a9a4a
--- /dev/null
+++ b/misc/fcitx5-table-other/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5-table-other: fcitx5-table-other (Some other tables for fcitx5)
+fcitx5-table-other:
+fcitx5-table-other: fcitx-table-other provides some other tables for Fcitx, fork from
+fcitx5-table-other: ibus-table-others, scim-tables.
+fcitx5-table-other:
+fcitx5-table-other: Most of the table in this package is non-Chinese table. They are
+fcitx5-table-other: listed under /tables by language.
+fcitx5-table-other:
+fcitx5-table-other:
+fcitx5-table-other: Homepage: https://github.com/fcitx/fcitx5-table-other
+fcitx5-table-other:
diff --git a/misc/fcitx5/README b/misc/fcitx5/README
new file mode 100644
index 0000000000..bd043ee147
--- /dev/null
+++ b/misc/fcitx5/README
@@ -0,0 +1,37 @@
+Fcitx is an input method framework with extension support. Currently it
+supports Linux and Unix systems like freebsd. Fcitx supports typing
+with many languages all over the world with a large number of engines.
+
+Fcitx has a slim core while provides powerful features with addons. It
+is easy to customize fcitx to satisfy your own needs.
+
+Fcitx5 is the next generation of fcitx.
+
+Some cmake options to keep in mind before building are:
+
+- ENABLE_WAYLAND: Wayland support. Defaults to On and should be fine
+ for desktop environments such as KDE and GNOME. Users running
+ X11-based window managers will need to turn it off.
+
+- ENABLE_ENCHANT: Enchant support. Defaults to On. Used for word
+ prediction (hinting). Depends on libenchant, which is provided by
+ most distributions.
+
+The user is encouraged to check the contents of CMakeLists.txt for an
+exhaustive list of options.
+
+For example, an i3 user who wishes to install it to /opt would run
+(likely with sudo privileges):
+
+ cmake -DENABLE_WAYLAND=Off \
+ -DCMAKE_INSTALL_PREFIX=/your/install/path .
+ make
+ sudo make install
+
+To make fcitx5 the default input method, please add these lines to your
+/etc/environment (or .profile):
+
+ GTK_IM_MODULE=fcitx
+ QT_IM_MODULE=fcitx
+ XMODIFIERS=@im=fcitx
+
diff --git a/misc/readesm/doinst.sh b/misc/fcitx5/doinst.sh
index e4e6459838..138e27de17 100644
--- a/misc/readesm/doinst.sh
+++ b/misc/fcitx5/doinst.sh
@@ -2,7 +2,12 @@ if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
+
if [ -x /usr/bin/update-mime-database ]; then
/usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi
-
diff --git a/misc/fcitx5/fcitx5-autostart b/misc/fcitx5/fcitx5-autostart
new file mode 100644
index 0000000000..22d8c056d3
--- /dev/null
+++ b/misc/fcitx5/fcitx5-autostart
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+START="no"
+
+if [ "$XIM" = "fcitx" ]; then
+ START="yes"
+fi
+
+if [ "$XIM_PROGRAM" = "fcitx" ]; then
+ START="yes"
+fi
+
+if [ "$GTK_IM_MODULE" = "fcitx" ]; then
+ START="yes"
+fi
+
+if [ "$QT_IM_MODULE" = "fcitx" ]; then
+ START="yes"
+fi
+
+if [ "$START" = "no" ]; then
+ exit 0
+fi
+
+# sleep for a little while to avoid duplicate startup
+sleep 2
+
+# Test whether fcitx is running correctly with dbus...
+fcitx5-remote > /dev/null 2>&1
+
+if [ $? = "1" ]; then
+ echo "Fcitx seems is not running"
+ fcitx5
+else
+ echo "Fcitx is running correctly."
+fi
diff --git a/misc/fribid/fribid.SlackBuild b/misc/fcitx5/fcitx5.SlackBuild
index 2cf53427c7..662f996168 100644
--- a/misc/fribid/fribid.SlackBuild
+++ b/misc/fcitx5/fcitx5.SlackBuild
@@ -1,8 +1,6 @@
#!/bin/bash
-# Slackware build script for fribid
-
-# Copyright 2010 Niklas "Nille" Åkerström
+# Copyright 2022-2023 Wen-Wei Kao (ltlnx), Taichung, Taiwan
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,28 +20,22 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=fribid
-VERSION=${VERSION:-1.0.4}
+PRGNAM=fcitx5
+VERSION=${VERSION:-5.1.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-# Should we build PKCS#11 smartcard support YES RUNTIME or nothing.
-PKCS11=$(echo $PKCS11 | tr 'a-z' 'A-Z')
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -53,16 +45,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$PKCS11" = "YES" ]; then
- PKCS="--enable-pkcs11"
-elif [ "$PKCS11" = "RUNTIME" ]; then
- PKCS="--optional-pkcs11"
-else
- PKCS="--disable-pkcs11"
-fi
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -81,52 +65,46 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-${VERSION}_dict.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# Deborkage thanks to Arch Linux
-sed -i \
- -e 's/-DGTK_DISABLE_DEPRECATED=1//g' \
- -e 's/-DGDK_DISABLE_DEPRECATED=1//g' \
- -e 's/-DG_DISABLE_DEPRECATED=1//g' \
- client/Makefile
-sed -i \
- -e 's/strndup/strndup_/' \
- plugin/pluginutil.c
-sed -i \
- 's/_BSD_SOURCE/_DEFAULT_SOURCE/g' \
- common/*.c plugin/*.c client/*.c
-
-CFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --plugin-path=/usr/lib${LIBDIRSUFFIX}/mozilla/plugins \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- $PKCS
-
-make
-make install DESTDIR=$PKG
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+
+# Use our own autostart script to autostart fcitx5
+install -m 755 $CWD/fcitx5-autostart $PKG/usr/bin/
+sed -i "s|Exec=/usr/bin/fcitx5|Exec=/usr/bin/fcitx5-autostart|" \
+ $PKG/etc/xdg/autostart/org.fcitx.Fcitx5.desktop
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-mkdir -p $PKG/usr/man
-mv $PKG/usr/share/man $PKG/usr
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- CHANGELOG INSTALL LICENSE \
- $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* README* $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/fcitx5/fcitx5.info b/misc/fcitx5/fcitx5.info
new file mode 100644
index 0000000000..e185c82b2b
--- /dev/null
+++ b/misc/fcitx5/fcitx5.info
@@ -0,0 +1,10 @@
+PRGNAM="fcitx5"
+VERSION="5.1.8"
+HOMEPAGE="https://fcitx-im.org/wiki/Fcitx_5"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/fcitx5/fcitx5-5.1.8_dict.tar.xz"
+MD5SUM="f3cabadf80a3bdd252d37079bbdcecdf"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fmt xcb-imdkit"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fcitx5/slack-desc b/misc/fcitx5/slack-desc
new file mode 100644
index 0000000000..eaccae7994
--- /dev/null
+++ b/misc/fcitx5/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+fcitx5: fcitx5 (Input Method Framework)
+fcitx5:
+fcitx5: Fcitx is an input method framework with extension support. Currently
+fcitx5: it supports Linux and Unix systems like freebsd. It has three built-
+fcitx5: in Input Method Engine, Pinyin, QuWei and Table-based input methods.
+fcitx5: Fcitx tries to provide a native feeling under all desktop as well as
+fcitx5: a light weight core. You can easily customize it to fit your
+fcitx5: requirements.
+fcitx5:
+fcitx5: Homepage: https://fcitx-im.org/wiki/Fcitx_5
+fcitx5:
diff --git a/misc/feedbackd/63cba7867147edfa2525ef85af667d48a6b0752e.diff b/misc/feedbackd/63cba7867147edfa2525ef85af667d48a6b0752e.diff
new file mode 100644
index 0000000000..93b81394fc
--- /dev/null
+++ b/misc/feedbackd/63cba7867147edfa2525ef85af667d48a6b0752e.diff
@@ -0,0 +1,16 @@
+diff --git a/src/gm-svg-path.c b/src/gm-svg-path.c
+index f572c2820e92659ad5035218382f70c2dec9ee71..59fc5b1cb4770383b3dcbe0e5e1bccb25e817a30 100644
+--- a/src/gm-svg-path.c
++++ b/src/gm-svg-path.c
+@@ -10,6 +10,11 @@
+
+ #include <math.h>
+
++#if !GLIB_CHECK_VERSION(2, 74, 0)
++# define G_REGEX_DEFAULT 0
++# define G_REGEX_MATCH_DEFAULT 0
++#endif
++
+ struct bbox {
+ int x1, x2, y1, y2;
+
diff --git a/misc/feedbackd/README b/misc/feedbackd/README
new file mode 100644
index 0000000000..3f36436005
--- /dev/null
+++ b/misc/feedbackd/README
@@ -0,0 +1,5 @@
+Haptic/visual/audio feedback for GNOME
+
+feedbackd provides a DBus daemon (feedbackd) to act on events to provide
+haptic, visual and audio feedback. It offers a library (libfeedback) and
+GObject introspection bindings to ease using it from applications.
diff --git a/misc/feedbackd/doinst.sh b/misc/feedbackd/doinst.sh
new file mode 100644
index 0000000000..56b9e419c1
--- /dev/null
+++ b/misc/feedbackd/doinst.sh
@@ -0,0 +1,6 @@
+if [ -e usr/share/glib-2.0/schemas ]; then
+ if [ -x /usr/bin/glib-compile-schemas ]; then
+ /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
+ fi
+fi
+
diff --git a/misc/feedbackd/feedbackd.SlackBuild b/misc/feedbackd/feedbackd.SlackBuild
new file mode 100644
index 0000000000..cdb5c7d6bd
--- /dev/null
+++ b/misc/feedbackd/feedbackd.SlackBuild
@@ -0,0 +1,127 @@
+#!/bin/bash
+
+# Slackware build script for feedbackd.
+
+# Copyright 2023, Bob Funk, Winnipeg Canada
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Note: gmobile is a subproject that will be git cloned during the build if not
+# present. Instead of allowing that to happen, we download the gmobile subproject
+# with the slackbuild source files and patch/install it ourselves.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=feedbackd
+VERSION=${VERSION:-0.1.0}
+SRCNAM1=$PRGNAM
+SRCVER1="v${VERSION}"
+SRCNAM2=gmobile
+SRCVER2="v0.0.1"
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$SRCNAM1-$SRCVER1.tar.gz
+mv $SRCNAM1-$SRCVER1 $PRGNAM-$VERSION
+
+# Extract the gmobile subproject and move to its location:
+tar xvf $CWD/$SRCNAM2-$SRCVER2.tar.gz
+cp -a $SRCNAM2-$SRCVER2/* $PRGNAM-$VERSION/subprojects/gmobile/
+# Apply this commit from gmobile, which fixes building with older
+# glib2 versions, i.e. on Slackware 15.0:
+( cd $PRGNAM-$VERSION/subprojects/gmobile && patch -Np1 -i $CWD/63cba7867147edfa2525ef85af667d48a6b0752e.diff )
+
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dstrip=true
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ COPYING COPYING.LIB NEWS README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/feedbackd/feedbackd.info b/misc/feedbackd/feedbackd.info
new file mode 100644
index 0000000000..9ac5276c6e
--- /dev/null
+++ b/misc/feedbackd/feedbackd.info
@@ -0,0 +1,12 @@
+PRGNAM="feedbackd"
+VERSION="0.1.0"
+HOMEPAGE="https://source.puri.sm/Librem5/feedbackd"
+DOWNLOAD="https://source.puri.sm/Librem5/feedbackd/-/archive/v0.1.0/feedbackd-v0.1.0.tar.gz \
+https://gitlab.gnome.org/guidog/gmobile/-/archive/v0.0.1/gmobile-v0.0.1.tar.gz"
+MD5SUM="0968f6c4f6b8601b365fc2b341b1bde6 \
+61feafaffb7c82eca3876504a8d0f0d5"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="gsound"
+MAINTAINER="Bob Funk"
+EMAIL="bobfunk11@gmail.com"
diff --git a/misc/feedbackd/slack-desc b/misc/feedbackd/slack-desc
new file mode 100644
index 0000000000..2ace92a5db
--- /dev/null
+++ b/misc/feedbackd/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+feedbackd: feedbackd (Haptic/visual/audio feedback for GNOME)
+feedbackd:
+feedbackd: feedbackd provides a daemon to act on events to provide haptic, visual
+feedbackd: and audio feedback.
+feedbackd:
+feedbackd:
+feedbackd:
+feedbackd:
+feedbackd:
+feedbackd: https://source.puri.sm/Librem5/feedbackd
+feedbackd:
diff --git a/misc/figlet-contributed/README b/misc/figlet-contributed/README
index 86f226c8b2..32b2011ff8 100644
--- a/misc/figlet-contributed/README
+++ b/misc/figlet-contributed/README
@@ -1,21 +1,21 @@
Contributed font set for FIGlet
-This font distribution includes several fonts which were automatically derived
-from other formats, and which are optionally installed by this SlackBuild
-script.
+This font distribution includes several fonts which were automatically
+derived from other formats, and which are optionally installed by this
+SlackBuild script.
To install the C64-derived fonts pass
C64=yes
-to the SlackBuild script. This will replace the default computer, gothic and
-roman fonts with versions derived from C64 programs.
+to the SlackBuild script. This will replace the default computer,
+gothic and roman fonts with versions derived from C64 programs.
To install the BDF-derived fonts pass
BDF=yes
to the SlackBuild script.
-Obanner is the font of banner(6), the ubiquitous UN*X command by Mark Horton.
-The default behavior is to install the Obanner font in sizes 16, 24, 36, 48,
-56, 64, 72, 80, 132. To install font sizes 1-132 (though sizes 1-15 are
-almost certainly useless), pass
+Obanner is the font of banner(6), the ubiquitous UN*X command by
+Mark Horton. The default behavior is to install the Obanner font in
+sizes 16, 24, 36, 48, 56, 64, 72, 80, 132. To install font sizes 1-132
+(though sizes 1-15 are almost certainly useless), pass
OBANNER_ALL=yes
to the SlackBuild script.
diff --git a/misc/figlet/figlet.info b/misc/figlet/figlet.info
index 2e21943a84..1aecf15efb 100644
--- a/misc/figlet/figlet.info
+++ b/misc/figlet/figlet.info
@@ -6,5 +6,5 @@ MD5SUM="d88cb33a14f1469fff975d021ae2858e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="David Woodfall"
+MAINTAINER="D Woodfall"
EMAIL="dave@slackbuilds.org"
diff --git a/misc/flips/README b/misc/flips/README
new file mode 100644
index 0000000000..2f667835cd
--- /dev/null
+++ b/misc/flips/README
@@ -0,0 +1,18 @@
+Floating IPS (or Flips) is a patcher for IPS and BPS files, aiming for
+a simple interface yet plenty of power under the hood.
+
+Features:
+
+ * Creates the smallest BPS patches of any known tool in existence,
+ and is faster than any other comparable creator
+ * Creates the smallest IPS patches of any known tool in existence,
+ too (but only a little smaller, Lunar IPS is quite good)
+ * Fully-featured GUIs under Windows and GTK+, including command line
+ support; can also be a pure command line program
+ * Can apply multiple patches to the same ROM, creating a huge pile
+ of ROMs (GUI only)
+ * Can remembers which ROMs you've used, and use them again if it
+ thinks it's correct (BPS only, GUI only)
+ * Can launch other programs after patching the ROMs; together with
+ the above, this allows you to double click a BPS to launch an
+ emulator (GUI only)
diff --git a/misc/flips/doinst.sh b/misc/flips/doinst.sh
new file mode 100644
index 0000000000..65c7e2eeb9
--- /dev/null
+++ b/misc/flips/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/misc/flips/flips.SlackBuild b/misc/flips/flips.SlackBuild
new file mode 100644
index 0000000000..292dcdb7bc
--- /dev/null
+++ b/misc/flips/flips.SlackBuild
@@ -0,0 +1,119 @@
+#!/bin/bash
+
+# Slackware build script for flips
+
+# Copyright 2023 Steven Voges <Oregon, USA>
+# Copyright 2016, 2018 Hunter Sezen California, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=flips
+SRCNAM=Flips
+VERSION=${VERSION:-20240417_20b0da9}
+SRCVER=${SRCVER:-20b0da9ab95d23da89f821bbddedb11b8e0e6531}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM-$SRCVER
+tar xvf $CWD/$SRCNAM-$SRCVER.tar.gz
+cd $SRCNAM-$SRCVER
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS='-Wall -O3 -flto -fuse-linker-plugin -fomit-frame-pointer -fmerge-all-constants -fvisibility=hidden'
+CFLAGS=$CFLAGS' -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables'
+CFLAGS=$CFLAGS' -ffunction-sections -fdata-sections -Wl,--gc-sections -fprofile-dir=obj/'
+CFLAGS=$CFLAGS' -Wl,-z,relro,-z,now,--as-needed,--hash-style=gnu,--relax'
+TARGET=gtk make CFLAGS="$FLAGS$LINFLAGS -fprofile-generate -lgcov" || exit $?
+[ -e flips ] || exit 1
+export OMP_NUM_THREADS=1 # -fprofile-generate isn't thread safe
+/usr/bin/time -v ./flips --create --bps-delta profile/firefox-10.0esr.tar profile/firefox-17.0esr.tar /dev/null
+/usr/bin/time -v ./flips --create --bps-delta-moremem profile/firefox-10.0esr.tar profile/firefox-17.0esr.tar /dev/null
+rm flips
+TARGET=gtk make CFLAGS="$FLAGS$LINFLAGS -fprofile-use" || exit $?
+install -vDm0755 $PRGNAM $PKG/usr/bin/${PRGNAM}
+install -vDm0644 data/com.github.Alcaro.$SRCNAM.desktop $PKG/usr/share/applications/$PRGNAM.desktop
+install -vDm0644 data/com.github.Alcaro.$SRCNAM.svg \
+ $PKG/usr/share/icons/hicolor/scalable/apps/com.github.Alcaro.$SRCNAM.svg
+for name in bps flips ips; do
+ for i in 0 1 2; do
+ convert ${name}.ico[${i}] ${name}-$((48-${i}*16)).png
+ install -vDm0644 ${name}-$((48-${i}*16)).png \
+ $PKG/usr/share/icons/hicolor/$((48-${i}*16))x$((48-${i}*16))/apps/${name}.png
+ done
+done
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ *.md COPYING* \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/flips/flips.info b/misc/flips/flips.info
new file mode 100644
index 0000000000..95d1d8d15a
--- /dev/null
+++ b/misc/flips/flips.info
@@ -0,0 +1,10 @@
+PRGNAM="flips"
+VERSION="20240417_20b0da9"
+HOMEPAGE="https://github.com/Alcaro/Flips"
+DOWNLOAD="https://github.com/Alcaro/Flips/archive/20b0da9ab95d23da89f821bbddedb11b8e0e6531/Flips-20b0da9ab95d23da89f821bbddedb11b8e0e6531.tar.gz"
+MD5SUM="74edf3dd926c5d6fd5510ff940e5275b"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Steven Voges"
+EMAIL="svoges.sbo@gmail.com"
diff --git a/misc/igal2/slack-desc b/misc/flips/slack-desc
index 1e7cfaab7c..05b8b6c86d 100644
--- a/misc/igal2/slack-desc
+++ b/misc/flips/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-igal2: igal2 (image gallery generator)
-igal2:
-igal2: igal2 is a quick and easy program for placing your images online with
-igal2: just one command-line. It generates a pretty good-looking set of
-igal2: W3-compliant static HTML slides even with its default settings.
-igal2:
-igal2:
-igal2:
-igal2:
-igal2:
-igal2:
+flips: flips (Rom patching utility)
+flips:
+flips: Floating IPS is a patcher for IPS and BPS files.
+flips:
+flips: Homepage: https://github.com/Alcaro/Flips
+flips:
+flips:
+flips:
+flips:
+flips:
+flips:
diff --git a/misc/floating-IPS/README b/misc/floating-IPS/README
deleted file mode 100644
index 50381599f2..0000000000
--- a/misc/floating-IPS/README
+++ /dev/null
@@ -1,2 +0,0 @@
-Floating IPS is a patcher for IPS and BPS files, aiming for a simple
-interface yet plenty of power under the hood.
diff --git a/misc/floating-IPS/floating-IPS.info b/misc/floating-IPS/floating-IPS.info
deleted file mode 100644
index 63c54895da..0000000000
--- a/misc/floating-IPS/floating-IPS.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="floating-IPS"
-VERSION="1.31"
-HOMEPAGE="https://www.smwcentral.net/?p=section&a=details&id=11474"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/floating.zip"
-MD5SUM="941a034187995558ea408b55b92c7e7d"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Hunter Sezen"
-EMAIL="orbea@riseup.net"
diff --git a/misc/font-unscii/doinst.sh b/misc/font-unscii/doinst.sh
index 15acd6001a..89ef3509cb 100644
--- a/misc/font-unscii/doinst.sh
+++ b/misc/font-unscii/doinst.sh
@@ -1,9 +1,17 @@
# Update fonts.{dir,scale,alias}
if [ -x /usr/bin/mkfontdir -a -x /usr/bin/mkfontscale ]; then
for i in misc TTF OTF; do
- ( cd usr/share/fonts/misc
- if ! grep -q ^unscii- fonts.alias; then
- cat <<EOF >> fonts.alias
+ ( cd usr/share/fonts/$i
+ /usr/bin/mkfontscale .
+ /usr/bin/mkfontdir .
+ )
+ done
+fi
+
+# Only include aliases for the bitmap fonts (e.g. xterm -fn unscii-16)
+( cd usr/share/fonts/misc
+ if ! grep -q ^unscii- fonts.alias; then
+ cat <<EOF >> fonts.alias
unscii-16-full -unscii-unscii-medium-r-normal-full-16-160-75-75-c-80-iso10646-1
unscii-16 -unscii-unscii-medium-r-normal-16-16-160-75-75-c-80-iso10646-1
unscii-8-alt -unscii-unscii-medium-r-normal-alt-8-80-75-75-c-80-iso10646-1
@@ -13,12 +21,8 @@ unscii-8-tall -unscii-unscii-medium-r-normal-tall-16-160-75-75-c-80-iso10646-1
unscii-8-thin -unscii-unscii-medium-r-normal-thin-8-80-75-75-c-80-iso10646-1
unscii-8 -unscii-unscii-medium-r-normal-8-8-80-75-75-c-80-iso10646-1
EOF
- fi
- /usr/bin/mkfontscale .
- /usr/bin/mkfontdir .
- )
- done
-fi
+ fi
+)
# If X is running...
if [ "$DISPLAY" != "" ] && [ -x /usr/bin/xset ]; then
diff --git a/misc/font-unscii/douninst.sh b/misc/font-unscii/douninst.sh
new file mode 100644
index 0000000000..9e10abf2e6
--- /dev/null
+++ b/misc/font-unscii/douninst.sh
@@ -0,0 +1,25 @@
+# Update fonts.{dir,scale,alias}
+if [ -x /usr/bin/mkfontdir -a -x /usr/bin/mkfontscale ]; then
+ for i in misc TTF OTF; do
+ ( cd usr/share/fonts/$i
+ /usr/bin/mkfontscale .
+ /usr/bin/mkfontdir .
+ )
+ done
+fi
+
+# Remove aliases.
+( cd usr/share/fonts/misc
+ grep -v ^unscii- fonts.alias > fonts.alias.new
+ mv fonts.alias.new fonts.alias
+)
+
+# If X is running...
+if [ "$DISPLAY" != "" ] && [ -x /usr/bin/xset ]; then
+ /usr/bin/xset fp rehash >/dev/null 2>&1
+fi
+
+# Update the X font indexes:
+if [ -x /usr/bin/fc-cache ]; then
+ /usr/bin/fc-cache -f
+fi
diff --git a/misc/font-unscii/font-unscii.SlackBuild b/misc/font-unscii/font-unscii.SlackBuild
index cdc69de119..739fc3a5c3 100644
--- a/misc/font-unscii/font-unscii.SlackBuild
+++ b/misc/font-unscii/font-unscii.SlackBuild
@@ -2,24 +2,22 @@
# Slackware build script for font-unscii
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20230307 bkw: BUILD=2, fix doinst.sh, add douninst.sh for cleanup.
# 20210326 bkw: updated for v2.1, reflow README, new homepage/download
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=font-unscii
VERSION=${VERSION:-2.1}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -61,6 +59,7 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/douninst.sh > $PKG/install/douninst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/font-unscii/font-unscii.info b/misc/font-unscii/font-unscii.info
index 97ce21f477..4e1c840edc 100644
--- a/misc/font-unscii/font-unscii.info
+++ b/misc/font-unscii/font-unscii.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="fontforge perl-Text-CharWidth"
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/fribid/README b/misc/fribid/README
deleted file mode 100644
index 043df62c41..0000000000
--- a/misc/fribid/README
+++ /dev/null
@@ -1,20 +0,0 @@
-FriBID is a free program for handleing e-legitimation (electronic
-identification) with BankID. With free means that the source code is
-availible for everyone to study, copy and/or improve. FriBID is cross
-plattform and works on plattforms thats not supported by the official
-client.
-
-If you need PKCS#11 smartcard support then you need to use the PKCS11
-variable.
-
-The options are:
-PKCS11=yes
-PKCS11=runtime
-yes needs opensc installed.
-runtime adds runtime support and doesn't need opensc installed it
-can be installed later and fribid checks for opensc when started.
-Or leave it alone for disabled.
-
-Optional dependencies:
-opensc Adds PKCS#11 smartcard support if your reader is supported
-by opensc.
diff --git a/misc/fribid/fribid.info b/misc/fribid/fribid.info
deleted file mode 100644
index 7d9f7992fc..0000000000
--- a/misc/fribid/fribid.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="fribid"
-VERSION="1.0.4"
-HOMEPAGE="http://www.fribid.se"
-DOWNLOAD="http://www.fribid.se/releases/source/fribid-1.0.4.tar.bz2"
-MD5SUM="253e1eee92bebd5b37e0a508bda770cb"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Niklas 'Nille' Åkerström"
-EMAIL="nille.kungen[AT]gmail.com"
diff --git a/misc/funny-manpages/README b/misc/funny-manpages/README
index 9817ad7b25..4788e6b09f 100644
--- a/misc/funny-manpages/README
+++ b/misc/funny-manpages/README
@@ -1,5 +1,5 @@
More funny manpages
-A set of miscellaneous humorous manpages (don't take them too seriously!).
-Includes, amongst others, rtfm (1). Warning! Some of these manpages might
-be treated offensive. You've been warned.
+A set of miscellaneous humorous manpages (don't take them too
+seriously!). Includes, amongst others, rtfm(1). Warning: some of these
+manpages might be considered offensive. You've been warned.
diff --git a/misc/funny-manpages/funny-manpages.SlackBuild b/misc/funny-manpages/funny-manpages.SlackBuild
index 65e8fb25cc..209cedf7f1 100644
--- a/misc/funny-manpages/funny-manpages.SlackBuild
+++ b/misc/funny-manpages/funny-manpages.SlackBuild
@@ -26,15 +26,13 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=funny-manpages
-VERSION=${VERSION:-1.3.5}
-SRC_VERSION=$( echo $VERSION | cut -d. -f1,2 )
-DEB_VERSION=5
-
-ARCH=noarch
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-2.3}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+ARCH=noarch
+
# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
# the name of the created package would be, and then exit. This information
# could be useful to other scripts.
@@ -52,45 +50,35 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/${PRGNAM}_$SRC_VERSION.orig.tar.gz
-cd $PRGNAM-$SRC_VERSION.orig
+rm -rf $PRGNAM
+tar xvf $CWD/${PRGNAM}_$VERSION.orig.tar.gz
+cd $PRGNAM
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# Patch the manpages to the latest version.
-patch -p1 < $CWD/${PRGNAM}_$SRC_VERSION-$DEB_VERSION.diff
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# Create the directories we need
-mkdir -p $PKG/usr/man/man{1,3,6,7}
+make install DESTDIR=$PKG
-for manpage in $(echo *fun); do
- section=$(echo $manpage | awk -F. '{print $2}' | colrm 2 4)
- install -m 0644 $manpage $PKG/usr/man/man$section/$manpage
-done
+mv $PKG/usr/share/man $PKG/usr
+rm -rf $PKG/usr/share
# Move date.1fun over to mansection 6. It is kinda screwing with upstream,
# but right now causes a conflict with the systems date(1)
( cd $PKG/usr/man/man1
- ln -sf grope.1fun egrope.1fun
- ln -sf grope.1fun fgrope.1fun
mv date.1fun ../man6/date.6fun
)
# Add custom noobfarm manpage. Thanks to Matt Hayes.
-install -m 0644 $CWD/noobfarm.7 $PKG/usr/man/man7/noobfarm.7fun
+install -m644 -D $CWD/noobfarm.7 $PKG/usr/man/man7/noobfarm.7fun
-( cd $PKG/usr/man
- find . -type f -exec gzip -9 {} \;
- for i in $( find . -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
-)
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a debian/README.Debian debian/changelog debian/copyright \
+cp -a CHANGELOG LICENSE README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/funny-manpages/funny-manpages.info b/misc/funny-manpages/funny-manpages.info
index 351b73cb35..a36d546ab1 100644
--- a/misc/funny-manpages/funny-manpages.info
+++ b/misc/funny-manpages/funny-manpages.info
@@ -1,8 +1,8 @@
PRGNAM="funny-manpages"
-VERSION="1.3.5"
-HOMEPAGE="http://packages.debian.org/etch/funny-manpages"
-DOWNLOAD="http://ftp.de.debian.org/debian/pool/main/f/funny-manpages/funny-manpages_1.3.orig.tar.gz"
-MD5SUM="bed1deef82218d42fb230a2176a11ed4"
+VERSION="2.3"
+HOMEPAGE="https://github.com/ltworf/funny-manpages"
+DOWNLOAD="https://github.com/ltworf/funny-manpages/releases/download/2.3/funny-manpages_2.3.orig.tar.gz"
+MD5SUM="43ac37d9173da676ca71e4e09591c472"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/funny-manpages/funny-manpages_1.3-5.diff b/misc/funny-manpages/funny-manpages_1.3-5.diff
deleted file mode 100644
index 78e394e2ee..0000000000
--- a/misc/funny-manpages/funny-manpages_1.3-5.diff
+++ /dev/null
@@ -1,244 +0,0 @@
---- funny-manpages-1.3.orig/debian/README.Debian
-+++ funny-manpages-1.3/debian/README.Debian
-@@ -0,0 +1,9 @@
-+funny-manpages for Debian
-+----------------------
-+
-+The sources for funny manpages were collected from various sources.
-+This basically means that the only 'original' thing in .orig.tar.gz is the
-+fact, that there are debian control files and some manpages' contents have
-+bugs fixed in the package.
-+
-+ -- Pawel Wiecek <coven@debian.org>, Fri, 15 Dec 2000 12:13:37 +0100
---- funny-manpages-1.3.orig/debian/changelog
-+++ funny-manpages-1.3/debian/changelog
-@@ -0,0 +1,77 @@
-+funny-manpages (1.3-5) unstable; urgency=low
-+
-+ * Added lintian override to remove reports of missing manpage for woman (as
-+ this is intentional) (closes: #219907)
-+ * Changed Build-Depends to Build-Depends-Indep (as per policy)
-+ * Updated standards version (no changes required)
-+
-+ -- Pawel Wiecek <coven@debian.org> Thu, 12 Feb 2004 14:49:22 +0100
-+
-+funny-manpages (1.3-4) unstable; urgency=low
-+
-+ * Changed description so it's less confusing (closes: #129502)
-+
-+ -- Pawel Wiecek <coven@debian.org> Wed, 23 Jan 2002 13:17:44 +0100
-+
-+funny-manpages (1.3-3) unstable; urgency=low
-+
-+ * Added sumlinks for [ef]grope.1fun.gz (closes: #99528)
-+ * Now compliant with 3.5.5 policy
-+
-+ -- Pawel Wiecek <coven@debian.org> Fri, 8 Jun 2001 09:27:43 +0200
-+
-+funny-manpages (1.3-2) unstable; urgency=low
-+
-+ * Corrected Build-Depends line in debian/control (was missing debhelper
-+ version)
-+
-+ -- Pawel Wiecek <coven@debian.org> Tue, 22 May 2001 12:38:20 +0200
-+
-+funny-manpages (1.3-1) unstable; urgency=low
-+
-+ * Rebuilt source -- all manpages are now in fun subsection (closes: #96463)
-+ * General cleaning (standards version, etc.)
-+
-+ -- Pawel Wiecek <coven@debian.org> Mon, 7 May 2001 10:59:02 +0200
-+
-+funny-manpages (1.2-1) unstable frozen; urgency=low
-+
-+ * Rebuilt source -- added date.1fun, echo.1fun, rm.1fun, strfry.3fun,
-+ xkill.1fun (closes: #28990)
-+ * uubp.1 now in orig source
-+ * should no longer create sex.1 (closes: #52543)
-+ * fixes to party.1 (closes: #52659)
-+ * added woman.6 (closes: #63862)
-+ * updated to newest standards version and moved to debhelper
-+
-+ -- Pawel Wiecek <coven@debian.org> Fri, 15 Dec 2000 12:26:02 +0100
-+
-+funny-manpages (1.1-3) unstable frozen; urgency=low
-+
-+ * Minor fixes in manpages for sex (fixes bugs #45120)
-+ * Changed section for sex from 1 to 6 (fixes #30977, #37897, #45120)
-+ * Updated standards version to 3.0.1
-+
-+ -- Pawel Wiecek <coven@debian.org> Tue, 26 Oct 1999 21:11:51 +0200
-+
-+funny-manpages (1.1-2) unstable frozen; urgency=low
-+
-+ * Changed path in rtfm.1 as suggested by Yann Dirson (fixes bug #25393)
-+ * Updated Standards-Version
-+
-+ -- Pawel Wiecek <coven@debian.org> Sat, 31 Oct 1998 22:13:20 +0100
-+
-+funny-manpages (1.1-1) unstable; urgency=low
-+
-+ * Added uubp(1) which was previously in asr-manpages.
-+ * Removed strfry (conflicted with libc) - this closes bugs #16785 and
-+ #16840.
-+
-+ -- Pawel Wiecek <coven@pwr.wroc.pl> Tue, 23 Dec 1997 00:05:14 +0100
-+
-+funny-manpages (1.0-1) unstable; urgency=low
-+
-+ * Initial Release.
-+
-+ -- Pawel Wiecek <coven@pwr.wroc.pl> Wed, 10 Dec 1997 01:10:17 +0100
-+
---- funny-manpages-1.3.orig/debian/copyright
-+++ funny-manpages-1.3/debian/copyright
-@@ -0,0 +1,32 @@
-+This package was debianized by Pawel Wiecek coven@pwr.wroc.pl on
-+Wed, 10 Dec 1997 01:10:17 +0100.
-+
-+This set of manpages was collected from all over the net. No specific
-+location can be given.
-+
-+Copyright:
-+
-+To the best of my knowledge all of these manpages are free to use and
-+redistribute.
-+
-+The authors are:
-+
-+baby.1fun - unknown, based on man page by Joe Beck <beck@cs.ualberta.ca>
-+celibacy.1fun - unknown
-+condom.1fun - Ken Maupin <maupin@cs.washington.edu>
-+flame.1fun - unknown
-+flog.1fun - unknown
-+gong.1fun - unknown
-+grope.1fun - unknown
-+party.1fun - unknown
-+rescrog.1fun - unknown
-+rtfm.1fun - unknown
-+sex.1fun - unknown
-+tm.1fun - unknown
-+xlart.1fun - James McPherson
-+date.1fun - Glen Overby <overby@sendit.nodak.edu>
-+echo.1fun - unknown
-+rm.1fun - Matthew Farwell <dylan@ibmpcug.co.uk>
-+strfry.3fun - <chuck@druco.att.com>
-+xkill.1fun - Claudio Calvelli <Claudio@edinburgh.ac.uk>
-+uubp.1fun - unknown
---- funny-manpages-1.3.orig/debian/dirs
-+++ funny-manpages-1.3/debian/dirs
-@@ -0,0 +1,2 @@
-+/usr/share/man/man1
-+/usr/share/lintian/overrides
---- funny-manpages-1.3.orig/debian/lintian
-+++ funny-manpages-1.3/debian/lintian
-@@ -0,0 +1 @@
-+funny-manpages: link-to-undocumented-manpage usr/share/man/man6/woman.6fun.gz
---- funny-manpages-1.3.orig/debian/control
-+++ funny-manpages-1.3/debian/control
-@@ -0,0 +1,15 @@
-+Source: funny-manpages
-+Section: doc
-+Priority: optional
-+Maintainer: Pawel Wiecek <coven@debian.org>
-+Build-Depends-Indep: debhelper (>> 3.0.0)
-+Standards-Version: 3.6.1
-+
-+Package: funny-manpages
-+Architecture: all
-+Suggests: asr-manpages (>=1.3-4)
-+Description: more funny manpages
-+ A set of miscellaneous humorous manpages (don't take them too seriously!).
-+ Includes, amongst others, rtfm (1).
-+ Warning! Some of these manpages might be treated offensive.
-+ You've been warned.
---- funny-manpages-1.3.orig/debian/rules
-+++ funny-manpages-1.3/debian/rules
-@@ -0,0 +1,87 @@
-+#!/usr/bin/make -f
-+# Sample debian/rules that uses debhelper.
-+# GNU copyright 1997 to 1999 by Joey Hess.
-+
-+# Uncomment this to turn on verbose mode.
-+#export DH_VERBOSE=1
-+
-+# This is the debhelper compatability version to use.
-+export DH_COMPAT=3
-+
-+configure: configure-stamp
-+configure-stamp:
-+ dh_testdir
-+ # Add here commands to configure the package.
-+
-+
-+ touch configure-stamp
-+
-+build: configure-stamp build-stamp
-+build-stamp:
-+ dh_testdir
-+
-+ # Add here commands to compile the package.
-+# $(MAKE)
-+ #/usr/bin/docbook-to-man debian/funny-manpages.sgml > funny-manpages.1
-+
-+ touch build-stamp
-+
-+clean:
-+ dh_testdir
-+ dh_testroot
-+ rm -f build-stamp configure-stamp
-+
-+ # Add here commands to clean up after the build process.
-+# -$(MAKE) clean
-+
-+ dh_clean
-+
-+install: build
-+ dh_testdir
-+ dh_testroot
-+ dh_clean -k
-+ dh_installdirs
-+
-+ # Add here commands to install the package into debian/tmp.
-+# $(MAKE) install DESTDIR=`pwd`/debian/tmp
-+ ln -s grope.1fun.gz debian/funny-manpages/usr/share/man/man1/egrope.1fun.gz
-+ ln -s grope.1fun.gz debian/funny-manpages/usr/share/man/man1/fgrope.1fun.gz
-+ cp debian/lintian debian/funny-manpages/usr/share/lintian/overrides/$(package)
-+
-+
-+# Build architecture-independent files here.
-+binary-indep: build install
-+# We have nothing to do by default.
-+
-+# Build architecture-dependent files here.
-+binary-arch: build install
-+ dh_testdir
-+ dh_testroot
-+# dh_installdebconf
-+ dh_installdocs
-+# dh_installexamples
-+# dh_installmenu
-+# dh_installemacsen
-+# dh_installpam
-+# dh_installinit
-+# dh_installcron
-+ dh_installmanpages
-+# dh_installinfo
-+ dh_undocumented woman.6fun
-+ dh_installchangelogs
-+# dh_link
-+ dh_strip
-+ dh_compress
-+ dh_fixperms
-+ # You may want to make some executables suid here.
-+# dh_suidregister
-+# dh_makeshlibs
-+ dh_installdeb
-+# dh_perl
-+ dh_shlibdeps
-+ dh_gencontrol
-+ dh_md5sums
-+ dh_builddeb
-+
-+binary: binary-indep binary-arch
-+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/misc/g15composer/README b/misc/g15composer/README
index c1e09b9637..b66eaae5e6 100644
--- a/misc/g15composer/README
+++ b/misc/g15composer/README
@@ -1,6 +1,7 @@
-G15Composer is a scriptable command interface to the libg15render drawing
-functions that outputs to a G15daemon screen. G15composer exposes all
-graphics primitives and text rendering functions of libg15render so that
-they may be used in a variety of situations, including from the command
-line or in virtually any scripting language. As a G15Daemon client,
-it requires that the daemon is installed and running.
+G15Composer is a scriptable command interface to the libg15render
+drawing functions that outputs to a G15daemon screen. G15composer
+exposes all graphics primitives and text rendering functions of
+libg15render so that they may be used in a variety of situations,
+including from the command line or in virtually any scripting
+language. As a G15Daemon client, it requires that the daemon is
+installed and running.
diff --git a/misc/g15composer/g15composer.SlackBuild b/misc/g15composer/g15composer.SlackBuild
index 6ed4beb2a5..1bc7bb7a29 100644
--- a/misc/g15composer/g15composer.SlackBuild
+++ b/misc/g15composer/g15composer.SlackBuild
@@ -36,7 +36,7 @@ DOCS="README AUTHORS ChangeLog NEWS COPYING"
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -54,8 +54,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
diff --git a/misc/g15daemon/README b/misc/g15daemon/README
index 4982649a20..563680b709 100644
--- a/misc/g15daemon/README
+++ b/misc/g15daemon/README
@@ -1,10 +1,12 @@
-The G15daemon is a userspace driver/multiplexer for the keyboard and its LCD,
-using libg15 for low-level keyboard control. Some features of g15daemon are:
+The G15daemon is a userspace driver/multiplexer for the keyboard and
+its LCD, using libg15 for low-level keyboard control. Some features of
+g15daemon are:
+
1. Allows all extra G15 keys to be used in applications.
2. It allows for multiple simultaneous LCD clients.
-3. Virtualises the LCD, the user can select which application is displayed
- with a simple keypress.
+3. Virtualises the LCD, the user can select which application is
+ displayed with a simple keypress.
4. Clients talk to the daemon via a simple protocol.
-5. Client applications have full control over LCD backlight and contrast.
+5. Client apps have full control over LCD backlight and contrast.
See README.SLACKWARE for additional setup information.
diff --git a/misc/g15daemon/g15daemon.SlackBuild b/misc/g15daemon/g15daemon.SlackBuild
index a440b1cfc3..dfd6ab0661 100644
--- a/misc/g15daemon/g15daemon.SlackBuild
+++ b/misc/g15daemon/g15daemon.SlackBuild
@@ -27,13 +27,13 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=g15daemon
VERSION=${VERSION:-1.9.5.3}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -52,8 +52,8 @@ PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
@@ -116,6 +116,8 @@ cat $CWD/README.SLACKWARE > $PKG/usr/doc/$PRGNAM-$VERSION/README.SLACKWARE
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
diff --git a/misc/g15stats/g15stats.SlackBuild b/misc/g15stats/g15stats.SlackBuild
index 95954a6f67..c7e42dbc92 100644
--- a/misc/g15stats/g15stats.SlackBuild
+++ b/misc/g15stats/g15stats.SlackBuild
@@ -33,7 +33,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -51,8 +51,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "s390" ]; then
SLKCFLAGS="-O2"
diff --git a/misc/g810-led/g810-led.SlackBuild b/misc/g810-led/g810-led.SlackBuild
index 773bdc5fb5..a98ae5b05f 100644
--- a/misc/g810-led/g810-led.SlackBuild
+++ b/misc/g810-led/g810-led.SlackBuild
@@ -23,7 +23,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=g810-led
-VERSION=${VERSION:-0.4.2}
+VERSION=${VERSION:-0.4.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -57,16 +57,12 @@ OUTPUT=${OUTPUT:-/tmp}
set -e
if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
- SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
fi
@@ -91,6 +87,9 @@ find -L . \
# - don't install the udev rules
patch -p1 < $CWD/g810-led.makefile.patch
+# Add a missing include file to fix compiling with gcc13+:
+patch -p1 < $CWD/g810-led.gcc13.patch
+
# Fix libdir:
sed -i "s|libdir?=\$(PREFIX)/lib|libdir?=\$(PREFIX)/lib${LIBDIRSUFFIX}|g" makefile
diff --git a/misc/g810-led/g810-led.gcc13.patch b/misc/g810-led/g810-led.gcc13.patch
new file mode 100644
index 0000000000..a43e3189d1
--- /dev/null
+++ b/misc/g810-led/g810-led.gcc13.patch
@@ -0,0 +1,10 @@
+--- ./src/helpers/help.h.orig 2022-11-30 12:52:57.000000000 -0600
++++ ./src/helpers/help.h 2023-09-22 14:07:07.559767953 -0500
+@@ -17,6 +17,7 @@
+ #ifndef HELP_HELPER
+ #define HELP_HELPER
+
++#include <cstdint>
+ #include <iostream>
+
+ namespace help {
diff --git a/misc/g810-led/g810-led.info b/misc/g810-led/g810-led.info
index ede2cb45db..6a4ac2e15f 100644
--- a/misc/g810-led/g810-led.info
+++ b/misc/g810-led/g810-led.info
@@ -1,8 +1,8 @@
PRGNAM="g810-led"
-VERSION="0.4.2"
+VERSION="0.4.3"
HOMEPAGE="https://github.com/MatMoul/g810-led/"
-DOWNLOAD="https://github.com/MatMoul/g810-led/archive/v0.4.2/g810-led-0.4.2.tar.gz"
-MD5SUM="6f4180a75469cd763b65fec7f1325c5f"
+DOWNLOAD="https://github.com/MatMoul/g810-led/archive/v0.4.3/g810-led-0.4.3.tar.gz"
+MD5SUM="f216cbca8a478041b145d80640021569"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/gcp/README b/misc/gcp/README
index 54f59edfbc..da5c832731 100644
--- a/misc/gcp/README
+++ b/misc/gcp/README
@@ -1,15 +1,15 @@
-gcp is a file copy tool, freely inspired from cp, but with a few high-level
-functionalities such as:
+gcp is a file copy tool, freely inspired from cp, but with a few
+high-level functionalities such as:
* transfer progression indication
* continuous copying on error (skip to next file)
-* copy status logging: gcp logs all its actions so that it is possible to
- know which files have been successfuly copied
+* copy status logging: gcp logs all its actions so that it is possible
+ to know which files have been successfuly copied
* name mangling to handle target filesystem limitations (for example
deletion of incompatible characters "*" or "?" on FAT)
* forced copy serialization: process all copy requests sequentially in
order to avoid useless moves of the hard disk head
-* transfer lists management: you can save a list of files you copied and
- copy them again later from that list (useful for example when copying
- several times the same tracks to multiple friends)
+* transfer lists management: you can save a list of files you copied
+ and copy them again later from that list (useful for example when
+ copying several times the same tracks to multiple friends)
* command-line interface similar to that of cp
diff --git a/misc/ghostpcl/ghostpcl.SlackBuild b/misc/ghostpcl/ghostpcl.SlackBuild
index 41f520afff..5dfc60b909 100644
--- a/misc/ghostpcl/ghostpcl.SlackBuild
+++ b/misc/ghostpcl/ghostpcl.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ghostpcl
SRCNAM=ghostpdl
-VERSION=${VERSION:-9.54.0}
+VERSION=${VERSION:-10.03.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/misc/ghostpcl/ghostpcl.info b/misc/ghostpcl/ghostpcl.info
index d4d566c5b8..38a41cb34c 100644
--- a/misc/ghostpcl/ghostpcl.info
+++ b/misc/ghostpcl/ghostpcl.info
@@ -1,8 +1,8 @@
PRGNAM="ghostpcl"
-VERSION="9.54.0"
+VERSION="10.03.0"
HOMEPAGE="https://www.ghostscript.com"
-DOWNLOAD="https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9540/ghostpdl-9.54.0.tar.gz"
-MD5SUM="25de435bce3ddb370a86ddf9b7f090da"
+DOWNLOAD="https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10030/ghostpdl-10.03.0.tar.gz"
+MD5SUM="dff385f07a8a4cb6459500c23321ca36"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/glogg/glogg.SlackBuild b/misc/glogg/glogg.SlackBuild
index ca740b8135..28e5ad0095 100644
--- a/misc/glogg/glogg.SlackBuild
+++ b/misc/glogg/glogg.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -70,7 +70,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+tar xvf $CWD/"$PRGNAM"_"$VERSION".orig.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
diff --git a/misc/glogg/glogg.info b/misc/glogg/glogg.info
index d7a63adc6e..abad2da20b 100644
--- a/misc/glogg/glogg.info
+++ b/misc/glogg/glogg.info
@@ -1,7 +1,7 @@
PRGNAM="glogg"
VERSION="1.1.4"
HOMEPAGE="http://glogg.bonnefon.org/"
-DOWNLOAD="http://glogg.bonnefon.org/files/glogg-1.1.4.tar.gz"
+DOWNLOAD="http://deb.debian.org/debian/pool/main/g/glogg/glogg_1.1.4.orig.tar.gz"
MD5SUM="065d292411df490dcb3c6abae35ed608"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/gnome-mime-data/gnome-mime-data.SlackBuild b/misc/gnome-mime-data/gnome-mime-data.SlackBuild
index 149b138532..68a507b3fc 100644
--- a/misc/gnome-mime-data/gnome-mime-data.SlackBuild
+++ b/misc/gnome-mime-data/gnome-mime-data.SlackBuild
@@ -22,25 +22,20 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220412 bkw: Modified by SlackBuilds.org, BUILD=3:
+# - ARCH=noarch.
+# - remove useless/empty doc files.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gnome-mime-data
VERSION=${VERSION:-2.18.0}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
+ARCH=noarch
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -50,20 +45,6 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -eu
rm -rf $PKG
@@ -75,22 +56,19 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
-CFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --sysconfdir=/etc \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --build=$ARCH-slackware-linux
+ --sysconfdir=/etc
make
make install DESTDIR=$PKG
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION $PKG/install
-cp -a AUTHORS COPYING ChangeLog INSTALL NEWS README \
+cp -a AUTHORS COPYING ChangeLog README \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/gnome-user-docs/README b/misc/gnome-user-docs/README
new file mode 100644
index 0000000000..8116f713b8
--- /dev/null
+++ b/misc/gnome-user-docs/README
@@ -0,0 +1,10 @@
+This package contains documents which are packaged together and
+shipped as gnome-user-docs in the core GNOME distribution. The
+documents are targeted for end-users and system administrators of
+GNOME and have general GNOME applicability.
+
+The GNOME Documentation Project (GDP) is responsible for this
+documentation.
+
+https://wiki.gnome.org/DocumentationProject
+
diff --git a/misc/gnome-user-docs/gnome-user-docs.SlackBuild b/misc/gnome-user-docs/gnome-user-docs.SlackBuild
new file mode 100644
index 0000000000..8a4f8cad88
--- /dev/null
+++ b/misc/gnome-user-docs/gnome-user-docs.SlackBuild
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Slackware build script for gnome-user-docs
+
+# Copyright 2023, Bob Funk, Winnipeg Canada
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=gnome-user-docs
+VERSION=${VERSION:-41.5}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make
+make install DESTDIR=$PKG
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ COPYING NEWS README \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/gnome-user-docs/gnome-user-docs.info b/misc/gnome-user-docs/gnome-user-docs.info
new file mode 100644
index 0000000000..e6176c4ec8
--- /dev/null
+++ b/misc/gnome-user-docs/gnome-user-docs.info
@@ -0,0 +1,10 @@
+PRGNAM="gnome-user-docs"
+VERSION="41.5"
+HOMEPAGE="https://gitlab.gnome.org/GNOME/gnome-user-docs"
+DOWNLOAD="https://download.gnome.org/sources/gnome-user-docs/41/gnome-user-docs-41.5.tar.xz"
+MD5SUM="3f64f0f0f3a3b0cbbd6e3a29613d8bda"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Bob Funk"
+EMAIL="bobfunk11@gmail.com"
diff --git a/misc/gnome-user-docs/slack-desc b/misc/gnome-user-docs/slack-desc
new file mode 100644
index 0000000000..2174e86252
--- /dev/null
+++ b/misc/gnome-user-docs/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+gnome-user-docs: gnome-user-docs (GNOME User Documentation)
+gnome-user-docs:
+gnome-user-docs: GNOME documentation for end users and system administrators, created
+gnome-user-docs: by the GNOME Documentation Project.
+gnome-user-docs:
+gnome-user-docs:
+gnome-user-docs:
+gnome-user-docs:
+gnome-user-docs:
+gnome-user-docs: https://gitlab.gnome.org/GNOME/gnome-user-docs
+gnome-user-docs:
diff --git a/misc/go-md2man/go-md2man.SlackBuild b/misc/go-md2man/go-md2man.SlackBuild
index e18acf25a3..09e9d030e3 100644
--- a/misc/go-md2man/go-md2man.SlackBuild
+++ b/misc/go-md2man/go-md2man.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=go-md2man
VERSION=${VERSION:-1.0.8}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -87,6 +87,7 @@ find -L . \
# Point go to the location of the source tree
export GOPATH="$TMP/$PRGNAM-$VERSION"
export GOBIN="$PKG/usr/bin"
+export GO111MODULE="off"
go install -a -x ./...
diff --git a/misc/goldencheetah/README b/misc/goldencheetah/README
index e5471277b2..eaea231c15 100644
--- a/misc/goldencheetah/README
+++ b/misc/goldencheetah/README
@@ -2,11 +2,12 @@ GoldenCheetah is a software package that:
* Downloads ride data directly from the CycleOps PowerTap and the SRM
PowerControl V. Support for SRM PowerControl VI and VII is planned
for the future.
-* Imports ride data downloaded with other programs, including TrainingPeaks
- WKO+ and the manufacturers' software for the Ergomo, Garmin, Polar,
- PowerTap, and SRM devices.
-* Provides a rich set of analysis tools, including a critical power graph,
- BikeScore calculation, histogram analysis, a best interval finder, and a
- pedal force versus pedal velocity chart, to name just a few.
+* Imports ride data downloaded with other programs, including
+ TrainingPeaks WKO+ and the manufacturers' software for the Ergomo,
+ Garmin, Polar, PowerTap, and SRM devices.
+* Provides a rich set of analysis tools, including a critical power
+ graph, BikeScore calculation, histogram analysis, a best interval
+ finder, and a pedal force versus pedal velocity chart, to name just
+ a few.
Optional dependencies: R, libkml
diff --git a/misc/goldencheetah/goldencheetah.SlackBuild b/misc/goldencheetah/goldencheetah.SlackBuild
index 520a68729f..c92061c31c 100644
--- a/misc/goldencheetah/goldencheetah.SlackBuild
+++ b/misc/goldencheetah/goldencheetah.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for GoldenCheetah
-# Copyright 2018-2021 Kyle Guinn <elyk03@gmail.com>
+# Copyright 2018-2023 Kyle Guinn <elyk03@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,8 +26,8 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=goldencheetah
SRCNAM=GoldenCheetah
-VERSION=${VERSION:-3.5}
-BUILD=${BUILD:-4}
+VERSION=${VERSION:-3.6}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -39,16 +39,13 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM-$VERSION
+PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
DOCS="COPYING doc/user/GC3-Manual.pdf doc/user/GC3-FAQ.pdf"
@@ -78,36 +75,21 @@ cd $SRCNAM-$VERSION
chown -R root:root .
chmod -R u+w,go-w,a+rX-st .
-# Fixes from release_3.5.0 branch. 0003 and 0004 contain images treated as
-# text since `patch` doesn't decode git binary patches. Comment them out if
-# they won't apply.
-patch -p1 < $CWD/patches/0001-SEGV-on-Overview-Chart.patch
-patch -p1 < $CWD/patches/0002-View-on-Strava.patch
-patch -p1 < $CWD/patches/0003-Compatible-with-Strava.patch
-patch -p1 < $CWD/patches/0004-Connect-with-Strava.patch
-patch -p1 < $CWD/patches/0005-3.5-BUILD-INCREMENT.patch
-
# GoldenCheetah statically links its own version of qwt, which is likely a fork
# from around version 6.1.0 or 6.1.1. The build system uses -L/-l flags to
# refer to the static lib, but due to other -L flags and symlinked directories,
# it might find the system qwt instead. Replace the flags with a filename.
sed -i 's|-L\(\$\${PWD}/\.\./qwt/lib\) -l\(qwtd\?\)|\1/lib\2.a|' src/src.pro
-# Fixes for qwt and Qt5 compatibility.
-patch -p1 < $CWD/patches/0001-Fix-Qwt-incompatibilities-with-Qt-5.15.0.patch
-
# Use the system levmar if available.
# Builtin copy is version 2.6 without lapack support.
# TODO: Replace other builtins (qzip?, qxt, lmfit).
if [ -f /usr/include/levmar/levmar.h ]; then
- sed -i 's|\.\./levmar[^ ]* *||g' src/src.pro
+ sed -i 's|\.\./contrib/levmar[^ ]* *||g' src/src.pro
echo "INCLUDEPATH += /usr/include/levmar" >> src/src.pro
echo "LIBS += -llevmar" >> src/src.pro
fi
-# We don't have a '-qt4' suffix on lrelease.
-sed -i 's|\(lrelease\)-qt4|\1|' src/src.pro
-
# Copy the default config files, then modify them below.
cp qwt/qwtconfig.pri.in qwt/qwtconfig.pri
cp src/gcconfig.pri.in src/gcconfig.pri
@@ -125,7 +107,11 @@ sed -i 's|^#\(QMAKE_YACC = bison\)\>|\1|' src/gcconfig.pri
#echo "QMAKE_YACC_SOURCE = y.tab.cpp" >> src/gcconfig.pri
# But that breaks parallel builds (multiple build steps produce temporary files
# with the same y.tab.{h,cpp} names). Make the files available by both names.
-sed -i 's|^#\( QMAKE_MOVE =\).*|\1 ln -sf|' src/gcconfig.pri
+sed -i 's|^#\(QMAKE_MOVE =\) cp|\1 ln -sf|' src/gcconfig.pri
+
+# Required GSL support.
+echo "GSL_INCLUDES = $(pkg-config --cflags gsl)" >> src/gcconfig.pri
+echo "GSL_LIBS = $(pkg-config --libs gsl)" >> src/gcconfig.pri
# Enable optional dependencies found in stock Slackware.
sed -i 's|^#\(ICAL_INSTALL =\).*|\1 /usr|' src/gcconfig.pri
@@ -136,16 +122,14 @@ sed -i 's|^#\(CONFIG += link_pkgconfig\)\>|\1|' src/gcconfig.pri
sed -i 's|^#\(PKGCONFIG =\).*|\1|' src/gcconfig.pri
sed -i 's|^#\(LIBZ_INCLUDE =\).*|\1|' src/gcconfig.pri
sed -i 's|^#\(LIBZ_LIBS = -lz\)\>|\1|' src/gcconfig.pri
-sed -i 's|^#\(HTPATH = \.\./httpserver\)\>|\1|' src/gcconfig.pri
sed -i 's|^\(DEFINES += GC_VIDEO_NONE\)\>|#\1|' src/gcconfig.pri
sed -i 's|^#\(DEFINES += GC_VIDEO_QT5\)\>|\1|' src/gcconfig.pri
-sed -i 's|^#\(DEFINES += NOWEBKIT\)\>|\1|' src/gcconfig.pri
-# Python support. Regenerate the SIP files.
+# Optional Python support. Regenerate the SIP files.
echo "DEFINES += GC_WANT_PYTHON" >> src/gcconfig.pri
echo "PYTHONINCLUDES = $(pkg-config --cflags python3-embed)" >> src/gcconfig.pri
echo "PYTHONLIBS = $(pkg-config --libs python3-embed)" >> src/gcconfig.pri
-make -C src/Python/SIP -f Makefile.hack clean
+rm -f src/Python/SIP/sip*
make -C src/Python/SIP -f Makefile.hack
# Optional KML support.
diff --git a/misc/goldencheetah/goldencheetah.info b/misc/goldencheetah/goldencheetah.info
index 14062d371b..cf1039e7d4 100644
--- a/misc/goldencheetah/goldencheetah.info
+++ b/misc/goldencheetah/goldencheetah.info
@@ -1,8 +1,8 @@
PRGNAM="goldencheetah"
-VERSION="3.5"
+VERSION="3.6"
HOMEPAGE="https://www.goldencheetah.org/"
-DOWNLOAD="https://github.com/GoldenCheetah/GoldenCheetah/archive/V3.5/GoldenCheetah-3.5.tar.gz"
-MD5SUM="ed25ef3dfb447b1c4d9cc7387da5d7e7"
+DOWNLOAD="https://github.com/GoldenCheetah/GoldenCheetah/archive/v3.6/GoldenCheetah-3.6.tar.gz"
+MD5SUM="f802f36e855bbac79cf44826e94576c2"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="levmar"
diff --git a/misc/goldencheetah/patches/0001-Fix-Qwt-incompatibilities-with-Qt-5.15.0.patch b/misc/goldencheetah/patches/0001-Fix-Qwt-incompatibilities-with-Qt-5.15.0.patch
deleted file mode 100644
index d6cbec6e41..0000000000
--- a/misc/goldencheetah/patches/0001-Fix-Qwt-incompatibilities-with-Qt-5.15.0.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From e1f9005cf5ebafbed6be4b0cae4bee59112ea780 Mon Sep 17 00:00:00 2001
-From: Ale Martinez <amtriathlon@gmail.com>
-Date: Thu, 11 Jun 2020 11:36:54 -0300
-Subject: Fix Qwt incompatibilities with Qt 5.15.0
-
-
-diff --git a/qwt/src/qwt_compass_rose.cpp b/qwt/src/qwt_compass_rose.cpp
-index 21a35f244..d67175940 100644
---- a/qwt/src/qwt_compass_rose.cpp
-+++ b/qwt/src/qwt_compass_rose.cpp
-@@ -11,6 +11,7 @@
- #include "qwt_point_polar.h"
- #include "qwt_painter.h"
- #include <qpainter.h>
-+#include <qpainterpath.h>
-
- static QPointF qwtIntersection(
- QPointF p11, QPointF p12, QPointF p21, QPointF p22 )
-diff --git a/qwt/src/qwt_dial_needle.cpp b/qwt/src/qwt_dial_needle.cpp
-index 1b53a3d5b..694f7f2bb 100644
---- a/qwt/src/qwt_dial_needle.cpp
-+++ b/qwt/src/qwt_dial_needle.cpp
-@@ -13,6 +13,7 @@
- #include "qwt_painter.h"
- #include <qapplication.h>
- #include <qpainter.h>
-+#include <qpainterpath.h>
-
- #if QT_VERSION < 0x040601
- #define qFastSin(x) qSin(x)
-diff --git a/qwt/src/qwt_null_paintdevice.cpp b/qwt/src/qwt_null_paintdevice.cpp
-index db1611da2..b9b5dafb6 100644
---- a/qwt/src/qwt_null_paintdevice.cpp
-+++ b/qwt/src/qwt_null_paintdevice.cpp
-@@ -9,6 +9,7 @@
-
- #include "qwt_null_paintdevice.h"
- #include <qpaintengine.h>
-+#include <qpainterpath.h>
- #include <qpixmap.h>
-
- class QwtNullPaintDevice::PrivateData
-diff --git a/qwt/src/qwt_painter.cpp b/qwt/src/qwt_painter.cpp
-index 0bbf258c5..07b217033 100644
---- a/qwt/src/qwt_painter.cpp
-+++ b/qwt/src/qwt_painter.cpp
-@@ -19,6 +19,7 @@
- #include <qpainter.h>
- #include <qpalette.h>
- #include <qpaintdevice.h>
-+#include <qpainterpath.h>
- #include <qpixmap.h>
- #include <qstyle.h>
- #include <qtextdocument.h>
-diff --git a/qwt/src/qwt_painter_command.h b/qwt/src/qwt_painter_command.h
-index 2da597a7f..4fafd555c 100644
---- a/qwt/src/qwt_painter_command.h
-+++ b/qwt/src/qwt_painter_command.h
-@@ -15,6 +15,7 @@
- #include <qpixmap.h>
- #include <qimage.h>
- #include <qpolygon.h>
-+#include <qpainterpath.h>
-
- class QPainterPath;
-
-diff --git a/qwt/src/qwt_plot_glcanvas.h b/qwt/src/qwt_plot_glcanvas.h
-index 2ff1cf2e3..89462bba9 100644
---- a/qwt/src/qwt_plot_glcanvas.h
-+++ b/qwt/src/qwt_plot_glcanvas.h
-@@ -13,6 +13,7 @@
- #include "qwt_global.h"
- #include <qframe.h>
- #include <qgl.h>
-+#include <qpainterpath.h>
-
- class QwtPlot;
-
-diff --git a/qwt/src/qwt_plot_panner.cpp b/qwt/src/qwt_plot_panner.cpp
-index 8ed3dbee9..44de4cbef 100644
---- a/qwt/src/qwt_plot_panner.cpp
-+++ b/qwt/src/qwt_plot_panner.cpp
-@@ -15,6 +15,7 @@
- #include <qbitmap.h>
- #include <qstyle.h>
- #include <qstyleoption.h>
-+#include <qpainterpath.h>
-
- static QBitmap qwtBorderMask( const QWidget *canvas, const QSize &size )
- {
-diff --git a/qwt/src/qwt_plot_renderer.cpp b/qwt/src/qwt_plot_renderer.cpp
-index 3cdcd8c0e..09a5c0a10 100644
---- a/qwt/src/qwt_plot_renderer.cpp
-+++ b/qwt/src/qwt_plot_renderer.cpp
-@@ -19,6 +19,7 @@
- #include "qwt_math.h"
- #include <qpainter.h>
- #include <qpaintengine.h>
-+#include <qpainterpath.h>
- #include <qtransform.h>
- #include <qprinter.h>
- #include <qprintdialog.h>
-diff --git a/qwt/src/qwt_widget_overlay.cpp b/qwt/src/qwt_widget_overlay.cpp
-index 07c6272e1..9a458277b 100644
---- a/qwt/src/qwt_widget_overlay.cpp
-+++ b/qwt/src/qwt_widget_overlay.cpp
-@@ -11,6 +11,7 @@
- #include "qwt_painter.h"
- #include <qpainter.h>
- #include <qpaintengine.h>
-+#include <qpainterpath.h>
- #include <qimage.h>
- #include <qevent.h>
-
diff --git a/misc/goldencheetah/patches/0001-SEGV-on-Overview-Chart.patch b/misc/goldencheetah/patches/0001-SEGV-on-Overview-Chart.patch
deleted file mode 100644
index da451e86c4..0000000000
--- a/misc/goldencheetah/patches/0001-SEGV-on-Overview-Chart.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 372dd5c14415885c8808c4ad4729cb39ae717db0 Mon Sep 17 00:00:00 2001
-From: Mark Liversedge <liversedge@gmail.com>
-Date: Mon, 13 Jan 2020 20:21:00 +0000
-Subject: SEGV on Overview Chart
-
-.. when no rides available on new user.
-
-Fixes #3295
-
-diff --git a/src/Charts/OverviewWindow.cpp b/src/Charts/OverviewWindow.cpp
-index bfbd31432..7aa0792df 100644
---- a/src/Charts/OverviewWindow.cpp
-+++ b/src/Charts/OverviewWindow.cpp
-@@ -558,6 +558,8 @@ static const QStringList timeInZonesWBAL = QStringList()
- void
- Card::setData(RideItem *item)
- {
-+ if (item == NULL || item->ride() == NULL) return;
-+
- // use ride colors in painting?
- ridecolor = item->color;
-
diff --git a/misc/goldencheetah/patches/0002-View-on-Strava.patch b/misc/goldencheetah/patches/0002-View-on-Strava.patch
deleted file mode 100644
index 454b44865d..0000000000
--- a/misc/goldencheetah/patches/0002-View-on-Strava.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From cc91520e76079555bee24360d42610b7cbc246b3 Mon Sep 17 00:00:00 2001
-From: Mark Liversedge <liversedge@gmail.com>
-Date: Fri, 17 Jan 2020 12:30:29 +0000
-Subject: View on Strava
-
-.. when data is downloaded from strava we now set the metadata
- tag "StravaID" to the id of the activity on Strava.
-
-.. On RideSummary a link is added at the bottom to view the activity
- on Strava if the "StravaID" is set.
-
-.. if the user clicks on the link the summary is replaced with the
- strava page for the ride:
- e.g. https://www.strava.com/activities/962515512
-
-.. this is part of a couple of updates to comply with the Strava
- guidelines for consumption of the Strava v3 API, see:
- https://developers.strava.com/guidelines/
-
-diff --git a/src/Charts/RideSummaryWindow.cpp b/src/Charts/RideSummaryWindow.cpp
-index 1906ef1f3..37de8244d 100644
---- a/src/Charts/RideSummaryWindow.cpp
-+++ b/src/Charts/RideSummaryWindow.cpp
-@@ -1517,6 +1517,12 @@ RideSummaryWindow::htmlSummary()
- summary += " <li>" + i.next();
- summary += "</ul>";
- }
-+
-+ // add link to view on Strava if was downloaded from there (StravaID will be set)
-+ if (ridesummary && rideItem && rideItem->ride() && rideItem->ride()->getTag("StravaID","") != "") {
-+ summary += "<a href=\"https://www.strava.com/activities/" + rideItem->ride()->getTag("StravaID","") + "\">View on Strava</a>";
-+ }
-+
- summary += "<br></center>";
-
- return summary;
-diff --git a/src/Cloud/Strava.cpp b/src/Cloud/Strava.cpp
-index 0b339ac98..fe03e9eba 100644
---- a/src/Cloud/Strava.cpp
-+++ b/src/Cloud/Strava.cpp
-@@ -859,6 +859,9 @@ Strava::prepareResponse(QByteArray* data)
- // 1s samples with start time
- RideFile *ride = new RideFile(starttime.toUTC(), 1.0f);
-
-+ // set strava id in metadata (to show where we got it from - to add View on Strava link in Summary view
-+ if (!each["id"].isNull()) ride->setTag("StravaID", QString("%1").arg(each["id"].toVariant().toULongLong()));
-+
- // what sport?
- if (!each["type"].isNull()) {
- QString stype = each["type"].toString();
diff --git a/misc/goldencheetah/patches/0003-Compatible-with-Strava.patch b/misc/goldencheetah/patches/0003-Compatible-with-Strava.patch
deleted file mode 100644
index 6b7eadad71..0000000000
--- a/misc/goldencheetah/patches/0003-Compatible-with-Strava.patch
+++ /dev/null
Binary files differ
diff --git a/misc/goldencheetah/patches/0004-Connect-with-Strava.patch b/misc/goldencheetah/patches/0004-Connect-with-Strava.patch
deleted file mode 100644
index a52aa748dc..0000000000
--- a/misc/goldencheetah/patches/0004-Connect-with-Strava.patch
+++ /dev/null
Binary files differ
diff --git a/misc/goldencheetah/patches/0005-3.5-BUILD-INCREMENT.patch b/misc/goldencheetah/patches/0005-3.5-BUILD-INCREMENT.patch
deleted file mode 100644
index eb8565ad13..0000000000
--- a/misc/goldencheetah/patches/0005-3.5-BUILD-INCREMENT.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 525fcb0a660f99a21250919fd1d8de78fe8cb90d Mon Sep 17 00:00:00 2001
-From: Mark Liversedge <liversedge@gmail.com>
-Date: Fri, 17 Jan 2020 20:15:28 +0000
-Subject: 3.5 BUILD INCREMENT
-
-.. re-issue of 3.5 binaries with Strava API guideline compliance, as
- part of the 'rate limit' requirements.
-
-diff --git a/src/Core/GcUpgrade.h b/src/Core/GcUpgrade.h
-index b6db40b07..8266c7cb4 100644
---- a/src/Core/GcUpgrade.h
-+++ b/src/Core/GcUpgrade.h
-@@ -98,6 +98,7 @@
- // 3981 - V3.5 RC2
- // 3982 - V3.5 RC2X
- // 3990 - V3.5 RELEASE (January 2020)
-+// 3991 - V3.5 RELEASE RE-ISSUE STRAVA RATE LIMIT (January 2020)
-
-
- #define VERSION3_BUILD 3010 // released
-@@ -114,7 +115,7 @@
- #define VERSION31_BUILD VERSION31_UPG
-
- // the next two will with each build/release
--#define VERSION_LATEST 3990
-+#define VERSION_LATEST 3991
- #define VERSION_STRING "V3.5"
-
- // default config for this release cycle
diff --git a/misc/gourmet/doinst.sh b/misc/gourmet/doinst.sh
new file mode 100644
index 0000000000..65c7e2eeb9
--- /dev/null
+++ b/misc/gourmet/doinst.sh
@@ -0,0 +1,9 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/misc/gourmet/gourmet.SlackBuild b/misc/gourmet/gourmet.SlackBuild
index 0b844024bb..f5bc4ec69b 100644
--- a/misc/gourmet/gourmet.SlackBuild
+++ b/misc/gourmet/gourmet.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gourmet
VERSION=${VERSION:-0.17.4}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -93,6 +93,7 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/gourmet/gourmet.info b/misc/gourmet/gourmet.info
index 3fc74822ab..53396ca77d 100644
--- a/misc/gourmet/gourmet.info
+++ b/misc/gourmet/gourmet.info
@@ -1,10 +1,10 @@
PRGNAM="gourmet"
VERSION="0.17.4"
HOMEPAGE="http://thinkle.github.io/gourmet/"
-DOWNLOAD="https://github.com/thinkle/gourmet/archive/0.17.4.tar.gz"
+DOWNLOAD="https://github.com/thinkle/gourmet/archive/0.17.4/gourmet-0.17.4.tar.gz"
MD5SUM="937334364abc3093709a604c1d473e9f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="SQLAlchemy lxml python-distutils-extra reportlab pygtkspell gst0-python python2-elib.intl pypoppler"
+REQUIRES="SQLAlchemy python2-lxml python-distutils-extra python2-reportlab pygtkspell gst0-python python2-elib.intl pypoppler"
MAINTAINER="Erwin van Zanten"
EMAIL="e.van.zanten.evz@gmail.com"
diff --git a/misc/gourmet/slack-desc b/misc/gourmet/slack-desc
index ae51c1b38c..987f30459a 100644
--- a/misc/gourmet/slack-desc
+++ b/misc/gourmet/slack-desc
@@ -6,7 +6,7 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-gourmet: Gourmet (a recipe organizer for Linux)
+gourmet: gourmet (a recipe organizer for Linux)
gourmet:
gourmet: Gourmet Recipe Manager is a recipe-organizer that allows you
gourmet: to collect, search, organize, and browse your recipes.
diff --git a/misc/gprename/README b/misc/gprename/README
index 12a885b2e7..5107c657b4 100644
--- a/misc/gprename/README
+++ b/misc/gprename/README
@@ -1,2 +1,4 @@
+gprename (a GTK3 batch renamer for files and directories)
+
GPRename is a complete batch renamer for files and directories and is
licensed under the terms of the GNU General Public Licence version 3.
diff --git a/misc/gprename/gprename-makefile-fixups.patch b/misc/gprename/gprename-makefile-fixups.patch
index cba26e8a96..1d8431fa68 100644
--- a/misc/gprename/gprename-makefile-fixups.patch
+++ b/misc/gprename/gprename-makefile-fixups.patch
@@ -1,27 +1,43 @@
-diff -u -r gprename-20160905/Makefile gprename-20160905-patched/Makefile
---- gprename-20160905/Makefile 2016-09-05 21:13:20.000000000 +0100
-+++ gprename-20160905-patched/Makefile 2017-08-29 16:24:44.033333612 +0100
-@@ -45,8 +45,8 @@
+diff -Naur gprename-20230429/Makefile gprename-20230429.patched/Makefile
+--- gprename-20230429/Makefile 2023-04-29 10:08:28.000000000 -0400
++++ gprename-20230429.patched/Makefile 2023-05-06 17:49:43.123635034 -0400
+@@ -27,7 +27,7 @@
+ perl -ne 's!\@INSTALLDIR\@!$(PREFIX)!g ; print' < bin/gprename > build/gprename
+ perl -ne 's!\@INSTALLDIR\@!$(PREFIX)!g ; print' < bin/gprename.desktop > build/gprename.desktop
+
+-install: uninstall build
++install: build
+ # Compile all .po files to .mo
+ msgfmt -o build/locale/ca.mo locale/ca.po
+ msgfmt -o build/locale/de.mo locale/de.po
+@@ -47,11 +47,11 @@
# Create directories
install -d "$(DESTDIR)"
install -d "$(DESTDIR)/bin"
- install -d "/usr/share"
- install -d "/usr/share/icons"
+ install -d "$(DESTDIR)/share"
-+ install -d "$(DESTDIR)/share/icons"
++ install -d "$(DESTDIR)/share/pixmaps"
install -d "$(DESTDIR)/share/applications"
- install -d "$(DESTDIR)/share/man"
- install -d "$(DESTDIR)/share/man/man1"
-@@ -67,7 +67,7 @@
+- install -d "$(DESTDIR)/share/man"
+- install -d "$(DESTDIR)/share/man/man1"
++ install -d "$(DESTDIR)/man"
++ install -d "$(DESTDIR)/man/man1"
+ install -d "$(DESTDIR)/share/locale/ca/LC_MESSAGES"
+ install -d "$(DESTDIR)/share/locale/de/LC_MESSAGES"
+ install -d "$(DESTDIR)/share/locale/es/LC_MESSAGES"
+@@ -69,8 +69,8 @@
+
# Copy all files in the filesystem
install -m 755 build/gprename "$(DESTDIR)/bin/"
- install -m 644 gprename-nautilus-actions.xml "$(DESTDIR)/share/applications/"
- install -m 644 icon/gprename.png "/usr/share/icons/"
-+ install -m 644 icon/gprename.png "$(DESTDIR)/share/icons/"
- install -m 644 man/gprename.1 "$(DESTDIR)/share/man/man1/"
+- install -m 644 man/gprename.1 "$(DESTDIR)/share/man/man1/"
++ install -m 644 icon/gprename.png "$(DESTDIR)/share/pixmaps/"
++ install -m 644 man/gprename.1 "$(DESTDIR)/man/man1/"
install -m 644 build/locale/ca.mo "$(DESTDIR)/share/locale/ca/LC_MESSAGES/gprename.mo"
install -m 644 build/locale/de.mo "$(DESTDIR)/share/locale/de/LC_MESSAGES/gprename.mo"
-@@ -82,13 +82,12 @@
+ install -m 644 build/locale/es.mo "$(DESTDIR)/share/locale/es/LC_MESSAGES/gprename.mo"
+@@ -85,13 +85,12 @@
install -m 644 build/locale/ru.mo "$(DESTDIR)/share/locale/ru/LC_MESSAGES/gprename.mo"
install -m 644 build/locale/sv.mo "$(DESTDIR)/share/locale/sv/LC_MESSAGES/gprename.mo"
install -m 644 build/locale/zh_CN.mo "$(DESTDIR)/share/locale/zh_CN/LC_MESSAGES/gprename.mo"
@@ -33,17 +49,50 @@ diff -u -r gprename-20160905/Makefile gprename-20160905-patched/Makefile
uninstall: clean
rm -f "$(DESTDIR)/bin/gprename"
- rm -f "/usr/share/applications/gprename.desktop"
-+ rm -f "$(DESTDIR)/share/applications/gprename.desktop"
- rm -f "$(DESTDIR)/share/applications/gprename-nautilus-actions.xml"
++ rm -f "$(DESTDIR)/applications/gprename.desktop"
rm -f "$(DESTDIR)/share/man/man1/gprename.1"
rm -f "$(DESTDIR)/share/locale/ca/LC_MESSAGES/gprename.mo"
-@@ -104,8 +103,7 @@
+ rm -f "$(DESTDIR)/share/locale/de/LC_MESSAGES/gprename.mo"
+@@ -107,8 +106,7 @@
rm -f "$(DESTDIR)/share/locale/ru/LC_MESSAGES/gprename.mo"
rm -f "$(DESTDIR)/share/locale/sv/LC_MESSAGES/gprename.mo"
rm -f "$(DESTDIR)/share/locale/zh_CN/LC_MESSAGES/gprename.mo"
- rm -fr "/usr/share/icons/gprename"
- update-desktop-database
-+ rm -fr "$(DESTDIR)/share/icons/gprename"
++ rm -fr "$(DESTDIR)/icons/gprename"
clean:
rm -rf build
+diff -Naur gprename-20230429/bin/gprename gprename-20230429.patched/bin/gprename
+--- gprename-20230429/bin/gprename 2023-04-29 10:19:08.000000000 -0400
++++ gprename-20230429.patched/bin/gprename 2023-05-06 17:49:43.123635034 -0400
+@@ -137,7 +137,7 @@
+ $window->add_accel_group( $accel_group );
+
+ # Set the window icon
+-my $icon = '/usr/share/icons/gprename.png';
++my $icon = '/usr/share/pixmaps/gprename.png';
+ my $pixbuf = Gtk3::Gdk::Pixbuf->new_from_file( $icon );
+ $window->set_icon( $pixbuf );
+
+@@ -1508,7 +1508,7 @@
+ $buffer->create_tag( 'big', size => 20 * 1024 );
+ $buffer->create_tag( 'italic', style => 'italic' );
+ my $iter = $buffer->get_start_iter;
+- my $icon = '/usr/share/icons/gprename.png';
++ my $icon = '/usr/share/pixmaps/gprename.png';
+ my $pixbuf = Gtk3::Gdk::Pixbuf->new_from_file( $icon );
+
+ $buffer->insert_pixbuf ($iter, $pixbuf);
+diff -Naur gprename-20230429/bin/gprename.desktop gprename-20230429.patched/bin/gprename.desktop
+--- gprename-20230429/bin/gprename.desktop 2023-04-29 10:08:28.000000000 -0400
++++ gprename-20230429.patched/bin/gprename.desktop 2023-05-06 17:49:43.123635034 -0400
+@@ -4,7 +4,7 @@
+ Name=GPRename
+ Comment=Rename files and directories in batch
+ Exec=gprename
+-Icon=gprename
++Icon=/usr/share/pixmaps/gprename.png
+ Terminal=false
+ Keywords=renamer;utility;
+ Categories=Utility;
diff --git a/misc/gprename/gprename.SlackBuild b/misc/gprename/gprename.SlackBuild
index 0cfe15ce9c..490874bf12 100644
--- a/misc/gprename/gprename.SlackBuild
+++ b/misc/gprename/gprename.SlackBuild
@@ -1,39 +1,32 @@
#!/bin/bash
-# Copyright 2010 Binh Nguyen <binhvng@gmail.com>
+# Copyright 2022 B. Watson <urchlay@slackware.uk>
# Copyright 2017-2019 Donald Cooley South Haven, IN USA
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# Copyright 2010 Binh Nguyen <email removed>
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20230506 bkw: update for v20230429.
+# 20230103 bkw: update for v20220807.
+# 20220425 bkw:
+# - new maintainer.
+# - update for v20220206.
+# - relicense as WTFPL (permission per mailing list).
+# - put icon in /usr/share/pixmaps.
+# - rework patch for new version.
+# - REQUIRES perl-Gtk3 (not perl-gtk2).
+# - update README and slack-desc (to mention GTK3).
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gprename
-VERSION=${VERSION:-20190221}
+VERSION=${VERSION:-20230429}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -43,35 +36,29 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-set -eu
+set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+rm -rf $PRGNAM-$VERSION
+unzip $CWD/$PRGNAM-$VERSION.zip
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
-# Don't run update-desktop-database or install icons on the build host
+# Don't run update-desktop-database or install icons on the build host.
+# 20220425 bkw: patch also changes icon path to /usr/share/pixmaps
+# and sets the man dir to /usr/man.
patch -p1 < $CWD/gprename-makefile-fixups.patch
+# 20220425 bkw: note nonstandard use of DESTDIR!
make -j1 install DESTDIR=$PKG/usr PREFIX=/usr
-
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mv $PKG/usr/share/man $PKG/usr
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $(find $PKG/usr/man -type l) ; do ln -s $(readlink $i).gz $i.gz ; rm $i ; done
+gzip -9 $PKG/usr/man/man*/*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING.TXT README.TXT $PKG/usr/doc/$PRGNAM-$VERSION
+install -m0644 COPYING.TXT README.TXT $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/gprename/gprename.info b/misc/gprename/gprename.info
index eaf7ba2fcf..b54665554a 100644
--- a/misc/gprename/gprename.info
+++ b/misc/gprename/gprename.info
@@ -1,10 +1,10 @@
PRGNAM="gprename"
-VERSION="20190221"
-HOMEPAGE="http://gprename.sourceforge.net/"
-DOWNLOAD="https://sourceforge.net/projects/gprename/files/gprename/20190221/gprename-20190221.tar.bz2"
-MD5SUM="42cb068f1b423c7d97a13f1da50f90e0"
+VERSION="20230429"
+HOMEPAGE="https://gprename.sourceforge.net/"
+DOWNLOAD="https://sourceforge.net/projects/gprename/files/gprename/20230429/gprename-20230429.zip"
+MD5SUM="0335e0f5c514d85eb9a0f8ea795cff7a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="perl-gtk2 perl-libintl"
-MAINTAINER="Donald Cooley"
-EMAIL="chytraeu@sdf.org"
+REQUIRES="perl-Gtk3 perl-libintl"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/gprename/slack-desc b/misc/gprename/slack-desc
index 62732fcb4e..5be072bb28 100644
--- a/misc/gprename/slack-desc
+++ b/misc/gprename/slack-desc
@@ -6,7 +6,7 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-gprename: gprename (A GTK2 batch renamer for files and directories)
+gprename: gprename (a GTK3 batch renamer for files and directories)
gprename:
gprename: GPRename is a complete batch renamer for files and directories and
gprename: is licensed under the terms of the GPL version 3.
diff --git a/misc/gr-iqbal/gr-iqbal.SlackBuild b/misc/gr-iqbal/gr-iqbal.SlackBuild
index f37cb492df..ad8d8fff7a 100644
--- a/misc/gr-iqbal/gr-iqbal.SlackBuild
+++ b/misc/gr-iqbal/gr-iqbal.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=gr-iqbal
-VERSION=${VERSION:-2015.11.20}
+VERSION=${VERSION:-20210108_fbee239}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -71,7 +71,7 @@ mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvzf $CWD/$PRGNAM-$VERSION.tar.gz
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
diff --git a/misc/gr-iqbal/gr-iqbal.info b/misc/gr-iqbal/gr-iqbal.info
index 3fd9741f8c..32a8a33995 100644
--- a/misc/gr-iqbal/gr-iqbal.info
+++ b/misc/gr-iqbal/gr-iqbal.info
@@ -1,8 +1,8 @@
PRGNAM="gr-iqbal"
-VERSION="2015.11.20"
+VERSION="20210108_fbee239"
HOMEPAGE="http://cgit.osmocom.org/gr-iqbal"
-DOWNLOAD="https://master.dl.sourceforge.net/project/slackbuildsdirectlinks/gr-iqbal/gr-iqbal-2015.11.20.tar.gz"
-MD5SUM="72fee85f5b03e29bca73a8487a08aaa9"
+DOWNLOAD="https://ponce.cc/slackware/sources/repo/gr-iqbal-20210108_fbee239.tar.xz"
+MD5SUM="bc728c08ed0c9d4d66c8f7f9068969be"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="gnuradio libosmo-dsp"
diff --git a/misc/gramps/README b/misc/gramps/README
index fe29130818..72ba581df4 100644
--- a/misc/gramps/README
+++ b/misc/gramps/README
@@ -1,7 +1,7 @@
-Gramps is a genealogy program for Linux and other UNIX-like systems. Gramps
-stands for Genealogical Research and Analysis Management Programming System.
-Gramps helps you track your family tree. It allows you to store, edit, and
-research genealogical data.
+Gramps is a genealogy program for Linux and other UNIX-like
+systems. Gramps stands for Genealogical Research and Analysis
+Management Programming System. Gramps helps you track your family
+tree. It allows you to store, edit, and research genealogical data.
Optional Dependency: osm-gps-map
diff --git a/misc/gramps/doinst.sh b/misc/gramps/doinst.sh
index aea0f894eb..f55e090a55 100644
--- a/misc/gramps/doinst.sh
+++ b/misc/gramps/doinst.sh
@@ -8,6 +8,6 @@ fi
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
- /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ /usr/bin/gtk-update-icon-cache -f usr/share/gramps/images/hicolor/ >/dev/null 2>&1
fi
fi
diff --git a/misc/gramps/gramps.info b/misc/gramps/gramps.info
index def852bec7..996be0a7ef 100644
--- a/misc/gramps/gramps.info
+++ b/misc/gramps/gramps.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/gramps-project/gramps/archive/v5.1.2/gramps-5.1.2.z
MD5SUM="92693297f581187fad31a3473149e690"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="pyicu bsddb3"
+REQUIRES="python3-pyicu bsddb3"
MAINTAINER="Alan Aversa"
EMAIL="alan.aveNOrsaSP@AMcox.net (remove NO and SPAM)"
diff --git a/misc/grc/README b/misc/grc/README
index 08d4689320..c95ff92d76 100644
--- a/misc/grc/README
+++ b/misc/grc/README
@@ -1,13 +1,46 @@
grc (generic colouriser)
-grc provides two programs: grc and grcat. The main is grcat, which
-acts as a filter, i.e. taking standard input, colourising it and
-writing to standard output. grcat takes as a parameter the name of
+grc provides two programs: grc and grcat. The main one is grcat,
+which acts as a filter, i.e. taking standard input, colourising it
+and writing to standard output. grcat takes as a parameter the name of
configuration file.
-NOTE: to use, add following lines into your ~/.bashrc, ~/.zshrc or in
-~/.config/fish/config.fish:
+One major use of grc is to colorize the output of commonly-used shell
+commands. For this to work, grc has to set up the environment of your
+shell when it starts up. How you do this depends on which shell you
+use.
-[[ -s "/etc/profile.d/grc.bashrc" ]] && source /etc/profile.d/grc.bashrc
-[[ -s "/etc/profile.d/grc.zsh" ]] && source /etc/profile.d/grc.zsh
-[[ -s "/etc/profile.d/grc.fish" ]] && source /etc/profile.d/grc.fish
+bash, ksh, other POSIX-like shells
+----------------------------------
+To enable this globally for all users:
+
+ chmod +x /etc/profile.d/grc.sh
+
+Or, you can enable it for just your user by adding this line to one of
+your shell startup scripts (.profile, .bashrc, .kshrc, etc):
+
+ [ -e /etc/profile.d/grc.sh ] && . /etc/profile.d/grc.sh
+
+csh, tcsh
+---------
+To enable this globally for all users:
+
+ chmod +x /etc/profile.d/grc.csh
+
+Or, for one user, add to your .cshrc:
+
+ if ( -e /etc/profile.d/grc.csh ) then
+ source /etc/profile.d/grc.csh
+ endif
+
+zsh
+---
+Add this line to your ~/.zshrc:
+
+ [ -e /etc/grc.zsh ] && source /etc/grc.zsh
+
+fish
+----
+Add this line to your ~/.config/fish/config.fish:
+
+ [ -e /etc/grc.fish ] && source /etc/grc.fish
diff --git a/misc/grc/doinst.sh b/misc/grc/doinst.sh
index 7be6ad2127..b50214f79e 100644
--- a/misc/grc/doinst.sh
+++ b/misc/grc/doinst.sh
@@ -1,17 +1,25 @@
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
- # If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
- # toss the redundant copy
rm $NEW
fi
- # Otherwise, we leave the .new copy for the admin to consider...
}
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
+
+preserve_perms etc/profile.d/grc.csh.new
+preserve_perms etc/profile.d/grc.sh.new
config etc/grc.conf.new
-config etc/profile.d/grc.bashrc.new
-config etc/profile.d/grc.zsh.new
-config etc/profile.d/grc.fish.new
+config etc/default/grc.new
diff --git a/misc/grc/grc.SlackBuild b/misc/grc/grc.SlackBuild
index a30fd30a99..8aaf9b6546 100644
--- a/misc/grc/grc.SlackBuild
+++ b/misc/grc/grc.SlackBuild
@@ -3,7 +3,8 @@
# Slackware build script for grc.
#
# Copyright 2015-2018 Edinaldo P. Silva, Rio de Janeiro, Brazil.
-# Copyright 2020 Ricardo J. Barberis <ricardo.barberis@gmail.com>
+# Copyright 2020 Ricardo J. Barberis
+# Copyright 2023 B. Watson
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -23,25 +24,28 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20240208 bkw: BUILD=2
+# - add fix from Debian, for 'ip addr' highlighting. for some reason,
+# they call this version 1.13.1, though upstream has not released
+# such a version.
+
+# 20230806 bkw:
+# - take over maintenance.
+# - ARCH=noarch since it's just python.
+# - update for v1.13.
+# - expand README, fix the fish command so it actually works.
+# - add profile script for (t)csh.
+# - preserve_perms for profile.d scripts in doinst.sh.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM="grc"
-VERSION=${VERSION:-1.11.3}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-1.13}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+ARCH=noarch
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -51,20 +55,6 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
@@ -74,33 +64,34 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
-./install.sh $PKG/usr $PKG
+patch -p1 < $CWD/ipaddr.diff
-mv $PKG/etc/grc.conf $PKG/etc/grc.conf.new
+# Hardcoded man path sucks...
+sed -i 's,/share/man,/man,' install.sh
-# for Bash, Fish and Zsh.
-mv $PKG/etc/profile.d/grc.bashrc $PKG/etc/profile.d/grc.bashrc.new
-install -m644 grc.zsh $PKG/etc/profile.d/grc.zsh.new
-install -m644 grc.fish $PKG/etc/profile.d/grc.fish.new
+./install.sh $PKG/usr $PKG
+gzip -9 $PKG/usr/man/man*/*
install -Dm644 _grc $PKG/usr/share/zsh/site-functions/_grc
-mv $PKG/usr/share/man $PKG/usr/man
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+mv $PKG/etc/grc.conf $PKG/etc/grc.conf.new
+mv $PKG/etc/profile.d/grc.sh $PKG/etc/profile.d/grc.sh.new
+
+# Might as well include this, so enabling for bourne-like shells
+# will be a one-step process (chmod +x /etc/profile.d/grc.sh).
+mkdir -p $PKG/etc/default
+echo "GRC_ALIASES=true" > $PKG/etc/default/grc.new
-DOCS="contrib debian/changelog debian/copyright CREDITS INSTALL \
-README.markdown Regexp.txt TODO"
+# 20230806 bkw: (t)csh support. For shiggles.
+install -m0644 -oroot -groot $CWD/grc.csh $PKG/etc/profile.d/grc.csh.new
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -r $DOCS $PKG/usr/doc/$PRGNAM-$VERSION/
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -r contrib debian/{changelog,copyright} CREDITS README* *.txt TODO $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/grc/grc.csh b/misc/grc/grc.csh
new file mode 100644
index 0000000000..b0a83b3c55
--- /dev/null
+++ b/misc/grc/grc.csh
@@ -0,0 +1,48 @@
+# aliases for grc(1)
+
+tty -s
+if ( $status == 0 && "$TERM" != "" && "$TERM" != "dumb" ) then
+ alias colourify "grc -es"
+ alias blkid 'colourify blkid'
+ alias configure 'colourify ./configure'
+ alias df 'colourify df'
+ alias diff 'colourify diff'
+ alias docker 'colourify docker'
+ alias docker-compose 'colourify docker-compose'
+ alias docker-machine 'colourify docker-machine'
+ alias du 'colourify du'
+# alias env 'colourify env'
+ alias free 'colourify free'
+ alias fdisk 'colourify fdisk'
+ alias findmnt 'colourify findmnt'
+ alias make 'colourify make'
+ alias gcc 'colourify gcc'
+ alias g++ 'colourify g++'
+ alias id 'colourify id'
+ alias ip 'colourify ip'
+ alias iptables 'colourify iptables'
+ alias as 'colourify as'
+ alias gas 'colourify gas'
+ alias journalctl 'colourify journalctl'
+ alias kubectl 'colourify kubectl'
+ alias ld 'colourify ld'
+ #alias ls 'colourify ls'
+ alias lsof 'colourify lsof'
+ alias lsblk 'colourify lsblk'
+ alias lspci 'colourify lspci'
+ alias netstat 'colourify netstat'
+ alias ping 'colourify ping'
+ alias ss 'colourify ss'
+ alias traceroute 'colourify traceroute'
+ alias traceroute6 'colourify traceroute6'
+ alias head 'colourify head'
+ alias tail 'colourify tail'
+ alias dig 'colourify dig'
+ alias mount 'colourify mount'
+ alias ps 'colourify ps'
+ alias mtr 'colourify mtr'
+ alias semanage 'colourify semanage'
+ alias getsebool 'colourify getsebool'
+ alias ifconfig 'colourify ifconfig'
+ alias sockstat 'colourify sockstat'
+endif
diff --git a/misc/grc/grc.info b/misc/grc/grc.info
index dec1ab4f81..7ba09e0e50 100644
--- a/misc/grc/grc.info
+++ b/misc/grc/grc.info
@@ -1,10 +1,10 @@
PRGNAM="grc"
-VERSION="1.11.3"
+VERSION="1.13"
HOMEPAGE="https://github.com/garabik/grc"
-DOWNLOAD="https://github.com/garabik/grc/archive/v1.11.3/grc-1.11.3.tar.gz"
-MD5SUM="17f9a0b014c771b9e4cd060113309073"
+DOWNLOAD="https://github.com/garabik/grc/archive/v1.13/grc-1.13.tar.gz"
+MD5SUM="9800a42aa081dd64dbaaf928bb5796fe"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Ricardo J. Barberis"
-EMAIL="ricardo.barberis@gmail.com"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/grc/ipaddr.diff b/misc/grc/ipaddr.diff
new file mode 100644
index 0000000000..2596c5dd2e
--- /dev/null
+++ b/misc/grc/ipaddr.diff
@@ -0,0 +1,11 @@
+--- grc-1.13/colourfiles/conf.ipaddr 2021-08-07 11:44:43.000000000 -0400
++++ grc-1.13.1/colourfiles/conf.ipaddr 2021-08-22 07:38:08.000000000 -0400
+@@ -3,7 +3,7 @@
+ colours=default,bold yellow,bold magenta
+ =====
+ # broadcast
+-regexp=brd\s([^}s]+)
++regexp=brd\s([^}\s]+)
+ colours=default,dark cyan
+ =====
+ # dynamic
diff --git a/misc/gxmessage/gxmessage.SlackBuild b/misc/gxmessage/gxmessage.SlackBuild
index 7289231915..a6fc1a8870 100644
--- a/misc/gxmessage/gxmessage.SlackBuild
+++ b/misc/gxmessage/gxmessage.SlackBuild
@@ -39,7 +39,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -57,8 +57,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/gxmessage/gxmessage.info b/misc/gxmessage/gxmessage.info
index 8a5f1d297d..9ce19e6324 100644
--- a/misc/gxmessage/gxmessage.info
+++ b/misc/gxmessage/gxmessage.info
@@ -1,7 +1,7 @@
PRGNAM="gxmessage"
VERSION="2.12.4"
-HOMEPAGE="http://homepages.ihug.co.nz/~trmusson/programs.html#gxmessage"
-DOWNLOAD="http://homepages.ihug.co.nz/~trmusson/stuff/gxmessage-2.12.4.tar.gz"
+HOMEPAGE="https://trmusson.dreamhosters.com/programs.html#gxmessage"
+DOWNLOAD="https://trmusson.dreamhosters.com/stuff/gxmessage-2.12.4.tar.gz"
MD5SUM="7c94c714ebedbfa2db2d645cc4a4092a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/gxmessage/slack-desc b/misc/gxmessage/slack-desc
index 317e46d1a9..8dc3a5469b 100644
--- a/misc/gxmessage/slack-desc
+++ b/misc/gxmessage/slack-desc
@@ -16,4 +16,4 @@ gxmessage: xmessage, gxmessage accepts any option xmessage would, and returns
gxmessage: the same exit codes.
gxmessage:
gxmessage: Homepage:
-gxmessage: http://homepages.ihug.co.nz/~trmusson/programs.html#gxmessage
+gxmessage: https://trmusson.dreamhosters.com/programs.html#gxmessage
diff --git a/misc/hashkill/README b/misc/hashkill/README
deleted file mode 100644
index eca79f9b19..0000000000
--- a/misc/hashkill/README
+++ /dev/null
@@ -1,24 +0,0 @@
-Hashkill is an open-source password recovery tool.
-
-Features:
-
-- Multi-threaded so that it can benefit from multi-core/multi-CPU
- systems
-- SSE2/AVX/XOP/AES-NI-accelerated routines to achieve high speeds on
- modern x86 CPUs
-- Very powerful rule engine plus optimized bruteforce/markov codepaths
- for fast algos.
-- More than 60 plugins for different types of passwords (ranging from
- simple hashes like MD5 and SHA1 to WPA, passworded RAR files, MS
- Office documents and TrueCrypt volumes)
-- Supports session save/restore. Sessions are auto-saved each 3
- seconds. Password cracking can resume after the last checkpoint in
- case the program is stopped/killed/system crashes/power down/etc.
-- Multi-hash support
-- Fast GPU support on both Nvidia and AMD. GCN and Kepler architecture
- supported.
-- Multi-GPU support (even AMD+NVidia systems).
-- Session save/restore, markov/rule/bruteforce also on GPUs.
-
-Optional dependencies:
-For GPU support and kernel compilation: proprietary AMD/NVidia drivers
diff --git a/misc/hashkill/hashkill.info b/misc/hashkill/hashkill.info
deleted file mode 100644
index a86e8d75f2..0000000000
--- a/misc/hashkill/hashkill.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="hashkill"
-VERSION="0.3.1"
-HOMEPAGE="https://github.com/gat3way/hashkill"
-DOWNLOAD="http://github.com/gat3way/hashkill/archive/0.3.1.tar.gz"
-MD5SUM="6a9ca282b2156fe340c583fdedc2fccb"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Gabriel Magno"
-EMAIL="gabrielmagno1@gmail.com"
diff --git a/misc/hashkill/slack-desc b/misc/hashkill/slack-desc
deleted file mode 100644
index f1cbeccab9..0000000000
--- a/misc/hashkill/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-hashkill: hashkill (multithreaded password recovery tool)
-hashkill:
-hashkill: hashkill is an open-source password recovery tool. It can recover
-hashkill: about 45 types of passwords using different types of attacks. It has
-hashkill: several nice features (sessions save/restore, multihash lists, GPU
-hashkill: acceleration) and is designed to take advantage of newer hardware
-hashkill: (multicore systems, SSE2/XOP/AVX/AES-NI-enabled x86 CPUs, modern
-hashkill: GPUs, multi-GPU configurations, etc).
-hashkill:
-hashkill: homepage: https://github.com/gat3way/hashkill
-hashkill:
diff --git a/misc/heimdall/README b/misc/heimdall/README
index d57d404146..98dc6858b6 100644
--- a/misc/heimdall/README
+++ b/misc/heimdall/README
@@ -7,25 +7,29 @@ Heimdall Frontend.
Heimdall command line package includes: Heimdall command line tool and
udev rules (for non-root USB access).
-Heimdall Frontend package includes: Heimdall Frontend - graphical UI only.
-So, this script comes with an option (GUI) that can be set at build time.
-The default is GUI=yes, but if you don't want to install the frontend, you
-could do that by setting GUI to 'no' in command line:
+Heimdall Frontend package includes: Heimdall Frontend - GUI only.
+
+So, this script comes with an option (GUI) that can be set at build
+time.
+
+The default is GUI=yes, but if you don't want to install the frontend,
+you could do that by setting GUI to 'no' in command line:
+
GUI=no ./heimdall.SlackBuild
Don't forget to reloaded udev after installing this package
/etc/rc.d/rc.udev reload
-------------------------------------------------------------------------------
+-----------------------------------------------------------------------
DISCLAIMER:
- This software attempts to flash your Galaxy S device. The very nature of
- flashing is dangerous. As with all flashing software, Heimdall has the
- potential to damage (brick) your phone if not used carefully. If you're
- concerned, don't use this software. Flashing ROMs onto your phone may also
- void your warranty. Benjamin Dobell and Glass Echidna are not responsible
- for the result of your actions.
+This software attempts to flash your Galaxy S device. The very nature
+of flashing is dangerous. As with all flashing software, Heimdall has
+the potential to damage (brick) your phone if not used carefully. If
+you're concerned, don't use this software. Flashing ROMs onto your
+phone may also void your warranty. Benjamin Dobell and Glass Echidna
+are not responsible for the result of your actions.
- Heimdall (c) 2010-2013 Benjamin Dobell, Glass Echidna
-------------------------------------------------------------------------------
+Heimdall (c) 2010-2013 Benjamin Dobell, Glass Echidna
+-----------------------------------------------------------------------
diff --git a/misc/heimdall/heimdall.SlackBuild b/misc/heimdall/heimdall.SlackBuild
index 36f2b99442..e9a025c218 100644
--- a/misc/heimdall/heimdall.SlackBuild
+++ b/misc/heimdall/heimdall.SlackBuild
@@ -84,7 +84,7 @@ find -L . \
# This is a mandatory Heimdall component
cd libpit
CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS -std=gnu++14" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
@@ -100,7 +100,7 @@ cd $TMP/$PRGNAM-suite-$VERSION
# Compile and Install Heimdall
cd heimdall
CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS -std=gnu++14" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
@@ -123,7 +123,7 @@ cd $TMP/$PRGNAM-suite-$VERSION
case "$GUI" in
yes)
cd heimdall-frontend
- qmake OUTPUTDIR=$PKG/usr/bin
+ qmake-qt4 OUTPUTDIR=$PKG/usr/bin
make
make install DESTDIR=$PKG
cd $TMP/$PRGNAM-suite-$VERSION
diff --git a/misc/heimdall/heimdall.info b/misc/heimdall/heimdall.info
index 9a41a33779..13fdf5489c 100644
--- a/misc/heimdall/heimdall.info
+++ b/misc/heimdall/heimdall.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://bitbucket.org/benjamin_dobell/heimdall/downloads/heimdall-suit
MD5SUM="911c6825c7a09340c27b1ee5078736c5"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="qt4"
MAINTAINER="Diniz Bortolotto"
EMAIL="diniz.bortolotto@gmail.com"
diff --git a/misc/heyu/heyu.SlackBuild b/misc/heyu/heyu.SlackBuild
index 133ad3ff2f..8705c2f2fb 100644
--- a/misc/heyu/heyu.SlackBuild
+++ b/misc/heyu/heyu.SlackBuild
@@ -2,14 +2,14 @@
# Slackware build script for heyu
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=heyu
-VERSION=${VERSION:-2.10.2}
+VERSION=${VERSION:-2.10.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -22,9 +22,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -51,11 +48,8 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
./Configure
diff --git a/misc/heyu/heyu.info b/misc/heyu/heyu.info
index 51b02e3d0e..db891dc96b 100644
--- a/misc/heyu/heyu.info
+++ b/misc/heyu/heyu.info
@@ -1,10 +1,10 @@
PRGNAM="heyu"
-VERSION="2.10.2"
-HOMEPAGE="http://www.heyu.org/"
-DOWNLOAD="https://github.com/HeyuX10Automation/heyu/archive/v2.10.2/heyu-2.10.2.tar.gz"
-MD5SUM="9351e92c0d7fa1a0354825f99eb51c2d"
+VERSION="2.10.3"
+HOMEPAGE="https://www.heyu.org/"
+DOWNLOAD="https://github.com/HeyuX10Automation/heyu/archive/v2.10.3/heyu-2.10.3.tar.gz"
+MD5SUM="4ad7d4c2e074528c5c15dd35f88adde6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/hoorex/README b/misc/hoorex/README
index 4b33b53705..b2ceb88815 100644
--- a/misc/hoorex/README
+++ b/misc/hoorex/README
@@ -9,7 +9,7 @@ either case, the output is listed in build order and (using command
line switches) can be filtered and formatted to accomodate a variety
of usage scenarios.
-Commandline tab completion is available in bash shells provided that
-Slackware's bash-completion package (from Slackware CD "extra" directory)
-has been installed at run time. The tab completion for zsh should just work
-(thanks to contribution from David O'Shaughnessy).
+Commandline tab completion is available in bash shells provided
+that Slackware's bash-completion package (from Slackware CD "extra"
+directory) has been installed at run time. The tab completion for zsh
+should just work (thanks to contribution from David O'Shaughnessy).
diff --git a/misc/hoorex/hoorex.SlackBuild b/misc/hoorex/hoorex.SlackBuild
index 2d9ddc75e0..ad510e4286 100644
--- a/misc/hoorex/hoorex.SlackBuild
+++ b/misc/hoorex/hoorex.SlackBuild
@@ -43,8 +43,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/hxtools/README b/misc/hxtools/README
new file mode 100644
index 0000000000..183f596133
--- /dev/null
+++ b/misc/hxtools/README
@@ -0,0 +1,78 @@
+hxtools (miscellaneous command-line tools)
+
+A collection of tools and scripts by Jan Engelhardt that have
+accumulated over the years, each of which seems to be too small to
+warrant its own project.
+
+The package also includes consoleet-utils (which was recently split off
+from hxtools).
+
+The following tools are included:
+
+* aumeta - move seek index and adjust metadata of audio files
+* bin2c - embed data files into C as variables
+* bsvplay - convert BASICA music files to PCM
+* cctypeinfo - show sizes of some important C types on the implemen-
+ tation it was compiled with
+* checkbrack - check parenthesis and bracket count
+* clock_info - print info about system clocks
+* cwdiff - run wdiff with color
+* declone - break hardlinks
+* diff2php - transform patch to self-serving PHP file
+* doxygen-kerneldoc-filter - filter for Doxygen to support kerneldoc
+* extract_d3pkg - extract Descent3 PKG files
+* extract_dxhog - extract Descent HOG files
+* extract_f3pod - extract Fury3 POD files
+* extract_qupak - extract Quake2 PACK files
+* fd0ssh - pipe for password-over-stdin support to ssh
+* filenameconv - convert file name encoding
+* fxterm - start xterm with VGA color palette
+* git-author-stat - show commit author statistics of a git repository
+* git-blame-stats - show per-line author statistics of a git repository
+* git-forest - display the commit history forest
+* git-revert-stats - show reverting statistics of a git repository
+* git-track - set up branch for tracking a remote
+* gpsh [1] - grep in tracklists and play audio files
+* graph-fanout - fan a tree (for graphviz)
+* graph-lchain - remove circles in graphs using longest-chaining method
+* gxxdm - g++ symbol name demangler
+* hcdplay - control autonomous CDDA playback using Linux ioctls
+* ldif-duplicate-attrs - check for multi-value attributes in LDIF file
+* ldif-leading-spaces - detect questionable values for LDAP attributes
+* logontime - show cumulative logon time from wtmp
+* mailsplit - split an mbox into single files
+* mkvappend - cat multiple files into one Matroska container file
+* mod2opus - wrapper for tracker module/MIDI to Opus transcoding
+* hxnetload - show utilization of network interface
+* ofl - open file lister (replaces fuser and lsof -m)
+* paddrspacesize - print size of processes' address spaces
+* pcmdiff - proof-of-concept raw PCM deltifier
+* pcmmix - mix output from bsvplay/qplay in arpeggio or polyphonic mode
+* pegrep - multi-line perl-regexp grep
+* peicon - extract icon resources from PE files
+* pesubst - perl-regexp stream substitution (replaces sed substitutions)
+* pmap_dirty - display amount of RAM a process uses hard
+* proc_iomem_count - show MMIO region sizes
+* proc_stat_parse - ???
+* proc_stat_signal_decode - decode /proc/self/stat for signal status
+* psthreads - alternative experiment to ps involving thread display
+* qpdecode - ???
+* qplay - convert QBASIC play strings to PCM
+* qtar - faster interface to tar with file ordering
+* raregetty - local login program for remote hosts
+* recursive_lower - recursively lowercase all filenames
+* rezip - optimize zip file compression
+* rpmdep.pl - read RPM dependencies and output a graph
+* sourcefuncsize - statistical analysis of code
+* spec-beautifier - program to clean up RPM .spec files
+* ssa2srt - convert SubStation Alpha (SSA) subtitles to SubRip (SRT)
+* su1 - what sudo should have done
+* sysinfo - print IRC-style system information banner
+* tailhex - hex dumper with tail-following support
+* utmp_register - make entries in the utmp/wtmp database
+* vcsaview - display a screen dump in VCSA format
+* vfontas - a bitmap font file transformation utility
+* wktimer - work timer
+* xcp - proof-of-concept cp with alternate copying mechanisms
+
+[1] perl-File-Find-Rule is required for gpsh to work.
diff --git a/misc/hxtools/hxtools.SlackBuild b/misc/hxtools/hxtools.SlackBuild
new file mode 100644
index 0000000000..287855600a
--- /dev/null
+++ b/misc/hxtools/hxtools.SlackBuild
@@ -0,0 +1,196 @@
+#!/bin/bash
+
+# Slackware build script for hxtools
+
+# Written by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# This build includes both hxtools and the libHX library it depends
+# on. In the unlikely event that someone finds another project that
+# depends on libHX and wants to package it up for SBo, whatever it is
+# can just list hxtools as a dependency.
+
+# 20230901 bkw: update for v20230411 (and libhx-4.14, consoleet-utils-1.3).
+# 20230109 bkw: update for v20221120, include new consoleet-utils.
+# TODO: package up the consoleet fonts, too (in a separate build).
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=hxtools
+VERSION=${VERSION:-20230411}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+LIBNAM=libHX
+LIBVER=${LIBVER:-4.14}
+LEETNAM=consoleet-utils
+LEETVER=${LEETVER:-1.3}
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+LIBDOC=$PKGDOC/$LIBNAM-$LIBVER
+LEETDOC=$PKGDOC/$LEETNAM-$LEETVER
+
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM
+mkdir -p $PRGNAM
+cd $PRGNAM
+TOPDIR="$( pwd )"
+tar xvf $CWD/$PRGNAM-$VERSION.tar.zst
+tar xvf $CWD/$LIBNAM-$LIBVER.tar.xz
+tar xvf $CWD/$LEETNAM-$LEETVER.tar.zst
+chown -R root:root .
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+### libHX:
+cd $LIBNAM-$LIBVER
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make # V=1
+make install-strip DESTDIR=$PKG
+rm -f $PKG/usr/lib*/*.la
+
+# LICENSE.GPL3 and LICENSE.WTFPL are also in hxtools, don't install here.
+mkdir -p $LIBDOC
+cp -a COPYING LICENSE.LGPL* *.rst doc $LIBDOC
+
+### hxtools itself, link with the libHX in $PKG:
+cd $TOPDIR/$PRGNAM-$VERSION
+
+# look for extract_dfqshared.pm in /usr/share/$PRGNAM, not /usr/bin.
+patch -p1 < $CWD/shared_perl_lib.diff
+
+libHX_CFLAGS="-I$PKG/usr/include" \
+libHX_LIBS="-L$PKG/usr/lib$LIBDIRSUFFIX -lHX" \
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make # V=1
+make install-strip DESTDIR=$PKG
+
+# dunno why so much stuff is installed in libexec... easier to
+# move it after the fact than patch the autotools stuff to fix it.
+mv $PKG/usr/libexec/$PRGNAM/* $PKG/usr/bin
+rm -rf $PKG/usr/libexec
+
+# move this to where the patched extract_* tools expect to find it.
+install -m0644 $PKG/usr/bin/extract_dfqshared.pm $PKG/usr/share/$PRGNAM
+rm -f $PKG/usr/bin/extract_dfqshared.pm
+
+# these don't get installed by 'make install'
+install -m0755 sadmin/filenameconv $PKG/usr/bin
+install -s -m0755 smath/graph-{fanout,lchain} $PKG/usr/bin
+
+# nor these...
+mkdir -p $PKG/usr/sbin
+install -m0755 sadmin/raregetty $PKG/usr/sbin
+# this isn't useful on Slackware, is it?
+install -m0755 sadmin/rpmdep.pl $PKG/usr/sbin
+
+cp -a doc/filenameconv.1 $PKG/usr/man/man1
+cp -a doc/raregetty.8 $PKG/usr/man/man8
+
+# these 2 conflict with bsd-games and man-db:
+rm -f $PKG/usr/bin/{rot13,man2html} \
+ $PKG/usr/man/man1/{rot13,man2html}.1
+
+# there's also a bin2c in SBo's cudatoolkit, but it's installed to
+# /usr/share/cuda/bin, so there's no conflict here.
+
+# redundant copy (the other one's in etc/):
+rm -f $PKG/usr/share/hxtools/hxloginpref.conf
+
+cp -a LICENSE* doc/*.rst examples $PKGDOC
+
+### consoleet-utils (used to be included in hxtools).
+cd $TOPDIR/$LEETNAM-$LEETVER
+libHX_CFLAGS="-I$PKG/usr/include" \
+libHX_LIBS="-L$PKG/usr/lib$LIBDIRSUFFIX -lHX" \
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make # V=1
+make install-strip DESTDIR=$PKG
+mkdir -p $LEETDOC
+cp -a doc/changelog.rst $LEETDOC
+
+gzip -9 $PKG/usr/man/man*/*
+
+# symlink redundant licenses
+ln -s ../LICENSE.GPL3 $LIBDOC/LICENSE.GPL3
+ln -s ../LICENSE.GPL3 $LEETDOC/LICENSE.GPL3
+ln -s ../LICENSE.MIT $LEETDOC/LICENSE.MIT
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/hxtools/hxtools.info b/misc/hxtools/hxtools.info
new file mode 100644
index 0000000000..820a35c14c
--- /dev/null
+++ b/misc/hxtools/hxtools.info
@@ -0,0 +1,14 @@
+PRGNAM="hxtools"
+VERSION="20230411"
+HOMEPAGE="https://inai.de/projects/hxtools/"
+DOWNLOAD="https://inai.de/files/hxtools/hxtools-20230411.tar.zst \
+ https://inai.de/files/consoleet/consoleet-utils-1.3.tar.zst \
+ https://inai.de/files/libhx/libHX-4.14.tar.xz"
+MD5SUM="4f9146cf223ffc7b21c0cf4bdf8672a4 \
+ 59fda0810e3773ded01dd145a098a0ee \
+ 456c9b0c9db2cad37ac304f65e82ea34"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/hxtools/shared_perl_lib.diff b/misc/hxtools/shared_perl_lib.diff
new file mode 100644
index 0000000000..16a8ecb3a9
--- /dev/null
+++ b/misc/hxtools/shared_perl_lib.diff
@@ -0,0 +1,56 @@
+diff -Naur hxtools-20211204/smm/extract_d3pkg hxtools-20211204.patched/smm/extract_d3pkg
+--- hxtools-20211204/smm/extract_d3pkg 2021-12-04 08:56:44.000000000 -0500
++++ hxtools-20211204.patched/smm/extract_d3pkg 2022-01-27 15:49:49.273028431 -0500
+@@ -10,8 +10,8 @@
+
+ use Getopt::Long;
+ use strict;
+-do (($0 =~ m{^(.*)/})[0] || ".")."/shared.pm" ||
+- die "Could not load shared.pm: $!\n";
++do "/usr/share/hxtools/extract_dfqshared.pm" ||
++ die "Could not load extract_dfqshared.pm: $!\n";
+
+ my $ex_out_dir = ".";
+ my $ex_archive_file = "-";
+diff -Naur hxtools-20211204/smm/extract_dxhog hxtools-20211204.patched/smm/extract_dxhog
+--- hxtools-20211204/smm/extract_dxhog 2021-12-04 08:56:44.000000000 -0500
++++ hxtools-20211204.patched/smm/extract_dxhog 2022-01-27 15:50:02.081027267 -0500
+@@ -10,8 +10,8 @@
+
+ use Getopt::Long;
+ use strict;
+-do (($0 =~ m{^(.*)/})[0] || ".")."/shared.pm" ||
+- die "Could not load shared.pm: $!\n";
++do "/usr/share/hxtools/extract_dfqshared.pm" ||
++ die "Could not load extract_dfqshared.pm: $!\n";
+
+ my $ex_out_dir = ".";
+ my $ex_archive_file = "-";
+diff -Naur hxtools-20211204/smm/extract_f3pod hxtools-20211204.patched/smm/extract_f3pod
+--- hxtools-20211204/smm/extract_f3pod 2021-12-04 08:56:44.000000000 -0500
++++ hxtools-20211204.patched/smm/extract_f3pod 2022-01-27 15:50:12.877026285 -0500
+@@ -10,8 +10,8 @@
+
+ use Getopt::Long;
+ use strict;
+-do (($0 =~ m{^(.*)/})[0] || ".")."/shared.pm" ||
+- die "Could not load shared.pm: $!\n";
++do "/usr/share/hxtools/extract_dfqshared.pm" ||
++ die "Could not load extract_dfqshared.pm: $!\n";
+
+ my $ex_out_dir = ".";
+ my $ex_archive_file = "-";
+diff -Naur hxtools-20211204/smm/extract_qupak hxtools-20211204.patched/smm/extract_qupak
+--- hxtools-20211204/smm/extract_qupak 2021-12-04 08:56:44.000000000 -0500
++++ hxtools-20211204.patched/smm/extract_qupak 2022-01-27 15:50:19.046025725 -0500
+@@ -10,8 +10,8 @@
+
+ use Getopt::Long;
+ use strict;
+-do (($0 =~ m{^(.*)/})[0] || ".")."/shared.pm" ||
+- die "Could not load shared.pm: $!\n";
++do "/usr/share/hxtools/extract_dfqshared.pm" ||
++ die "Could not load extract_dfqshared.pm: $!\n";
+
+ my $ex_out_dir = ".";
+ my $ex_archive_file = "-";
diff --git a/misc/hxtools/slack-desc b/misc/hxtools/slack-desc
new file mode 100644
index 0000000000..c8d041cb90
--- /dev/null
+++ b/misc/hxtools/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+hxtools: hxtools (miscellaneous command-line tools)
+hxtools:
+hxtools: A collection of tools and scripts by Jan Engelhardt that have
+hxtools: accumulated over the years, each of which seems to be too small to
+hxtools: warrant its own project.
+hxtools:
+hxtools:
+hxtools:
+hxtools:
+hxtools:
+hxtools:
diff --git a/misc/ibus-chewing/doinst.sh b/misc/ibus-chewing/doinst.sh
index 56b9e419c1..f6a6676883 100644
--- a/misc/ibus-chewing/doinst.sh
+++ b/misc/ibus-chewing/doinst.sh
@@ -1,3 +1,7 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
if [ -e usr/share/glib-2.0/schemas ]; then
if [ -x /usr/bin/glib-compile-schemas ]; then
/usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
diff --git a/misc/ibus-chewing/ibus-chewing.SlackBuild b/misc/ibus-chewing/ibus-chewing.SlackBuild
index b6af854711..d092db2a7a 100644
--- a/misc/ibus-chewing/ibus-chewing.SlackBuild
+++ b/misc/ibus-chewing/ibus-chewing.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/ibus-qt/ibus-qt.SlackBuild b/misc/ibus-qt/ibus-qt.SlackBuild
index 5f92e3c054..47746a6551 100644
--- a/misc/ibus-qt/ibus-qt.SlackBuild
+++ b/misc/ibus-qt/ibus-qt.SlackBuild
@@ -34,7 +34,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -52,8 +52,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/ibus-qt/ibus-qt.info b/misc/ibus-qt/ibus-qt.info
index 263e3964b5..ceb8742198 100644
--- a/misc/ibus-qt/ibus-qt.info
+++ b/misc/ibus-qt/ibus-qt.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://github.com/ibus/ibus-qt/releases/download/1.3.3/ibus-qt-1.3.3-
MD5SUM="952fa987dc3675dc1df7721b552770c1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="qt4"
MAINTAINER="Heinz Wiesinger"
EMAIL="pprkut@slackbuilds.org"
diff --git a/misc/ibus-skk/doinst.sh b/misc/ibus-skk/doinst.sh
index 8fc0d3d332..34b0449960 100644
--- a/misc/ibus-skk/doinst.sh
+++ b/misc/ibus-skk/doinst.sh
@@ -22,37 +22,5 @@ preserve_perms() {
config $NEW
}
-schema_install() {
- SCHEMA="$1"
- GCONF_CONFIG_SOURCE="xml::etc/gconf/gconf.xml.defaults" \
- chroot . gconftool-2 --makefile-install-rule \
- /etc/gconf/schemas/$SCHEMA \
- 1>/dev/null
-}
-
preserve_perms etc/profile.d/ibus-skk.sh.new
preserve_perms etc/profile.d/ibus-skk.csh.new
-
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
-fi
-
-if [ -x /usr/bin/update-mime-database ]; then
- /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
-fi
-
-if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
- if [ -x /usr/bin/gtk-update-icon-cache ]; then
- /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
- fi
-fi
-
-if [ -e usr/share/glib-2.0/schemas ]; then
- if [ -x /usr/bin/glib-compile-schemas ]; then
- /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
- fi
-fi
-
-# If needed -- be sure to sed @LIBDIR@ inside the build script
-chroot . /usr/bin/gio-querymodules @LIBDIR@/gio/modules/ 1> /dev/null 2> /dev/null
-
diff --git a/misc/ibus-skk/ibus-skk.SlackBuild b/misc/ibus-skk/ibus-skk.SlackBuild
index 3bf7be611e..603d157d77 100644
--- a/misc/ibus-skk/ibus-skk.SlackBuild
+++ b/misc/ibus-skk/ibus-skk.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/ibus-skk/ibus-skk.info b/misc/ibus-skk/ibus-skk.info
index 05cb3d8934..c1a4f17cf0 100644
--- a/misc/ibus-skk/ibus-skk.info
+++ b/misc/ibus-skk/ibus-skk.info
@@ -1,7 +1,7 @@
PRGNAM="ibus-skk"
VERSION="1.3.9"
HOMEPAGE="https://github.com/ueno/ibus-skk"
-DOWNLOAD="https://github.com/ueno/ibus-skk/archive/ibus-skk-1.3.9.tar.gz"
+DOWNLOAD="https://github.com/ueno/ibus-skk/archive/ibus-skk-1.3.9/ibus-skk-ibus-skk-1.3.9.tar.gz"
MD5SUM="7f9d74c65546c7f34f050fd44a5a21ba"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/ibus-table-chinese/README b/misc/ibus-table-chinese/README
new file mode 100644
index 0000000000..31f6f10d1e
--- /dev/null
+++ b/misc/ibus-table-chinese/README
@@ -0,0 +1,23 @@
+ibus-table-chinese provide the following input method tables for
+IBus-Table, an input method that support table input methods.
+
+Array30 (行列30輸入法)
+CangJie3 (倉頡輸入法第三代)
+CangJie5 (倉頡輸入法第五代)
+CangJieBig (倉頡輸入法大字集)
+Cantonese Pinyin (廣æ±æ‹¼éŸ³è¼¸å…¥æ³•)
+Canton HK (港å¼å»£æ±è©±è¼¸å…¥æ³•)
+Jyutping (粵語拼音輸入法)
+Easy Big (輕鬆輸入法大字集)
+Erbi (二笔)
+Erbi QS (二笔é’æ¾)
+Quick 3 (速æˆè¼ªå…¥æ³•ç¬¬ä¸‰ä»£)
+Quick 5 (速æˆè¼ªå…¥æ³•ç¬¬äº”代)
+Quick Classic (速æˆè¼ªå…¥æ³•å¤å…¸ç‰ˆ)
+Smart Cang Jie 6 (快速倉頡輸入法六代)
+Stroke5 (筆順五碼)
+Wu (å³èªžè¼¸å…¥æ³•)
+Wubi-Heifeng86 (海峰五筆86)
+Yong (æ°¸ç )
+
+This package is released under GPLv3.
diff --git a/misc/ibus-table-chinese/doinst.sh b/misc/ibus-table-chinese/doinst.sh
new file mode 100644
index 0000000000..f6a6676883
--- /dev/null
+++ b/misc/ibus-table-chinese/doinst.sh
@@ -0,0 +1,10 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/glib-2.0/schemas ]; then
+ if [ -x /usr/bin/glib-compile-schemas ]; then
+ /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
+ fi
+fi
+
diff --git a/misc/ibus-table-chinese/ibus-table-chinese.SlackBuild b/misc/ibus-table-chinese/ibus-table-chinese.SlackBuild
new file mode 100644
index 0000000000..c9e4733461
--- /dev/null
+++ b/misc/ibus-table-chinese/ibus-table-chinese.SlackBuild
@@ -0,0 +1,83 @@
+#!/bin/bash
+
+# Slackware build script for ibus-table-chinese
+
+# Copyright 2023 Guan-Zhong Huang, Taiwan <imprazaguy@gmail.com>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=ibus-table-chinese
+VERSION=${VERSION:-1.8.12}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+ARCH=noarch
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+tar xvf $CWD/cmake-fedora-2.9.2-modules-only.tar.gz
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+cmake \
+ -Wno-dev \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=Release \
+ ..
+make
+make install DESTDIR=$PKG
+cd ..
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir $PKG/usr/doc
+mv $PKG/usr/share/doc/$PRGNAM $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -rf $PKG/usr/share/doc
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/ibus-table-chinese/ibus-table-chinese.info b/misc/ibus-table-chinese/ibus-table-chinese.info
new file mode 100644
index 0000000000..fab7ecbe9a
--- /dev/null
+++ b/misc/ibus-table-chinese/ibus-table-chinese.info
@@ -0,0 +1,12 @@
+PRGNAM="ibus-table-chinese"
+VERSION="1.8.12"
+HOMEPAGE="https://github.com/mike-fabian/ibus-table-chinese"
+DOWNLOAD="https://github.com/mike-fabian/ibus-table-chinese/archive/1.8.12/ibus-table-chinese-1.8.12.tar.gz \
+ https://releases.pagure.org/cmake-fedora/cmake-fedora-2.9.2-modules-only.tar.gz"
+MD5SUM="1b7be82c986e7a0646f7301587dc48c7 \
+ 21f19ada6922886c060d46d5a36c6269"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="gob2 libchewing"
+MAINTAINER="Kenneth Chan"
+EMAIL="kenneth.t.chan@gmail.com"
diff --git a/misc/ibus-table-chinese/slack-desc b/misc/ibus-table-chinese/slack-desc
new file mode 100644
index 0000000000..63346314b2
--- /dev/null
+++ b/misc/ibus-table-chinese/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+ibus-table-chinese: ibus-table-chinese (Chinese tables for IBus-Table)
+ibus-table-chinese:
+ibus-table-chinese: ibus-table-chinese provide the following input method tables for
+ibus-table-chinese: IBus-Table, an input method that support table input methods.
+ibus-table-chinese:
+ibus-table-chinese: Array30, CangJie3, CangJie5, CangJieBig, Cantonese Pinyin, Canton HK
+ibus-table-chinese: Jyutping, Easy Big, Erbi, Erbi QS, Quick 3, Quick 5, Quick Classic,
+ibus-table-chinese: Smart Cang Jie 6, Stroke5, Wu, Wubi-Heifeng86, Yong
+ibus-table-chinese:
+ibus-table-chinese: https://github.com/definite/ibus-table-chinese
+ibus-table-chinese:
diff --git a/misc/igal2/README b/misc/igal2/README
deleted file mode 100644
index dd2d0b0b83..0000000000
--- a/misc/igal2/README
+++ /dev/null
@@ -1,3 +0,0 @@
-igal2 is a quick and easy program for placing your images online with
-just one command-line. It generates a pretty good-looking set of
-W3-compliant static HTML slides even with its default settings.
diff --git a/misc/igal2/igal2.info b/misc/igal2/igal2.info
deleted file mode 100644
index a786183096..0000000000
--- a/misc/igal2/igal2.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="igal2"
-VERSION="2.3"
-HOMEPAGE="http://igal.trexler.at/"
-DOWNLOAD="https://github.com/solbu/igal2/archive/v2.3/igal-2.3.tar.gz"
-MD5SUM="f6aa6d329288f70419fe27d9c5bf91e3"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Petar Petrov"
-EMAIL="slackalaxy@gmail.com"
diff --git a/misc/jmri/doinst.sh b/misc/jmri/doinst.sh
index 50a085e059..85ab62cb4b 100644
--- a/misc/jmri/doinst.sh
+++ b/misc/jmri/doinst.sh
@@ -3,7 +3,3 @@ if [ ! -e var/log/jmri/messages.log ]; then
else
rm -f var/log/jmri/messages.log.new
fi
-
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
-fi
diff --git a/misc/jmri/jmri.SlackBuild b/misc/jmri/jmri.SlackBuild
index 5901a5dc99..6f35cda70d 100644
--- a/misc/jmri/jmri.SlackBuild
+++ b/misc/jmri/jmri.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for JMRI
# Copyright 2011 David Spencer, Baildon, West Yorkshire, U.K.
-# Copyright 2016-2020 Heiko Rosemann, Germany
+# Copyright 2016-2023 Heiko Rosemann, Germany
# All rights reserved.
#
@@ -27,8 +27,8 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=jmri
-VERSION=${VERSION:-4.22}
-REVISION=${REVISION:-R4c4384d74}
+VERSION=${VERSION:-5.6}
+REVISION=${REVISION:-R89a87446cb}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
@@ -73,13 +73,13 @@ find -L . \
mkdir -p $PKG/usr/bin
cp -a \
- DecoderPro PanelPro SoundPro JmriFaceless InstallTest \
+ DecoderPro InstallTest JmriFaceless PanelPro SoundPro \
$PKG/usr/bin
chmod 755 $PKG/usr/bin/*
mkdir -p $PKG/opt/jmri
cp -a \
- default.lcf help/ jmri.jar lib/ resources/ xml/ \
+ CreateJmriApps.sh default_lcf.xml help/ jmri.conf jmri.jar lib/ resources/ web/ xml/ \
$PKG/opt/jmri
# Let's not abuse writability in /opt
@@ -105,7 +105,7 @@ chmod 755 $PKG/etc/profile.d/*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- COPYING \
+ COPYING web/ \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/jmri/jmri.info b/misc/jmri/jmri.info
index e2fb872b9b..129361f14d 100644
--- a/misc/jmri/jmri.info
+++ b/misc/jmri/jmri.info
@@ -1,10 +1,10 @@
PRGNAM="jmri"
-VERSION="4.22"
+VERSION="5.6"
HOMEPAGE="http://jmri.org/"
-DOWNLOAD="https://github.com/JMRI/JMRI/releases/download/v4.22/JMRI.4.22+R4c4384d74.tgz"
-MD5SUM="63294509ca6a360b1fa6c2e602713d43"
+DOWNLOAD="https://github.com/JMRI/JMRI/releases/download/v5.6/JMRI.5.6+R89a87446cb.tgz"
+MD5SUM="e209cf559d063353e7f86ebe996a188d"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="jdk"
+REQUIRES="zulu-openjdk11"
MAINTAINER="Heiko Rosemann"
EMAIL="heiko.rosemann@web.de"
diff --git a/misc/kasumi/README b/misc/kasumi/README
index b8945fa474..9e712a0a9d 100644
--- a/misc/kasumi/README
+++ b/misc/kasumi/README
@@ -1,5 +1,6 @@
Simple dictionary utility for Anthy
-Kasumi is personal dictionary management tool for Anthy. Anthy is a Japanese
-input method to convert Hiragana text to Kana Kanji mixed text.
-Featuring add words, edit words, delete words, search words and so on.
+Kasumi is personal dictionary management tool for Anthy. Anthy is a
+Japanese input method to convert Hiragana text to Kana Kanji mixed
+text. Featuring add words, edit words, delete words, search words and
+so on.
diff --git a/misc/kasumi/kasumi.SlackBuild b/misc/kasumi/kasumi.SlackBuild
index b50e15b317..d34f56d1c6 100644
--- a/misc/kasumi/kasumi.SlackBuild
+++ b/misc/kasumi/kasumi.SlackBuild
@@ -61,6 +61,7 @@ find -L . \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS -std=c++14" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
diff --git a/misc/kasumi/kasumi.info b/misc/kasumi/kasumi.info
index 9c97228a53..6e943ded28 100644
--- a/misc/kasumi/kasumi.info
+++ b/misc/kasumi/kasumi.info
@@ -1,7 +1,7 @@
PRGNAM="kasumi"
VERSION="2.5"
HOMEPAGE="https://osdn.net/projects/kasumi/"
-DOWNLOAD="https://osdn.net/projects/kasumi/downloads/41436/kasumi-2.5.tar.gz"
+DOWNLOAD="http://distcache.FreeBSD.org/ports-distfiles/kasumi-2.5.tar.gz"
MD5SUM="f49d010cf1fa5672b4515502b961b8c8"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/kde_cdemu/kde_cdemu.SlackBuild b/misc/kde_cdemu/kde_cdemu.SlackBuild
index 419cca6cb2..f39cafebc8 100644
--- a/misc/kde_cdemu/kde_cdemu.SlackBuild
+++ b/misc/kde_cdemu/kde_cdemu.SlackBuild
@@ -9,14 +9,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=kde_cdemu
-VERSION=${VERSION:-0.5.0}
+VERSION=${VERSION:-0.8.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) export ARCH=i486 ;;
+ i?86) export ARCH=i586 ;;
arm*) export ARCH=arm ;;
*) export ARCH=$( uname -m ) ;;
esac
@@ -40,7 +40,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM
-tar xvf $CWD/99752-$PRGNAM-$VERSION.tar.bz2
+tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
cd $PRGNAM
chown -R root:root .
find -L . \
@@ -49,7 +49,7 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-cmake -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` .
+cmake -DCMAKE_INSTALL_PREFIX=`kf5-config --prefix` .
make
make install DESTDIR=$PKG
@@ -57,7 +57,7 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" \
| grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-install -m0644 -oroot ChangeLog $PKG/usr/doc/$PRGNAM-$VERSION
+install -m0644 -oroot LICENSE CHANGELOG $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/kde_cdemu/kde_cdemu.info b/misc/kde_cdemu/kde_cdemu.info
index 9afa962a52..608999385c 100644
--- a/misc/kde_cdemu/kde_cdemu.info
+++ b/misc/kde_cdemu/kde_cdemu.info
@@ -1,8 +1,8 @@
PRGNAM="kde_cdemu"
-VERSION="0.5.0"
-HOMEPAGE="https://www.kde-look.org/p/998461/"
-DOWNLOAD="https://distribute.kde.org/khotnewstuff/servicemenu/downloads/99752-kde_cdemu-0.5.0.tar.bz2"
-MD5SUM="c0e56401e2c2f2c4652915a44af128b8"
+VERSION="0.8.0"
+HOMEPAGE="https://store.kde.org/p/998461/"
+DOWNLOAD="https://downloads.sourceforge.net/project/kde-cdemu-manager/kde_cdemu-0.8.0.tar.bz2"
+MD5SUM="a88bb002728db8be594b10fb403f5b08"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="cdemu-daemon"
diff --git a/misc/kde_cdemu/slack-desc b/misc/kde_cdemu/slack-desc
index f67cd88eb5..1f3a5ce06f 100644
--- a/misc/kde_cdemu/slack-desc
+++ b/misc/kde_cdemu/slack-desc
@@ -16,4 +16,4 @@ kde_cdemu: Dolphin/Konqueror (which is what most people will want to use).
kde_cdemu: Images can be unmounted like any other media through Dolphin or
kde_cdemu: the Device Notifier plasmoid.
kde_cdemu:
-kde_cdemu: Homepage: https://www.kde-look.org/p/998461/
+kde_cdemu: Homepage: https://store.kde.org/p/998461/
diff --git a/misc/keychain/README b/misc/keychain/README
index fbf30f366e..2deea65914 100644
--- a/misc/keychain/README
+++ b/misc/keychain/README
@@ -1,7 +1,9 @@
Keychain is a manager for OpenSSH, ssh.com, Sun SSH and GnuPG agents.
It acts as a front-end to the agents, allowing you to easily have one
long running agent process per system, rather than per login session.
-This reduces the number of times you need to enter your passphrase from
-once per new login session to once every time your local machine is rebooted.
+This reduces the number of times you need to enter your passphrase
+from once per new login session to once every time your local machine
+is rebooted.
-This allows 'cron' jobs to use 'ssh' scripts in a friendly yet secure manner.
+This allows 'cron' jobs to use 'ssh' scripts in a friendly yet secure
+manner.
diff --git a/misc/klibc/klibc-2.0.3-kernel-uapi.patch b/misc/klibc/klibc-2.0.3-kernel-uapi.patch
deleted file mode 100644
index c70ec3db65..0000000000
--- a/misc/klibc/klibc-2.0.3-kernel-uapi.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-diff -Nuar klibc-2.0.3.orig/scripts/Kbuild.klibc klibc-2.0.3/scripts/Kbuild.klibc
---- klibc-2.0.3.orig/scripts/Kbuild.klibc 2013-12-03 10:53:46.000000000 -0800
-+++ klibc-2.0.3/scripts/Kbuild.klibc 2013-12-26 14:39:07.113906101 -0800
-@@ -77,7 +77,10 @@
- KLIBCCFLAGS :=
-
- # Defaults for arch to override
--KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/$(KLIBCARCH)/include
-+KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/$(KLIBCARCH)/include/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/$(KLIBCARCH)/include/generated/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/$(KLIBCARCH)/include/generated \
-+ -I$(KLIBCKERNELOBJ)/arch/$(KLIBCARCH)/include
-
- # Arch specific definitions for klibc
- include $(srctree)/$(KLIBCSRC)/arch/$(KLIBCARCHDIR)/MCONFIG
-@@ -116,6 +119,9 @@
--KLIBCCPPFLAGS += -I$(KLIBCKERNELSRC)/include \
-+KLIBCCPPFLAGS += -I$(KLIBCKERNELSRC)/include/uapi \
-+ -I$(KLIBCKERNELSRC)/include/generated/uapi \
-+ -I$(KLIBCKERNELSRC)/include/generated \
-+ -I$(KLIBCKERNELSRC)/include \
- $(if $(KBUILD_SRC),-I$(KLIBCKERNELOBJ)/include2 \
- -I$(KLIBCKERNELOBJ)/include -I$(srctree)/include) \
- $(KLIBCARCHINCFLAGS)
-
- # klibc definitions
-diff -Nuar klibc-2.0.3.orig/usr/klibc/arch/i386/MCONFIG klibc-2.0.3/usr/klibc/arch/i386/MCONFIG
---- klibc-2.0.3.orig/usr/klibc/arch/i386/MCONFIG 2013-12-03 10:53:46.000000000 -0800
-+++ klibc-2.0.3/usr/klibc/arch/i386/MCONFIG 2013-12-26 14:44:56.349161344 -0800
-@@ -34,3 +34,6 @@
-
- # Asm includes for i386 are in the merged x86 tree
--KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/x86/include
-+KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/x86/include/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/x86/include/generated/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/x86/include/generated \
-+ -I$(KLIBCKERNELOBJ)/arch/x86/include
-diff -Nuar klibc-2.0.3.orig/usr/klibc/arch/ppc/MCONFIG klibc-2.0.3/usr/klibc/arch/ppc/MCONFIG
---- klibc-2.0.3.orig/usr/klibc/arch/ppc/MCONFIG 2013-12-03 10:53:46.000000000 -0800
-+++ klibc-2.0.3/usr/klibc/arch/ppc/MCONFIG 2013-12-26 14:44:56.350161362 -0800
-@@ -24,6 +24,9 @@
-
- # The kernel so far has both asm-ppc* and asm-powerpc.
--KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/powerpc/include
-+KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/powerpc/include/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/powerpc/include/generated/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/powerpc/include/generated \
-+ -I$(KLIBCKERNELOBJ)/arch/powerpc/include
-
- # The asm include files live in asm-powerpc
- KLIBCASMARCH = powerpc
-diff -Nuar klibc-2.0.3.orig/usr/klibc/arch/ppc64/MCONFIG klibc-2.0.3/usr/klibc/arch/ppc64/MCONFIG
---- klibc-2.0.3.orig/usr/klibc/arch/ppc64/MCONFIG 2013-12-03 10:53:46.000000000 -0800
-+++ klibc-2.0.3/usr/klibc/arch/ppc64/MCONFIG 2013-12-26 14:44:56.350161362 -0800
-@@ -22,6 +22,9 @@
-
- # The kernel so far has both asm-ppc* and asm-powerpc.
--KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/powerpc/include
-+KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/powerpc/include/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/powerpc/include/generated/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/powerpc/include/generated \
-+ -I$(KLIBCKERNELOBJ)/arch/powerpc/include
-
- # The asm include files live in asm-powerpc
- KLIBCASMARCH = powerpc
-diff -Nuar klibc-2.0.3.orig/usr/klibc/arch/x86_64/MCONFIG klibc-2.0.3/usr/klibc/arch/x86_64/MCONFIG
---- klibc-2.0.3.orig/usr/klibc/arch/x86_64/MCONFIG 2013-12-03 10:53:46.000000000 -0800
-+++ klibc-2.0.3/usr/klibc/arch/x86_64/MCONFIG 2013-12-26 14:44:54.522128579 -0800
-@@ -37,3 +37,6 @@
-
- # Asm includes for x86_64 are in the merged x86 tree
--KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/x86/include
-+KLIBCARCHINCFLAGS = -I$(KLIBCKERNELOBJ)/arch/x86/include/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/x86/include/generated/uapi \
-+ -I$(KLIBCKERNELOBJ)/arch/x86/include/generated \
-+ -I$(KLIBCKERNELOBJ)/arch/x86/include
-
diff --git a/misc/klibc/klibc.SlackBuild b/misc/klibc/klibc.SlackBuild
index 7f2b0f5d74..b92e17c21f 100644
--- a/misc/klibc/klibc.SlackBuild
+++ b/misc/klibc/klibc.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for klibc
-# Copyright 2014 Matt Dinslage (daedra1980@gmail.com), Springfield, MO, USA
+# Copyright 2021 Matt Dinslage (daedra1980@gmail.com), Springfield, MO, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=klibc
-VERSION=${VERSION:-2.0.4}
+VERSION=${VERSION:-2.0.9}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -86,12 +86,14 @@ if [ $ARCH = "x86_64" ]; then
sed -i 's,$(prefix)/lib,$(prefix)/lib64,g' Makefile
fi
-# Patch for building with newer kernels.
-# Thanks to the gentoo team for the patch.
-patch -p1 < $CWD/klibc-2.0.3-kernel-uapi.patch
+mkdir -p uapi/include
+ln -sf /usr/include/{asm,asm-generic,linux} uapi/include/
-env -u ARCH KLIBCKERNELSRC=/lib/modules/$KERNEL/source HOSTCFLAGS="$SLKCFLAGS" make
-env -u ARCH KLIBCKERNELSRC=/lib/modules/$KERNEL/source make install INSTALLROOT=$PKG
+make KLIBCKERNELSRC=uapi
+make KLIBCKERNELSRC=uapi install INSTALLROOT=$PKG
+
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
diff --git a/misc/klibc/klibc.info b/misc/klibc/klibc.info
index c1129b738d..080461c329 100644
--- a/misc/klibc/klibc.info
+++ b/misc/klibc/klibc.info
@@ -1,10 +1,10 @@
PRGNAM="klibc"
-VERSION="2.0.4"
+VERSION="2.0.9"
HOMEPAGE="https://www.kernel.org"
-DOWNLOAD="UNSUPPORTED"
-MD5SUM=""
-DOWNLOAD_x86_64="https://www.kernel.org/pub/linux/libs/klibc/2.0/klibc-2.0.4.tar.xz"
-MD5SUM_x86_64="7417eeabb2e7954f58a34fba87646ddc"
+DOWNLOAD="https://www.kernel.org/pub/linux/libs/klibc/2.0/klibc-2.0.9.tar.xz"
+MD5SUM="7554a9759ae71e9ba3729991c8ae7f63"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="M.Dinslage"
EMAIL="daedra1980{at}gmail{dot}com"
diff --git a/misc/kronometer/README b/misc/kronometer/README
index 991e3f5b1c..549b9e77c8 100644
--- a/misc/kronometer/README
+++ b/misc/kronometer/README
@@ -1,4 +1,5 @@
-Kronometer is a stopwatch application built for the KDE Desktop Environment.
-It features the basic stopwatch actions (pause/resume/reset/laps), as well as
-the ability to save the times on a file and resume them later.
-Kronometer is part of the KDE Extragear collection, within the Utils sub-module.
+Kronometer is a stopwatch application built for the KDE
+Desktop Environment. It features the basic stopwatch actions
+(pause/resume/reset/laps), as well as the ability to save the times on
+a file and resume them later. Kronometer is part of the KDE Extragear
+collection, within the Utils sub-module.
diff --git a/misc/kronometer/kronometer.SlackBuild b/misc/kronometer/kronometer.SlackBuild
index 8e27c564a6..8cf3af76e2 100644
--- a/misc/kronometer/kronometer.SlackBuild
+++ b/misc/kronometer/kronometer.SlackBuild
@@ -25,14 +25,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=kronometer
-VERSION=${VERSION:-1.6.0}
+VERSION=${VERSION:-2.2.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -84,6 +84,7 @@ cd build
cmake \
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DKDE_INSTALL_MANDIR=/usr/man \
-DCMAKE_INSTALL_PREFIX=/usr ..
make
make install DESTDIR=$PKG
@@ -92,10 +93,11 @@ cd ..
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-# No man pages with kronometer
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING README TODO $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING README CHANGELOG $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/kronometer/kronometer.info b/misc/kronometer/kronometer.info
index 061a254c37..840ea58cd7 100644
--- a/misc/kronometer/kronometer.info
+++ b/misc/kronometer/kronometer.info
@@ -1,8 +1,8 @@
PRGNAM="kronometer"
-VERSION="1.6.0"
+VERSION="2.2.3"
HOMEPAGE="https://userbase.kde.org/Kronometer"
-DOWNLOAD="https://download.kde.org/stable/kronometer/1.6.0/src/kronometer-1.6.0.tar.xz"
-MD5SUM="8e1a3ec57862c02d74e026e5825103bb"
+DOWNLOAD="https://download.kde.org/stable/kronometer/2.2.3/src/kronometer-2.2.3.tar.xz"
+MD5SUM="9d597e9fb8efe6802d6f85db22f5b753"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/lastpass-cli/lastpass-cli.SlackBuild b/misc/lastpass-cli/lastpass-cli.SlackBuild
index 2d730ca558..519e89a8c3 100644
--- a/misc/lastpass-cli/lastpass-cli.SlackBuild
+++ b/misc/lastpass-cli/lastpass-cli.SlackBuild
@@ -79,6 +79,8 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+export CFLAGS+="$SLKCFLAGS -fcommon"
+
make
make install DESTDIR=$PKG
make install-doc MANDIR=$PKG/usr/man
diff --git a/misc/lbdb/lbdb.SlackBuild b/misc/lbdb/lbdb.SlackBuild
index e317e97fd9..42d780f415 100644
--- a/misc/lbdb/lbdb.SlackBuild
+++ b/misc/lbdb/lbdb.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/libime/README b/misc/libime/README
new file mode 100644
index 0000000000..7432ef2d94
--- /dev/null
+++ b/misc/libime/README
@@ -0,0 +1,2 @@
+libime is a library to support generic input method implementation.
+
diff --git a/misc/libime/libime.SlackBuild b/misc/libime/libime.SlackBuild
new file mode 100644
index 0000000000..1fe2bdfecd
--- /dev/null
+++ b/misc/libime/libime.SlackBuild
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# Copyright 2022-2023 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=libime
+VERSION=${VERSION:-1.1.6}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-${VERSION}_dict.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+# cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/libime/libime.info b/misc/libime/libime.info
new file mode 100644
index 0000000000..5a666c1475
--- /dev/null
+++ b/misc/libime/libime.info
@@ -0,0 +1,10 @@
+PRGNAM="libime"
+VERSION="1.1.6"
+HOMEPAGE="https://github.com/fcitx/libime"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/libime/libime-1.1.6_dict.tar.xz"
+MD5SUM="761d3d76e6a39610de98e5e374aef4f5"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="fcitx5"
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/fribid/slack-desc b/misc/libime/slack-desc
index 16067a8a47..3ae5132f91 100644
--- a/misc/fribid/slack-desc
+++ b/misc/libime/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-fribid: fribid (program for handling e-legitimation with BankID)
-fribid:
-fribid: FriBID is a free program for handling e-legitimation with BankID.
-fribid: With free means that the source code is available for everyone to
-fribid: study, copy and/or improve.
-fribid: FriBID is cross platform and works on platforms not supported
-fribid: by the official client.
-fribid:
-fribid:
-fribid:
-fribid:
+libime: libime (A library to support generic input method implementation)
+libime:
+libime: libime is a library to support generic input method implementation.
+libime: It is required by a number of input methods used by fcitx5.
+libime:
+libime:
+libime:
+libime:
+libime:
+libime: Homepage: https://github.com/fcitx/libime
+libime:
diff --git a/misc/libydpdict/libydpdict.SlackBuild b/misc/libydpdict/libydpdict.SlackBuild
index 6fa6cb3319..9ae454ab7f 100644
--- a/misc/libydpdict/libydpdict.SlackBuild
+++ b/misc/libydpdict/libydpdict.SlackBuild
@@ -9,13 +9,13 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=libydpdict
VERSION=${VERSION:-1.0.4}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -33,8 +33,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -86,6 +86,8 @@ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING NEWS README TODO $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/libydpdict/libydpdict.info b/misc/libydpdict/libydpdict.info
index 03abd14301..e2fa1a7022 100644
--- a/misc/libydpdict/libydpdict.info
+++ b/misc/libydpdict/libydpdict.info
@@ -1,7 +1,7 @@
PRGNAM="libydpdict"
VERSION="1.0.4"
-HOMEPAGE="http://toxygen.net/ydpdict/"
-DOWNLOAD="http://toxygen.net/ydpdict/libydpdict-1.0.4.tar.gz"
+HOMEPAGE="https://github.com/wojtekka/ydpdict"
+DOWNLOAD="https://slackware.uk/sbosrcarch/by-md5/3/8/3884d6298abbc22b4ed9c86ec24f439f/libydpdict-1.0.4.tar.gz"
MD5SUM="3884d6298abbc22b4ed9c86ec24f439f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/linux_logo/linux_logo.SlackBuild b/misc/linux_logo/linux_logo.SlackBuild
index a0b0e8597a..ec2f187832 100644
--- a/misc/linux_logo/linux_logo.SlackBuild
+++ b/misc/linux_logo/linux_logo.SlackBuild
@@ -33,7 +33,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -51,8 +51,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/ltunify/README b/misc/ltunify/README
index ee994c5a34..6eb592fc0b 100644
--- a/misc/ltunify/README
+++ b/misc/ltunify/README
@@ -1,13 +1,13 @@
-Logitech's Unifying technology is awesome. Plug the USB receiver in the
-computer, power on your keyboard or mouse and it is ready for use! Well,
-the devices themselves do work, but software to attach new devices to a
-single receiver (or detach bound devices) is only available for Mac OS X
-and Windows.
+Logitech's Unifying technology is awesome. Plug the USB receiver in
+the computer, power on your keyboard or mouse and it is ready for
+use! Well, the devices themselves do work, but software to attach
+new devices to a single receiver (or detach bound devices) is only
+available for Mac OS X and Windows.
-ltunify is a program resulting from the gathered knowledge on the Logitech
-HID++ protocol. It allows you to pair additional devices like keyboards and
-mice to your Unifying receiver, unpair existing devices and list information
-about connected devices.
+ltunify is a program resulting from the gathered knowledge on the
+Logitech HID++ protocol. It allows you to pair additional devices like
+keyboards and mice to your Unifying receiver, unpair existing devices
+and list information about connected devices.
*** IMPORTANT *** - READ THE DOCS in /usr/doc/ltunify-0.2
diff --git a/misc/ltunify/ltunify.SlackBuild b/misc/ltunify/ltunify.SlackBuild
index 531e83a8bb..ea95af94ae 100644
--- a/misc/ltunify/ltunify.SlackBuild
+++ b/misc/ltunify/ltunify.SlackBuild
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ltunify
-VERSION=${VERSION:-0.2}
+VERSION=${VERSION:-0.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/misc/ltunify/ltunify.info b/misc/ltunify/ltunify.info
index 00d13a1f35..85020dc08d 100644
--- a/misc/ltunify/ltunify.info
+++ b/misc/ltunify/ltunify.info
@@ -1,8 +1,8 @@
PRGNAM="ltunify"
-VERSION="0.2"
+VERSION="0.3"
HOMEPAGE="https://lekensteyn.nl/logitech-unifying.html"
-DOWNLOAD="https://git.lekensteyn.nl/ltunify/snapshot/ltunify-0.2.tar.gz"
-MD5SUM="f24cc422ae246bb139c1b53be09e8b82"
+DOWNLOAD="https://git.lekensteyn.nl/ltunify/snapshot/ltunify-0.3.tar.gz"
+MD5SUM="28544d387d000a728282f8647feb90d6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/mdic/README b/misc/mdic/README
index b08aece12d..a7eab07655 100644
--- a/misc/mdic/README
+++ b/misc/mdic/README
@@ -1,4 +1,4 @@
MDic is a free/open source multilingual dictionary for GNU/Linux.
-You have to just select (or highlight) a word to view its meaning on the
-screen. MDic is able to pronounce the words by default if espeak or
-festival is installed.
+You have to just select (or highlight) a word to view its meaning on
+the screen. MDic is able to pronounce the words by default if espeak
+or festival is installed.
diff --git a/misc/mdic/mdic.SlackBuild b/misc/mdic/mdic.SlackBuild
index 520d0fe9d0..9ee66536e8 100644
--- a/misc/mdic/mdic.SlackBuild
+++ b/misc/mdic/mdic.SlackBuild
@@ -12,7 +12,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -32,8 +32,8 @@ fi
OUTPUT=${OUTPUT:-/tmp}
PKG=$TMP/package-$PRGNAM
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/mdic/mdic.info b/misc/mdic/mdic.info
index 16c308990b..41137807df 100644
--- a/misc/mdic/mdic.info
+++ b/misc/mdic/mdic.info
@@ -5,6 +5,6 @@ DOWNLOAD="http://downloads.sourceforge.net/project/mdic/MDic/0.8.1/mdic-0.8.1.ta
MD5SUM="d8e0397b3480446fbd3d078ba24548d1"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="qt4"
MAINTAINER="ariarat"
EMAIL="ariarat@gmail.com"
diff --git a/misc/megatunix/README b/misc/megatunix/README
index 52015f6152..48f1d6a785 100644
--- a/misc/megatunix/README
+++ b/misc/megatunix/README
@@ -1,7 +1,8 @@
-MegaTunix is the only native tuning software that supports the majority of
-megasquirt firmwares. It has been redesigned in such a way as to be extensible
-to support new firmware variants with little to no new code needing to be
-written. The new design permits the gui tabs that relate to MegaSquirt
-variables to be redesigned using the Glade GUI designer for windows or Glade
-gui designer for Unix to change or alter the gui look/feel to accomodate new
-controls on more advanced firmwares.
+MegaTunix is the only native tuning software that supports the
+majority of megasquirt firmwares. It has been redesigned in such a way
+as to be extensible to support new firmware variants with little to no
+new code needing to be written. The new design permits the gui tabs
+that relate to MegaSquirt variables to be redesigned using the Glade
+GUI designer for windows or Glade gui designer for Unix to change or
+alter the gui look/feel to accomodate new controls on more advanced
+firmwares.
diff --git a/misc/megatunix/megatunix.SlackBuild b/misc/megatunix/megatunix.SlackBuild
index a42d7383d4..bcd0110493 100644
--- a/misc/megatunix/megatunix.SlackBuild
+++ b/misc/megatunix/megatunix.SlackBuild
@@ -82,7 +82,7 @@ autoreconf -vif
# include glib.h instead of individual headers.
patch -p1 -i $CWD/glib-single-include.patch
-CC="gcc -fgnu89-inline" \
+CC="gcc -fgnu89-inline -w -Wl,--allow-multiple-definition" \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
diff --git a/misc/modprobed-db/README b/misc/modprobed-db/README
new file mode 100644
index 0000000000..bbce42c3a8
--- /dev/null
+++ b/misc/modprobed-db/README
@@ -0,0 +1,16 @@
+Modprobed-db is a useful utility for users wishing to build a minimal
+kernel via a make localmodconfig. In a nutshell, this make target
+creates a config based on the current config and a list of modules
+you define (modprobed-db keeps for you). It then disables any module
+option that is not needed thus not building hundreds/potentially
+thousands of extraneous modules. This results in a system-specific,
+streamlined kernel package and footprint as well as reduced compilation
+times.
+
+Modprobed-db simply logs every module ever probed on the target system
+to a text-based database which can be read directly by "make
+localmodconfig" as described above.
+
+To automatically run modprobed-db every hour add the following to your
+user's crontab (run "crontab -e"):
+0 */1 * * * /usr/bin/modprobed-db store &> /dev/null
diff --git a/misc/floating-IPS/floating-IPS.SlackBuild b/misc/modprobed-db/modprobed-db.SlackBuild
index eab018ca6e..89d9aab860 100644
--- a/misc/floating-IPS/floating-IPS.SlackBuild
+++ b/misc/modprobed-db/modprobed-db.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for floating IPS
+# Slackware build script for modprobed-db
-# Copyright 2016, 2018 Hunter Sezen California, USA
+# Copyright 2023 Erich Ritz, Jenks, Oklahoma, USA
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,25 +24,21 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=floating-IPS
-ZIPNAM=${PRGNAM%%-*}
-VERSION=${VERSION:-1.31}
-BUILD=${BUILD:-2}
+PRGNAM=modprobed-db
+VERSION=${VERSION:-2.46}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
+case "$( uname -m )" in
i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
+ *) ARCH=$( uname -m ) ;;
+esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
@@ -51,27 +47,28 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-set -eu
+set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-unzip $CWD/$ZIPNAM.zip -d $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
-unzip src.zip -d src
-unzip boring.zip
chown -R root:root .
find -L . \
- \( -type f -exec chmod 644 {} \; \) -o \
- \( -type d -exec chmod 755 {} \; \)
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-make -C src
-
-install -Dm0755 src/flips $PKG/usr/bin/flips
+make
+make install DESTDIR=$PKG \
+ DOCDIR=/usr/doc/$PRGNAM-$VERSION \
+ MANDIR=/usr/man/man8
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a *.txt $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README.md MIT $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/modprobed-db/modprobed-db.info b/misc/modprobed-db/modprobed-db.info
new file mode 100644
index 0000000000..e555ce88e4
--- /dev/null
+++ b/misc/modprobed-db/modprobed-db.info
@@ -0,0 +1,10 @@
+PRGNAM="modprobed-db"
+VERSION="2.46"
+HOMEPAGE="https://github.com/graysky2/modprobed-db"
+DOWNLOAD="https://github.com/graysky2/modprobed-db/archive/v2.46/modprobed-db-2.46.tar.gz"
+MD5SUM="09952534c647205d87de18c7dfa85aca"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Erich Ritz"
+EMAIL="erich.public@protonmail.com"
diff --git a/misc/modprobed-db/slack-desc b/misc/modprobed-db/slack-desc
new file mode 100644
index 0000000000..8210a3793a
--- /dev/null
+++ b/misc/modprobed-db/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+modprobed-db: modprobed-db (log kernel modules used by system)
+modprobed-db:
+modprobed-db: Modprobed-db is a useful utility for users wishing to build a minimal
+modprobed-db: kernel via a make localmodconfig. In a nutshell, this make target
+modprobed-db: creates a config based on the current config and a list of modules
+modprobed-db: you define (modprobed-db keeps for you). Modprobed-db simply logs
+modprobed-db: every module ever probed on the target system to a text-based
+modprobed-db: database which can be read directly by "make localmodconfig".
+modprobed-db:
+modprobed-db: Homepage: https://github.com/graysky2/modprobed-db
+modprobed-db:
diff --git a/misc/moedict-desktop.app/README b/misc/moedict-desktop.app/README
index 11361e741c..d4f390591f 100644
--- a/misc/moedict-desktop.app/README
+++ b/misc/moedict-desktop.app/README
@@ -1,9 +1,11 @@
-Moedict-desktop is an offline version of moedict, an traditional Chinese
-dictionary originally published by Ministry of Education, R.O.C.
+Moedict-desktop is an offline version of moedict, an traditional
+Chinese dictionary originally published by Ministry of Education,
+R.O.C.
Moedict is maintained by developers from g0v.tw community in Taiwan.
-Moedict-desktop includes translation functionality from traditional Chinese
-vocabularies into English, German, and French langues.
+Moedict-desktop includes translation functionality from traditional
+Chinese vocabularies into English, German, and French langues.
-This package directly installs pre-compiled binaries into /opt directory.
-You can start the program by executing the script "Moedict-Desktop".
+This package directly installs pre-compiled binaries into the
+/opt directory. You can start the program by executing the script
+"Moedict-Desktop".
diff --git a/misc/moedict-desktop.app/moedict-desktop.app.SlackBuild b/misc/moedict-desktop.app/moedict-desktop.app.SlackBuild
index b2a02da575..7131f5aabb 100644
--- a/misc/moedict-desktop.app/moedict-desktop.app.SlackBuild
+++ b/misc/moedict-desktop.app/moedict-desktop.app.SlackBuild
@@ -50,18 +50,15 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
+if [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
+ echo "$ARCH is unsupported."
+ exit 1
fi
set -e
diff --git a/misc/moreutils/README b/misc/moreutils/README
index 3a234765a3..8bfc060a49 100644
--- a/misc/moreutils/README
+++ b/misc/moreutils/README
@@ -1,10 +1,13 @@
moreutils is a growing collection of the unix tools that nobody
thought to write long ago when unix was young.
-perl-IPC-Run is an optional dependency, if it's missing chronic will
+perl-IPC-Run is an optional dependency. If it's missing, chronic will
not be installed.
-This package conflicts with system/parallel so moreutils version of
-parallel is not installed by default. To install it:
+The 'parallel' command in moreutils conflicts with Slackware's
+parallel package, so the moreutils version of parallel is not
+installed by default. To install it:
PARALLEL=yes ./moreutils.SlackBuild
+
+Note that this will break the sbopkg 'sqg' command!
diff --git a/misc/moreutils/moreutils.SlackBuild b/misc/moreutils/moreutils.SlackBuild
index 9327453ae7..65045b8b6b 100644
--- a/misc/moreutils/moreutils.SlackBuild
+++ b/misc/moreutils/moreutils.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=moreutils
-VERSION=${VERSION:-0.65}
+VERSION=${VERSION:-0.68}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +38,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -52,16 +49,12 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -87,7 +80,7 @@ mkdir $PKG/usr/man
mv $PKG/usr/share/man/* $PKG/usr/man
rm -rf $PKG/usr/share/ $PKG/usr/man/man1/ts.1
-if [ "${PARALLEL:-yes}" = "no" ]; then
+if [ "${PARALLEL:-no}" = "no" ]; then
rm -f $PKG/usr/bin/parallel $PKG/usr/man/man1/parallel.1
fi
@@ -101,6 +94,9 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/moreutils/moreutils.info b/misc/moreutils/moreutils.info
index dfd3966298..b4d9f4cab0 100644
--- a/misc/moreutils/moreutils.info
+++ b/misc/moreutils/moreutils.info
@@ -1,8 +1,8 @@
PRGNAM="moreutils"
-VERSION="0.65"
+VERSION="0.68"
HOMEPAGE="https://joeyh.name/code/moreutils"
-DOWNLOAD="http://distfiles.gentoo.org/distfiles/moreutils-0.65.tar.gz"
-MD5SUM="a412e3d175778e0a638f7471f63df1c7"
+DOWNLOAD="http://distfiles.macports.org/moreutils/moreutils-0.68.tar.gz"
+MD5SUM="4deeedce5ad80bd27c80c704539f012e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/mosquitto/README b/misc/mosquitto/README
index 379c1ea333..5f700971eb 100644
--- a/misc/mosquitto/README
+++ b/misc/mosquitto/README
@@ -1,9 +1,9 @@
-Eclipse Mosquitto (TM) is an open source (EPL/EDL licensed) message broker that
-implements the MQTT protocol versions 3.1 and 3.1.1. MQTT provides a
-lightweight method of carrying out messaging using a publish/subscribe model.
-This makes it suitable for "Internet of Things" messaging such as with
-low power sensors or mobile devices such as phones, embedded computers or
-microcontrollers like the Arduino.
+Eclipse Mosquitto (TM) is an open source (EPL/EDL licensed) message
+broker that implements the MQTT protocol versions 3.1 and 3.1.1. MQTT
+provides a lightweight method of carrying out messaging using a
+publish/subscribe model. This makes it suitable for "Internet of
+Things" messaging such as with low power sensors or mobile devices
+such as phones, embedded computers or microcontrollers like the
+Arduino.
Mosquitto is an iot.eclipse.org project.
-
diff --git a/misc/mosquitto/mosquitto.SlackBuild b/misc/mosquitto/mosquitto.SlackBuild
index 504c29c521..93d7df9a7e 100644
--- a/misc/mosquitto/mosquitto.SlackBuild
+++ b/misc/mosquitto/mosquitto.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for mosquitto
-# Copyright 2011-2021 Christoph Willing, Brisbane Australia
+# Copyright 2011-2023 Christoph Willing, Brisbane Australia
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=mosquitto
-VERSION=${VERSION:-2.0.11}
+VERSION=${VERSION:-2.0.18}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +38,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/mosquitto/mosquitto.info b/misc/mosquitto/mosquitto.info
index 462f81e5df..e64261628f 100644
--- a/misc/mosquitto/mosquitto.info
+++ b/misc/mosquitto/mosquitto.info
@@ -1,10 +1,11 @@
PRGNAM="mosquitto"
-VERSION="2.0.11"
+VERSION="2.0.18"
HOMEPAGE="https://mosquitto.org/"
-DOWNLOAD="https://mosquitto.org/files/source/mosquitto-2.0.11.tar.gz"
-MD5SUM="638d801e6aac611b41de76d030951612"
+DOWNLOAD="https://mosquitto.org/files/source/mosquitto-2.0.18.tar.gz"
+MD5SUM="7fe95d0bef1aacd291d21d7752fbd21b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Christoph Willing"
EMAIL="chris.willing@linux.com"
+
diff --git a/misc/myclippings/README b/misc/myclippings/README
index 6c0df41278..51f70c178b 100644
--- a/misc/myclippings/README
+++ b/misc/myclippings/README
@@ -1,10 +1,10 @@
Perl parser for the Kindle's 3 and 4 "My Clippings.txt" file
-The myclippings script is based on parse_kindle_clippings script and parses
-Kindle's "My Clippings.txt" file for highlights, notes, and bookmarks,
-groups them by book/title, and stores them in the separate files or in a
-single file.
+The myclippings script is based on parse_kindle_clippings script and
+parses Kindle's "My Clippings.txt" file for highlights, notes, and
+bookmarks, groups them by book/title, and stores them in the separate
+files or in a single file.
-Kindle's "My Clippings.txt" file is a mess. The myclippings script helps to
-sort clippings in order to process them in the editor or to store sorted and
-edited clippings back in "My Clippings.txt" file.
+Kindle's "My Clippings.txt" file is a mess. The myclippings script
+helps to sort clippings in order to process them in the editor or to
+store sorted and edited clippings back in "My Clippings.txt" file.
diff --git a/misc/nfoview/nfoview.SlackBuild b/misc/nfoview/nfoview.SlackBuild
index 4033680ef5..0c524250bc 100644
--- a/misc/nfoview/nfoview.SlackBuild
+++ b/misc/nfoview/nfoview.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/no-more-secrets/no-more-secrets.SlackBuild b/misc/no-more-secrets/no-more-secrets.SlackBuild
index e9c87157fe..737839ec19 100644
--- a/misc/no-more-secrets/no-more-secrets.SlackBuild
+++ b/misc/no-more-secrets/no-more-secrets.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for no-more-secrets
-# Copyright 2016-2017 Dimitris Zlatanidis Orestiada, Greece
+# Copyright 2016-2022 Dimitris Zlatanidis Orestiada, Greece
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=no-more-secrets
-VERSION=${VERSION:-0.3.3}
+VERSION=${VERSION:-1.0.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/misc/no-more-secrets/no-more-secrets.info b/misc/no-more-secrets/no-more-secrets.info
index 94f197a0f5..2290beb687 100644
--- a/misc/no-more-secrets/no-more-secrets.info
+++ b/misc/no-more-secrets/no-more-secrets.info
@@ -1,8 +1,8 @@
PRGNAM="no-more-secrets"
-VERSION="0.3.3"
+VERSION="1.0.1"
HOMEPAGE="https://github.com/bartobri/no-more-secrets"
-DOWNLOAD="https://github.com/bartobri/no-more-secrets/archive/v0.3.3/no-more-secrets-0.3.3.tar.gz"
-MD5SUM="b48aed202a255659da32aea5e78492ad"
+DOWNLOAD="https://github.com/bartobri/no-more-secrets/archive/v1.0.1/no-more-secrets-1.0.1.tar.gz"
+MD5SUM="2990ab370a2c361a1b41960dfa439356"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/nordpass/README b/misc/nordpass/README
new file mode 100644
index 0000000000..1d43286e2f
--- /dev/null
+++ b/misc/nordpass/README
@@ -0,0 +1,9 @@
+NordPass Password Manager.
+
+Organize online life with NordPass — a secure solution for passwords,
+passkeys, credit cards, and more.
+
+
+------------------------------------------------------------------------
+This SlackBuild downloads and installs the official Snap under
+'/opt'.
diff --git a/misc/nordpass/doinst.sh b/misc/nordpass/doinst.sh
new file mode 100644
index 0000000000..5fb28930db
--- /dev/null
+++ b/misc/nordpass/doinst.sh
@@ -0,0 +1,3 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
diff --git a/misc/nordpass/nordpass.SlackBuild b/misc/nordpass/nordpass.SlackBuild
new file mode 100644
index 0000000000..531f2015f9
--- /dev/null
+++ b/misc/nordpass/nordpass.SlackBuild
@@ -0,0 +1,93 @@
+#!/bin/bash
+
+# Slackware build script for NordPass
+
+# Copyright 2023 Slackjeff <slackjeff@riseup.net>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+#########################################################################
+# ChangeLog
+#
+# IMPORTANT: update this if you change this script!)
+#########################################################################
+
+cd "$(dirname "$0")" ; CWD=$(pwd)
+
+PRGNAM=nordpass
+VERSION=${VERSION:-5.3.13}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+SNAPID='00CQ2MvSr0Ex7zwdGhCYTa0ZLMw3H6hf'
+SNAPREV='162'
+
+ARCH="${ARCH:-$(uname -m)}"
+if [ "$ARCH" != "x86_64" ]; then
+ echo "$ARCH is not supported for $PRGNAM-$VERSION."
+ exit 1;
+fi
+
+if [ -n "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP="${TMP:-/tmp/SBo}"
+PKG="$TMP/package-$PRGNAM"
+OUTPUT="${OUTPUT:-/tmp}"
+
+SNAPNAM="${SNAPID}_${SNAPREV}.snap"
+
+set -e
+
+rm -rf "$PKG"
+mkdir -p "$TMP" "$PKG" "$OUTPUT"
+mkdir -p "$PKG/install"
+mkdir -p "$PKG/usr/doc/$PRGNAM-$VERSION"
+mkdir -p "$PKG/usr/share/$PRGNAM-$VERSION"
+mkdir -p "$PKG/usr/share/applications"
+mkdir -p "$PKG/usr/share/pixmaps"
+mkdir -p "$PKG/usr/bin"
+mkdir -p "$PKG/opt"
+cd $PKG/opt
+install -m 755 $CWD/$SNAPNAM .
+unsquashfs -q -f -d "$PKG/opt/$PRGNAM" "$SNAPNAM"
+rm "$SNAPNAM"
+# Fix Perms
+chown -R root:root .
+find . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
+
+ln -s "/opt/$PRGNAM/$PRGNAM" "$PKG/usr/bin/$PRGNAM"
+ln -s "/opt/$PRGNAM/meta/gui/icon.png" "$PKG/usr/share/pixmaps/$PRGNAM.png"
+
+cat $CWD/$PRGNAM.SlackBuild > "$PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild"
+cat $CWD/README > "$PKG/usr/doc/$PRGNAM-$VERSION/README"
+cat $CWD/slack-desc > "$PKG/install/slack-desc"
+cat $CWD/doinst.sh > "$PKG/install/doinst.sh"
+cat $CWD/$PRGNAM.desktop > $PKG/usr/share/applications/$PRGNAM.desktop
+
+cd "$PKG"
+
+# Strip
+find . -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+/sbin/makepkg -l y -c n "$OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
diff --git a/misc/nordpass/nordpass.desktop b/misc/nordpass/nordpass.desktop
new file mode 100644
index 0000000000..6ffa0843ce
--- /dev/null
+++ b/misc/nordpass/nordpass.desktop
@@ -0,0 +1,14 @@
+[Desktop Entry]
+Name=NordPass
+Exec=nordpass %U
+Terminal=false
+Type=Application
+Icon=/opt/nordpass/meta/gui/icon.png
+StartupWMClass=NordPass
+X-GNOME-Autostart-enabled=true
+X-GNOME-Autostart-Delay=10
+X-KDE-autostart-after=panel
+X-MATE-Autostart-Delay=10
+Comment=NordPass is your freedom from password stress. Generate and securely store strong passwords and autofill them with a single click.
+MimeType=x-scheme-handler/nordpass;
+Categories=Utility;
diff --git a/misc/nordpass/nordpass.info b/misc/nordpass/nordpass.info
new file mode 100644
index 0000000000..52c3bb361d
--- /dev/null
+++ b/misc/nordpass/nordpass.info
@@ -0,0 +1,10 @@
+PRGNAM="nordpass"
+VERSION="5.3.13"
+HOMEPAGE="https://nordpass.com/"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="https://api.snapcraft.io/api/v1/snaps/download/00CQ2MvSr0Ex7zwdGhCYTa0ZLMw3H6hf_162.snap"
+MD5SUM_x86_64="e9ac1efafe6624a7abb2ddca406c3be5"
+REQUIRES=""
+MAINTAINER="slackjeff"
+EMAIL="slackjeff@riseup.net"
diff --git a/misc/nordpass/slack-desc b/misc/nordpass/slack-desc
new file mode 100644
index 0000000000..554afe0111
--- /dev/null
+++ b/misc/nordpass/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+nordpass: nordpass (Secure and intuitive password manager)
+nordpass:
+nordpass: Organize online life with NordPass - a secure solution for passwords
+nordpass: passkeys, credit cards, and more.
+nordpass:
+nordpass: Generate strong passwords, Securely share passwords with co-workers.
+nordpass: Find out if your data has been breached.
+nordpass:
+nordpass:
+nordpass: https://nordpass.com
+nordpass:
diff --git a/misc/nvclock/README b/misc/nvclock/README
deleted file mode 100644
index 81925a2196..0000000000
--- a/misc/nvclock/README
+++ /dev/null
@@ -1,8 +0,0 @@
-NVClock is a small utility that allows users to overclock NVIDIA based video
-cards running on the Linux platform. The original code used in building this
-application was borrowed from the nvcs application. That code has been
-extensively reworked in order to make the utility much more user friendly and
-to make it play nice with current distros and drivers.
-
-Overclocking can be dangerous and can cause system instability and/or damaged
-hardware. USE AT YOUR OWN RISK.
diff --git a/misc/nvclock/nvclock.SlackBuild b/misc/nvclock/nvclock.SlackBuild
deleted file mode 100644
index aab3ad1272..0000000000
--- a/misc/nvclock/nvclock.SlackBuild
+++ /dev/null
@@ -1,105 +0,0 @@
-#!/bin/bash
-
-# Slackware build script for nvclock
-
-# Written by M.Dinslage contact: daedra1980@gmail.com
-
-# Modified by Robby Workman for with some packaging and build fixes
-# If the use of SLKCFLAGS causes any problems, please let me know
-# ASAP so that I can remove them...
-
-cd $(dirname $0) ; CWD=$(pwd)
-
-PRGNAM=nvclock
-VERSION=${VERSION:-0.8b4}
-BUILD=${BUILD:-2}
-TAG=${TAG:-_SBo}
-PKGTYPE=${PKGTYPE:-tgz}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -eu
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf ${PRGNAM}$VERSION
-tar xvf $CWD/${PRGNAM}$VERSION.tar.gz
-cd ${PRGNAM}$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-# Fixup DESTDIR usage correctly
-patch -p1 < $CWD/patches/nvclock-fix_DESTDIR.patch
-# Fix underlinking.
-patch -p1 < $CWD/patches/nvclock-0.8b4-linkfix.patch
-# Fixup use of SLKCFLAGS
-# If this patch causes problems, then use the other one...
-patch -p1 < $CWD/patches/nvclock-use_ALL_CFLAGS.patch
-#patch -p1 < $CWD/patches/nvclock-use_most_CFLAGS.patch
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --mandir=/usr/man \
- --docdir=/usr/doc/$PRGNAM-$VERSION \
- --disable-qt \
- --build=$ARCH-slackware-linux
-
-# Will not build in parallel.
-make -j1
-make -j1 install DESTDIR=$PKG
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-gzip -9 $PKG/usr/man/man?/*
-
-# Add a missed COPYING file and the build script to docs
-cp -a COPYING $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/nvclock/nvclock.info b/misc/nvclock/nvclock.info
deleted file mode 100644
index b334ca26db..0000000000
--- a/misc/nvclock/nvclock.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="nvclock"
-VERSION="0.8b4"
-HOMEPAGE="http://www.linuxhardware.org/nvclock"
-DOWNLOAD="http://www.linuxhardware.org/nvclock/nvclock0.8b4.tar.gz"
-MD5SUM="23f1b3ebf40f35d76d5fdac50f66ab11"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="M.Dinslage"
-EMAIL="daedra1980@gmail.com"
diff --git a/misc/nvclock/patches/nvclock-0.8b4-linkfix.patch b/misc/nvclock/patches/nvclock-0.8b4-linkfix.patch
deleted file mode 100644
index 0029d1c74e..0000000000
--- a/misc/nvclock/patches/nvclock-0.8b4-linkfix.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -upNr nvclock0.8b4.orign/src/gtk/Makefile.in nvclock0.8b4/src/gtk/Makefile.in
---- nvclock0.8b4.orign/src/gtk/Makefile.in 2008-05-11 12:25:46.000000000 +0200
-+++ nvclock0.8b4/src/gtk/Makefile.in 2010-02-13 19:56:24.204078277 +0100
-@@ -20,12 +20,12 @@ endif
- ifeq ($(HAVE_NVCONTROL), yes)
- DEPS=$(libbackend) $(libnvcontrol)
- INCLUDES=@X11_CFLAGS@ -I./backend -I./nvcontrol -I.. -I../..
-- LIBS=@GTK_LIBS@ -L../backend -lbackend -L../nvcontrol -lnvcontrol
-+ LIBS=@GTK_LIBS@ -L../backend -lbackend -L../nvcontrol -lnvcontrol -lX11 -lXext -ldl
- OBJECTS=banner.o gl.o hw.o main.o settings.o
- else
- DEPS=$(libbackend)
- INCLUDES=-I./backend -I./nvcontrol -I.. -I../..
-- LIBS=@GTK_LIBS@ -L../backend -lbackend
-+ LIBS=@GTK_LIBS@ -L../backend -lbackend -lX11 -lXext -ldl
- OBJECTS=banner.o hw.o main.o settings.o
- endif
-
diff --git a/misc/nvclock/patches/nvclock-fix_DESTDIR.patch b/misc/nvclock/patches/nvclock-fix_DESTDIR.patch
deleted file mode 100644
index 0596cfa784..0000000000
--- a/misc/nvclock/patches/nvclock-fix_DESTDIR.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-diff -Nur nvclock0.8b4.orig/Makefile.in nvclock0.8b4/Makefile.in
---- nvclock0.8b4.orig/Makefile.in 2008-05-11 05:25:44.000000000 -0500
-+++ nvclock0.8b4/Makefile.in 2009-01-07 16:15:50.088688188 -0600
-@@ -1,8 +1,9 @@
- INSTALL=@INSTALL@
-+DESTDIR =
-+prefix=@prefix@
-+docdir=@docdir@
-+mandir=@mandir@
-
--prefix=$(DESTDIR)@prefix@
--docdir=${prefix}/share/doc/nvclock
--mandir=${prefix}/man
- DOCS= ABOUT AUTHORS ChangeLog FAQ README
-
- all:
-@@ -21,7 +22,7 @@
- install-docs:
- @documentations='$(DOCS)'; \
- for doc in $$documentations; do \
-- destdir=$(docdir); \
-+ destdir=$(DESTDIR)$(docdir); \
- name=`echo $$doc` \
- dir=$$destdir; \
- mkdir -p $$dir; \
-@@ -30,14 +31,14 @@
- done
-
- install-desktop-shortcut:
-- mkdir -p $(prefix)/share/applications
-- mkdir -p $(prefix)/share/icons/hicolor/48x48/apps
-- cp nvclock.desktop $(prefix)/share/applications
-- cp nvclock.png $(prefix)/share/icons/hicolor/48x48/apps
-+ mkdir -p $(DESTDIR)$(prefix)/share/applications
-+ mkdir -p $(DESTDIR)$(prefix)/share/icons/hicolor/48x48/apps
-+ cp nvclock.desktop $(DESTDIR)$(prefix)/share/applications
-+ cp nvclock.png $(DESTDIR)$(prefix)/share/icons/hicolor/48x48/apps
-
- install-man:
-- mkdir -p $(mandir)/man1
-- cp nvclock.1 $(mandir)/man1
-+ mkdir -p $(DESTDIR)$(mandir)/man1
-+ cp nvclock.1 $(DESTDIR)$(mandir)/man1
-
- uninstall: uninstall-docs uninstall-man uninstall-desktop-shortcut
- $(MAKE) -C src uninstall
-@@ -45,7 +46,7 @@
- uninstall-docs:
- @documentations='$(DOCS)'; \
- for doc in $$documentations; do \
-- destdir=$(docdir); \
-+ destdir=$(DESTDIR)$(docdir); \
- name=`echo $$doc` \
- dir=$$destdir; \
- rm -f $$dir/$$name; \
-@@ -53,11 +54,12 @@
- done
-
- uninstall-desktop-shortcut:
-- rm -f $(prefix)/share/applications/nvclock.desktop
-- echo "removing $$prefix/share/applications/nvclock.desktop" ; \
-- rm -f $(prefix)/share/icons/hicolor/48x48/apps/nvclock.png
-- echo "removing $$prefix/share/icons/hicolor/48x48/apps/nvclock.png" ; \
-+ rm -f $(DESTDIR)$(prefix)/share/applications/nvclock.desktop
-+ echo "removing $$(DESTDIR)$$prefix/share/applications/nvclock.desktop" ; \
-+ rm -f $(DESTDIR)$(prefix)/share/icons/hicolor/48x48/apps/nvclock.png
-+ echo "removing $$(DESTDIR)$$prefix/share/icons/hicolor/48x48/apps/nvclock.png" ; \
-
- uninstall-man:
-- rm -f $(mandir)/man1/nvclock.1
-- echo "removing $$mandir/man1/nvclock.1" ; \
-+ rm -f $$(DESTDIR)$(mandir)/man1/nvclock.1
-+ echo "removing $$(DESTDIR)$$mandir/man1/nvclock.1" ; \
-+
-diff -Nur nvclock0.8b4.orig/src/Makefile.in nvclock0.8b4/src/Makefile.in
---- nvclock0.8b4.orig/src/Makefile.in 2009-01-03 11:02:54.000000000 -0600
-+++ nvclock0.8b4/src/Makefile.in 2009-01-07 16:13:06.839689315 -0600
-@@ -8,9 +8,9 @@
- libbackend=./backend/libbackend.a
- libnvcontrol=./nvcontrol/libnvcontrol.a
-
--prefix=$(DESTDIR)@prefix@
--exec_prefix=$(DESTDIR)@exec_prefix@
--bindir=$(DESTDIR)@bindir@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+bindir=@bindir@
-
- ifeq ($(HAVE_NVCONTROL), yes)
- DEPS=$(libbackend) $(libnvcontrol)
-@@ -56,7 +56,7 @@
-
- uninstall: uninstall-recursive uninstall-app
- uninstall-app:
-- rm -f $(bindir)/smartdimmer
-+ rm -f $(DESTDIR)$(bindir)/smartdimmer
-
-
- # Walk through the sub directories and do what is requested
-diff -Nur nvclock0.8b4.orig/src/gtk/Makefile.in nvclock0.8b4/src/gtk/Makefile.in
---- nvclock0.8b4.orig/src/gtk/Makefile.in 2008-05-11 05:25:46.000000000 -0500
-+++ nvclock0.8b4/src/gtk/Makefile.in 2009-01-07 16:13:54.808688249 -0600
-@@ -7,14 +7,14 @@
- libbackend=../backend/libbackend.a
- libnvcontrol=../nvcontrol/libnvcontrol.a
-
--prefix=$(DESTDIR)@prefix@
--exec_prefix=$(DESTDIR)@exec_prefix@
--bindir=$(DESTDIR)@bindir@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+bindir=@bindir@
-
- ifeq ($(HAVE_GTK2), yes)
- PROGRAM=nvclock_gtk
-- INSTALL_APP=mkdir -p $(bindir); $(INSTALL) -c $(PROGRAM) $(bindir)/$(PROGRAM)
-- UNINSTALL_APP=rm -f $(bindir)/$(PROGRAM)
-+ INSTALL_APP=mkdir -p $(DESTDIR)$(bindir); $(INSTALL) -c $(PROGRAM) $(DESTDIR)$(bindir)/$(PROGRAM)
-+ UNINSTALL_APP=rm -f $(DESTDIR)$(bindir)/$(PROGRAM)
- endif
-
- ifeq ($(HAVE_NVCONTROL), yes)
-diff -Nur nvclock0.8b4.orig/src/qt/Makefile.in nvclock0.8b4/src/qt/Makefile.in
---- nvclock0.8b4.orig/src/qt/Makefile.in 2008-05-11 05:25:46.000000000 -0500
-+++ nvclock0.8b4/src/qt/Makefile.in 2009-01-07 16:15:03.885688805 -0600
-@@ -8,14 +8,14 @@
- HAVE_QT=@HAVE_QT@
- libbackend=../backend/libbackend.a
-
--prefix=$(DESTDIR)@prefix@
--exec_prefix=$(DESTDIR)@exec_prefix@
--bindir=$(DESTDIR)@bindir@
-+prefix=@prefix@
-+exec_prefix=@exec_prefix@
-+bindir=@bindir@
-
- ifeq ($(HAVE_QT), yes)
- PROGRAM=nvclock_qt
-- INSTALL_APP=mkdir -p $(bindir); $(INSTALL) -c $(PROGRAM) $(bindir)/$(PROGRAM)
-- UNINSTALL_APP=rm -f $(bindir)/$(PROGRAM)
-+ INSTALL_APP=mkdir -p $(DESTDIR)$(bindir); $(INSTALL) -c $(PROGRAM) $(DESTDIR)$(bindir)/$(PROGRAM)
-+ UNINSTALL_APP=rm -f $(DESTDIR)$(bindir)/$(PROGRAM)
- endif
-
- ifeq ($(HAVE_NVCONTROL), yes)
diff --git a/misc/nvclock/patches/nvclock-use_ALL_CFLAGS.patch b/misc/nvclock/patches/nvclock-use_ALL_CFLAGS.patch
deleted file mode 100644
index ebdb7d562c..0000000000
--- a/misc/nvclock/patches/nvclock-use_ALL_CFLAGS.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-diff -Nur nvclock0.8b4.orig/Makefile.in nvclock0.8b4/Makefile.in
---- nvclock0.8b4.orig/Makefile.in 2008-05-11 05:25:44.000000000 -0500
-+++ nvclock0.8b4/Makefile.in 2009-01-07 16:19:12.437689102 -0600
-@@ -5,6 +5,9 @@
- mandir=${prefix}/man
- DOCS= ABOUT AUTHORS ChangeLog FAQ README
-
-+CFLAGS=@CFLAGS@
-+CXXFLAGS=@CXXFLAGS@
-+
- all:
- $(MAKE) -C src all
-
-diff -Nur nvclock0.8b4.orig/configure nvclock0.8b4/configure
---- nvclock0.8b4.orig/configure 2008-08-16 11:53:59.000000000 -0500
-+++ nvclock0.8b4/configure 2009-01-07 16:24:27.896687454 -0600
-@@ -3726,7 +3726,6 @@
-
-
-
--CFLAGS=
- HAVE_GTK2=no
- HAVE_QT=no
- HAVE_NVCONTROL=no
-diff -Nur nvclock0.8b4.orig/src/Makefile.in nvclock0.8b4/src/Makefile.in
---- nvclock0.8b4.orig/src/Makefile.in 2009-01-03 11:02:54.000000000 -0600
-+++ nvclock0.8b4/src/Makefile.in 2009-01-07 16:26:38.506689444 -0600
-@@ -1,5 +1,6 @@
- CC=@CC@
- INSTALL=@INSTALL@
-+CFLAGS=@CFLAGS@
-
- nvclock_SOURCES=nvclock.c
- smartdimmer_SOURCES=smartdimmer.c
-@@ -31,10 +32,10 @@
-
-
- nvclock: $(DEPS) $(LIB) nvclock.c
-- $(CC) -o nvclock $(nvclock_SOURCES) $(INCLUDES) $(LIBS)
-+ $(CC) $(CFLAGS) -o nvclock $(nvclock_SOURCES) $(INCLUDES) $(LIBS)
-
- smartdimmer: $(DEPS) $(LIB) smartdimmer.c
-- $(CC) -o smartdimmer $(smartdimmer_SOURCES) $(INCLUDES) $(LIBS)
-+ $(CC) $(CFLAGS) -o smartdimmer $(smartdimmer_SOURCES) $(INCLUDES) $(LIBS)
-
-
- clean: clean-recursive clean-app
-diff -Nur nvclock0.8b4.orig/src/backend/Makefile.in nvclock0.8b4/src/backend/Makefile.in
---- nvclock0.8b4.orig/src/backend/Makefile.in 2007-12-27 10:05:38.000000000 -0600
-+++ nvclock0.8b4/src/backend/Makefile.in 2009-01-07 16:32:28.089689122 -0600
-@@ -1,11 +1,12 @@
--CC=@CC@ -O0
-+CC=@CC@
- AR=ar
- RANLIB=@RANLIB@
-
- system=@system@
- HAVE_NVCONTROL=@HAVE_NVCONTROL@
- OBJECTS=backend.o bios.o config.o error.o nv30.o nv40.o nv50.o info.o overclock.o utils.o i2c.o xf86i2c.o adt7473.o f75375.o lm99.o w83781d.o w83l785r.o libc_wrapper.o
--CFLAGS=@X11_CFLAGS@ -I../.. -I../nvcontrol
-+CFLAGS=@CFLAGS@
-+CFLAGS+=@X11_CFLAGS@ -I../.. -I../nvcontrol
-
- ifeq ($(system), FreeBSD)
- OBJECTS+=back_bsd.o
-@@ -36,4 +37,4 @@
- rm -f Makefile
-
- install:
--uninstall:
-\ No newline at end of file
-+uninstall:
-diff -Nur nvclock0.8b4.orig/src/gtk/Makefile.in nvclock0.8b4/src/gtk/Makefile.in
---- nvclock0.8b4.orig/src/gtk/Makefile.in 2008-05-11 05:25:46.000000000 -0500
-+++ nvclock0.8b4/src/gtk/Makefile.in 2009-01-07 16:28:51.865688400 -0600
-@@ -1,7 +1,8 @@
- CC=@CC@
- INSTALL=@INSTALL@
-
--CFLAGS=@GTK_CFLAGS@ -I../backend -I../nvcontrol -I../..
-+CFLAGS=@CFLAGS@
-+CFLAGS+=@GTK_CFLAGS@ -I../backend -I../nvcontrol -I../..
- HAVE_GTK2=@HAVE_GTK2@
- HAVE_NVCONTROL=@HAVE_NVCONTROL@
- libbackend=../backend/libbackend.a
-diff -Nur nvclock0.8b4.orig/src/nvcontrol/Makefile.in nvclock0.8b4/src/nvcontrol/Makefile.in
---- nvclock0.8b4.orig/src/nvcontrol/Makefile.in 2005-12-09 13:46:05.000000000 -0600
-+++ nvclock0.8b4/src/nvcontrol/Makefile.in 2009-01-07 16:29:09.340689195 -0600
-@@ -2,7 +2,8 @@
- AR=ar
- RANLIB=@RANLIB@
- system=@system@
--CFLAGS=@X11_CFLAGS@ -I../backend
-+CFLAGS=@CFLAGS@
-+CFLAGS+=@X11_CFLAGS@ -I../backend
- HAVE_X11=@HAVE_NVCONTROL@
- OBJECTS=libnvcontrol.o nvcontrol.o
-
-@@ -26,4 +27,4 @@
- rm -f Makefile
-
- install:
--uninstall:
-\ No newline at end of file
-+uninstall:
-diff -Nur nvclock0.8b4.orig/src/qt/Makefile.in nvclock0.8b4/src/qt/Makefile.in
---- nvclock0.8b4.orig/src/qt/Makefile.in 2008-05-11 05:25:46.000000000 -0500
-+++ nvclock0.8b4/src/qt/Makefile.in 2009-01-07 16:29:42.410690235 -0600
-@@ -3,7 +3,8 @@
- MOC=@MOC@
-
- OBJECTS=main.o qt_nvclock.o qt_nvclock.moc.o qt_xfree.o qt_xfree.moc.o
--CXXFLAGS=@QT_CFLAGS@ -I../backend
-+CXXFLAGS=@CXXFLAGS@
-+CXXFLAGS+=@QT_CFLAGS@ -I../backend
- HAVE_NVCONTROL=@HAVE_NVCONTROL@
- HAVE_QT=@HAVE_QT@
- libbackend=../backend/libbackend.a
diff --git a/misc/nvclock/patches/nvclock-use_most_CFLAGS.patch b/misc/nvclock/patches/nvclock-use_most_CFLAGS.patch
deleted file mode 100644
index ffab3c83e2..0000000000
--- a/misc/nvclock/patches/nvclock-use_most_CFLAGS.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-diff -Nur nvclock0.8b4.orig/Makefile.in nvclock0.8b4/Makefile.in
---- nvclock0.8b4.orig/Makefile.in 2008-05-11 05:25:44.000000000 -0500
-+++ nvclock0.8b4/Makefile.in 2009-01-07 16:19:12.437689102 -0600
-@@ -5,6 +5,9 @@
- mandir=${prefix}/man
- DOCS= ABOUT AUTHORS ChangeLog FAQ README
-
-+CFLAGS=@CFLAGS@
-+CXXFLAGS=@CXXFLAGS@
-+
- all:
- $(MAKE) -C src all
-
-diff -Nur nvclock0.8b4.orig/configure nvclock0.8b4/configure
---- nvclock0.8b4.orig/configure 2008-08-16 11:53:59.000000000 -0500
-+++ nvclock0.8b4/configure 2009-01-07 16:24:27.896687454 -0600
-@@ -3726,7 +3726,6 @@
-
-
-
--CFLAGS=
- HAVE_GTK2=no
- HAVE_QT=no
- HAVE_NVCONTROL=no
-diff -Nur nvclock0.8b4.orig/src/Makefile.in nvclock0.8b4/src/Makefile.in
---- nvclock0.8b4.orig/src/Makefile.in 2009-01-03 11:02:54.000000000 -0600
-+++ nvclock0.8b4/src/Makefile.in 2009-01-07 16:26:38.506689444 -0600
-@@ -1,5 +1,6 @@
- CC=@CC@
- INSTALL=@INSTALL@
-+CFLAGS=@CFLAGS@
-
- nvclock_SOURCES=nvclock.c
- smartdimmer_SOURCES=smartdimmer.c
-@@ -31,10 +32,10 @@
-
-
- nvclock: $(DEPS) $(LIB) nvclock.c
-- $(CC) -o nvclock $(nvclock_SOURCES) $(INCLUDES) $(LIBS)
-+ $(CC) $(CFLAGS) -o nvclock $(nvclock_SOURCES) $(INCLUDES) $(LIBS)
-
- smartdimmer: $(DEPS) $(LIB) smartdimmer.c
-- $(CC) -o smartdimmer $(smartdimmer_SOURCES) $(INCLUDES) $(LIBS)
-+ $(CC) $(CFLAGS) -o smartdimmer $(smartdimmer_SOURCES) $(INCLUDES) $(LIBS)
-
-
- clean: clean-recursive clean-app
-diff -Nur nvclock0.8b4.orig/src/gtk/Makefile.in nvclock0.8b4/src/gtk/Makefile.in
---- nvclock0.8b4.orig/src/gtk/Makefile.in 2008-05-11 05:25:46.000000000 -0500
-+++ nvclock0.8b4/src/gtk/Makefile.in 2009-01-07 16:28:51.865688400 -0600
-@@ -1,7 +1,8 @@
- CC=@CC@
- INSTALL=@INSTALL@
-
--CFLAGS=@GTK_CFLAGS@ -I../backend -I../nvcontrol -I../..
-+CFLAGS=@CFLAGS@
-+CFLAGS+=@GTK_CFLAGS@ -I../backend -I../nvcontrol -I../..
- HAVE_GTK2=@HAVE_GTK2@
- HAVE_NVCONTROL=@HAVE_NVCONTROL@
- libbackend=../backend/libbackend.a
-diff -Nur nvclock0.8b4.orig/src/nvcontrol/Makefile.in nvclock0.8b4/src/nvcontrol/Makefile.in
---- nvclock0.8b4.orig/src/nvcontrol/Makefile.in 2005-12-09 13:46:05.000000000 -0600
-+++ nvclock0.8b4/src/nvcontrol/Makefile.in 2009-01-07 16:29:09.340689195 -0600
-@@ -2,7 +2,8 @@
- AR=ar
- RANLIB=@RANLIB@
- system=@system@
--CFLAGS=@X11_CFLAGS@ -I../backend
-+CFLAGS=@CFLAGS@
-+CFLAGS+=@X11_CFLAGS@ -I../backend
- HAVE_X11=@HAVE_NVCONTROL@
- OBJECTS=libnvcontrol.o nvcontrol.o
-
-@@ -26,4 +27,4 @@
- rm -f Makefile
-
- install:
--uninstall:
-\ No newline at end of file
-+uninstall:
-diff -Nur nvclock0.8b4.orig/src/qt/Makefile.in nvclock0.8b4/src/qt/Makefile.in
---- nvclock0.8b4.orig/src/qt/Makefile.in 2008-05-11 05:25:46.000000000 -0500
-+++ nvclock0.8b4/src/qt/Makefile.in 2009-01-07 16:29:42.410690235 -0600
-@@ -3,7 +3,8 @@
- MOC=@MOC@
-
- OBJECTS=main.o qt_nvclock.o qt_nvclock.moc.o qt_xfree.o qt_xfree.moc.o
--CXXFLAGS=@QT_CFLAGS@ -I../backend
-+CXXFLAGS=@CXXFLAGS@
-+CXXFLAGS+=@QT_CFLAGS@ -I../backend
- HAVE_NVCONTROL=@HAVE_NVCONTROL@
- HAVE_QT=@HAVE_QT@
- libbackend=../backend/libbackend.a
diff --git a/misc/nvclock/slack-desc b/misc/nvclock/slack-desc
deleted file mode 100644
index dff8ea9671..0000000000
--- a/misc/nvclock/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-nvclock: nvclock (Nvidia overclocking for Linux)
-nvclock:
-nvclock: NVClock is a small utility that allows users to overclock NVIDIA
-nvclock: based video cards running on the Linux platform. The original
-nvclock: code used in building this application was borrowed from the nvcs
-nvclock: application. That code has been extensively reworked in order to
-nvclock: make the utility much more user friendly and to make it play nice
-nvclock: with current distros and drivers.
-nvclock:
-nvclock:
-nvclock:
diff --git a/misc/open-simh/README b/misc/open-simh/README
new file mode 100644
index 0000000000..d2fbaa6265
--- /dev/null
+++ b/misc/open-simh/README
@@ -0,0 +1,67 @@
+Open SimH (History Simulator) is a collection of simulators for
+historically significant or just plain interesting computer hardware
+and software from the past.
+The goal of the project is to create highly portable system simulators
+and to publish them as freeware on the Internet, with freely available
+copies of significant or representative software.
+
+Open SIMH provides a large (and growing) number of simulators:
+
+SimH Name – Common Name
+-----------------------------------------------------------
+3B2 – AT&T 3B2/400 & 700
+alpha – DEC Alpha AXP
+ALTAIR – MITS Altair 8800
+AltairZ80 – MITS Altair 8080 & Z80
+B5500 – Burroughs B5500
+BESM6 – BESM-6 (USSR)
+CDC1700 – CDC 1700
+GRI – GRI-909 & 99
+H316 – Honywell H316 & 516
+H316-IMP – Honywell H316 & 516 ARPA/IMP
+HP2100 – HP-2100
+HP3000 – HP-3000
+I1401 – IBM 1401
+I1620 – IBM 1620
+I650 – IBM 650
+I7000 – IBM 701,7010,7070,7080, 7090
+I7094 – IBM 7094
+Ibm1130 – IBM 1130
+imlac – IMLAC PDS-1
+Intel-Systems – MDS PC XT SCELBI
+Interdata – Interdata 16b/32b
+LGP – Royal-Mcbee LGP-21,30
+NOVA – Data General Nova
+PDP1 – DEC PDP-1
+PDP4 – DEC PDP-4
+PDP6 – DEC PDP-6
+PDP7 – DEC PDP-7
+PDP8 – DEC PDP-8
+PDP9 – DEC PDP-9
+PDP15 – DEC PDP-15
+PDP10 – DEC PDP-10 (KS)
+KA10 – DEC PDP-10 (KA10)
+KI10 – DEC PDP-10 (KI10)
+KL10 – DEC PDP-10 (KL10)
+KS10 – DEC PDP-10 (KS10)
+PDP11 – DEC PDP-11
+PDQ-3 – Advanced Computer PQD-3
+S3 – IBM System/3 model 10
+SAGE – SAGE Inc. 68000
+SDS – SDS 940
+SEL32 – SEL 32/27, 67,77,87,97,V7,V9
+sigma – XDS Sigma 32b
+SSEM – Manchester SSEM
+swtp6800 – SWTP 6800
+tt2500 – General Turtle tt2500
+TX-0 – MIT TX-0
+VAX – DEC VAX
+
+This package contains the Open Simh version, the 4.X stream,
+which can be found in github.
+Open SimH is more advanced and implements more simulators than
+the "classic" SimH, but is also CI/CD work.
+
+Note: Please add /opt/open-simh/bin to your $PATH or simply
+ invoke each simulator with open-simh-"name".
+ Example: open-simh-vax
diff --git a/misc/open-simh/open-simh.SlackBuild b/misc/open-simh/open-simh.SlackBuild
new file mode 100644
index 0000000000..19564929d1
--- /dev/null
+++ b/misc/open-simh/open-simh.SlackBuild
@@ -0,0 +1,268 @@
+#!/bin/bash
+
+# Slackware build script for Open-SimH
+
+# Copyright 2023 Antonio Leal, Porto Salvo, Oeiras, Portugal
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=open-simh
+SRCNAM=simh
+VERSION=${VERSION:-a588496}
+COMMIT=${COMMIT:-a58849613bfaffa7b600269db018edcdb2978bf9}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $SRCNAM-$COMMIT
+tar xvf $CWD/$SRCNAM-$COMMIT.tar.gz
+cd $SRCNAM-$COMMIT
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# make -j1 BIN/vax
+# make -j1 BIN/pdp11
+make -j1 all
+
+mkdir -p $PKG/opt/$PRGNAM/bin
+mv BIN/* $PKG/opt/$PRGNAM/bin
+
+### Symlinks ##
+mkdir -p $PKG/usr/bin
+( cd $PKG/usr/bin ; rm -rf open-simh-3b2 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/3b2 open-simh-3b2 )
+( cd $PKG/usr/bin ; rm -rf open-simh-3b2-400 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/3b2-400 open-simh-3b2-400 )
+( cd $PKG/usr/bin ; rm -rf open-simh-3b2-700 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/3b2-700 open-simh-3b2-700 )
+( cd $PKG/usr/bin ; rm -rf open-simh-altair )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/altair open-simh-altair )
+( cd $PKG/usr/bin ; rm -rf open-simh-altairz80 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/altairz80 open-simh-altairz80 )
+( cd $PKG/usr/bin ; rm -rf open-simh-b5500 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/b5500 open-simh-b5500 )
+( cd $PKG/usr/bin ; rm -rf open-simh-besm6 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/besm6 open-simh-besm6 )
+( cd $PKG/usr/bin ; rm -rf open-simh-cdc1700 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/cdc1700 open-simh-cdc1700 )
+( cd $PKG/usr/bin ; rm -rf open-simh-eclipse )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/eclipse open-simh-eclipse )
+( cd $PKG/usr/bin ; rm -rf open-simh-gri )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/gri open-simh-gri )
+( cd $PKG/usr/bin ; rm -rf open-simh-h316 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/h316 open-simh-h316 )
+( cd $PKG/usr/bin ; rm -rf open-simh-hp2100 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/hp2100 open-simh-hp2100 )
+( cd $PKG/usr/bin ; rm -rf open-simh-hp3000 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/hp3000 open-simh-hp3000 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i1401 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i1401 open-simh-i1401 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i1620 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i1620 open-simh-i1620 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i650 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i650 open-simh-i650 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i701 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i701 open-simh-i701 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i7010 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i7010 open-simh-i7010 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i704 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i704 open-simh-i704 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i7070 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i7070 open-simh-i7070 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i7080 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i7080 open-simh-i7080 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i7090 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i7090 open-simh-i7090 )
+( cd $PKG/usr/bin ; rm -rf open-simh-i7094 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/i7094 open-simh-i7094 )
+( cd $PKG/usr/bin ; rm -rf open-simh-ibm1130 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/ibm1130 open-simh-ibm1130 )
+( cd $PKG/usr/bin ; rm -rf open-simh-id16 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/id16 open-simh-id16 )
+( cd $PKG/usr/bin ; rm -rf open-simh-id32 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/id32 open-simh-id32 )
+( cd $PKG/usr/bin ; rm -rf open-simh-imlac )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/imlac open-simh-imlac )
+( cd $PKG/usr/bin ; rm -rf open-simh-infoserver100 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/infoserver100 open-simh-infoserver100 )
+( cd $PKG/usr/bin ; rm -rf open-simh-infoserver1000 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/infoserver1000 open-simh-infoserver1000 )
+( cd $PKG/usr/bin ; rm -rf open-simh-infoserver150vxt )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/infoserver150vxt open-simh-infoserver150vxt )
+( cd $PKG/usr/bin ; rm -rf open-simh-intel-mds )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/intel-mds open-simh-intel-mds )
+( cd $PKG/usr/bin ; rm -rf open-simh-lgp )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/lgp open-simh-lgp )
+( cd $PKG/usr/bin ; rm -rf open-simh-microvax1 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/microvax1 open-simh-microvax1 )
+( cd $PKG/usr/bin ; rm -rf open-simh-microvax2 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/microvax2 open-simh-microvax2 )
+( cd $PKG/usr/bin ; rm -rf open-simh-microvax2000 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/microvax2000 open-simh-microvax2000 )
+( cd $PKG/usr/bin ; rm -rf open-simh-microvax3100 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/microvax3100 open-simh-microvax3100 )
+( cd $PKG/usr/bin ; rm -rf open-simh-microvax3100e )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/microvax3100e open-simh-microvax3100e )
+( cd $PKG/usr/bin ; rm -rf open-simh-microvax3100m80 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/microvax3100m80 open-simh-microvax3100m80 )
+( cd $PKG/usr/bin ; rm -rf open-simh-microvax3900 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/microvax3900 open-simh-microvax3900 )
+( cd $PKG/usr/bin ; rm -rf open-simh-nd100 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/nd100 open-simh-nd100 )
+( cd $PKG/usr/bin ; rm -rf open-simh-nova )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/nova open-simh-nova )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp1 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp1 open-simh-pdp1 )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp10 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp10 open-simh-pdp10 )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp10-ka )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp10-ka open-simh-pdp10-ka )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp10-ki )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp10-ki open-simh-pdp10-ki )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp10-kl )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp10-kl open-simh-pdp10-kl )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp10-ks )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp10-ks open-simh-pdp10-ks )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp11 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp11 open-simh-pdp11 )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp15 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp15 open-simh-pdp15 )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp4 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp4 open-simh-pdp4 )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp6 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp6 open-simh-pdp6 )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp7 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp7 open-simh-pdp7 )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp8 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp8 open-simh-pdp8 )
+( cd $PKG/usr/bin ; rm -rf open-simh-pdp9 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/pdp9 open-simh-pdp9 )
+( cd $PKG/usr/bin ; rm -rf open-simh-rtvax1000 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/rtvax1000 open-simh-rtvax1000 )
+( cd $PKG/usr/bin ; rm -rf open-simh-s3 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/s3 open-simh-s3 )
+( cd $PKG/usr/bin ; rm -rf open-simh-scelbi )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/scelbi open-simh-scelbi )
+( cd $PKG/usr/bin ; rm -rf open-simh-sds )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/sds open-simh-sds )
+( cd $PKG/usr/bin ; rm -rf open-simh-sel32 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/sel32 open-simh-sel32 )
+( cd $PKG/usr/bin ; rm -rf open-simh-sigma )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/sigma open-simh-sigma )
+( cd $PKG/usr/bin ; rm -rf open-simh-ssem )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/ssem open-simh-ssem )
+( cd $PKG/usr/bin ; rm -rf open-simh-swtp6800mp-a )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/swtp6800mp-a open-simh-swtp6800mp-a )
+( cd $PKG/usr/bin ; rm -rf open-simh-swtp6800mp-a2 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/swtp6800mp-a2 open-simh-swtp6800mp-a2 )
+( cd $PKG/usr/bin ; rm -rf open-simh-tt2500 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/tt2500 open-simh-tt2500 )
+( cd $PKG/usr/bin ; rm -rf open-simh-tx-0 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/tx-0 open-simh-tx-0 )
+( cd $PKG/usr/bin ; rm -rf open-simh-uc15 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/uc15 open-simh-uc15 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vax )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vax open-simh-vax )
+( cd $PKG/usr/bin ; rm -rf open-simh-vax730 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vax730 open-simh-vax730 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vax750 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vax750 open-simh-vax750 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vax780 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vax780 open-simh-vax780 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vax8200 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vax8200 open-simh-vax8200 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vax8600 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vax8600 open-simh-vax8600 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vaxstation3100m30 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vaxstation3100m30 open-simh-vaxstation3100m30 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vaxstation3100m38 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vaxstation3100m38 open-simh-vaxstation3100m38 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vaxstation3100m76 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vaxstation3100m76 open-simh-vaxstation3100m76 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vaxstation4000m60 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vaxstation4000m60 open-simh-vaxstation4000m60 )
+( cd $PKG/usr/bin ; rm -rf open-simh-vaxstation4000vlc )
+( cd $PKG/usr/bin ; ln -sf ../../opt/open-simh/bin/vaxstation4000vlc open-simh-vaxstation4000vlc )
+
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mv doc/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+( cd $PKG/opt/$PRGNAM ; rm -rf doc )
+( cd $PKG/opt/$PRGNAM ; ln -sf ../../usr/doc/$PRGNAM-$VERSION doc )
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/open-simh/open-simh.info b/misc/open-simh/open-simh.info
new file mode 100644
index 0000000000..785de24d71
--- /dev/null
+++ b/misc/open-simh/open-simh.info
@@ -0,0 +1,10 @@
+PRGNAM="open-simh"
+VERSION="a588496"
+HOMEPAGE="https://opensimh.org"
+DOWNLOAD="https://github.com/open-simh/simh/archive/a588496/simh-a58849613bfaffa7b600269db018edcdb2978bf9.tar.gz"
+MD5SUM="d4b1cf5daca76eb8e16f3264117ced07"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Antonio Leal"
+EMAIL="antonioleal@yahoo.com"
diff --git a/misc/open-simh/slack-desc b/misc/open-simh/slack-desc
new file mode 100644
index 0000000000..401abd3771
--- /dev/null
+++ b/misc/open-simh/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+open-simh: open-simh (Historical Computer Simulation)
+open-simh:
+open-simh: Open SimH is a collection of simulators for historically significant
+open-simh: or just plain interesting computer hardware and software from the
+open-simh: past.
+open-simh: The goal of the project is to create highly portable system
+open-simh: simulators and to publish them as freeware on the Internet,
+open-simh: with freely available copies of significant or representative
+open-simh: software.
+open-simh: Homepage: https://github.com/open-simh/simh
+open-simh:
diff --git a/misc/ophcrack/README b/misc/ophcrack/README
index 8cd92e9e2d..cc203c49a7 100644
--- a/misc/ophcrack/README
+++ b/misc/ophcrack/README
@@ -5,11 +5,11 @@ and runs on multiple platforms.
Ophcrack has a graphing function that goes with the ophcrack gui. The
graphing function depends on the "qwt" package available at
-slackbuilds.org.
+slackbuilds.org.
To enable the graphing function run the build script like this:
GRAPH=yes ./ophcrack.SlackBuild
Ophcrack tables can be found at
-http://ophcrack.sourceforge.net/tables.php
+https://ophcrack.sourceforge.io/tables.php
diff --git a/misc/ophcrack/ophcrack.SlackBuild b/misc/ophcrack/ophcrack.SlackBuild
index fc0be95634..1bf0c01929 100644
--- a/misc/ophcrack/ophcrack.SlackBuild
+++ b/misc/ophcrack/ophcrack.SlackBuild
@@ -5,7 +5,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ophcrack
-VERSION=${VERSION:-3.4.0}
+VERSION=${VERSION:-3.8.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -92,7 +92,7 @@ cat src/gui/pixmaps/os.xpm > $PKG/usr/share/pixmaps/$PRGNAM.xpm
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS ChangeLog COPYING INSTALL LICENSE* NEWS README \
+ AUTHORS COPYING ChangeLog INSTALL LICENSE* NEWS README* \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/ophcrack/ophcrack.info b/misc/ophcrack/ophcrack.info
index 71aa1939c3..1c1edc1073 100644
--- a/misc/ophcrack/ophcrack.info
+++ b/misc/ophcrack/ophcrack.info
@@ -1,8 +1,8 @@
PRGNAM="ophcrack"
-VERSION="3.4.0"
-HOMEPAGE="http://ophcrack.sourceforge.net/"
-DOWNLOAD="http://downloads.sourceforge.net/ophcrack/ophcrack-3.4.0.tar.bz2"
-MD5SUM="a43b1288325e586c0ed6bc6e0bd5357e"
+VERSION="3.8.0"
+HOMEPAGE="https://ophcrack.sourceforge.io/"
+DOWNLOAD="https://sourceforge.net/projects/ophcrack/files/ophcrack/3.8.0/ophcrack-3.8.0.tar.bz2"
+MD5SUM="d4449e15f65b1f0f82abfd963ceff452"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/ophcrack/slack-desc b/misc/ophcrack/slack-desc
index cc2a1798d2..f1ffe06272 100644
--- a/misc/ophcrack/slack-desc
+++ b/misc/ophcrack/slack-desc
@@ -15,5 +15,5 @@ ophcrack: runs on multiple platforms.
ophcrack:
ophcrack: 3.4 adds support for XP flash and Vista eight XL tables.
ophcrack:
-ophcrack: Homepage: http://ophcrack.sourceforge.net/
+ophcrack: https://ophcrack.sourceforge.io/
ophcrack:
diff --git a/misc/owfs/README b/misc/owfs/README
index 2a0fc870b6..a637249cde 100644
--- a/misc/owfs/README
+++ b/misc/owfs/README
@@ -1,5 +1,5 @@
OWFS is an easy way to use the powerful 1-wire system of Dallas/Maxim.
-OWFS is a simple and flexible program to monitor and control the physical
-environment. You can write scripts to read temperature, flash lights,
-write to an LCD, log and graph, ...
+OWFS is a simple and flexible program to monitor and control the
+physical environment. You can write scripts to read temperature, flash
+lights, write to an LCD, log and graph, ...
diff --git a/misc/owfs/owfs.SlackBuild b/misc/owfs/owfs.SlackBuild
index 0d3635b174..62aaac798f 100644
--- a/misc/owfs/owfs.SlackBuild
+++ b/misc/owfs/owfs.SlackBuild
@@ -4,25 +4,28 @@
# Written by MrJackson mrjackson@gmail.com
+# 20220222 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - fix build if libkqueue is installed.
+# - do not install empty TODO and useless INSTALL in doc dir.
+# - get rid of .la files.
+# - TODO: someone check the PHP extension, see if it works with PHP7?
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=owfs
-VERSION=${VERSION:-2.8p20}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-3.2p4}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -32,8 +35,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -57,11 +60,16 @@ cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
+ -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+ -exec chmod 644 {} \+
+
+# 20220301 bkw: if configure detects libkqueue's sys/event.h, it also
+# needs to link with -lkqueue, but doesn't.
+pkg-config --exists libkqueue && LIBS="$( pkg-config --libs libkqueue )"
-CFLAGS="$SLKCFLAGS -fgnu89-inline" \
+LIBS="$LIBS" \
+CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
@@ -70,32 +78,31 @@ CXXFLAGS="$SLKCFLAGS" \
--localstatedir=/var \
--mandir=/usr/man \
--with-fuseinclude=/usr/include \
+ --disable-owtcl \
--with-fuselib=/usr/lib$LIBDIRSUFFIX \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--build=$ARCH-slackware-linux
make
# Install paths needed else perl modules get installed in /usr/local. :/
-make install \
+make install-strip \
INSTALLDIRS=vendor \
INSTALLVENDORMAN3DIR=/usr/man/man3 \
DESTDIR=$PKG
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+gzip -9 $PKG/usr/man/*/*
find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
find $PKG -depth -type d -empty -delete || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- AUTHORS COPYING ChangeLog INSTALL NEWS README TODO \
+ AUTHORS COPYING ChangeLog NEWS README* \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/owfs/owfs.info b/misc/owfs/owfs.info
index 78def995f6..0a3e72ce31 100644
--- a/misc/owfs/owfs.info
+++ b/misc/owfs/owfs.info
@@ -1,8 +1,8 @@
PRGNAM="owfs"
-VERSION="2.8p20"
+VERSION="3.2p4"
HOMEPAGE="http://owfs.org/"
-DOWNLOAD="http://downloads.sourceforge.net/owfs/owfs-2.8p20.tar.gz"
-MD5SUM="9aebee6c0e724553f5be6a542494eae5"
+DOWNLOAD="https://github.com/owfs/owfs/releases/download/v3.2p4/owfs-3.2p4.tar.gz"
+MD5SUM="a74f63fc6797fd2d600da45b694fba38"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/pam-u2f/README b/misc/pam-u2f/README
new file mode 100644
index 0000000000..00a0c4e722
--- /dev/null
+++ b/misc/pam-u2f/README
@@ -0,0 +1,6 @@
+Pluggable Authentication Module (PAM) Universal 2nd Factor (U2F)
+
+This module implements PAM over U2F and FIDO2, providing an easy way
+to integrate the YubiKey (or other U2F/FIDO2 compliant authenticators)
+into your existing infrastructure.
+
diff --git a/misc/hashkill/hashkill.SlackBuild b/misc/pam-u2f/pam-u2f.SlackBuild
index 150ffacaf6..ba79442153 100644
--- a/misc/hashkill/hashkill.SlackBuild
+++ b/misc/pam-u2f/pam-u2f.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for hashkill
+# Slackware build script for pam-u2f
-# Copyright 2013 Gabriel Magno, Belo Horizonte, MG, Brazil
+# Copyright 2023 André Geraldo Vieira <andre.geraldo@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,23 +24,20 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=hashkill
-VERSION=${VERSION:-0.3.1}
+PRGNAM=pam-u2f
+VERSION=${VERSION:-1.3.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -50,8 +47,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -59,6 +56,9 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
@@ -70,34 +70,33 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$VERSION.tar.gz || tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+tar xvf $CWD/${PRGNAM//-/_}-$VERSION.tar.gz
+cd ${PRGNAM//-/_}-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-sed -i \
- -e 's/-ljson/-ljson-c/' \
- configure
-
-env -u BUILD \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --libdir=/usr/lib$LIBDIRSUFFIX \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --with-pam-dir=/lib64/security \
--build=$ARCH-slackware-linux
make
make install DESTDIR=$PKG
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -106,7 +105,7 @@ for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; r
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- COPYING CREDITS README README.md \
+ AUTHORS COPYING ChangeLog NEWS README \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/pam-u2f/pam-u2f.info b/misc/pam-u2f/pam-u2f.info
new file mode 100644
index 0000000000..b5fb7b9d3a
--- /dev/null
+++ b/misc/pam-u2f/pam-u2f.info
@@ -0,0 +1,10 @@
+PRGNAM="pam-u2f"
+VERSION="1.3.0"
+HOMEPAGE="https://github.com/Yubico/pam-u2f"
+DOWNLOAD="https://developers.yubico.com/pam-u2f/Releases/pam_u2f-1.3.0.tar.gz"
+MD5SUM="e79696f5afb8f8f96c8344bffcf1edcc"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="libfido2"
+MAINTAINER="André Geraldo Vieira"
+EMAIL="andre.geraldo@gmail.com"
diff --git a/misc/readesm/slack-desc b/misc/pam-u2f/slack-desc
index 53bad0f8e6..871ae8ad31 100644
--- a/misc/readesm/slack-desc
+++ b/misc/pam-u2f/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-readesm: readesm (Shows the content of digital tachograph files)
-readesm:
-readesm: readesm takes an ESM file (possible file extensions are .esm .dd
-readesm: .tgd or .add) downloaded from a digital tachograph or a driver card
-readesm: (used in the European Union for trucks > 3.5 tons) and converts it
-readesm: into human-readable form, either html or simple plaintext.
-readesm:
-readesm: Homepage: https://readesm.sourceforge.net/
-readesm:
-readesm:
-readesm:
+pam-u2f: pam-u2f (This module implements PAM over U2F and FIDO2)
+pam-u2f:
+pam-u2f: Pluggable Authentication Module (PAM) Universal 2nd Factor (U2F)
+pam-u2f:
+pam-u2f: This module implements PAM over U2F and FIDO2, providing an easy way
+pam-u2f: to integrate the YubiKey (or other U2F/FIDO2 compliant authenticators
+pam-u2f: ) into your existing infrastructure.
+pam-u2f:
+pam-u2f: https://github.com/Yubico/pam-u2f
+pam-u2f:
+pam-u2f:
diff --git a/misc/par/README b/misc/par/README
index a0488a9367..887c83b647 100644
--- a/misc/par/README
+++ b/misc/par/README
@@ -1,3 +1,5 @@
+par (paragraph reformatter)
+
par is a paragraph reformatter, vaguely similar to fmt, but better.
For example, the command "par 44gqr", given the input:
diff --git a/misc/par/par.SlackBuild b/misc/par/par.SlackBuild
index 67727fa788..848627fa8d 100644
--- a/misc/par/par.SlackBuild
+++ b/misc/par/par.SlackBuild
@@ -1,9 +1,9 @@
#!/bin/bash
# Slackware build script for par
-# Written by slakmagik <slakmagik@gmail.com>
+# Written by slakmagik <email removed>
# Released under the WTFPL
-# Now maintained by B. Watson <yalhcru@gmail.com>
+# Now maintained by B. Watson <urchlay@slackware.uk>
# 20200622 bkw:
# - Update for v1.53 (after *19 years*)
@@ -30,9 +30,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/par/par.info b/misc/par/par.info
index 575b3ed9bb..a0c3c28666 100644
--- a/misc/par/par.info
+++ b/misc/par/par.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/par2cmdline-tbb/README b/misc/par2cmdline-tbb/README
index 285699ccb0..5fdd107069 100644
--- a/misc/par2cmdline-tbb/README
+++ b/misc/par2cmdline-tbb/README
@@ -1,10 +1,10 @@
par2cmdline 0.4 with Intel Threading Building Blocks
-This is a concurrent (multithreaded) version of par2cmdline 0.4, a utility
-to create and repair data files using Reed Solomon coding. par2 parity
-archives are commonly used on Usenet posting to allow corrupted postings to
-be repaired instead of needing the original poster to repost the corrupted
-file(s).
+This is a concurrent (multithreaded) version of par2cmdline 0.4,
+a utility to create and repair data files using Reed Solomon
+coding. par2 parity archives are commonly used on Usenet posting
+to allow corrupted postings to be repaired instead of needing the
+original poster to repost the corrupted file(s).
-Note: if you have installed the par2cmdline package this one will overwrite
-the par2 binary file, so do not install both versions.
+Note: if you have installed the par2cmdline package this one will
+overwrite the par2 binary file, so do not install both versions.
diff --git a/misc/par2cmdline-tbb/par2cmdline-tbb.SlackBuild b/misc/par2cmdline-tbb/par2cmdline-tbb.SlackBuild
index f6524211d8..aa15bf9e31 100644
--- a/misc/par2cmdline-tbb/par2cmdline-tbb.SlackBuild
+++ b/misc/par2cmdline-tbb/par2cmdline-tbb.SlackBuild
@@ -64,6 +64,9 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
+# This header has been removed with glibc 2.32, so point at the kernel's one
+sed -i "s|sys/sysctl\.h|linux/sysctl.h|" reedsolomon.cpp
+
LDFLAGS="-lrt" \
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
diff --git a/misc/par2cmdline-turbo/README b/misc/par2cmdline-turbo/README
new file mode 100644
index 0000000000..9710aee09d
--- /dev/null
+++ b/misc/par2cmdline-turbo/README
@@ -0,0 +1,5 @@
+par2cmdline-turbo is a simple fork of par2cmdline which replaces core
+computation routines with ParPar's processing backend, improving
+par2cmdline’s performance on x86/ARM platforms.
+
+This package will conflict with par2cmdline.
diff --git a/misc/par2cmdline-turbo/par2cmdline-turbo.SlackBuild b/misc/par2cmdline-turbo/par2cmdline-turbo.SlackBuild
new file mode 100644
index 0000000000..43db08a4c5
--- /dev/null
+++ b/misc/par2cmdline-turbo/par2cmdline-turbo.SlackBuild
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+# Slackware build script for par2cmdline-turbo
+
+# Copyright 2023 Thibaut Notteboom, Paris, FRANCE
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=par2cmdline-turbo
+VERSION=${VERSION:-1.1.1}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+aclocal
+automake --add-missing
+autoconf
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
+make
+make check
+make install-strip DESTDIR=$PKG
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ AUTHORS COPYING ChangeLog README README.md ROADMAP \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/par2cmdline-turbo/par2cmdline-turbo.info b/misc/par2cmdline-turbo/par2cmdline-turbo.info
new file mode 100644
index 0000000000..518683b3d5
--- /dev/null
+++ b/misc/par2cmdline-turbo/par2cmdline-turbo.info
@@ -0,0 +1,10 @@
+PRGNAM="par2cmdline-turbo"
+VERSION="1.1.1"
+HOMEPAGE="https://github.com/animetosho/par2cmdline-turbo"
+DOWNLOAD="https://github.com/animetosho/par2cmdline-turbo/archive/v1.1.1/par2cmdline-turbo-1.1.1.tar.gz"
+MD5SUM="f7edee7a3e4bf77c25df7c22b4df6f87"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Thibaut Notteboom"
+EMAIL="thibaut.notteboom@gmail.com"
diff --git a/misc/par2cmdline-turbo/slack-desc b/misc/par2cmdline-turbo/slack-desc
new file mode 100644
index 0000000000..b9e8775534
--- /dev/null
+++ b/misc/par2cmdline-turbo/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+par2cmdline-turbo: par2cmdline-turbo (A faster PAR 2.0 compatible file verification and
+par2cmdline-turbo: repair tool, forked from par2cmdline)
+par2cmdline-turbo:
+par2cmdline-turbo: par2cmdline-turbo is a simple fork of par2cmdline which replaces core
+par2cmdline-turbo: computation routines with ParPar's processing backend, improving
+par2cmdline-turbo: par2cmdline’s performance on x86/ARM platforms.
+par2cmdline-turbo:
+par2cmdline-turbo:
+par2cmdline-turbo:
+par2cmdline-turbo:
+par2cmdline-turbo:
diff --git a/misc/par2cmdline/README b/misc/par2cmdline/README
index 3d3c9100f4..ef320b24e6 100644
--- a/misc/par2cmdline/README
+++ b/misc/par2cmdline/README
@@ -1,7 +1,7 @@
par2cmdline (Commandline implementation of PARv2.0 specification)
-par2cmdline is a GPL-licensed commandline tool for creating and using PAR2
-parity sets to detect damage in files and repair them if necessary. The
-program uses Reed Solomon Coding to perform its error correction. A useful
-program for checking and ensuring the integrity of binaries retrieved from
-usenet for instance.
+par2cmdline is a GPL-licensed commandline tool for creating and
+using PAR2 parity sets to detect damage in files and repair them if
+necessary. The program uses Reed Solomon Coding to perform its error
+correction. A useful program for checking and ensuring the integrity
+of binaries retrieved from usenet for instance.
diff --git a/misc/pinfo/README b/misc/pinfo/README
index ad750c3d7d..6aa0b8f40b 100644
--- a/misc/pinfo/README
+++ b/misc/pinfo/README
@@ -1,7 +1,8 @@
pinfo (info file viewer)
-Pinfo is an info file viewer. It was created when the author, Przemek Borys,
-was very depressed trying to read gtk info entries using the standard tools.
+Pinfo is an info file viewer. It was created when the author, Przemek
+Borys, was very depressed trying to read gtk info entries using the
+standard tools.
-Pinfo is similar in use to lynx. It has similar key movements, and gives
-similar intuition.
+Pinfo is similar in use to lynx. It has similar key movements, and
+gives similar intuition.
diff --git a/misc/pinfo/doinst.sh b/misc/pinfo/doinst.sh
index 3354151c29..d514aad218 100644
--- a/misc/pinfo/doinst.sh
+++ b/misc/pinfo/doinst.sh
@@ -1,18 +1,15 @@
config() {
NEW="$1"
OLD="$(dirname $NEW)/$(basename $NEW .new)"
- # If there's no config file by that name, mv it over:
if [ ! -r $OLD ]; then
mv $NEW $OLD
elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then
- # toss the redundant copy
rm $NEW
fi
- # Otherwise, we leave the .new copy for the admin to consider...
}
config etc/pinforc.new
if [ -x /usr/bin/install-info ]; then
- chroot . /usr/bin/install-info --info-dir=/usr/info /usr/info/pinfo.info.gz 2> /dev/null
+ /usr/bin/install-info usr/info/pinfo.info.gz usr/info/dir
fi
diff --git a/misc/pinfo/douninst.sh b/misc/pinfo/douninst.sh
new file mode 100644
index 0000000000..1bef502028
--- /dev/null
+++ b/misc/pinfo/douninst.sh
@@ -0,0 +1,6 @@
+if [ -x /usr/bin/install-info -a -d usr/info ]; then
+ ( cd usr/info
+ rm -f dir
+ for i in *.info*; do /usr/bin/install-info $i dir 2>/dev/null; done
+ )
+fi
diff --git a/misc/pinfo/fix_f9_f10_binds.diff b/misc/pinfo/fix_f9_f10_binds.diff
new file mode 100644
index 0000000000..130c2e399c
--- /dev/null
+++ b/misc/pinfo/fix_f9_f10_binds.diff
@@ -0,0 +1,16 @@
+diff --git a/src/parse_config.c b/src/parse_config.c
+index 6345e7d..84abb1d 100644
+--- a/src/parse_config.c
++++ b/src/parse_config.c
+@@ -877,9 +877,9 @@ parse_line(char *line)
+ *key = KEY_F(7);
+ else if (!(strncmp(temp + 4, "F(8)", 4)))
+ *key = KEY_F(8);
+- else if (!(strncmp(temp + 4, "(F9)", 4)))
++ else if (!(strncmp(temp + 4, "F(9)", 4)))
+ *key = KEY_F(9);
+- else if (!(strncmp(temp + 4, "(F10)", 5)))
++ else if (!(strncmp(temp + 4, "F(10)", 5)))
+ *key = KEY_F(10);
+ else if (!(strncmp(temp + 4, "F(11)", 5)))
+ *key = KEY_F(11);
diff --git a/misc/pinfo/man_page.diff b/misc/pinfo/man_page.diff
new file mode 100644
index 0000000000..fd4afa9f99
--- /dev/null
+++ b/misc/pinfo/man_page.diff
@@ -0,0 +1,62 @@
+diff --git a/doc/pinfo.1.in b/doc/pinfo.1.in
+index bb285cc..bf16aef 100644
+--- a/doc/pinfo.1.in
++++ b/doc/pinfo.1.in
+@@ -1,4 +1,4 @@
+-.TH PINFO 1 "01 Dec 2001"
++.TH PINFO 1 "25 Apr 2023"
+ .SH NAME
+ .B pinfo
+ \- is user-friendly, console-based viewer for Info documents
+@@ -6,6 +6,10 @@
+ .B pinfo
+ [\fIoptions\fR]
+ [\fBinfopage\fR]
++.P
++.B pman
++[\fIman-options\fR]
++[\fBman-page\fR]
+ .SH DESCRIPTION
+ This is a program for viewing info files. You specify which page you want to
+ read by passing it an
+@@ -46,13 +50,7 @@ to the `\fIman\fR' program. Don't be confused if pinfo options, which
+ followed `\fB-m\fR' don't work. When using this option, pinfo does not parse
+ the info options as usual! It invokes the man part of program.
+ .P
+-You can also call the man function of pinfo in another way. When pinfo is
+-called with an argv[0] (the program file name), which contains the word 'man'
+-in its name, the man functions are enabled automatically.
+-.P
+-Previously there was a symlink to pinfo, called pman, but I had to remove it
+-from the distribution, since its name was in conflict with some other
+-utility. Anyway, you can feel free to create such a link if you wish.
++You can also call the man function of pinfo by running \fBpman\fR.
+ .P
+ .BR "-r",
+ .BR --raw-filename
+diff --git a/doc/pinfo.texi b/doc/pinfo.texi
+index 9925202..a617e62 100644
+--- a/doc/pinfo.texi
++++ b/doc/pinfo.texi
+@@ -90,6 +90,9 @@ Keys
+
+ @value{PROGRAM} [@var{options}] [@var{info_page}]
+
++@noindent
++@file{pman} [@var{man-options}] [@var{man_page}]
++
+ @value{PROGRAM} is a program for viewing info files. You specify which
+ page you want to read by passing it an @var{info_page} argument. This argument
+ contains the name of an info page (i.e. @samp{bash}). The program
+@@ -130,10 +133,7 @@ When @value{PROGRAM} is called with an @code{argv[0]} (the program file
+ name), which contains the word @code{man} in its name, the man
+ functions are enabled automatically.
+
+-Previously there was a symlink to @value{PROGRAM}, called @code{pman},
+-but I had to remove it from the distribution, since its name was in
+-conflict with some other utility. Anyway, you can feel free to create
+-such a link if you wish.
++You can also call the man function of pinfo by running @code{pman}.
+ @item -r, --raw-filename
+ uses a raw filename first (i.e. the name which you specified as
+ infopage is considered to be a real file in the specified location).
diff --git a/misc/pinfo/ncurses-6.3.diff b/misc/pinfo/ncurses-6.3.diff
new file mode 100644
index 0000000000..82cf176794
--- /dev/null
+++ b/misc/pinfo/ncurses-6.3.diff
@@ -0,0 +1,32 @@
+From ab604fdb67296dad27f3a25f3c9aabdd2fb8c3fa Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyich@gmail.com>
+Date: Thu, 11 Nov 2021 19:02:24 +0000
+Subject: [PATCH] src/video.c: use %ld to print longs
+
+ncurses-6.3 added printf()-stype attribute annotations for gcc-like
+compilers that can now detect argument mismatches:
+
+ video.c:114:26: error: format '%d' expects argument of type 'int',
+ but argument 3 has type 'long unsigned int' [-Werror=format=]
+ 114 | printw(_("Viewing line %d/%d, 100%%"), lines, lines);
+ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~
+---
+ src/video.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/video.c b/src/video.c
+index f6b444a..195d781 100644
+--- a/src/video.c
++++ b/src/video.c
+@@ -109,9 +109,9 @@ showscreen(char **message, unsigned long lines, unsigned long pos, long cursor,
+ mymvhline(maxy - 1, 0, ' ', maxx);
+ move(maxy - 1, 0);
+ if ((pos < lines - 1) &&(lines > pos + maxy - 2))
+- printw(_("Viewing line %d/%d, %d%%"), pos + maxy - 2, lines,((pos + maxy - 2) * 100) / lines);
++ printw(_("Viewing line %ld/%ld, %ld%%"), pos + maxy - 2, lines,((pos + maxy - 2) * 100) / lines);
+ else
+- printw(_("Viewing line %d/%d, 100%%"), lines, lines);
++ printw(_("Viewing line %ld/%ld, 100%%"), lines, lines);
+ info_add_highlights(pos, cursor, lines, column, message);
+ attrset(normal);
+ move(0, 0);
diff --git a/misc/pinfo/pinfo.SlackBuild b/misc/pinfo/pinfo.SlackBuild
index 71f2aab426..d12c03f286 100644
--- a/misc/pinfo/pinfo.SlackBuild
+++ b/misc/pinfo/pinfo.SlackBuild
@@ -5,7 +5,7 @@
# Copyright 2009 Arun Prasannan - <URL removed>
# All rights reserved.
#
-# Now maintained by B. Watson <yalhcru@gmail.com>.
+# Now maintained by B. Watson <urchlay@slackware.uk>.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
@@ -24,6 +24,12 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20230425 bkw: BUILD=4
+# - add bugfix from upstream.
+# - document pman link in man and info pages.
+
+# 20230308 bkw: BUILD=3, add douninst.sh to clean up GNU info dir.
+
# 20200708 bkw: BUILD=2
# - restore old 'pman' link (nothing conflicts)
# - fix homepage in slack-desc
@@ -39,7 +45,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=pinfo
VERSION=${VERSION:-0.6.13}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-4}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -51,9 +57,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -83,13 +86,16 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.[bg]z* # allow old .bz2 and new .gz
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
patch -p1 < $CWD/gcc10-stringop.diff
+patch -p1 < $CWD/ncurses-6.3.diff
+patch -p1 < $CWD/fix_f9_f10_binds.diff # commit 05f967c
+patch -p1 < $CWD/man_page.diff # my own work
[ -e configure ] || sh autogen.sh
@@ -114,18 +120,19 @@ rm -f $PKG/usr/info/dir
mv $PKG/etc/pinforc $PKG/etc/pinforc.new
# Upstream removed this as it conflicted with something on his system.
-# It doesn't conflict with ours.
+# It doesn't conflict with ours. man_page.diff documents this, too.
ln -s $PRGNAM $PKG/usr/bin/pman
ln -s $PRGNAM.1.gz $PKG/usr/man/man1/pman.1.gz
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS Change[lL]og* COPYING NEWS README* TECHSTUFF \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a AUTHORS Change[lL]og* COPYING NEWS README* TECHSTUFF $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
+cat $CWD/douninst.sh > $PKG/install/douninst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/pinfo/pinfo.info b/misc/pinfo/pinfo.info
index 8e6cedf1fb..e2c63842b9 100644
--- a/misc/pinfo/pinfo.info
+++ b/misc/pinfo/pinfo.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/po4a/README b/misc/po4a/README
index 460ea0c578..591c931290 100644
--- a/misc/po4a/README
+++ b/misc/po4a/README
@@ -1,65 +1,31 @@
-po4a - Versatile PO to/from other documentation formats converter
+po4a (convert PO to/from other documentation formats)
po4a (PO for anything) eases translations and their maintenance,
allowing gettext's usage on unexpected areas like documentation.
-In po4a each documentation format is handled by a module, that
-converts this format to/from PO. Formats handled by po4a-0.63
-
-. asciidoc: AsciiDoc format.
-. dia: uncompressed Dia diagrams.
-. docbook: DocBook XML.
-. guide: Gentoo Linux's XML documentation format.
-. ini: INI format.
-. kernelhelp: Help messages of each kernel compilation option.
-. latex: LaTeX format.
-. man: Good old manual page format.
-. pod: Perl Online Documentation format.
-. sgml: either DebianDoc or DocBook DTD.
-. texinfo: The info page format.
-. tex: generic TeX documents (see also latex).
-. text: simple text document.
-. wml: WML documents.
-. xhtml: XHTML documents.
-. xml: generic XML documents (see also docbook).
-. yaml: YAML documents.
+In po4a each documentation format is handled by a module that converts
+this format to/from PO. Formats handled by po4a:
+
+- asciidoc: AsciiDoc format.
+- dia: uncompressed Dia diagrams.
+- docbook: DocBook XML.
+- guide: Gentoo Linux's XML documentation format.
+- ini: INI format.
+- kernelhelp: Help messages of each kernel compilation option.
+- latex: LaTeX format.
+- man: Good old manual page format.
+- pod: Perl Online Documentation format.
+- sgml: either DebianDoc or DocBook DTD.
+- texinfo: The info page format.
+- tex: generic TeX documents (see also latex).
+- text: simple text document.
+- wml: WML documents.
+- xhtml: XHTML documents.
+- xml: generic XML documents (see also docbook).
+- yaml: YAML documents.
man pages are encoded in UTF-8. To read them in other languages than
English, do this for instance:
LANG=ru_RU.utf8 GROFF_ENCODING=utf8 man <man page>
-Dependencies tree is as follows (all dependencies listed are available
-at http://slackbuilds.org).
-
-Po4a-0.63
-|
-|-- perl-Module-Build
-|-- perl-YAML-Tiny. mandatory for the YAML module.
-|-- perl-text-WrapI18N to format po4a's warnings and error messages.
-| | Optional.
-| |-- Text::CharWidth. Mandatory
-|-- perl-Unicode-LineBreak, includes module Unicode::GCString to compute
- text width, neeeded by AsciiDoc to determine two line titles in
- encodings different from ASCII. Mandatory for TEXT module.
- |-- perl-MIME-Charset. Mandatory
- |-- perl-Encode-EUCJPASCII. Optional
- |-- perl-Encode-HanExtra. Optional.
- |-- perl-Encode-JISX0213. Optional
- |-- perl-Encode-ISO2022. Mandatory
-
-In addition, perl-Test-Pod allows to run the test for the POFD format
-
-Note: by default the SlackBuild does not run ./Build test, because these
-tests:
-t/cfg-multi.t
-t/cfg-single.t
-t/cfg-split.t
-fail if the script is run by root or even using fakeroot, which has been
-acknowledged upstream.
-
-All tests have been successfully passed running '/Build test' by the
-maintainer as regular user. If you want to check by yourself, un-comment
-the lines 85 and 86 in the SlackBuild. You will then need to comment
-them out to run the script again as root to actually build the package.
-
-WARNING: run this script with LANG set to an UTF-8 locale.
+See README_SBo.txt for dependency info and build options.
diff --git a/misc/po4a/README_SBo.txt b/misc/po4a/README_SBo.txt
new file mode 100644
index 0000000000..65b0f4cb66
--- /dev/null
+++ b/misc/po4a/README_SBo.txt
@@ -0,0 +1,25 @@
+Dependency tree is as follows (all dependencies listed are available
+at http://slackbuilds.org).
+
+po4a
+|
+|-- perl-Module-Build
+|-- perl-YAML-Tiny. mandatory for the YAML module.
+|-- perl-text-WrapI18N to format po4a's warnings and error messages.
+| | Optional.
+| |-- Text::CharWidth. Mandatory
+|-- perl-Unicode-LineBreak, includes module Unicode::GCString to compute
+ text width, neeeded by AsciiDoc to determine two line titles in
+ encodings different from ASCII. Mandatory for TEXT module.
+ |-- perl-MIME-Charset. Mandatory
+ |-- perl-Encode-EUCJPASCII. Optional
+ |-- perl-Encode-HanExtra. Optional.
+ |-- perl-Encode-JISX0213. Optional
+ |-- perl-Encode-ISO2022. Mandatory
+
+In addition, perl-Test-Pod allows running the test for the POFD format.
+
+Note: by default the SlackBuild does not run "./Build test". If
+you want to run the tests, export TESTS=yes in the SlackBuild's
+environment. This will make the package take a few extra minutes to
+build.
diff --git a/misc/po4a/po4a.SlackBuild b/misc/po4a/po4a.SlackBuild
index 30ade7c8e4..b67df8ae81 100644
--- a/misc/po4a/po4a.SlackBuild
+++ b/misc/po4a/po4a.SlackBuild
@@ -2,51 +2,42 @@
# Slackware build script for po4a
-# Copyright 2014, 2015, 2018 Didier Spaier Paris, France
-# All rights reserved.
-#
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.ritten by Didier Spaier <didier dot spaier at epsm dot fr>
-
-# WARNING: run this script using an UTF-8 locale. If you don't use one
-# usually, run it like this e.g.
-# LC_ALL=en_US.utf8 ./po4a.SlackBuild
+# Originally written by Didier Spaier Paris, France
+# Now maintained by B. Watson (urchlay@slackware.uk)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20230701 bkw: BUILD=2:
+# - install translations to /usr/share/locale, *not* /usr/locale!
+
+# 20230103 bkw: update for v0.69.
+
+# 20220110 bkw:
+# - new maintainer.
+# - relicense as WTFPL with permission from Didier.
+# - update for v0.65.
+# - force a UTF-8 locale instead of making it a hoop for the user
+# to notice and jump through.
+# - move some of the details from README to a separate README_SBo.txt.
+# - ARCH=noarch.
+# - run the tests if TESTS=yes, as user nobody so they actually work.
cd $(dirname $0) ; CWD=$(pwd)
+export LANG=en_US.UTF-8
+export LC_ALL=en_US.UTF-8
+
PRGNAM=po4a
-VERSION=${VERSION:-0.63}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-0.69}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-SRCNAM="$(printf $PRGNAM | cut -d- -f2-)"
+# There is no compiled code here.
+ARCH=noarch
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i586 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
+SRCNAM="$(printf $PRGNAM | cut -d- -f2-)"
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -56,20 +47,6 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i586" ]; then
- SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
@@ -79,34 +56,40 @@ rm -rf $SRCNAM-$VERSION
tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
cd $SRCNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# 20230701 bkw: upstream makes a bad assumption about where the locale dir
+# lives: assumes it's in the same dir as man/. this would be right if our
+# man pages were in /usr/share/man, but sice we use /usr/man, we end up
+# with translations installed to /usr/locale. ugh.
+sed -i '/\$localedir *=~/s,/locale,/share/locale,' Po4aBuilder.pm
perl Build.PL \
prefix=/usr \
installdirs=vendor \
destdir=$PKG
./Build
-# ./Build test
-# exit
+
+# 20220110 bkw: Tests fail if run as root. Also they're time-consuming.
+# Run them only if requested, and do it as "nobody".
+if [ "${TESTS:-no}" = "yes" ]; then
+ chown -R nobody:nogroup t
+ su nobody -s /bin/sh -c "./Build test"
+fi
+
./Build install \
--install_path bindoc=/usr/man/man1 \
--install_path libdoc=/usr/man/man3
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
-
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | \
+ xargs rm -f || true
find $PKG -depth -type d -empty -delete || true
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING NEWS README* TODO \
- changelog $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a COPYING NEWS README* TODO changelog $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/po4a/po4a.info b/misc/po4a/po4a.info
index caa17c89ed..5989dbe44a 100644
--- a/misc/po4a/po4a.info
+++ b/misc/po4a/po4a.info
@@ -1,10 +1,10 @@
PRGNAM="po4a"
-VERSION="0.63"
+VERSION="0.69"
HOMEPAGE="https://po4a.org/"
-DOWNLOAD="https://github.com/mquinson/po4a/releases/download/v0.63/po4a-0.63.tar.gz"
-MD5SUM="25881c0a02c1180ffdec4bf452b4ff0f"
+DOWNLOAD="https://github.com/mquinson/po4a/releases/download/v0.69/po4a-0.69.tar.gz"
+MD5SUM="72844709ea43c5956e7435a5301bac11"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="perl-Pod-Parser perl-Unicode-LineBreak perl-Module-Build perl-YAML-Tiny"
-MAINTAINER="Didier Spaier"
-EMAIL="didier at slint dot fr"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/po4a/slack-desc b/misc/po4a/slack-desc
index d81b32f609..b20a4b22de 100644
--- a/misc/po4a/slack-desc
+++ b/misc/po4a/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-po4a: po4a (PO documentation format converter)
+po4a: po4a (convert PO to/from other documentation formats)
po4a:
po4a: po4a (PO for anything) eases translations and their maintenance,
po4a: allowing gettext's usage on unexpected areas like documentation.
po4a:
po4a: In po4a each documentation format is handled by a module, that
-po4a: converts this format to/from PO. Formats included in po4a-0.63 are:
+po4a: converts this format to/from PO. Formats included in po4a-0.65 are:
po4a: man pages, POD, XML (generic, DocBook, XHTML, Dia, Guide, WML), SGML
-po4a: Tex (generic, LaTeX, Texinfo), text (simple with few formatting,
-po4a: markdown, Asciidoc), INI, KernelHelp
+po4a: Tex (generic, LaTeX, Texinfo), text (simple with no formatting,
+po4a: markdown, or Asciidoc), INI, KernelHelp
po4a:
diff --git a/misc/pokemon-colorscripts/README b/misc/pokemon-colorscripts/README
new file mode 100644
index 0000000000..7d9ae4ef09
--- /dev/null
+++ b/misc/pokemon-colorscripts/README
@@ -0,0 +1,31 @@
+Prints out colored unicode sprites of pokémon onto your terminal.
+Contains almost 900 pokémon from gen 1 to gen 8. Has all the pokémons
+you could ever want, including shinies and alternate forms (okay it's
+still missing some female forms but cut me some slack).
+
+The program requires python3 to run and a terminal with true color
+support, which most modern terminals have.
+
+You can run the program from the command line to either display a
+pokémon of your choice by specifying the pokémon name or make it
+display a random pokémon.
+
+The program itself is a simple python script that prints out text
+files corresponding to the relevant pokémon or a randomly selected
+pokémon. The sprites are simple text files that use unicode characters
+and ANSI color codes to display images of pokémon. The text sprite
+files can be found in the colorscripts folder. The files were
+generated using sprites taken from PokéSprite as the base and
+converted to unicode sprites using custom scripts that can be found at
+https://gitlab.com/phoneybadger/pokémon-generator-scripts
+
+You can display a random pokémon whenever a terminal gets launched by
+adding the "pokemon-colorscripts" -r command to your .bashrc or
+.zshrc, or by chmoding the provided shell script to be executable:
+
+ # chmod +x /etc/profile.d/pokemon-colorscripts-login.sh
+
+You may also choose to disable Slackware's default fortune script by
+disabling execution with chmod:
+
+ # chmod -x /etc/profile.d/bsd-games-login-fortune.sh
diff --git a/misc/Publican/doinst.sh b/misc/pokemon-colorscripts/doinst.sh
index c899c943f9..2b7a395946 100644
--- a/misc/Publican/doinst.sh
+++ b/misc/pokemon-colorscripts/doinst.sh
@@ -11,4 +11,15 @@ config() {
# Otherwise, we leave the .new copy for the admin to consider...
}
-config etc/publican-website.cfg.new
+preserve_perms() {
+ NEW="$1"
+ OLD="$(dirname $NEW)/$(basename $NEW .new)"
+ if [ -e $OLD ]; then
+ cp -a $OLD ${NEW}.incoming
+ cat $NEW > ${NEW}.incoming
+ mv ${NEW}.incoming $NEW
+ fi
+ config $NEW
+}
+
+preserve_perms etc/profile.d/pokemon-colorscripts-login.sh.new
diff --git a/misc/pokemon-colorscripts/pokemon-colorscripts-login.sh b/misc/pokemon-colorscripts/pokemon-colorscripts-login.sh
new file mode 100644
index 0000000000..80c3b8baec
--- /dev/null
+++ b/misc/pokemon-colorscripts/pokemon-colorscripts-login.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Print a random pokémon for interactive shells:
+
+case $- in
+*i* ) # We're interactive
+ echo
+ pokemon-colorscripts -r
+ echo
+ ;;
+esac
diff --git a/misc/pokemon-colorscripts/pokemon-colorscripts.SlackBuild b/misc/pokemon-colorscripts/pokemon-colorscripts.SlackBuild
new file mode 100644
index 0000000000..ace88e973f
--- /dev/null
+++ b/misc/pokemon-colorscripts/pokemon-colorscripts.SlackBuild
@@ -0,0 +1,88 @@
+#!/bin/bash
+
+# Slackware build script for pokemon-colorscripts
+
+# Copyright 2023 Steven Voges <Oregon, USA>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=pokemon-colorscripts
+VERSION=${VERSION:-20221028_0483c85}
+SRCVER=${SRCVER:-0483c85b93362637bdd0632056ff986c07f30868}
+BUILD=${BUILD:-2}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+ARCH=noarch
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$SRCVER
+tar xvf $CWD/$PRGNAM-$SRCVER.tar.gz
+cd $PRGNAM-$SRCVER
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
+
+mkdir -p $PKG/usr/bin
+install -vDm755 ${PRGNAM}.py $PKG/usr/share/$PRGNAM/${PRGNAM}.py
+install -vDm644 pokemon.json $PKG/usr/share/$PRGNAM/pokemon.json
+install -vDm644 $CWD/${PRGNAM}-login.sh $PKG/etc/profile.d/${PRGNAM}-login.sh.new
+install -vDm644 colorscripts/small/regular/* -t \
+ $PKG/usr/share/$PRGNAM/colorscripts/small/regular
+install -vDm644 colorscripts/small/shiny/* -t \
+ $PKG/usr/share/$PRGNAM/colorscripts/small/shiny
+install -vDm644 colorscripts/large/regular/* -t \
+ $PKG/usr/share/$PRGNAM/colorscripts/large/regular
+install -vDm644 colorscripts/large/shiny/* -t \
+ $PKG/usr/share/$PRGNAM/colorscripts/large/shiny
+install -vDm644 ${PRGNAM}.1 $PKG/usr/man/man1/${PRGNAM}.1
+ln -s ../share/$PRGNAM/${PRGNAM}.py $PKG/usr/bin/$PRGNAM
+
+find $PKG/usr/man -type f -exec gzip -9 {} \+
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ LICENSE.txt README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/pokemon-colorscripts/pokemon-colorscripts.info b/misc/pokemon-colorscripts/pokemon-colorscripts.info
new file mode 100644
index 0000000000..feb9e1c4dd
--- /dev/null
+++ b/misc/pokemon-colorscripts/pokemon-colorscripts.info
@@ -0,0 +1,10 @@
+PRGNAM="pokemon-colorscripts"
+VERSION="20221028_0483c85"
+HOMEPAGE="https://gitlab.com/phoneybadger/pokemon-colorscripts"
+DOWNLOAD="https://gitlab.com/phoneybadger/pokemon-colorscripts/-/archive/0483c85b93362637bdd0632056ff986c07f30868/pokemon-colorscripts-0483c85b93362637bdd0632056ff986c07f30868.tar.gz"
+MD5SUM="0a8caa8cd6ac3fbd04b04fd104117adc"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Steven Voges"
+EMAIL="svoges.sbo@gmail.com"
diff --git a/misc/pokemon-colorscripts/slack-desc b/misc/pokemon-colorscripts/slack-desc
new file mode 100644
index 0000000000..f249ccc9cb
--- /dev/null
+++ b/misc/pokemon-colorscripts/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+pokemon-colorscripts: pokemon-colorscripts (Pokemon terminal images)
+pokemon-colorscripts:
+pokemon-colorscripts: A script to print out images of pokemon to the terminal. Inspired by
+pokemon-colorscripts: DT's colorscripts compilation.
+pokemon-colorscripts:
+pokemon-colorscripts: Homepage: https://gitlab.com/phoneybadger/pokemon-colorscripts
+pokemon-colorscripts:
+pokemon-colorscripts:
+pokemon-colorscripts:
+pokemon-colorscripts:
+pokemon-colorscripts:
diff --git a/misc/portecle/portecle.info b/misc/portecle/portecle.info
index af46a87d09..452c4cd6e1 100644
--- a/misc/portecle/portecle.info
+++ b/misc/portecle/portecle.info
@@ -5,6 +5,6 @@ DOWNLOAD="https://downloads.sourceforge.net/portecle/portecle-1.11.zip"
MD5SUM="8bf79cf57140640947be248260385e50"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="jdk"
+REQUIRES="zulu-openjdk8"
MAINTAINER="Petr Kletecka"
EMAIL="petr@kle.cz"
diff --git a/misc/projectM/README b/misc/projectM/README
index c71302579c..43bd886e7c 100644
--- a/misc/projectM/README
+++ b/misc/projectM/README
@@ -1,5 +1,5 @@
-projectM (Music visualization program)
-
-projectM is an OpenGL based advanced music visualization program for Linux,
-Mac OSX, and Windows. It is backward compatible with all the features of
-Milkdrop 1.x (and now 2.x), but has many new toys and enhancements.
+projectM is an open-source project that reimplements the esteemed
+Winamp Milkdrop by Geiss in a more modern, cross-platform reusable
+library. Its purpose in life is to read an audio input and to produce
+mesmerizing visuals, detecting tempo, and rendering advanced equations
+into a limitless array of user-contributed visualizations.
diff --git a/misc/projectM/doinst.sh b/misc/projectM/doinst.sh
index 5fb28930db..65c7e2eeb9 100644
--- a/misc/projectM/doinst.sh
+++ b/misc/projectM/doinst.sh
@@ -1,3 +1,9 @@
if [ -x /usr/bin/update-desktop-database ]; then
/usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/misc/projectM/patch_use_LIB_SUFFIX.diff b/misc/projectM/patch_use_LIB_SUFFIX.diff
deleted file mode 100644
index 8ca6ad2356..0000000000
--- a/misc/projectM/patch_use_LIB_SUFFIX.diff
+++ /dev/null
@@ -1,32 +0,0 @@
---- src/libprojectM/CMakeLists.txt.orig 2012-05-20 03:43:26.000000000 +0000
-+++ src/libprojectM/CMakeLists.txt 2014-08-29 03:36:28.593809096 +0000
-@@ -35,7 +35,7 @@
-
- ADD_DEFINITIONS(-DCMAKE_INSTALL_PREFIX="\\\"${CMAKE_INSTALL_PREFIX}\\\"")
-
--SET(LIB_INSTALL_DIR "\${exec_prefix}/lib"
-+SET(LIB_INSTALL_DIR "\${exec_prefix}/lib${LIB_SUFFIX}"
- CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib)"
- FORCE)
-
-@@ -234,7 +234,7 @@
- FILE(GLOB presets "presets/*.milk" "presets/*.prjm" "presets/*.tga")
- INSTALL(FILES ${presets} DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/presets)
- INSTALL(FILES ${Renderer_SOURCE_DIR}/projectM.cg ${Renderer_SOURCE_DIR}/blur.cg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM/shaders)
--INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig)
-+INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/libprojectM.pc DESTINATION ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/pkgconfig)
- INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.inp DESTINATION ${CMAKE_INSTALL_PREFIX}/share/projectM)
- INSTALL(FILES projectM.hpp event.h dlldefs.h fatal.h PCM.hpp Common.hpp DESTINATION include/libprojectM)
--INSTALL(TARGETS projectM DESTINATION lib)
-+INSTALL(TARGETS projectM DESTINATION lib${LIB_SUFFIX})
---- src/projectM-qt/CMakeLists.txt.orig 2012-05-20 03:43:25.000000000 +0000
-+++ src/projectM-qt/CMakeLists.txt 2014-08-29 03:37:40.050705339 +0000
-@@ -131,6 +131,6 @@
- target_link_libraries(projectM-qt projectM GLEW GL ${QT_QTGUI_LIBRARIES} ${QT_QTOPENGL_LIBRARIES} ${QT_QTXML_LIBRARIES} ${QT_LIBRARIES})
-
- install(FILES qprojectm_mainwindow.hpp DESTINATION include/libprojectM-qt)
--install(TARGETS projectM-qt DESTINATION lib)
--install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION lib/pkgconfig)
-+install(TARGETS projectM-qt DESTINATION lib${LIB_SUFFIX})
-+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libprojectM-qt.pc" DESTINATION lib${LIB_SUFFIX}/pkgconfig)
- install(FILES "images/icons/prjm16-transparent.svg" DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps)
diff --git a/misc/projectM/patch_use_both_fonts.diff b/misc/projectM/patch_use_both_fonts.diff
deleted file mode 100644
index 2671239938..0000000000
--- a/misc/projectM/patch_use_both_fonts.diff
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/libprojectM/CMakeLists.txt.orig 2014-08-29 07:31:53.446941895 +0000
-+++ src/libprojectM/CMakeLists.txt 2014-08-29 07:33:41.336200162 +0000
-@@ -224,7 +224,7 @@
- CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/config.inp.in" "${CMAKE_CURRENT_BINARY_DIR}/config.inp" @ONLY)
-
- IF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf")
-- INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/fonts/VeraMono.ttf DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts)
-+ INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/fonts/Vera.ttf DESTINATION ${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts)
- ENDIF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/Vera.ttf")
-
- IF(projectM_FONT_MENU MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf" OR projectM_FONT_TITLE MATCHES "${CMAKE_INSTALL_PREFIX}/${RESOURCE_PREFIX}/fonts/VeraMono.ttf")
diff --git a/misc/projectM/projectM-2.1.0_gcc.patch b/misc/projectM/projectM-2.1.0_gcc.patch
deleted file mode 100644
index c55d1d6f1d..0000000000
--- a/misc/projectM/projectM-2.1.0_gcc.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-diff -x '*orig' -rup projectM-complete-2.1.0-Source/src/libprojectM/Common.hpp projectM-complete-2.1.0-Source.new/src/libprojectM/Common.hpp
---- projectM-complete-2.1.0-Source/src/libprojectM/Common.hpp 2012-05-20 04:43:26.000000000 +0100
-+++ projectM-complete-2.1.0-Source.new/src/libprojectM/Common.hpp 2016-03-17 05:00:14.176905540 +0000
-@@ -63,7 +63,8 @@ extern FILE *fmemopen(void *buf, size_t
-
- #ifdef LINUX
- #include <cstdlib>
--#define projectM_isnan isnan
-+#include <cmath>
-+#define projectM_isnan std::isnan
-
- #endif
-
-diff -x '*orig' -rup projectM-complete-2.1.0-Source/src/libprojectM/MilkdropPresetFactory/Parser.cpp
-projectM-complete-2.1.0-Source.new/src/libprojectM/MilkdropPresetFactory/Parser.cpp
---- projectM-complete-2.1.0-Source/src/libprojectM/MilkdropPresetFactory/Parser.cpp 2012-05-20 04:43:26.000000000 +0100
-+++ projectM-complete-2.1.0-Source.new/src/libprojectM/MilkdropPresetFactory/Parser.cpp 2016-03-17 05:00:14.177905556 +0000
-@@ -1406,7 +1406,7 @@ PerFrameEqn * Parser::parse_implicit_per
- PerFrameEqn * per_frame_eqn;
- GenExpr * gen_expr;
-
-- if (fs == NULL)
-+ if (!fs)
- return NULL;
- if (param_string == NULL)
- return NULL;
-@@ -1561,7 +1561,7 @@ InitCond * Parser::parse_per_frame_init_
-
- if (preset == NULL)
- return NULL;
-- if (fs == NULL)
-+ if (!fs)
- return NULL;
-
- if ((token = parseToken(fs, name)) != tEq)
-@@ -1875,7 +1875,7 @@ int Parser::parse_shapecode(char * token
- /* Null argument checks */
- if (preset == NULL)
- return PROJECTM_FAILURE;
-- if (fs == NULL)
-+ if (!fs)
- return PROJECTM_FAILURE;
- if (token == NULL)
- return PROJECTM_FAILURE;
-@@ -2166,7 +2166,7 @@ int Parser::parse_wave(char * token, std
-
- if (token == NULL)
- return PROJECTM_FAILURE;
-- if (fs == NULL)
-+ if (!fs)
- return PROJECTM_FAILURE;
- if (preset == NULL)
- return PROJECTM_FAILURE;
-@@ -2348,7 +2348,7 @@ int Parser::parse_shape(char * token, st
- if (token == NULL)
-
- return PROJECTM_FAILURE;
-- if (fs == NULL)
-+ if (!fs)
- return PROJECTM_FAILURE;
- if (preset == NULL)
- return PROJECTM_FAILURE;
-
diff --git a/misc/projectM/projectM.SlackBuild b/misc/projectM/projectM.SlackBuild
index f484f09f8a..2d8a69608e 100644
--- a/misc/projectM/projectM.SlackBuild
+++ b/misc/projectM/projectM.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for projectM
-# Copyright 2017 Matt Dinslage, Springfield, MO
+# Copyright 2021 Matt Dinslage, Springfield, MO
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -25,11 +25,13 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=projectM
-VERSION=${VERSION:-3.1.7}
+VERSION=${VERSION:-3.1.12}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
+SRCNAM=projectm
+
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
i?86) ARCH=i586 ;;
@@ -69,26 +71,44 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $SRCNAM-$VERSION
+tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+cd $SRCNAM-$VERSION
+chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
-o -perm 511 \) -exec chmod 755 {} \; -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# thanks archlinux!
-./configure --prefix=/usr --enable-gles --enable-sdl --enable-threading --enable-qt
-sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool # Fix overlinking
+./autogen.sh
+
+CFLAGS="$SLKCFLAGS" \
+CXXFLAGS="$SLKCFLAGS" \
+./configure \
+ --prefix=/usr \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --docdir=/usr/doc/$PRGNAM-$VERSION \
+ --disable-static \
+ --build=$ARCH-slackware-linux
+
make
make install DESTDIR=$PKG
+# Don't ship .la files:
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a *.txt $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a AUTHORS.txt LICENSE.txt README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/projectM/projectM.info b/misc/projectM/projectM.info
index 9b18f846d3..0c4b035b14 100644
--- a/misc/projectM/projectM.info
+++ b/misc/projectM/projectM.info
@@ -1,10 +1,10 @@
PRGNAM="projectM"
-VERSION="3.1.7"
-HOMEPAGE="http://projectm.sourceforge.net/"
-DOWNLOAD="https://github.com/projectM-visualizer/projectm/releases/download/v3.1.7/projectM-3.1.7.tar.gz"
-MD5SUM="abd4cab7abec65fe05b4dcc064bf5ba3"
+VERSION="3.1.12"
+HOMEPAGE="https://github.com/projectM-visualizer/projectm"
+DOWNLOAD="https://github.com/projectM-visualizer/projectm/archive/v3.1.12/projectm-3.1.12.tar.gz"
+MD5SUM="8b583aa05d1ab66985fa89d593b480d5"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="ftgl glm"
+REQUIRES=""
MAINTAINER="M.Dinslage"
EMAIL="daedra1980@gmail.com"
diff --git a/misc/projectM/slack-desc b/misc/projectM/slack-desc
index 671daeecda..9b9a25a8a7 100644
--- a/misc/projectM/slack-desc
+++ b/misc/projectM/slack-desc
@@ -6,13 +6,13 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-projectM: projectM (Music visualization program)
-projectM:
-projectM: projectM is an OpenGL based advanced music visualization program
-projectM: for Linux, Mac OSX, and Windows. It is backward compatible with
-projectM: all the features of Milkdrop 1.x (and now 2.x), but has many new
-projectM: toys and enhancements.
+projectM: projectM (cross-platform music visualization)
projectM:
+projectM: projectM is an open-source project that reimplements the esteemed
+projectM: Winamp Milkdrop by Geiss in a more modern, cross-platform reusable
+projectM: library. Its purpose in life is to read an audio input and to
+projectM: produce mesmerizing visuals, detecting tempo, and rendering advanced
+projectM: equations into a limitless array of user-contributed visualizations.
projectM:
projectM:
projectM:
diff --git a/misc/protobuf/README b/misc/protobuf/README
deleted file mode 100644
index 7197f97d5b..0000000000
--- a/misc/protobuf/README
+++ /dev/null
@@ -1,14 +0,0 @@
-protobuf (Google's data interchange format)
-
-Protocol buffers are a flexible, efficient, automated mechanism for
-serializing structured data, think XML, but smaller, faster, and
-simpler. You define how you want your data to be structured once,
-then you can use special generated source code to easily write and
-read your structured data to and from a variety of data streams
-and using a variety of languages. You can even update your data
-structure without breaking deployed programs that are compiled
-against the "old" format.
-
-If you've already installed the compiz packages you will need
-to rebuild the libcompizconfig and compizconfig-python against
-the new version of protobuf.
diff --git a/misc/protobuf/protobuf.SlackBuild b/misc/protobuf/protobuf.SlackBuild
deleted file mode 100644
index 6db703841e..0000000000
--- a/misc/protobuf/protobuf.SlackBuild
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/bin/bash
-
-# Slackware build script for protobuf
-
-# Written by M.Dinslage (daedra1980@gmail.com)
-
-cd $(dirname $0) ; CWD=$(pwd)
-
-PRGNAM=protobuf
-VERSION=${VERSION:-2.6.1}
-BUILD=${BUILD:-1}
-TAG=${TAG:-_SBo}
-PKGTYPE=${PKGTYPE:-tgz}
-
-PYTHON=${PYTHON:-yes}
-
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
-
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
-TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM
-OUTPUT=${OUTPUT:-/tmp}
-
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
-set -e
-
-rm -rf $PKG
-mkdir -p $TMP $PKG $OUTPUT
-cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
-cd $PRGNAM-$VERSION
-chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --disable-static \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
-
-# Install the python bindings
-if [ "${PYTHON:-yes}" = "yes" ]; then
- cd python ; python setup.py install --root=$PKG ; cd ..
-fi
-
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- CHANGES.txt CONTRIBUTORS.txt INSTALL.txt README.md \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
-
-mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
-
-cd $PKG
-/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/protobuf/protobuf.info b/misc/protobuf/protobuf.info
deleted file mode 100644
index f49a16bd1a..0000000000
--- a/misc/protobuf/protobuf.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="protobuf"
-VERSION="2.6.1"
-HOMEPAGE="https://github.com/google/protobuf/"
-DOWNLOAD="https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.bz2"
-MD5SUM="11aaac2d704eef8efd1867a807865d85"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="pytz python-dateutil python-gflags google-apputils"
-MAINTAINER="M.Dinslage"
-EMAIL="daedra1980{at}gmail{dot}com"
diff --git a/misc/protobuf/slack-desc b/misc/protobuf/slack-desc
deleted file mode 100644
index bdfe48de63..0000000000
--- a/misc/protobuf/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-protobuf: protobuf (Google's data interchange format)
-protobuf:
-protobuf: Protocol buffers are a flexible, efficient, automated mechanism for
-protobuf: serializing structured data, think XML, but smaller, faster, and
-protobuf: simpler. You define how you want your data to be structured once,
-protobuf: then you can use special generated source code to easily write and
-protobuf: read your structured data to and from a variety of data streams
-protobuf: and using a variety of languages. You can even update your data
-protobuf: structure without breaking deployed programs that are compiled
-protobuf: against the "old" format.
-protobuf:
diff --git a/misc/protobuf3/README b/misc/protobuf3/README
deleted file mode 100644
index aab31940f5..0000000000
--- a/misc/protobuf3/README
+++ /dev/null
@@ -1,27 +0,0 @@
-protobuf3 (Google's data interchange format)
-
-Protocol buffers are a flexible, efficient, automated mechanism for
-serializing structured data.
-
-This package contains protobuf API version 3.
-It support the following language implementations:
-* C++
-* Java
-* Python
-* Objective-C
-* C#
-* JavaNano
-* JavaScript
-* Ruby
-* Go
-* PHP (Alpha)
-
-The complete documentation for Protocol Buffers is available at:
-https://developers.google.com/protocol-buffers/
-
-NOTE:
-* This package should NOT be installed alongside with protobuf.
- Protobuf3 introduced API incompatibility and upstream will
- continue to support protobuf version 2.
-* Protobuf3 enforces strict UTF-8 checking.
- Parsing will fail if a string field contains non UTF-8 data.
diff --git a/misc/protobuf3/protobuf3.info b/misc/protobuf3/protobuf3.info
deleted file mode 100644
index 897f252b5d..0000000000
--- a/misc/protobuf3/protobuf3.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="protobuf3"
-VERSION="3.17.3"
-HOMEPAGE="https://github.com/google/protobuf"
-DOWNLOAD="https://github.com/google/protobuf/archive/v3.17.3/protobuf-3.17.3.tar.gz"
-MD5SUM="d7f8e0e3ffeac721e18cdf898eff7d31"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Willy Sudiarto Raharjo"
-EMAIL="willysr@slackbuilds.org"
diff --git a/misc/protobuf3/protobuf3.patch b/misc/protobuf3/protobuf3.patch
deleted file mode 100644
index a69862dd63..0000000000
--- a/misc/protobuf3/protobuf3.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- protobuf-3.10.1/src/google/protobuf/text_format.h.orig 2019-10-13 10:42:21.345593616 +0700
-+++ protobuf-3.10.1/src/google/protobuf/text_format.h 2019-10-13 10:42:34.151188015 +0700
-@@ -42,6 +42,7 @@
- #include <memory>
- #include <string>
- #include <vector>
-+#include <cmath>
-
- #include <google/protobuf/stubs/common.h>
- #include <google/protobuf/descriptor.h>
diff --git a/misc/python3-random-username/README b/misc/python3-random-username/README
new file mode 100644
index 0000000000..7b915d1d46
--- /dev/null
+++ b/misc/python3-random-username/README
@@ -0,0 +1,5 @@
+Generate plausibly-looking usernames like this:
+
+$ random_username 2
+vengefulSausage3
+pacifiedIcecream7
diff --git a/misc/sbo-templates/sbo-templates.SlackBuild b/misc/python3-random-username/python3-random-username.SlackBuild
index 8b4340c0f2..88d1280c22 100644
--- a/misc/sbo-templates/sbo-templates.SlackBuild
+++ b/misc/python3-random-username/python3-random-username.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for sbo-templates
+# Slackware build script for python3-random-username
-# Copyright 2015-2020 Dimitris Zlatanidis Orestiada, Greece
+# Copyright 2023, Lockywolf
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,10 +22,13 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=sbo-templates
-VERSION=${VERSION:-1.3.2}
+
+PRGNAM=python3-random-username
+TGZNAM=random-username
+VERSION=${VERSION:-1.0.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,13 +41,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
@@ -64,14 +60,25 @@ else
LIBDIRSUFFIX=""
fi
+ARCH=noarch
+
+# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
+# the name of the created package would be, and then exit. This information
+# could be useful to other scripts.
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $TGZNAM-$VERSION
+tar xvf $CWD/$TGZNAM-$VERSION.tar.gz
+cd $TGZNAM-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -81,16 +88,15 @@ find -L . \
python3 setup.py install --root=$PKG
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a README.rst ChangeLog.txt LICENSE $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ README.md \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/python3-random-username/python3-random-username.info b/misc/python3-random-username/python3-random-username.info
new file mode 100644
index 0000000000..bb682d4b1c
--- /dev/null
+++ b/misc/python3-random-username/python3-random-username.info
@@ -0,0 +1,10 @@
+PRGNAM="python3-random-username"
+VERSION="1.0.2"
+HOMEPAGE="https://github.com/williexu/random_username"
+DOWNLOAD="https://files.pythonhosted.org/packages/be/84/7004e0038707827e7ebe91a09e0f46483e36134de3b20bc0d5cf864a4caa/random-username-1.0.2.tar.gz"
+MD5SUM="c70ffb18c1c1768420f37bda1cdb5f3a"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Lockywolf"
+EMAIL="for_sbo.python3-random-username_2023-05-29@lockywolf.net"
diff --git a/misc/python3-random-username/slack-desc b/misc/python3-random-username/slack-desc
new file mode 100644
index 0000000000..1bd898109d
--- /dev/null
+++ b/misc/python3-random-username/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+python3-random-username: python3-random-username (Generate random usernames)
+python3-random-username:
+python3-random-username: Adds a command random_username, which generates random more or less
+python3-random-username: plausibly looking usernames, just as one would generate
+python3-random-username: passwords.
+python3-random-username:
+python3-random-username:
+python3-random-username:
+python3-random-username:
+python3-random-username:
+python3-random-username:
diff --git a/misc/ramdefrag/ramdefrag.info b/misc/ramdefrag/ramdefrag.info
index 9f6e1b6369..de8365aab9 100644
--- a/misc/ramdefrag/ramdefrag.info
+++ b/misc/ramdefrag/ramdefrag.info
@@ -1,10 +1,10 @@
PRGNAM="ramdefrag"
VERSION="0.4.0"
-HOMEPAGE="http://ramdefrag.sourceforge.net/"
-DOWNLOAD="https://sourceforge.net/projects/ramdefrag/files/ramdefrag/0.4.0/ramdefrag_0.4.0.tar.gz/download"
+HOMEPAGE="https://ramdefrag.sourceforge.net/"
+DOWNLOAD="https://downloads.sourceforge.net/project/ramdefrag/ramdefrag/0.4.0/ramdefrag_0.4.0.tar.gz"
MD5SUM="fce3c92914a3e8fc49c84b82edafdc60"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Duncan Roe"
-EMAIL="duncan_roe@acslink.net.au"
+EMAIL="duncan_roe@optusnet.com.au"
diff --git a/misc/rarcrack/README b/misc/rarcrack/README
index 356fbbf6c5..0ac5e309f3 100644
--- a/misc/rarcrack/README
+++ b/misc/rarcrack/README
@@ -7,3 +7,7 @@ This program can crack zip, 7z and rar file passwords.
Optional (recommended) dependencies: At runtime, you'll need unrar to
crack rar files, and/or p7zip to crack 7z files.
+
+Note: this is *really slow*, as it executes zip/7z/rar repeatedly,
+once per generated password. If you're dealing with a zip file,
+fcrackzip is much faster (but doesn't support 7z or rar).
diff --git a/misc/rarcrack/rarcrack.SlackBuild b/misc/rarcrack/rarcrack.SlackBuild
index 2645c53f9d..e391932cc3 100644
--- a/misc/rarcrack/rarcrack.SlackBuild
+++ b/misc/rarcrack/rarcrack.SlackBuild
@@ -48,9 +48,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/rarcrack/rarcrack.info b/misc/rarcrack/rarcrack.info
index 6a7fc5fd79..be31b50f2c 100644
--- a/misc/rarcrack/rarcrack.info
+++ b/misc/rarcrack/rarcrack.info
@@ -7,4 +7,4 @@ DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/rbutil/doinst.sh b/misc/rbutil/doinst.sh
index 19400050fd..4a25de5e6f 100644
--- a/misc/rbutil/doinst.sh
+++ b/misc/rbutil/doinst.sh
@@ -1,3 +1,7 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
if [ -x /usr/bin/gtk-update-icon-cache ]; then
/usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
diff --git a/misc/rbutil/patches/bundled-licenses.patch b/misc/rbutil/patches/bundled-licenses.patch
new file mode 100644
index 0000000000..1bb1b970ae
--- /dev/null
+++ b/misc/rbutil/patches/bundled-licenses.patch
@@ -0,0 +1,38 @@
+diff --git a/utils/rbutilqt/rbutilqt.cpp b/utils/rbutilqt/rbutilqt.cpp
+--- a/utils/rbutilqt/rbutilqt.cpp
++++ b/utils/rbutilqt/rbutilqt.cpp
+@@ -303,21 +303,13 @@
+
+ QString html = "<p>" + tr("Libraries used") + "</p>";
+ html += "<ul>";
+- html += "<li>Speex: <a href='#speex'>Speex License</a></li>";
+ html += "<li>bspatch: <a href='#bspatch'>bspatch License</a></li>";
+- html += "<li>bzip2: <a href='#bzip2'>bzip2 License</a></li>";
+- html += "<li>mspack: <a href='#lgpl2'>LGPL v2.1 License</a></li>";
+- html += "<li>quazip: <a href='#lgpl2'>LGPL v2.1 License</a></li>";
+- html += "<li>tomcrypt: <a href='#tomcrypt'>Tomcrypt License</a></li>";
+ html += "<li>CuteLogger: <a href='#lgpl2'>LGPL v2.1 License</a></li>";
+ html += "</ul>";
+ about.browserLicenses->insertHtml(html);
+
+ QMap<QString, QString> licenses;
+- licenses[":/docs/COPYING.SPEEX"] = "<a id='speex'>Speex License</a>";
+ licenses[":/docs/lgpl-2.1.txt"] = "<a id='lgpl2'>LGPL v2.1</a>";
+- licenses[":/docs/LICENSE.TOMCRYPT"] = "<a id='tomcrypt'>Tomcrypt License</a>";
+- licenses[":/docs/LICENSE.BZIP2"] = "<a id='bzip2'>bzip2 License</a>";
+ licenses[":/docs/LICENSE.BSPATCH"] = "<a id='bspatch'>bspatch License</a>";
+
+ for (auto it = licenses.keyBegin(); it != licenses.keyEnd(); ++it) {
+diff --git a/utils/rbutilqt/rbutilqt.qrc b/utils/rbutilqt/rbutilqt.qrc
+--- a/utils/rbutilqt/rbutilqt.qrc
++++ b/utils/rbutilqt/rbutilqt.qrc
+@@ -3,9 +3,6 @@
+ <file alias="docs/CREDITS">../../docs/CREDITS</file>
+ <file alias="docs/gpl-2.0.html">../../docs/gpl-2.0.html</file>
+ <file alias="docs/lgpl-2.1.txt">logger/LICENSE.LGPL</file>
+- <file alias="docs/COPYING.SPEEX">../../lib/rbcodec/codecs/libspeex/COPYING</file>
+- <file alias="docs/LICENSE.TOMCRYPT">../../utils/tomcrypt/LICENSE</file>
+- <file alias="docs/LICENSE.BZIP2">../bzip2/LICENSE</file>
+ <file alias="docs/LICENSE.BSPATCH">../bspatch/LICENSE</file>
+ <file alias="docs/changelog.txt">changelog.txt</file>
+ </qresource>
diff --git a/misc/rbutil/patches/rbutil-1.4.1-quazip.patch b/misc/rbutil/patches/rbutil-1.4.1-quazip.patch
deleted file mode 100644
index 596127c340..0000000000
--- a/misc/rbutil/patches/rbutil-1.4.1-quazip.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-This patch is a simplified version of a patch I have sent upstream.
-http://gerrit.rockbox.org/1825
-
--- Chewi
-
-diff -Naur a/base/ziputil.cpp b/base/ziputil.cpp
---- a/base/ziputil.cpp 2019-11-10 06:45:49.000000000 +0000
-+++ b/base/ziputil.cpp 2019-12-04 22:38:34.443112450 +0000
-@@ -22,9 +22,9 @@
- #include "progressloggerinterface.h"
- #include "Logger.h"
-
--#include "quazip/quazip.h"
--#include "quazip/quazipfile.h"
--#include "quazip/quazipfileinfo.h"
-+#include <quazip5/quazip.h>
-+#include <quazip5/quazipfile.h>
-+#include <quazip5/quazipfileinfo.h>
-
-
- ZipUtil::ZipUtil(QObject* parent) : ArchiveUtil(parent)
-diff -Naur a/base/ziputil.h b/base/ziputil.h
---- a/base/ziputil.h 2019-11-10 06:45:49.000000000 +0000
-+++ b/base/ziputil.h 2019-12-04 22:38:34.443112450 +0000
-@@ -21,9 +21,9 @@
-
- #include <QtCore>
- #include "archiveutil.h"
--#include "quazip/quazip.h"
--#include "quazip/quazipfile.h"
--#include "quazip/quazipfileinfo.h"
-+#include <quazip5/quazip.h>
-+#include <quazip5/quazipfile.h>
-+#include <quazip5/quazipfileinfo.h>
-
- class ZipUtil : public ArchiveUtil
- {
-diff -Naur a/rbutilqt.pro b/rbutilqt.pro
---- a/rbutilqt.pro 2019-11-10 06:45:50.000000000 +0000
-+++ b/rbutilqt.pro 2019-12-04 22:43:30.144259710 +0000
-@@ -131,7 +131,7 @@
-
- DEPENDPATH = $$INCLUDEPATH
-
--LIBS += -L$$OUT_PWD -L$$MYLIBBUILDDIR
-+LIBS += -L$$OUT_PWD -L$$MYLIBBUILDDIR -lquazip5
- # append all RBLIBS to LIBS
- for(rblib, RBLIBS) {
- LIBS += -l$$rblib
-@@ -142,7 +142,6 @@
-
- # on win32 libz is linked implicitly.
- !win32 {
-- LIBS += -lz
- }
-
- # Add a (possibly found) libspeex now, don't do this before -lrbspeex!
-@@ -271,5 +270,4 @@
-
- # source files are separate.
- include(rbutilqt.pri)
--include(quazip/quazip.pri)
- include(logger/logger.pri)
diff --git a/misc/rbutil/patches/rbutil-1.5.1-cmake.patch b/misc/rbutil/patches/rbutil-1.5.1-cmake.patch
new file mode 100644
index 0000000000..276dba7e61
--- /dev/null
+++ b/misc/rbutil/patches/rbutil-1.5.1-cmake.patch
@@ -0,0 +1,32 @@
+diff -Naur a/utils/CMakeLists.txt b/utils/CMakeLists.txt
+--- a/utils/CMakeLists.txt 2022-04-18 20:05:44.073208000 +0100
++++ b/utils/CMakeLists.txt 2022-07-07 16:19:17.378055916 +0100
+@@ -358,22 +358,6 @@
+ )
+ target_include_directories(rbtomcrypt PUBLIC ${CMAKE_CURRENT_LIST_DIR}/tomcrypt/src/headers)
+
+-add_library(skin_parser
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_buffer.c
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_buffer.h
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_debug.c
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_debug.h
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_parser.c
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_parser.h
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_scan.c
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_scan.h
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/symbols.h
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/tag_table.c
+- ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/tag_table.h
+- )
+-target_include_directories(skin_parser PUBLIC ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser)
+-target_compile_definitions(skin_parser PUBLIC __PCTOOL__)
+-
+ # target will always be build. File is only updated when contents change.
+ add_custom_target(gitversion.h
+ COMMENT "Updating gitversion.h"
+@@ -391,5 +375,3 @@
+ include(${CMAKE_CURRENT_LIST_DIR}/cmake/deploy.cmake)
+ include(${CMAKE_CURRENT_LIST_DIR}/cmake/QtTest.cmake)
+ add_subdirectory(rbutilqt)
+-add_subdirectory(themeeditor)
+-
diff --git a/misc/rbutil/patches/rbutil-1.5.1-headers.patch b/misc/rbutil/patches/rbutil-1.5.1-headers.patch
new file mode 100644
index 0000000000..ff7ac8760f
--- /dev/null
+++ b/misc/rbutil/patches/rbutil-1.5.1-headers.patch
@@ -0,0 +1,17 @@
+https://bugs.gentoo.org/830559
+https://www.rockbox.org/tracker/task/13358
+
+Note: This may need tweaking for non-Linux platforms.
+
+diff --git a/utils/sansapatcher/sansaio.h b/utils/sansapatcher/sansaio.h
+index 61e2f1d1b2..327f8fbd18 100644
+--- a/utils/sansapatcher/sansaio.h
++++ b/utils/sansapatcher/sansaio.h
+@@ -23,6 +23,7 @@
+ #define __SANSAIO_H
+
+ #include <stdint.h>
++#include <sys/types.h>
+ #if !defined(_MSC_VER)
+ #include <unistd.h> /* not available on MSVC */
+ #endif
diff --git a/misc/rbutil/patches/rbutil-1.5.1-system-quazip.patch b/misc/rbutil/patches/rbutil-1.5.1-system-quazip.patch
new file mode 100644
index 0000000000..84b9655c0c
--- /dev/null
+++ b/misc/rbutil/patches/rbutil-1.5.1-system-quazip.patch
@@ -0,0 +1,150 @@
+From 930293a899825ae552370a060dd04117ebc5fdae Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Thu, 7 Jul 2022 21:52:54 +0100
+Subject: [PATCH] rbutil: Add USE_SYSTEM_QUAZIP option to use system-wide
+ QuaZIP
+
+QuaZIP is included in several major Linux distributions and packaging
+policies strongly oppose bundling of libraries.
+
+Change-Id: I8d454784dc4b244f4dd8aa18deb3350a29aaab77
+---
+ docs/CREDITS | 1 +
+ utils/rbutilqt/CMakeLists.txt | 65 ++++++++++++++++++---------------
+ utils/rbutilqt/base/ziputil.cpp | 6 +--
+ utils/rbutilqt/base/ziputil.h | 6 +--
+ 4 files changed, 43 insertions(+), 35 deletions(-)
+
+diff --git a/docs/CREDITS b/docs/CREDITS
+index 6f7c23fc7e..3a6fcb83b9 100644
+--- a/docs/CREDITS
++++ b/docs/CREDITS
+@@ -710,6 +710,7 @@ Marc Aarts
+ Fabrice Bellard
+ Selami Dinçer
+ Matej Golian
++James Le Cuirot
+
+ The libmad team
+ The wavpack team
+diff --git a/utils/rbutilqt/CMakeLists.txt b/utils/rbutilqt/CMakeLists.txt
+index 41954cb9ee..350790109b 100644
+--- a/utils/rbutilqt/CMakeLists.txt
++++ b/utils/rbutilqt/CMakeLists.txt
+@@ -255,9 +255,43 @@ if(APPLE)
+ ${CMAKE_CURRENT_LIST_DIR}/base/ttscarbon.h)
+ endif()
+
++option(USE_SYSTEM_QUAZIP "Use system QuaZIP library" OFF)
++if(USE_SYSTEM_QUAZIP)
++ find_package(QuaZip-Qt5 REQUIRED)
++ set(QUAZIP_LIBRARY QuaZip::QuaZip)
++else()
++ # TODO: Upstream has cmake support, use that instead.
++ add_library(quazip
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/ioapi.h
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/minizip_crypt.h
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/qioapi.cpp
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazip.cpp
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipfile.cpp
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipfile.h
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipfileinfo.cpp
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipfileinfo.h
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazip_global.h
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazip.h
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipnewinfo.cpp
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipnewinfo.h
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/unzip.c
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/unzip.h
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/zip.c
++ ${CMAKE_CURRENT_LIST_DIR}/quazip/zip.h
++ )
++ target_include_directories(quazip PUBLIC ${CMAKE_CURRENT_LIST_DIR}/quazip)
++ target_link_libraries(quazip z Qt${QT_VERSION_MAJOR}::Core)
++ if(QT_VERSION_MAJOR EQUAL 6)
++ target_link_libraries(quazip Qt${QT_VERSION_MAJOR}::Core5Compat)
++ endif()
++ target_compile_definitions(quazip PUBLIC QUAZIP_STATIC)
++ set_property(TARGET quazip PROPERTY AUTOMOC ON)
++ set(QUAZIP_LIBRARY quazip)
++endif()
++
+ target_link_libraries(rbbase
+- cutelogger quazip mspack bspatch rbspeex voicefont
+- sansapatcher ipodpatcher chinachippatcher
++ cutelogger ${QUAZIP_LIBRARY} mspack bspatch rbspeex
++ voicefont sansapatcher ipodpatcher chinachippatcher
+ mkamsboot mkimxboot mkmpioboot mktccboot mks5lboot
+ Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network)
+ target_include_directories(rbbase PUBLIC ${CMAKE_CURRENT_LIST_DIR}/base)
+@@ -298,33 +332,6 @@ target_link_libraries(cutelogger PUBLIC Qt${QT_VERSION_MAJOR}::Core)
+ target_compile_definitions(cutelogger PUBLIC CUTELOGGER_STATIC)
+ set_property(TARGET cutelogger PROPERTY AUTOMOC ON)
+
+-# TODO: Upstream has cmake support, use that instead.
+-add_library(quazip
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/ioapi.h
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/minizip_crypt.h
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/qioapi.cpp
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazip.cpp
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipfile.cpp
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipfile.h
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipfileinfo.cpp
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipfileinfo.h
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazip_global.h
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazip.h
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipnewinfo.cpp
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/quazipnewinfo.h
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/unzip.c
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/unzip.h
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/zip.c
+- ${CMAKE_CURRENT_LIST_DIR}/quazip/zip.h
+- )
+-target_include_directories(quazip PUBLIC ${CMAKE_CURRENT_LIST_DIR}/quazip)
+-target_link_libraries(quazip z Qt${QT_VERSION_MAJOR}::Core)
+-if(QT_VERSION_MAJOR EQUAL 6)
+- target_link_libraries(quazip Qt${QT_VERSION_MAJOR}::Core5Compat)
+-endif()
+-target_compile_definitions(quazip PUBLIC QUAZIP_STATIC)
+-set_property(TARGET quazip PROPERTY AUTOMOC ON)
+-
+ add_library(mspack
+ #mspack/cabc.c
+ mspack/cabd.c
+diff --git a/utils/rbutilqt/base/ziputil.cpp b/utils/rbutilqt/base/ziputil.cpp
+index e285446711..877a861253 100644
+--- a/utils/rbutilqt/base/ziputil.cpp
++++ b/utils/rbutilqt/base/ziputil.cpp
+@@ -22,9 +22,9 @@
+ #include "progressloglevels.h"
+ #include "Logger.h"
+
+-#include "quazip/quazip.h"
+-#include "quazip/quazipfile.h"
+-#include "quazip/quazipfileinfo.h"
++#include <quazip.h>
++#include <quazipfile.h>
++#include <quazipfileinfo.h>
+
+
+ ZipUtil::ZipUtil(QObject* parent) : ArchiveUtil(parent)
+diff --git a/utils/rbutilqt/base/ziputil.h b/utils/rbutilqt/base/ziputil.h
+index 73a87a820a..ea32ca42c3 100644
+--- a/utils/rbutilqt/base/ziputil.h
++++ b/utils/rbutilqt/base/ziputil.h
+@@ -21,9 +21,9 @@
+
+ #include <QtCore>
+ #include "archiveutil.h"
+-#include "quazip/quazip.h"
+-#include "quazip/quazipfile.h"
+-#include "quazip/quazipfileinfo.h"
++#include <quazip.h>
++#include <quazipfile.h>
++#include <quazipfileinfo.h>
+
+ class ZipUtil : public ArchiveUtil
+ {
+--
+2.35.1
+
diff --git a/misc/rbutil/patches/system-bzip2.patch b/misc/rbutil/patches/system-bzip2.patch
new file mode 100644
index 0000000000..98189d2566
--- /dev/null
+++ b/misc/rbutil/patches/system-bzip2.patch
@@ -0,0 +1,12 @@
+diff --git a/utils/bspatch/bspatch.c b/utils/bspatch/bspatch.c
+--- a/utils/bspatch/bspatch.c
++++ b/utils/bspatch/bspatch.c
+@@ -30,7 +30,7 @@
+ #include <stdarg.h>
+ #include <sys/types.h>
+ #endif
+-#include "../bzip2/bzlib.h"
++#include <bzlib.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
diff --git a/misc/rbutil/patches/system-mspack.patch b/misc/rbutil/patches/system-mspack.patch
new file mode 100644
index 0000000000..cd7e3d0045
--- /dev/null
+++ b/misc/rbutil/patches/system-mspack.patch
@@ -0,0 +1,118 @@
+diff --git a/utils/rbutilqt/CMakeLists.txt b/utils/rbutilqt/CMakeLists.txt
+--- a/utils/rbutilqt/CMakeLists.txt
++++ b/utils/rbutilqt/CMakeLists.txt
+@@ -289,8 +289,53 @@
+ set(QUAZIP_LIBRARY quazip)
+ endif()
+
++find_package(PkgConfig REQUIRED)
++pkg_check_modules(MSPACK libmspack)
++if(NOT ${MSPACK_FOUND})
++ add_library(mspack
++ #mspack/cabc.c
++ mspack/cabd.c
++ mspack/cab.h
++ #mspack/chmc.c
++ #mspack/chmd.c
++ #mspack/chm.h
++ mspack/des.h
++ #mspack/hlpc.c
++ #mspack/hlpd.c
++ #mspack/hlp.h
++ #mspack/kwajc.c
++ #mspack/kwajd.c
++ #mspack/kwaj.h
++ #mspack/litc.c
++ #mspack/litd.c
++ #mspack/lit.h
++ #mspack/lzssd.c
++ #mspack/lzss.h
++ mspack/lzxc.c
++ mspack/lzxd.c
++ mspack/lzx.h
++ mspack/mspack.h
++ mspack/mszipc.c
++ mspack/mszipd.c
++ mspack/mszip.h
++ mspack/qtmd.c
++ mspack/qtm.h
++ mspack/readbits.h
++ mspack/readhuff.h
++ mspack/sha.h
++ mspack/system-mspack.c
++ mspack/system-mspack.h
++ #mspack/szddc.c
++ #mspack/szddd.c
++ #mspack/szdd.h
++ )
++
++ target_include_directories(mspack PUBLIC ${CMAKE_CURRENT_LIST_DIR}/mspack)
++ set(MSPACK_LIBRARIES mspack)
++endif()
++
+ target_link_libraries(rbbase
+- cutelogger ${QUAZIP_LIBRARY} mspack bspatch rbspeex
++ cutelogger ${QUAZIP_LIBRARY} ${MSPACK_LIBRARIES} bspatch rbspeex
+ voicefont sansapatcher ipodpatcher chinachippatcher
+ mkamsboot mkimxboot mkmpioboot mktccboot mks5lboot
+ Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Network)
+@@ -332,47 +377,6 @@ target_link_libraries(cutelogger PUBLIC Qt${QT_VERSION_MAJOR}::Core)
+ target_compile_definitions(cutelogger PUBLIC CUTELOGGER_STATIC)
+ set_property(TARGET cutelogger PROPERTY AUTOMOC ON)
+
+-add_library(mspack
+- #mspack/cabc.c
+- mspack/cabd.c
+- mspack/cab.h
+- #mspack/chmc.c
+- #mspack/chmd.c
+- #mspack/chm.h
+- mspack/des.h
+- #mspack/hlpc.c
+- #mspack/hlpd.c
+- #mspack/hlp.h
+- #mspack/kwajc.c
+- #mspack/kwajd.c
+- #mspack/kwaj.h
+- #mspack/litc.c
+- #mspack/litd.c
+- #mspack/lit.h
+- #mspack/lzssd.c
+- #mspack/lzss.h
+- mspack/lzxc.c
+- mspack/lzxd.c
+- mspack/lzx.h
+- mspack/mspack.h
+- mspack/mszipc.c
+- mspack/mszipd.c
+- mspack/mszip.h
+- mspack/qtmd.c
+- mspack/qtm.h
+- mspack/readbits.h
+- mspack/readhuff.h
+- mspack/sha.h
+- mspack/system-mspack.c
+- mspack/system-mspack.h
+- #mspack/szddc.c
+- #mspack/szddd.c
+- #mspack/szdd.h
+- )
+-
+-target_include_directories(mspack PUBLIC ${CMAKE_CURRENT_LIST_DIR}/mspack)
+-
+-
+ # Unit tests
+ add_executable(test_compareversion
+ base/utils.cpp
+diff --git a/utils/rbutilqt/base/mspackutil.h b/utils/rbutilqt/base/mspackutil.h
+--- a/utils/rbutilqt/base/mspackutil.h
++++ b/utils/rbutilqt/base/mspackutil.h
+@@ -21,7 +21,7 @@
+
+ #include <QtCore>
+ #include "archiveutil.h"
+-#include "mspack/mspack.h"
++#include <mspack.h>
+
+ class MsPackUtil : public ArchiveUtil
+ {
diff --git a/misc/rbutil/patches/system-tomcrypt.patch b/misc/rbutil/patches/system-tomcrypt.patch
new file mode 100644
index 0000000000..cdff54f832
--- /dev/null
+++ b/misc/rbutil/patches/system-tomcrypt.patch
@@ -0,0 +1,83 @@
+diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
+--- a/utils/CMakeLists.txt
++++ b/utils/CMakeLists.txt
+@@ -264,7 +264,7 @@
+ )
+
+ target_include_directories(sbtools PUBLIC ${CMAKE_CURRENT_LIST_DIR}/imxtools/sbtools)
+-target_link_libraries(sbtools PUBLIC rbtomcrypt)
++target_link_libraries(sbtools PUBLIC tomcrypt)
+
+ add_library(mkmpioboot
+ mkmpioboot/mkmpioboot.c
+@@ -328,35 +328,41 @@ else()
+ message("-- Found libbz2: ${LIBBZ2}")
+ endif()
+
+-add_library(rbtomcrypt
+- tomcrypt/src/ciphers/aes/aes.c
+- tomcrypt/src/ciphers/aes/aes_tab.c
+- tomcrypt/src/misc/crypt/crypt_argchk.c
+- tomcrypt/src/misc/crypt/crypt_register_cipher.c
+- tomcrypt/src/misc/crypt/crypt_cipher_is_valid.c
+- tomcrypt/src/misc/crypt/crypt_cipher_descriptor.c
+- tomcrypt/src/misc/zeromem.c
+- tomcrypt/src/misc/compare_testvector.c
+- tomcrypt/src/modes/cbc/cbc_start.c
+- tomcrypt/src/modes/cbc/cbc_decrypt.c
+- tomcrypt/src/modes/cbc/cbc_encrypt.c
+- tomcrypt/src/hashes/sha1.c
+- tomcrypt/src/headers/tomcrypt_argchk.h
+- tomcrypt/src/headers/tomcrypt_cfg.h
+- tomcrypt/src/headers/tomcrypt_cipher.h
+- tomcrypt/src/headers/tomcrypt_custom.h
+- tomcrypt/src/headers/tomcrypt.h
+- tomcrypt/src/headers/tomcrypt_hash.h
+- tomcrypt/src/headers/tomcrypt_mac.h
+- tomcrypt/src/headers/tomcrypt_macros.h
+- tomcrypt/src/headers/tomcrypt_math.h
+- tomcrypt/src/headers/tomcrypt_misc.h
+- tomcrypt/src/headers/tomcrypt_pkcs.h
+- tomcrypt/src/headers/tomcrypt_pk.h
+- tomcrypt/src/headers/tomcrypt_private.h
+- tomcrypt/src/headers/tomcrypt_prng.h
+- )
+-target_include_directories(rbtomcrypt PUBLIC ${CMAKE_CURRENT_LIST_DIR}/tomcrypt/src/headers)
++find_library(LIBTOMCRYPT tomcrypt)
++if(${LIBTOMCRYPT} STREQUAL "LIBTOMCRYPT-NOTFOUND")
++ message("-- tomcrypt not found, building our own")
++ add_library(tomcrypt
++ tomcrypt/src/ciphers/aes/aes.c
++ tomcrypt/src/ciphers/aes/aes_tab.c
++ tomcrypt/src/misc/crypt/crypt_argchk.c
++ tomcrypt/src/misc/crypt/crypt_register_cipher.c
++ tomcrypt/src/misc/crypt/crypt_cipher_is_valid.c
++ tomcrypt/src/misc/crypt/crypt_cipher_descriptor.c
++ tomcrypt/src/misc/zeromem.c
++ tomcrypt/src/misc/compare_testvector.c
++ tomcrypt/src/modes/cbc/cbc_start.c
++ tomcrypt/src/modes/cbc/cbc_decrypt.c
++ tomcrypt/src/modes/cbc/cbc_encrypt.c
++ tomcrypt/src/hashes/sha1.c
++ tomcrypt/src/headers/tomcrypt_argchk.h
++ tomcrypt/src/headers/tomcrypt_cfg.h
++ tomcrypt/src/headers/tomcrypt_cipher.h
++ tomcrypt/src/headers/tomcrypt_custom.h
++ tomcrypt/src/headers/tomcrypt.h
++ tomcrypt/src/headers/tomcrypt_hash.h
++ tomcrypt/src/headers/tomcrypt_mac.h
++ tomcrypt/src/headers/tomcrypt_macros.h
++ tomcrypt/src/headers/tomcrypt_math.h
++ tomcrypt/src/headers/tomcrypt_misc.h
++ tomcrypt/src/headers/tomcrypt_pkcs.h
++ tomcrypt/src/headers/tomcrypt_pk.h
++ tomcrypt/src/headers/tomcrypt_private.h
++ tomcrypt/src/headers/tomcrypt_prng.h
++ )
++target_include_directories(tomcrypt PUBLIC ${CMAKE_CURRENT_LIST_DIR}/tomcrypt/src/headers)
++else()
++ message("-- Found libtomcrypt: ${LIBTOMCRYPT}")
++endif()
+
+ add_library(skin_parser
+ ${CMAKE_CURRENT_LIST_DIR}/../lib/skin_parser/skin_buffer.c
diff --git a/misc/rbutil/rbutil.SlackBuild b/misc/rbutil/rbutil.SlackBuild
index 9665de1a6f..37cee5c07c 100644
--- a/misc/rbutil/rbutil.SlackBuild
+++ b/misc/rbutil/rbutil.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for RockboxUtility
-# Copyright 2020-2021 Kyle Guinn <elyk03@gmail.com>
+# Copyright 2020-2022 Kyle Guinn <elyk03@gmail.com>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,8 +26,8 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rbutil
SRCNAM=RockboxUtility
-VERSION=${VERSION:-1.4.1}
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-1.5.1}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -39,24 +39,18 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
fi
TMP=${TMP:-/tmp/SBo}
-PKG=$TMP/package-$PRGNAM-$VERSION
+PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-DOCS="docs/COPYING"
+DOCS="docs/COPYING docs/CREDITS utils/rbutilqt/changelog.txt"
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i586" ]; then
+if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
@@ -75,49 +69,60 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $SRCNAM-v$VERSION
+rm -rf $SRCNAM-v$VERSION-src
tar xvf $CWD/$SRCNAM-v$VERSION-src.tar.bz2
-cd $SRCNAM-v$VERSION
+cd $SRCNAM-v$VERSION-src
chown -R root:root .
chmod -R u+w,go-w,a+rX-st .
-cd rbutil/rbutilqt
-
# Use the system quazip. Thanks to gentoo.
-patch -p1 < $CWD/patches/rbutil-1.4.1-quazip.patch
-sed -i 's/quazip5/quazip/' base/ziputil.cpp
-sed -i 's/quazip5/quazip/' base/ziputil.h
-sed -i 's/ -lquazip5//' rbutilqt.pro
-sed -i 's/\$\$_PRO_FILE_PWD_\/zlib//' rbutilqt.pro
-echo "INCLUDEPATH += $(pkg-config --cflags-only-I quazip1-qt5 | sed s/-I//g)" >> rbutilqt.pro
-echo "LIBS += $(pkg-config --libs quazip1-qt5)" >> rbutilqt.pro
-rm -rf quazip zlib
-
-# Respect SLKCFLAGS, add -fcommon for gcc >= 10.x
-sed -i "s/-O3/$SLKCFLAGS -fcommon/" ../mkimxboot/Makefile
+patch -p1 < $CWD/patches/rbutil-1.5.1-system-quazip.patch
+patch -p1 < $CWD/patches/rbutil-1.5.1-cmake.patch
+patch -p1 < $CWD/patches/rbutil-1.5.1-headers.patch
+
+# Use the system bzip2, only for use with bspatch
+# (another 3rd party program, modified by Rockbox
+# for use as a library, so cannot be unbundled).
+patch -p1 < $CWD/patches/system-bzip2.patch
+
+# Use the system mspack.
+patch -p1 < $CWD/patches/system-mspack.patch
+
+# Use the system tomcrypt.
+patch -p1 < $CWD/patches/system-tomcrypt.patch
+
+# Ensure we don't build/use these bundled libs.
+patch -p1 < $CWD/patches/bundled-licenses.patch
+rm -rf \
+ lib/rbcodec/codecs/libspeex \
+ utils/rbutilqt/mspack \
+ utils/rbutilqt/quazip \
+ utils/rbutilqt/zlib \
+ utils/bzip2 \
+ utils/tomcrypt \
# Decrease the amount of log spam.
-sed -i 's/Logger::Debug/Logger::Warning/' logger/AbstractAppender.cpp
-
-# Build the translations first to avoid warnings.
-lrelease rbutilqt.pro
-
-# SLKCFLAGS aren't always respected.
-# $CC is not quoted properly. "ccache gcc" (the default) will fail.
-qmake \
- QMAKE_CFLAGS="$SLKCFLAGS" \
- QMAKE_CXXFLAGS="$SLKCFLAGS" \
- -config noccache \
- rbutilqt.pro
-make
-
-install -D -m 0755 -s RockboxUtility $PKG/usr/bin/RockboxUtility
-# Some of these icons aren't exactly square.
-for i in 16 32 48 64 128 256; do
- install -D -m 0644 icons/rockbox-$i.png $PKG/usr/share/icons/hicolor/$i\x$i/apps/rockbox.png
-done
-
+sed -i 's/Logger::Debug/Logger::Warning/' utils/rbutilqt/logger/src/AbstractAppender.cpp
+
+mkdir -p utils/build
+cd utils/build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_RULE_MESSAGES=OFF \
+ -DCMAKE_VERBOSE_MAKEFILE=TRUE \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DCCACHE_PROGRAM=FALSE \
+ -DUSE_SYSTEM_QUAZIP=ON \
+ -DCMAKE_EXE_LINKER_FLAGS="-lgmp" \
+ ..
+ make
+ install -D -m 0755 -s rbutilqt/RockboxUtility $PKG/usr/bin/RockboxUtility
cd ../..
+install -D -m 0644 utils/rbutilqt/RockboxUtility.desktop $PKG/usr/share/applications/RockboxUtility.desktop
+install -D -m 0644 docs/logo/rockbox-clef.svg $PKG/usr/share/icons/hicolor/scalable/apps/rockbox-clef.svg
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a $DOCS $PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/misc/rbutil/rbutil.info b/misc/rbutil/rbutil.info
index 7eb6347287..2df31d939b 100644
--- a/misc/rbutil/rbutil.info
+++ b/misc/rbutil/rbutil.info
@@ -1,10 +1,10 @@
PRGNAM="rbutil"
-VERSION="1.4.1"
+VERSION="1.5.1"
HOMEPAGE="https://www.rockbox.org/wiki/RockboxUtility"
-DOWNLOAD="https://download.rockbox.org/rbutil/source/RockboxUtility-v1.4.1-src.tar.bz2"
-MD5SUM="0e29f60ee87f433087c6ead09dde81f3"
+DOWNLOAD="https://download.rockbox.org/rbutil/source/RockboxUtility-v1.5.1-src.tar.bz2"
+MD5SUM="e995b21923a19975b5b10987de7af528"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="libmspack libtomcrypt"
MAINTAINER="Kyle Guinn"
EMAIL="elyk03@gmail.com"
diff --git a/misc/readesm/README b/misc/readesm/README
deleted file mode 100644
index 3a0d21b0a7..0000000000
--- a/misc/readesm/README
+++ /dev/null
@@ -1,5 +0,0 @@
-readesm shows the content of digital tachograph files.
-This program takes an ESM file (possible file extensions are .esm .dd
-.tgd or .add) downloaded from a digital tachograph or a driver card
-(used in the European Union for trucks > 3.5 tons) and converts it
-into human-readable form, either html or simple plaintext.
diff --git a/misc/readesm/readesm.info b/misc/readesm/readesm.info
deleted file mode 100644
index f91c8d7b4f..0000000000
--- a/misc/readesm/readesm.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="readesm"
-VERSION="2011.12pre1"
-HOMEPAGE="https://sourceforge.net/projects/readesm/"
-DOWNLOAD="https://downloads.sourceforge.net/readesm/readesm-2011.12pre1-Source.tar.bz2"
-MD5SUM="e3c00eea65205c6700f4b42aa320ad8d"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES=""
-MAINTAINER="Vitor Borrego"
-EMAIL="vitor@bitarus.allowed.org"
diff --git a/misc/recode/README b/misc/recode/README
index dee5e0dc21..7e971d8048 100644
--- a/misc/recode/README
+++ b/misc/recode/README
@@ -1,9 +1,12 @@
-The recode program recognizes or produces approximately 150 character sets
-and can convert almost any character set to almost any other. When exact
-translations are not possible, the program may get rid of offending characters
-or use approximations. Particular attention has been paid to the proper
-representation of French language diacritics.
+The recode program recognizes or produces approximately 150 character
+sets and can convert almost any character set to almost any other.
+When exact translations are not possible, the program may get rid of
+offending characters or use approximations. Particular attention has
+been paid to the proper representation of French language diacritics.
-Although we normally wouldn't put anything beta on SlackBuilds,
-this release fixes some long-standing bugs that everyone else has
-been patching for years.
+The original recode by pinard hasn't been updated in almost 10 years.
+It seems most distros have moved to a well-maintained fork by
+rrthomas and it's probably time we did too.
+
+NOTE: We are unable to update past 3.7.13 due to Slackware 15.0's
+autoconf being too old (2.69). recode-3.7.14+ requires autoconf 2.71+.
diff --git a/misc/recode/recode.SlackBuild b/misc/recode/recode.SlackBuild
index 8448ec2ce4..983cc10c81 100644
--- a/misc/recode/recode.SlackBuild
+++ b/misc/recode/recode.SlackBuild
@@ -2,6 +2,7 @@
# Copyright (c) 2007 Niki Kovacs <contact@kikinovak.net>
# Copyright 2014 Ryan P.C. McQuen, WA, <ryanpcmcquen@member.fsf.org>
+# Copyright 2023 Jeremy Hansen <jebrhansen+SBo@gmail.com>
#
# Slackware build script for recode
@@ -30,13 +31,18 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# 20220412 bkw: Modified by SlackBuilds.org, BUILD=4:
+# - use correct github URL.
+# - strip binary and library.
+# - remove useless ABOUT-NLS from doc dir.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=recode
-SRCNAM=Recode
-VERSION=${VERSION:-3.7_beta2}
-SRCVER=$(echo $VERSION | tr _ -)
-BUILD=${BUILD:-2}
+VERSION=${VERSION:-3.7.13}
+GNULIBVER=${GNULIBVER:-2752f1cb315fc461e3df263ab5bb03a354cf4308}
+BOOTSTRAPVER=${BOOTSTRAPVER:-037f83765b6e8f90dfabdfac4889be22a5a3f4a4}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -79,34 +85,39 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $SRCNAM-$SRCVER
-tar xvf $CWD/$SRCNAM-$SRCVER.tar.gz || tar xvf $CWD/v$SRCVER.tar.gz
-cd $SRCNAM-$SRCVER
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+# Extract git submodule archives to correct location
+tar xvf $CWD/gnulib-$GNULIBVER.tar.gz --strip-components=1 -C gnulib/
+tar xvf $CWD/bootstrap-$BOOTSTRAPVER.tar.gz --strip-components=1 -C gl-mod/bootstrap/
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
+ -o -perm 511 \) -exec chmod 755 {} \+ -o \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-# allow recode to be built on a gcc that is not ancient -ryan
-sed -i "s/bool ignore : 2;/bool ignore : 1;/g" ./src/recodext.h
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+
-# libdir and target are critical for x86_64
+./bootstrap --skip-po
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
--prefix=/usr \
- --enable-static=no \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
--infodir=/usr/info \
--mandir=/usr/man \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --enable-static=no \
--build=$ARCH-slackware-linux \
--host=$ARCH-slackware-linux \
--target=$ARCH-slackware-linux
make
-make install DESTDIR=$PKG
+make install-strip DESTDIR=$PKG
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
@@ -115,7 +126,7 @@ rm -f $PKG/usr/info/dir
gzip -9 $PKG/usr/info/*.info*
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a ABOUT-NLS AUTHORS COPYING* NEWS README THANKS TODO \
+cp -a AUTHORS COPYING* NEWS README THANKS TODO \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/recode/recode.info b/misc/recode/recode.info
index 87606f74d9..16e488d881 100644
--- a/misc/recode/recode.info
+++ b/misc/recode/recode.info
@@ -1,8 +1,12 @@
PRGNAM="recode"
-VERSION="3.7_beta2"
-HOMEPAGE="https://github.com/pinard/Recode"
-DOWNLOAD="https://github.com/pinard/Recode/archive/v3.7-beta2.tar.gz"
-MD5SUM="fd0e609d54fad968fcb52a8eca2d6bf0"
+VERSION="3.7.13"
+HOMEPAGE="https://github.com/rrthomas/recode"
+DOWNLOAD="https://github.com/rrthomas/recode/archive/refs/tags/v3.7.13/recode-3.7.13.tar.gz \
+ https://github.com/coreutils/gnulib/archive/2752f1c/gnulib-2752f1cb315fc461e3df263ab5bb03a354cf4308.tar.gz \
+ https://github.com/gnulib-modules/bootstrap/archive/037f837/bootstrap-037f83765b6e8f90dfabdfac4889be22a5a3f4a4.tar.gz"
+MD5SUM="3348e4f4328e828d75178af9ace44352 \
+ 042bd31255f32188cf1f0f599b6818a3 \
+ ed24221935b5a2aeb635e5541c1f2fa3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/recode/slack-desc b/misc/recode/slack-desc
index 30b08a8b40..afd1de0357 100644
--- a/misc/recode/slack-desc
+++ b/misc/recode/slack-desc
@@ -14,6 +14,6 @@ recode: When exact translations are not possible, the program may get rid of
recode: offending characters or use approximations. Particular attention has
recode: been paid to the proper representation of French language diacritics.
recode:
-recode: Homepage: https://github.com/pinard/Recode
+recode: Homepage: https://github.com/rrthomas/recode
recode:
recode:
diff --git a/misc/rlwrap/rlwrap.SlackBuild b/misc/rlwrap/rlwrap.SlackBuild
index 60e4c46810..dc80cf1763 100644
--- a/misc/rlwrap/rlwrap.SlackBuild
+++ b/misc/rlwrap/rlwrap.SlackBuild
@@ -9,7 +9,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rlwrap
-VERSION=${VERSION:-0.45.2}
+VERSION=${VERSION:-0.46.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -22,9 +22,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/rlwrap/rlwrap.info b/misc/rlwrap/rlwrap.info
index b094c58907..5fff7f7bba 100644
--- a/misc/rlwrap/rlwrap.info
+++ b/misc/rlwrap/rlwrap.info
@@ -1,8 +1,8 @@
PRGNAM="rlwrap"
-VERSION="0.45.2"
+VERSION="0.46.1"
HOMEPAGE="https://github.com/hanslub42/rlwrap"
-DOWNLOAD="https://github.com/hanslub42/rlwrap/archive/v0.45.2/rlwrap-0.45.2.tar.gz"
-MD5SUM="3ba62c3759552204131ed656977634f2"
+DOWNLOAD="https://github.com/hanslub42/rlwrap/archive/0.46.1/rlwrap-0.46.1.tar.gz"
+MD5SUM="7c585b2c90765326bc4d21a145575cb9"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/rmlint/README b/misc/rmlint/README
new file mode 100644
index 0000000000..de0bf3a1cc
--- /dev/null
+++ b/misc/rmlint/README
@@ -0,0 +1,6 @@
+rmlint is a "filesystem linting" tool that can find duplicates,
+unstripped binaries, and much more.
+
+It can be seen as an alternative to fdupes and rdfind, but much more
+powerful.
+
diff --git a/misc/rmlint/doinst.sh b/misc/rmlint/doinst.sh
new file mode 100644
index 0000000000..cefe3c48b7
--- /dev/null
+++ b/misc/rmlint/doinst.sh
@@ -0,0 +1,15 @@
+if [ -e usr/share/glib-2.0/schemas ]; then
+ if [ -x /usr/bin/glib-compile-schemas ]; then
+ /usr/bin/glib-compile-schemas usr/share/glib-2.0/schemas >/dev/null 2>&1
+ fi
+fi
+
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
+
+if [ -e usr/share/icons/hicolor/icon-theme.cache ]; then
+ if [ -x /usr/bin/gtk-update-icon-cache ]; then
+ /usr/bin/gtk-update-icon-cache -f usr/share/icons/hicolor >/dev/null 2>&1
+ fi
+fi
diff --git a/misc/readesm/readesm.SlackBuild b/misc/rmlint/rmlint.SlackBuild
index 7c94e5fb87..86ff585487 100644
--- a/misc/readesm/readesm.SlackBuild
+++ b/misc/rmlint/rmlint.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for readesm
+# Slackware build script for rmlint
-# Copyright 2013 Vitor Borrego Corroios, Portugal
+# Copyright 2023 Lockywolf
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -22,25 +22,23 @@
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=readesm
-VERSION=${VERSION:-2011.12pre1}
+PRGNAM=rmlint
+VERSION=${VERSION:-2.10.1}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -50,8 +48,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -59,6 +57,9 @@ elif [ "$ARCH" = "i686" ]; then
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
LIBDIRSUFFIX="64"
+elif [ "$ARCH" = "aarch64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
LIBDIRSUFFIX=""
@@ -69,38 +70,44 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION-Source
-tar xvf $CWD/$PRGNAM-$VERSION-Source.tar.bz2
-cd $PRGNAM-$VERSION-Source
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-cmake -G 'Unix Makefiles' -DCMAKE_INSTALL_PREFIX="/usr"
-
-# Fix http://sourceforge.net/p/readesm/bugs/2/ and http://sourceforge.net/p/readesm/bugs/4
-sed -i \
- -e "s,Block11Record.h,block11Record.h,g" \
- -e "s,Block13.h,block13.h,g" \
- -e "s,Block11.h,block11.h,g" \
- -e "s,view->load(QUrl(\"bla,\/\/view->load(Qurl(\"bla,g" \
- fileformat/DataTypes/block11Record.cpp \
- fileformat/VuBlocks/block{11,13}.{cpp,h} \
- fileformat/VuBlocks/vuBlockFactory.cpp \
- gui/mainWindow.cpp
-
-make clean
-make
-make install DESTDIR=$PKG
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+scons config CXXFLAGS="$SLKCFLAGS"
+
+# scons can use multiple jobs. For convenience, read MAKEFLAGS from the environment, if set
+JOBS="$( echo $MAKEFLAGS | sed 's,.*-j *\([0-9][0-9]*\)*.*,\1,' )"
+# or if no MAKEFLAGS, use the number of cores minus 1
+JOBS="${JOBS:-$(( $( nproc ) - 1 ))}"
+# or 1, if we really have one core
+[ "$JOBS" = "0" ] && JOBS=1
+
+scons --jobs="$JOBS" CXXFLAGS="$SLKCFLAGS"
+scons --prefix=${PKG}/usr install
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+mv ${PKG}/usr/share/man ${PKG}/usr/
+rm ${PKG}/usr/share/glib-2.0/schemas/gschemas.compiled
+
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
+rm -rf ./docs/_build
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a CHANGELOG COPYING README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a \
+ CHANGELOG.md COPYING README.rst docs \
+ $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/rmlint/rmlint.info b/misc/rmlint/rmlint.info
new file mode 100644
index 0000000000..d51185fa3d
--- /dev/null
+++ b/misc/rmlint/rmlint.info
@@ -0,0 +1,10 @@
+PRGNAM="rmlint"
+VERSION="2.10.1"
+HOMEPAGE="https://rmlint.readthedocs.io/"
+DOWNLOAD="https://github.com/sahib/rmlint/archive/v2.10.1/rmlint-2.10.1.tar.gz"
+MD5SUM="ded893cfb1b24f2ec4b5525d6b92c298"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="Sphinx"
+MAINTAINER="Lockywolf"
+EMAIL="for_sbo.rmlint_2023-05-16@lockywolf.net"
diff --git a/misc/rmlint/slack-desc b/misc/rmlint/slack-desc
new file mode 100644
index 0000000000..7025f83857
--- /dev/null
+++ b/misc/rmlint/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+rmlint: rmlint (filesystem linter and deduplifier)
+rmlint:
+rmlint: rmlint is a high-performance linter for the file system, which helps
+rmlint: finding duplicates, unstripped binaries, and much more.
+rmlint:
+rmlint:
+rmlint:
+rmlint:
+rmlint:
+rmlint:
+rmlint:
diff --git a/misc/rsibreak/rsibreak.SlackBuild b/misc/rsibreak/rsibreak.SlackBuild
index 50777009cd..44525d3710 100644
--- a/misc/rsibreak/rsibreak.SlackBuild
+++ b/misc/rsibreak/rsibreak.SlackBuild
@@ -3,7 +3,7 @@
# Slackware build script for rsibreak
# Originally written by Roberto Neri <rneri@libero.it>
-# Copyright 2014-2021 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
+# Copyright 2014-2022 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,7 +26,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=rsibreak
-VERSION=${VERSION:-0.12.14}
+VERSION=${VERSION:-0.12.15}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -39,9 +39,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -86,7 +83,7 @@ cd build
-DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DMAN_INSTALL_DIR=/usr/man \
+ -DKDE_INSTALL_MANDIR=/usr/man \
-DCMAKE_BUILD_TYPE=Release \
..
make
@@ -97,7 +94,7 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a AUTHORS ChangeLog COPYING COPYING.DOC HACKING NEWS TODO \
+cp -a AUTHORS ChangeLog HACKING NEWS TODO \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/rsibreak/rsibreak.info b/misc/rsibreak/rsibreak.info
index 4474d24b44..4fef93d838 100644
--- a/misc/rsibreak/rsibreak.info
+++ b/misc/rsibreak/rsibreak.info
@@ -1,8 +1,8 @@
PRGNAM="rsibreak"
-VERSION="0.12.14"
+VERSION="0.12.15"
HOMEPAGE="https://userbase.kde.org/RSIBreak"
-DOWNLOAD="https://download.kde.org/stable/rsibreak/0.12/rsibreak-0.12.14.tar.xz"
-MD5SUM="a01507344dd558d0efbd2a202079f36d"
+DOWNLOAD="https://download.kde.org/stable/rsibreak/0.12/rsibreak-0.12.15.tar.xz"
+MD5SUM="8cd1b646552f2a5cadf0b6eb0ae45bc7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/rsnapshot/README b/misc/rsnapshot/README
index 115baf61cc..d544b99c7b 100644
--- a/misc/rsnapshot/README
+++ b/misc/rsnapshot/README
@@ -5,21 +5,22 @@ just a little more than the space of one full backup, plus
incrementals.
rnapshot requires both the editing of the /etc/rsnapshot.conf file and
-the creation of various scripts to run at the intervals specified in the
-config file. rsnapshot comes with a multitude of example scripts located
-in '/usr/doc/rsnapshot-1.4.2/utils' and has a well documented HOWTO at
-'/usr/doc/rsnapshot-1.4.2/rsnapshot-HOWTO.en.html'
-It is highly recommended for you to read this HOWTO prior to altering your
+the creation of various scripts to run at the intervals specified in
+the config file. rsnapshot comes with a multitude of example scripts
+located in '/usr/doc/rsnapshot-1.4.2/utils' and has a well documented
+HOWTO at '/usr/doc/rsnapshot-1.4.2/rsnapshot-HOWTO.en.html'. It is
+highly recommended for you to read this HOWTO prior to altering your
configuration.
-To get you up and running as quick as possible, I have provided a working
-config file and scripts located in '/usr/doc/rsnapshot-1.4.2/contrib'
-This configuration will create incremental backups every 4 hours and will
-store 6 hourly, 7 daily, 4 weekly, and 3 monthly backups at a time.
-All backups will be stored in the path '/backup' which you will most
-likely want to change to fit your setup. It is highly recommended that
-the backup location be a separate physical disk or remote location.
+To get you up and running as quick as possible, I have
+provided a working config file and scripts located in
+'/usr/doc/rsnapshot-1.4.2/contrib' This configuration will create
+incremental backups every 4 hours and will store 6 hourly, 7 daily,
+4 weekly, and 3 monthly backups at a time. All backups will be stored
+in the path '/backup' which you will most likely want to change to fit
+your setup. It is highly recommended that the backup location be a
+separate physical disk or remote location.
-rsnapshot is executed by adding entries into root's crontab.
-There is an example crontab in '/usr/doc/rsnapshot-1.4.2/contrib/crontab'
-with the necessary additions to run the scripts above.
+rsnapshot is executed by adding entries into root's crontab. There is
+an example crontab in '/usr/doc/rsnapshot-1.4.2/contrib/crontab' with
+the necessary additions to run the scripts above.
diff --git a/misc/samdump2/openssl_compat.patch b/misc/samdump2/openssl_compat.patch
new file mode 100644
index 0000000000..85dd163ffd
--- /dev/null
+++ b/misc/samdump2/openssl_compat.patch
@@ -0,0 +1,89 @@
+diff -Naur a/Makefile b/Makefile
+--- a/Makefile 2012-04-20 20:27:00.000000000 +0800
++++ b/Makefile 2018-01-30 12:12:55.114072617 +0800
+@@ -30,7 +30,7 @@
+ INSTALL = $(shell which install)
+ CC = $(shell which gcc)
+ CFLAGS = -Wall
+-LIBS = -lssl
++LIBS = -lssl -lcrypto
+
+ # Default target
+ all: build
+diff -Naur a/samdump2.c b/samdump2.c
+--- a/samdump2.c 2012-04-20 20:27:00.000000000 +0800
++++ b/samdump2.c 2018-01-30 12:10:49.627208011 +0800
+@@ -58,7 +58,7 @@
+
+ void str_to_key(unsigned char *str,unsigned char *key)
+ {
+- // void des_set_odd_parity(des_cblock *);
++ // void DES_set_odd_parity(DES_cblock *);
+ int i;
+
+ key[0] = str[0]>>1;
+@@ -72,7 +72,7 @@
+ for (i=0;i<8;i++) {
+ key[i] = (key[i]<<1);
+ }
+- des_set_odd_parity((des_cblock *)key);
++ DES_set_odd_parity((DES_cblock *)key);
+ }
+
+ /*
+@@ -210,8 +210,8 @@
+ unsigned char hbootkey[0x20];
+
+ /* Des */
+- des_key_schedule ks1, ks2;
+- des_cblock deskey1, deskey2;
++ DES_key_schedule ks1, ks2;
++ DES_cblock deskey1, deskey2;
+
+ int i, j;
+
+@@ -419,15 +419,15 @@
+
+ /* Get the two decrpt keys. */
+ sid_to_key1(rid,(unsigned char *)deskey1);
+- des_set_key_checked((des_cblock *)deskey1,ks1);
++ DES_set_key_checked((DES_cblock *)deskey1, &ks1);
+ sid_to_key2(rid,(unsigned char *)deskey2);
+- des_set_key_unchecked((des_cblock *)deskey2,ks2);
++ DES_set_key_unchecked((DES_cblock *)deskey2, &ks2);
+
+ /* Decrypt the lanman password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)obfkey,
+- (des_cblock *)fb, ks1, DES_DECRYPT);
+- des_ecb_encrypt((des_cblock *)(obfkey + 8),
+- (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)obfkey,
++ (DES_cblock *)fb, &ks1, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++ (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+
+
+
+@@ -472,16 +472,16 @@
+ if (lm_size != 0x14) {
+ /* Get the two decrpt keys. */
+ sid_to_key1(rid,(unsigned char *)deskey1);
+- des_set_key((des_cblock *)deskey1,ks1);
++ DES_set_key((DES_cblock *)deskey1, &ks1);
+ sid_to_key2(rid,(unsigned char *)deskey2);
+- des_set_key((des_cblock *)deskey2,ks2);
++ DES_set_key((DES_cblock *)deskey2, &ks2);
+ }
+
+ /* Decrypt the NT md4 password hash as two 8 byte blocks. */
+- des_ecb_encrypt((des_cblock *)obfkey,
+- (des_cblock *)fb, ks1, DES_DECRYPT);
+- des_ecb_encrypt((des_cblock *)(obfkey + 8),
+- (des_cblock *)&fb[8], ks2, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)obfkey,
++ (DES_cblock *)fb, &ks1, DES_DECRYPT);
++ DES_ecb_encrypt((DES_cblock *)(obfkey + 8),
++ (DES_cblock *)&fb[8], &ks2, DES_DECRYPT);
+
+ /* sf27 wrap to sf25 */
+ //sf27( obfkey, (int*)&rid, fb );
diff --git a/misc/samdump2/samdump2.SlackBuild b/misc/samdump2/samdump2.SlackBuild
index f158026a3b..a07c342bd8 100644
--- a/misc/samdump2/samdump2.SlackBuild
+++ b/misc/samdump2/samdump2.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -79,6 +79,8 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+patch -p1 < $CWD/openssl_compat.patch
+
make LIBS="-lcrypto" CFLAGS="$SLKCFLAGS"
install -d -m 755 $PKG/usr/bin
install samdump2 -m 755 $PKG/usr/bin
diff --git a/misc/sbo-templates/README b/misc/sbo-templates/README
deleted file mode 100644
index 5ba9671c22..0000000000
--- a/misc/sbo-templates/README
+++ /dev/null
@@ -1,2 +0,0 @@
-sbo-templates it's a tool that creates easy, fast and safe templates
-SlackBuilds files scripts.
diff --git a/misc/sbo-templates/sbo-templates.info b/misc/sbo-templates/sbo-templates.info
deleted file mode 100644
index 05b870c3b1..0000000000
--- a/misc/sbo-templates/sbo-templates.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="sbo-templates"
-VERSION="1.3.2"
-HOMEPAGE="https://gitlab.com/dslackw/sbo-templates"
-DOWNLOAD="https://gitlab.com/dslackw/sbo-templates/-/archive/1.3.2/sbo-templates-1.3.2.tar.gz"
-MD5SUM="bd0ed994ad6e73b8c698777fa12a6104"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="python3-pythondialog"
-MAINTAINER="Dimitris Zlatanidis"
-EMAIL="d.zlatanidis@gmail.com"
diff --git a/misc/sbo-templates/slack-desc b/misc/sbo-templates/slack-desc
deleted file mode 100644
index c9b914e301..0000000000
--- a/misc/sbo-templates/slack-desc
+++ /dev/null
@@ -1,19 +0,0 @@
-# HOW TO EDIT THIS FILE:
-# The "handy ruler" below makes it easier to edit a package description.
-# Line up the first '|' above the ':' following the base package name, and
-# the '|' on the right side marks the last column you can put a character in.
-# You must make exactly 11 lines for the formatting to be correct. It's also
-# customary to leave one space after the ':' except on otherwise blank lines.
-
- |-----handy-ruler------------------------------------------------------|
-sbo-templates: sbo-templates (SBo templates managing)
-sbo-templates:
-sbo-templates: sbo-templates it's a tool that creates easy, fast and safe templates
-sbo-templates: SlackBuild files scripts.
-sbo-templates:
-sbo-templates: Homepage: https://gitlab.com/dslackw/sbo-templates
-sbo-templates:
-sbo-templates:
-sbo-templates:
-sbo-templates:
-sbo-templates:
diff --git a/misc/scim-chewing/README b/misc/scim-chewing/README
deleted file mode 100644
index 4c464da958..0000000000
--- a/misc/scim-chewing/README
+++ /dev/null
@@ -1,2 +0,0 @@
-scim-chewing is New Chewing Engine for SCIM. New Chewing Input Method is
-a good Traditional Chinese intelligent phonetic input method.
diff --git a/misc/scim-chewing/gtk.patch b/misc/scim-chewing/gtk.patch
deleted file mode 100644
index dd65d6d64b..0000000000
--- a/misc/scim-chewing/gtk.patch
+++ /dev/null
@@ -1,859 +0,0 @@
-commit 3cbe332e6b15ed674513d0b28e1966ff2bae1b45
-Author: Andrew Lee (æŽå¥ç§‹) <ajqlee@debian.org>
-Date: Fri Jul 6 01:22:55 2012 +0800
-
- Import upstream snapshot.
-
-diff --git a/src/scim_chewing_imengine_setup.cpp b/src/scim_chewing_imengine_setup.cpp
-index 75a9f51..c14eb74 100644
---- a/src/scim_chewing_imengine_setup.cpp
-+++ b/src/scim_chewing_imengine_setup.cpp
-@@ -165,7 +165,10 @@ static GList *selKey_type_list = 0;
- static GList *selKey_num_list = 0;
- static GList *chieng_mode_list = 0;
- // static GtkWidget * __widget_show_candidate_comment= 0;
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+#else
- static GtkTooltips * __widget_tooltips = 0;
-+#endif
-
- static KeyboardConfigData __config_keyboards[] =
- {
-@@ -322,7 +325,11 @@ static GtkWidget *create_options_page()
- {
- GtkWidget *vbox;
-
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
-+#else
- vbox = gtk_vbox_new (FALSE, 0);
-+#endif
- gtk_widget_show (vbox);
-
- __widget_add_phrase_forward =
-@@ -336,9 +343,15 @@ static GtkWidget *create_options_page()
- G_CALLBACK( on_default_toggle_button_toggled ),
- &__config_add_phrase_forward );
-
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(
-+ __widget_add_phrase_forward,
-+ _( "Whether to add Phrase forward or not." ));
-+#else
- gtk_tooltips_set_tip(
- __widget_tooltips, __widget_add_phrase_forward,
- _( "Whether to add Phrase forward or not." ), NULL );
-+#endif
-
- __widget_phrase_choice_rearward =
- gtk_check_button_new_with_mnemonic( _( "_Rearward phrase choice" ) );
-@@ -351,9 +364,15 @@ static GtkWidget *create_options_page()
- G_CALLBACK( on_default_toggle_button_toggled ),
- &__config_phrase_choice_rearward );
-
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(
-+ __widget_phrase_choice_rearward,
-+ _( "The behavior for phrase choice to be rearward or not." ));
-+#else
- gtk_tooltips_set_tip(
- __widget_tooltips, __widget_phrase_choice_rearward,
- _( "The behavior for phrase choice to be rearward or not." ), NULL );
-+#endif
-
- __widget_auto_shift_cursor =
- gtk_check_button_new_with_mnemonic( _( "_Automatically shift cursor" ) );
-@@ -366,9 +385,15 @@ static GtkWidget *create_options_page()
- G_CALLBACK( on_default_toggle_button_toggled ),
- &__config_auto_shift_cursor );
-
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(
-+ __widget_auto_shift_cursor,
-+ _( "Automatically shift cursor after selection." ));
-+#else
- gtk_tooltips_set_tip(
- __widget_tooltips, __widget_auto_shift_cursor,
- _( "Automatically shift cursor after selection." ), NULL );
-+#endif
-
- __widget_esc_clean_all_buffer =
- gtk_check_button_new_with_mnemonic(_( "_Esc key to clean all buffer" ) );
-@@ -381,9 +406,15 @@ static GtkWidget *create_options_page()
- G_CALLBACK( on_default_toggle_button_toggled ),
- &__config_esc_clean_all_buffer );
-
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(
-+ __widget_esc_clean_all_buffer,
-+ _( "Assign Esc key to clean all keyboard buffer or not." ));
-+#else
- gtk_tooltips_set_tip(
- __widget_tooltips, __widget_esc_clean_all_buffer,
- _( "Assign Esc key to clean all keyboard buffer or not." ), NULL );
-+#endif
-
- __widget_space_as_selection =
- gtk_check_button_new_with_mnemonic( _( "_SpaceKey as selection key" ) );
-@@ -396,9 +427,15 @@ static GtkWidget *create_options_page()
- G_CALLBACK( on_default_toggle_button_toggled ),
- &__config_space_as_selection );
-
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(
-+ __widget_space_as_selection,
-+ _( "Whether SpaceKey is used as selection key or not." ));
-+#else
- gtk_tooltips_set_tip(
- __widget_tooltips, __widget_space_as_selection,
- _( "Whether SpaceKey is used as selection key or not." ), NULL );
-+#endif
-
- return vbox;
- }
-@@ -487,7 +524,7 @@ static GtkWidget *create_keyboard_page()
- gtk_table_attach (GTK_TABLE (table), __config_keyboards [i].entry, 1, 2, i, i+1,
- (GtkAttachOptions) (GTK_FILL|GTK_EXPAND),
- (GtkAttachOptions) (GTK_FILL), 4, 4);
-- gtk_entry_set_editable (GTK_ENTRY (__config_keyboards[i].entry), FALSE);
-+ gtk_editable_set_editable (GTK_EDITABLE (__config_keyboards[i].entry), FALSE);
-
- __config_keyboards[i].button = gtk_button_new_with_label ("...");
- gtk_widget_show (__config_keyboards[i].button);
-@@ -508,26 +545,46 @@ static GtkWidget *create_keyboard_page()
- }
-
- for (i = 0; __config_keyboards [i].key; ++ i) {
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(__config_keyboards [i].entry,
-+ _(__config_keyboards [i].tooltip));
-+#else
- gtk_tooltips_set_tip (__widget_tooltips, __config_keyboards [i].entry,
- _(__config_keyboards [i].tooltip), NULL);
-+#endif
- }
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ __widget_chieng_mode = gtk_combo_box_text_new_with_entry();
-+#else
- // Setup chieng_mode combo box
- __widget_chieng_mode = gtk_combo_new();
-+#endif
- gtk_widget_show (__widget_chieng_mode);
-
- for (i = 0;
- i < (sizeof(builtin_chieng_mode) / sizeof(builtin_chieng_mode[0]));
- i++) {
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(__widget_chieng_mode),
-+ builtin_chieng_mode[ i ] );
-+#else
- chieng_mode_list = g_list_append(
- chieng_mode_list,
- (void *) builtin_chieng_mode[ i ] );
-+#endif
- }
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_editable_set_editable (
-+ GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (__widget_chieng_mode))),
-+ FALSE);
-+#else
- gtk_combo_set_popdown_strings (GTK_COMBO (__widget_chieng_mode), chieng_mode_list);
- g_list_free(chieng_mode_list);
- gtk_combo_set_use_arrows (GTK_COMBO (__widget_chieng_mode), TRUE);
- gtk_editable_set_editable (GTK_EDITABLE (GTK_ENTRY (GTK_COMBO (__widget_chieng_mode)->entry)), FALSE);
-+#endif
- label = gtk_label_new (_("Initial trigger Chinese/English mode:"));
- gtk_widget_show (label);
- gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
-@@ -538,30 +595,55 @@ static GtkWidget *create_keyboard_page()
- gtk_table_attach (GTK_TABLE (table), __widget_chieng_mode, 1, 2, 2, 3,
- (GtkAttachOptions) (GTK_FILL|GTK_EXPAND),
- (GtkAttachOptions) (GTK_FILL), 4, 4);
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(
-+ gtk_bin_get_child (GTK_BIN (__widget_chieng_mode)),
-+ _("Change the default Chinese/English mode on every trigger"));
-+#else
- gtk_tooltips_set_tip (__widget_tooltips, GTK_COMBO (__widget_chieng_mode)->entry,
- _("Change the default Chinese/English mode on every trigger"), NULL);
-+#endif
- g_signal_connect(
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ G_OBJECT (gtk_bin_get_child (GTK_BIN (__widget_chieng_mode))),
-+#else
- (gpointer) GTK_ENTRY(GTK_COMBO(__widget_chieng_mode)->entry),
-+#endif
- "changed",
- G_CALLBACK (on_default_editable_changed),
- &(__config_chieng_mode_data));
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ __widget_selKey_num = gtk_combo_box_text_new_with_entry();
-+#else
- // Setup selKey_num combo box
- __widget_selKey_num = gtk_combo_new();
-+#endif
- gtk_widget_show (__widget_selKey_num);
-
- for (i = 0;
- i < (sizeof(builtin_selectkeys_num) / sizeof(builtin_selectkeys_num[0]));
- i++) {
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(__widget_selKey_num),
-+ builtin_selectkeys_num[ i ] );
-+#else
- selKey_num_list = g_list_append(
- selKey_num_list,
- (void *) builtin_selectkeys_num[ i ] );
-+#endif
- }
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_editable_set_editable (
-+ GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (__widget_selKey_num))),
-+ FALSE);
-+#else
- gtk_combo_set_popdown_strings (GTK_COMBO (__widget_selKey_num), selKey_num_list);
- g_list_free(selKey_num_list);
- gtk_combo_set_use_arrows (GTK_COMBO (__widget_selKey_num), TRUE);
- gtk_editable_set_editable (GTK_EDITABLE (GTK_ENTRY (GTK_COMBO (__widget_selKey_num)->entry)), FALSE);
-+#endif
- label = gtk_label_new (_("Number of Selection Keys :"));
- gtk_widget_show (label);
- gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
-@@ -572,30 +654,52 @@ static GtkWidget *create_keyboard_page()
- gtk_table_attach (GTK_TABLE (table), __widget_selKey_num, 1, 2, 3, 4,
- (GtkAttachOptions) (GTK_FILL|GTK_EXPAND),
- (GtkAttachOptions) (GTK_FILL), 4, 4);
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(gtk_bin_get_child (GTK_BIN (__widget_selKey_num)),
-+ _("Change the default number of selection keys"));
-+#else
- gtk_tooltips_set_tip (__widget_tooltips, GTK_COMBO (__widget_selKey_num)->entry,
- _("Change the default number of selection keys"), NULL);
-+#endif
- g_signal_connect(
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ G_OBJECT(gtk_bin_get_child(GTK_BIN(__widget_selKey_num))),
-+#else
- (gpointer) GTK_ENTRY(GTK_COMBO(__widget_selKey_num)->entry),
-+#endif
- "changed",
- G_CALLBACK (on_default_editable_changed),
- &(__config_selKey_num_data));
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ __widget_selKey_type = gtk_combo_box_text_new_with_entry();
-+#else
- // Setup selKey combo box
- __widget_selKey_type = gtk_combo_new();
-+#endif
- gtk_widget_show (__widget_selKey_type);
-
- for (i = 0;
- i < (sizeof(builtin_selectkeys) / sizeof(builtin_selectkeys[0]));
- i++) {
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(__widget_selKey_type),
-+ builtin_selectkeys[ i ] );
-+#else
- selKey_type_list = g_list_append(
- selKey_type_list,
- (void *) builtin_selectkeys[ i ] );
-+#endif
- }
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_editable_set_editable (GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (__widget_selKey_type))), FALSE);
-+#else
- gtk_combo_set_popdown_strings (GTK_COMBO (__widget_selKey_type), selKey_type_list);
- g_list_free(selKey_type_list);
- gtk_combo_set_use_arrows (GTK_COMBO (__widget_selKey_type), TRUE);
- gtk_editable_set_editable (GTK_EDITABLE (GTK_ENTRY (GTK_COMBO (__widget_selKey_type)->entry)), FALSE);
-+#endif
- label = gtk_label_new (_("Customized Selection Keys:"));
- gtk_widget_show (label);
- gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
-@@ -606,30 +710,54 @@ static GtkWidget *create_keyboard_page()
- gtk_table_attach (GTK_TABLE (table), __widget_selKey_type, 1, 2, 4, 5,
- (GtkAttachOptions) (GTK_FILL|GTK_EXPAND),
- (GtkAttachOptions) (GTK_FILL), 4, 4);
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(gtk_bin_get_child (GTK_BIN (__widget_selKey_type)),
-+ _("Change the default selection keys"));
-+#else
- gtk_tooltips_set_tip (__widget_tooltips, GTK_COMBO (__widget_selKey_type)->entry,
- _("Change the default selection keys"), NULL);
-+#endif
- g_signal_connect(
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ G_OBJECT(gtk_bin_get_child(GTK_BIN(__widget_selKey_type))),
-+#else
- (gpointer) GTK_ENTRY(GTK_COMBO(__widget_selKey_type)->entry),
-+#endif
- "changed",
- G_CALLBACK (on_default_editable_changed),
- &(__config_selKey_type_data));
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ __widget_kb_type = gtk_combo_box_text_new_with_entry();
-+#else
- // Setup KB_TYPE combo box
- __widget_kb_type = gtk_combo_new();
-+#endif
- gtk_widget_show (__widget_kb_type);
-
- for (i = 0;
- i < (int) (sizeof(builtin_keymaps) / sizeof(_builtin_keymap));
- i++) {
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_combo_box_text_append_text(
-+ GTK_COMBO_BOX_TEXT(__widget_kb_type),
-+ builtin_keymaps[ i ].translated_name.c_str() );
-+#else
- kb_type_list = g_list_append(
- kb_type_list,
- (void *) builtin_keymaps[ i ].translated_name.c_str() );
-+#endif
- }
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_editable_set_editable (GTK_EDITABLE (gtk_bin_get_child (GTK_BIN (__widget_kb_type))), FALSE);
-+#else
- gtk_combo_set_popdown_strings (GTK_COMBO (__widget_kb_type), kb_type_list);
- g_list_free(kb_type_list);
- gtk_combo_set_use_arrows (GTK_COMBO (__widget_kb_type), TRUE);
- gtk_editable_set_editable (GTK_EDITABLE (GTK_ENTRY (GTK_COMBO (__widget_kb_type)->entry)), FALSE);
-+#endif
-+
- label = gtk_label_new (_("Use keyboard type:"));
- gtk_widget_show (label);
- gtk_misc_set_alignment (GTK_MISC (label), 1.0, 0.5);
-@@ -640,10 +768,19 @@ static GtkWidget *create_keyboard_page()
- gtk_table_attach (GTK_TABLE (table), __widget_kb_type, 1, 2, 5, 6,
- (GtkAttachOptions) (GTK_FILL|GTK_EXPAND),
- (GtkAttachOptions) (GTK_FILL), 4, 4);
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+ gtk_widget_set_tooltip_text(gtk_bin_get_child (GTK_BIN (__widget_kb_type)),
-+ _("Change the default keyboard layout type"));
-+#else
- gtk_tooltips_set_tip (__widget_tooltips, GTK_COMBO (__widget_kb_type)->entry,
- _("Change the default keyboard layout type"), NULL);
-+#endif
- g_signal_connect(
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ G_OBJECT(gtk_bin_get_child(GTK_BIN(__widget_kb_type))),
-+#else
- (gpointer) GTK_ENTRY(GTK_COMBO(__widget_kb_type)->entry),
-+#endif
- "changed",
- G_CALLBACK (on_default_editable_changed),
- &(__config_kb_type_data_translated));
-@@ -661,7 +798,11 @@ static GtkWidget *create_color_button_page()
- gtk_widget_show (table);
-
- for (int i = 0; i < SCIM_CONFIG_IMENGINE_CHEWING_PREEDIT_BGCOLOR_NUM; i++) {
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-+#else
- hbox = gtk_hbox_new (FALSE, 0);
-+#endif
- gtk_widget_show (hbox);
- sprintf(color_button_name_string,
- SCIM_CONFIG_IMENGINE_CHEWING_PREEDIT_BGCOLOR_ "_%d", i + 1);
-@@ -684,7 +825,10 @@ static GtkWidget *create_setup_window()
- GtkWidget *label;
- GtkWidget *page;
-
-+#if GTK_CHECK_VERSION(2, 12, 0)
-+#else
- __widget_tooltips = gtk_tooltips_new ();
-+#endif
-
- // Create the Notebook.
- notebook = gtk_notebook_new ();
-@@ -788,10 +932,14 @@ void setup_widget_value()
- if (index_keymap < 0)
- index_keymap = 0;
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_combo_box_set_active(GTK_COMBO_BOX(__widget_kb_type), index_keymap);
-+#else
- gtk_entry_set_text (
- GTK_ENTRY(GTK_COMBO(__widget_kb_type)->entry),
- builtin_keymaps[index_keymap].translated_name.c_str()
- );
-+#endif
-
- /* selKey */
- int index_selectkeys = sizeof(builtin_selectkeys) / sizeof(builtin_selectkeys[0]) - 1;
-@@ -804,10 +952,14 @@ void setup_widget_value()
- if (index_selectkeys < 0)
- index_selectkeys = 0;
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_combo_box_set_active(GTK_COMBO_BOX(__widget_selKey_type), index_selectkeys);
-+#else
- gtk_entry_set_text (
- GTK_ENTRY(GTK_COMBO(__widget_selKey_type)->entry),
- builtin_selectkeys[index_selectkeys]
- );
-+#endif
-
- /* selKey_num */
- int index_selectkeys_num =
-@@ -821,10 +973,14 @@ void setup_widget_value()
- if (index_selectkeys_num < 0)
- index_selectkeys_num = 0;
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_combo_box_set_active(GTK_COMBO_BOX(__widget_selKey_num), index_selectkeys_num);
-+#else
- gtk_entry_set_text (
- GTK_ENTRY(GTK_COMBO(__widget_selKey_num)->entry),
- builtin_selectkeys_num[index_selectkeys_num]
- );
-+#endif
-
- /* chieng_mode */
- int index_chieng_mode =
-@@ -838,10 +994,14 @@ void setup_widget_value()
- if (index_chieng_mode < 0)
- index_chieng_mode = 0;
-
-+#if GTK_CHECK_VERSION(2, 4, 0)
-+ gtk_combo_box_set_active(GTK_COMBO_BOX(__widget_chieng_mode), index_chieng_mode);
-+#else
- gtk_entry_set_text (
- GTK_ENTRY(GTK_COMBO(__widget_chieng_mode)->entry),
- builtin_chieng_mode[index_chieng_mode]
- );
-+#endif
- }
-
- void load_config( const ConfigPointer &config )
-@@ -1087,7 +1247,11 @@ static GtkWidget *create_color_button (const char *config_key)
- if (!entry)
- return NULL;
-
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ GtkWidget *hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-+#else
- GtkWidget *hbox = gtk_hbox_new (FALSE, 0);
-+#endif
- gtk_container_set_border_width (GTK_CONTAINER (hbox), 4);
- gtk_widget_show (hbox);
-
-diff --git a/src/scim_color_button.cpp b/src/scim_color_button.cpp
-index 0b3930c..36df131 100644
---- a/src/scim_color_button.cpp
-+++ b/src/scim_color_button.cpp
-@@ -68,9 +68,14 @@ typedef enum
- static void scim_color_button_class_init (ScimChewingColorButtonClass *klass);
- static void scim_color_button_init (ScimChewingColorButton *object);
-
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+static void scim_color_button_destroy (GtkWidget *object);
-+static gboolean scim_color_button_draw (GtkWidget *widget, cairo_t *cr);
-+#else
- static void scim_color_button_destroy (GtkObject *object);
- static gboolean scim_color_button_expose (GtkWidget *widget,
- GdkEventExpose *eevent);
-+#endif
- static gboolean scim_color_button_button_press (GtkWidget *widget,
- GdkEventButton *bevent);
- static gboolean scim_color_button_button_release (GtkWidget *widget,
-@@ -110,7 +115,6 @@ scim_color_button_get_type (void)
- static void
- scim_color_button_class_init (ScimChewingColorButtonClass *klass)
- {
-- GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
- GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
-
- parent_class = (GtkDrawingAreaClass *) g_type_class_peek_parent (klass);
-@@ -124,9 +128,15 @@ scim_color_button_class_init (ScimChewingColorButtonClass *klass)
- g_cclosure_marshal_VOID__VOID,
- G_TYPE_NONE, 0);
-
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ widget_class->destroy = scim_color_button_destroy;
-+ widget_class->draw = scim_color_button_draw;
-+#else
-+ GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
- gtk_object_class->destroy = scim_color_button_destroy;
--
- widget_class->expose_event = scim_color_button_expose;
-+#endif
-+
- widget_class->button_press_event = scim_color_button_button_press;
- widget_class->button_release_event = scim_color_button_button_release;
- }
-@@ -135,8 +145,13 @@ static void
- scim_color_button_init (ScimChewingColorButton *object)
- {
- /*set default color */
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ gdk_rgba_parse (&object->fg_color, "#000000");
-+ gdk_rgba_parse (&object->bg_color, "#ffffff");
-+#else
- gdk_color_parse ("#000000", &object->fg_color);
- gdk_color_parse ("#ffffff", &object->bg_color);
-+#endif
-
- gtk_widget_add_events (GTK_WIDGET (object),
- GDK_BUTTON_PRESS_MASK |
-@@ -145,7 +160,11 @@ scim_color_button_init (ScimChewingColorButton *object)
-
-
- static void
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+scim_color_button_destroy (GtkWidget *object)
-+#else
- scim_color_button_destroy (GtkObject *object)
-+#endif
- {
- ScimChewingColorButton *button = SCIM_COLOR_BUTTON (object);
-
-@@ -160,19 +179,38 @@ scim_color_button_destroy (GtkObject *object)
- button->swap_icon = NULL;
- }
-
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ GTK_WIDGET_CLASS (parent_class)->destroy (object);
-+#else
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
-+#endif
- }
-
- static void
- scim_color_button_draw_rect (ScimChewingColorButton *button,
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ GdkWindow *drawable,
-+ cairo_t *cr,
-+#else
- GdkDrawable *drawable,
- GdkGC *gc,
-+#endif
- gint x,
- gint y,
- gint width,
- gint height,
-- GdkColor *color)
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ GdkRGBA *color
-+#else
-+ GdkColor *color
-+#endif
-+ )
- {
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ gdk_cairo_set_source_rgba (cr, color);
-+ cairo_rectangle (cr, x, y, width, height);
-+ cairo_fill (cr);
-+#else
- gint rowstride;
- guchar r, g, b;
- gint xx, yy;
-@@ -211,23 +249,38 @@ scim_color_button_draw_rect (ScimChewingColorButton *button,
- GDK_RGB_DITHER_MAX,
- button->render_buf,
- rowstride);
-+#endif
- }
-
- static gboolean
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+scim_color_button_draw (GtkWidget *widget,
-+ cairo_t *cr)
-+#else
- scim_color_button_expose (GtkWidget *widget,
- GdkEventExpose *eevent)
-+#endif
- {
- ScimChewingColorButton *button = SCIM_COLOR_BUTTON (widget);
- gint width, height;
- gint swap_w = 0, swap_h = 0;
- gint rect_w, rect_h;
-
-+#if GTK_CHECK_VERSION(2, 18, 0)
-+ if (!gtk_widget_is_drawable (widget))
-+#else
- if (!GTK_WIDGET_DRAWABLE (widget))
-+#endif
- return FALSE;
--
-+
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ width = gdk_window_get_width(gtk_widget_get_window (widget));
-+ height = gdk_window_get_height(gtk_widget_get_window (widget));
-+#else
- width = widget->allocation.width;
- height = widget->allocation.height;
--
-+#endif
-+
- /* draw the swap colors pixbuf */
- if (!button->swap_icon) {
- button->swap_icon
-@@ -241,9 +294,14 @@ scim_color_button_expose (GtkWidget *widget,
- }
-
- if (swap_w < width / 2 && swap_h < height / 2) {
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ gdk_cairo_set_source_pixbuf (cr, button->swap_icon, width - swap_w, 0);
-+ cairo_paint (cr);
-+#else
- gdk_draw_pixbuf (widget->window, NULL, button->swap_icon,
- 0, 0, width - swap_w, 0, swap_w, swap_h,
- GDK_RGB_DITHER_NORMAL, 0, 0);
-+#endif
- } else {
- swap_w = swap_h = 0;
- }
-@@ -259,37 +317,78 @@ scim_color_button_expose (GtkWidget *widget,
- button->rect_width = rect_w;
- button->rect_height = rect_h;
-
--
- /* draw the background area */
- scim_color_button_draw_rect (button,
-+#if GTK_CHECK_VERSION(2, 14, 0)
-+ gtk_widget_get_window (widget),
-+#else
- widget->window,
-+#endif
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ cr,
-+#else
- widget->style->fg_gc[0],
-+#endif
- (width - rect_w),
- (height - rect_h),
- rect_w, rect_h,
- &button->bg_color);
-
-- gtk_paint_shadow (widget->style, widget->window, GTK_STATE_NORMAL,
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ GtkStyleContext *style = gtk_widget_get_style_context(widget);
-+ gtk_style_context_save (style);
-+ gtk_style_context_set_state (style, GTK_STATE_FLAG_NORMAL);
-+ gtk_render_frame (style, cr, width - rect_w, height - rect_h, rect_w, rect_h);
-+#else
-+ gtk_paint_shadow (widget->style,
-+#if GTK_CHECK_VERSION(2, 14, 0)
-+ gtk_widget_get_window (widget),
-+#else
-+ widget->window,
-+#endif
-+ GTK_STATE_NORMAL,
- GTK_SHADOW_IN,
- NULL, widget, NULL,
- (width - rect_w),
- (height - rect_h),
- rect_w, rect_h);
--
-+#endif
-
- /* draw the foreground area */
- scim_color_button_draw_rect (button,
-+#if GTK_CHECK_VERSION(2, 14, 0)
-+ gtk_widget_get_window (widget),
-+#else
- widget->window,
-+#endif
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ cr,
-+#else
- widget->style->fg_gc[0],
-+#endif
- 0, 0,
- rect_w, rect_h,
- &button->fg_color);
-
-- gtk_paint_shadow (widget->style, widget->window, GTK_STATE_NORMAL,
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ style = gtk_widget_get_style_context(widget);
-+ gtk_style_context_save (style);
-+ gtk_style_context_set_state (style, GTK_STATE_FLAG_NORMAL);
-+ gtk_render_frame (style, cr, 0, 0, rect_w, rect_h);
-+#else
-+ gtk_paint_shadow (
-+ widget->style,
-+#if GTK_CHECK_VERSION(2, 14, 0)
-+ gtk_widget_get_window (widget),
-+#else
-+ widget->window,
-+#endif
-+ GTK_STATE_NORMAL,
- GTK_SHADOW_IN,
- NULL, widget, NULL,
- 0, 0,
- rect_w, rect_h);
-+#endif
-
- return TRUE;
- }
-@@ -299,11 +398,16 @@ scim_color_button_target (ScimChewingColorButton *button,
- gint x,
- gint y)
- {
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ gint width = gdk_window_get_width(gtk_widget_get_window (GTK_WIDGET(button)));
-+ gint height = gdk_window_get_height(gtk_widget_get_window (GTK_WIDGET(button)));
-+#else
- gint width = GTK_WIDGET (button)->allocation.width;
- gint height = GTK_WIDGET (button)->allocation.height;
-+#endif
- gint rect_w = button->rect_width;
- gint rect_h = button->rect_height;
--
-+
- if (x > 0 && x < rect_w && y > 0 && y < rect_h)
- return FOREGROUND_AREA;
- else if (x > (width - rect_w) && x < width &&
-@@ -324,7 +428,11 @@ scim_color_button_open_color_dialog (ScimChewingColorButton *button, gboolean fg
- {
- GtkWidget *dialog;
- const gchar *title;
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ GdkRGBA *color;
-+#else
- GdkColor *color;
-+#endif
- gint result;
-
- title = fg ? _("Foreground color") : _("Background color");
-@@ -332,16 +440,38 @@ scim_color_button_open_color_dialog (ScimChewingColorButton *button, gboolean fg
-
- dialog = gtk_color_selection_dialog_new (title);
-
-- gtk_color_selection_set_current_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel),
-- color);
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ gtk_color_selection_set_current_rgba (
-+ GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (dialog))),
-+ color);
-+#else
-+ gtk_color_selection_set_current_color (
-+#if GTK_CHECK_VERSION(2, 14, 0)
-+ GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (dialog))),
-+#else
-+ GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel),
-+#endif
-+ color);
-+#endif
- gtk_widget_show (dialog);
-
- result = gtk_dialog_run (GTK_DIALOG (dialog));
-
- switch (result) {
- case GTK_RESPONSE_OK:
-- gtk_color_selection_get_current_color (GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel),
-- color);
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ gtk_color_selection_get_current_rgba (
-+ GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (dialog))),
-+ color);
-+#else
-+ gtk_color_selection_get_current_color (
-+#if GTK_CHECK_VERSION(2, 14, 0)
-+ GTK_COLOR_SELECTION (gtk_color_selection_dialog_get_color_selection (GTK_COLOR_SELECTION_DIALOG (dialog))),
-+#else
-+ GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG (dialog)->colorsel),
-+#endif
-+ color);
-+#endif
- g_signal_emit (button, button_signals[COLOR_CHANGED], 0);
- break;
- default:
-@@ -355,6 +485,11 @@ scim_color_button_open_color_dialog (ScimChewingColorButton *button, gboolean fg
- static void
- scim_color_button_swap_color (ScimChewingColorButton *button)
- {
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ GdkRGBA tmp = button->fg_color;
-+ button->fg_color = button->bg_color;
-+ button->bg_color = tmp;
-+#else
- GdkColor tmp;
- tmp.red = button->fg_color.red;
- tmp.green = button->fg_color.green;
-@@ -367,6 +502,7 @@ scim_color_button_swap_color (ScimChewingColorButton *button)
- button->bg_color.red = tmp.red;
- button->bg_color.green = tmp.green;
- button->bg_color.blue = tmp.blue;
-+#endif
- g_signal_emit (button, button_signals[COLOR_CHANGED], 0);
- }
-
-@@ -457,14 +593,29 @@ scim_color_button_get_colors (ScimChewingColorButton *button,
-
- g_snprintf (fg_color_str, G_N_ELEMENTS (fg_color_str),
- "#%02X%02X%02X",
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ static_cast<unsigned int>(255*button->fg_color.red),
-+ static_cast<unsigned int>(255*button->fg_color.green),
-+ static_cast<unsigned int>(255*button->fg_color.blue)
-+#else
- ((button->fg_color.red)>>8),
- ((button->fg_color.green)>>8),
-- ((button->fg_color.blue)>>8));
-+ ((button->fg_color.blue)>>8)
-+#endif
-+ );
- g_snprintf (bg_color_str, G_N_ELEMENTS (bg_color_str),
- "#%02X%02X%02X",
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ static_cast<unsigned int>(255*button->bg_color.red),
-+ static_cast<unsigned int>(255*button->bg_color.green),
-+ static_cast<unsigned int>(255*button->bg_color.blue)
-+#else
- ((button->bg_color.red)>>8),
- ((button->bg_color.green)>>8),
-- ((button->bg_color.blue)>>8));
-+ ((button->bg_color.blue)>>8)
-+#endif
-+ );
-+
- *fg_value = String (fg_color_str);
- *bg_value = String (bg_color_str);
-
-@@ -476,6 +627,10 @@ scim_color_button_set_colors (ScimChewingColorButton *button,
- const String &fg_value,
- const String &bg_value)
- {
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ gdk_rgba_parse (&button->fg_color, fg_value.c_str());
-+ gdk_rgba_parse (&button->bg_color, bg_value.c_str());
-+#else
- GdkColor fg_color, bg_color;
- gdk_color_parse (fg_value.c_str (), &fg_color);
- gdk_color_parse (bg_value.c_str (), &bg_color);
-@@ -486,6 +641,7 @@ scim_color_button_set_colors (ScimChewingColorButton *button,
- button->bg_color.red = bg_color.red;
- button->bg_color.green = bg_color.green;
- button->bg_color.blue = bg_color.blue;
-+#endif
-
- return TRUE;
- }
-diff --git a/src/scim_color_button.h b/src/scim_color_button.h
-index ca09877..fc24bb9 100644
---- a/src/scim_color_button.h
-+++ b/src/scim_color_button.h
-@@ -53,8 +53,13 @@ struct _ScimChewingColorButton
- gint rect_height;
- gint click_target;
-
-+#if GTK_CHECK_VERSION(3, 0, 0)
-+ GdkRGBA fg_color;
-+ GdkRGBA bg_color;
-+#else
- GdkColor fg_color;
- GdkColor bg_color;
-+#endif
- };
-
- struct _ScimChewingColorButtonClass
diff --git a/misc/scim-chewing/scim-chewing.info b/misc/scim-chewing/scim-chewing.info
deleted file mode 100644
index 5ee38aafaa..0000000000
--- a/misc/scim-chewing/scim-chewing.info
+++ /dev/null
@@ -1,10 +0,0 @@
-PRGNAM="scim-chewing"
-VERSION="0.3.4"
-HOMEPAGE="http://chewing.csie.net"
-DOWNLOAD="https://github.com/downloads/chewing/scim-chewing/scim-chewing-0.3.4.tar.bz2"
-MD5SUM="c37bd1e7198776117e68b7aa1060896d"
-DOWNLOAD_x86_64=""
-MD5SUM_x86_64=""
-REQUIRES="libchewing"
-MAINTAINER="Guan-Zhong Huang"
-EMAIL="imprazaguy@gmail.com"
diff --git a/misc/sdcv/patches/01_gettext.patch b/misc/sdcv/patches/01_gettext.patch
deleted file mode 100644
index b64565335a..0000000000
--- a/misc/sdcv/patches/01_gettext.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Update gettext version to use newer m4 macros
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -22,7 +22,7 @@
- dnl Gettext stuff.
- dnl ================================================================
- AM_GNU_GETTEXT([external])
--AM_GNU_GETTEXT_VERSION(0.14.1)
-+AM_GNU_GETTEXT_VERSION(0.17)
- GETTEXT_PACKAGE=sdcv
- AC_SUBST(GETTEXT_PACKAGE)
- AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE,"$GETTEXT_PACKAGE", [Gettext package])
diff --git a/misc/sdcv/patches/02_manpage.patch b/misc/sdcv/patches/02_manpage.patch
deleted file mode 100644
index cc112d5d24..0000000000
--- a/misc/sdcv/patches/02_manpage.patch
+++ /dev/null
@@ -1,143 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Fix man page to be correct.
-Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2125983&group_id=122858&atid=694730
---- a/doc/uk/sdcv.1
-+++ b/doc/uk/sdcv.1
-@@ -1,14 +1,14 @@
--..TH SDCV 1 "2004-12-06" "sdcv-0.4"
--..SH NAME
-+.TH SDCV 1 "2004-12-06" "sdcv-0.4"
-+.SH NAME
- sdcv \- конÑольна верÑÑ–Ñ Ð—Ð¾Ñ€Ñного Ñловника [Stardict]
--..SH SYNOPSIS
--..B sdcv
-+.SH SYNOPSIS
-+.B sdcv
- [
--..BI options
-+.BI options
- ]
- [list of words]
--..SH DESCRIPTION
--..I sdcv
-+.SH DESCRIPTION
-+.I sdcv
- sdcv проÑта, міжплатформена текÑтова утиліта Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ із
- Ñловниками у форматі ЗорÑного Ñловника [StarDict].
- Слово зі "ÑпиÑку Ñлів", може бути Ñ€Ñдком з початковим Ñлешем '/'
-@@ -19,37 +19,37 @@
- У діалоговому режимі, Ñкщо sdcv був Ñкомпільований з підтримкою
- бібліотеки readline, Ви можете викориÑтовувати клавіші ДОГОРИ
- та Ð’ÐИЗ Ð´Ð»Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸ з хронологією.
--..SH OPTIONS
--..TP 8
--..B "\-h \-\-help"
-+.SH OPTIONS
-+.TP 8
-+.B "\-h \-\-help"
- відображає Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¸ та виходить
--..TP 8
--..B "\-v \-\-verbose"
-+.TP 8
-+.B "\-v \-\-verbose"
- відображає верÑÑ–ÑŽ та виходить
--..TP 8
--..B "\-l \-\-list\-dicts"
-+.TP 8
-+.B "\-l \-\-list\-dicts"
- відображає ÑпиÑок доÑтупних Ñловників та виходить
--..TP 8
--..B "\-u \-\-use\-dict filename"
-+.TP 8
-+.B "\-u \-\-use\-dict filename"
- Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ з викориÑтаннÑм лише Ñловника з цим іменем(bookname)
--..TP 8
--..B "\-n \-\-non\-interactive"
-+.TP 8
-+.B "\-n \-\-non\-interactive"
- Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ð² Ñкриптах
--..TP 8
--..B "\-\-utf8\-output"
-+.TP 8
-+.B "\-\-utf8\-output"
- ЗаÑтавити sdcv розмовлÑти не в ÑиÑтемному кодуванні locale, а робити вивід в utf8
--..TP 8
--..B "\-\-utf8\-input"
-+.TP 8
-+.B "\-\-utf8\-input"
- ЗаÑтавити sdcv Ñлухати не в ÑиÑтемному кодуванні locale, а припуÑкати що це
- ввід в utf8
--..TP 8
--..B "\-\-data\-dir path/to/directory"
-+.TP 8
-+.B "\-\-data\-dir path/to/directory"
- ВикориÑтовуйте цю теку Ñк шлÑÑ… до теки даних зорÑного Ñловника [stardict].
- Це значає, що sdcv шукає Ñловники у теці data-dir/dic.
--..SH FILES
--..TP
-+.SH FILES
-+.TP
- /usr/share/stardict/dic
--..TP
-+.TP
- $(HOME)/.stardict/dic
-
- МіÑце, де sdcv очікує знайти Ñловники.
-@@ -57,28 +57,28 @@
- що Ви хочете, лише вÑтановіть змінну Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ STARDICT_DATA_DIR.
- Ðаприклад, Ñкщо Ви маєте Ñловники у теці /mnt/data/stardict-dicts/dic,
- вÑтановіть STARDICT_DATA_DIR у /mnt/data/stardict-dicts.
--..TP
-+.TP
- $(HOME)/.sdcv_history
-
- Цей файл міÑтить оÑтанні $(SDCV_HISTSIZE) Ñлова, Ñкі Ви шукали з sdcv.
- SDCV викориÑтовує цей файл при умові, Ñкщо sdcv був Ñкомпільований
- з підтримкою бібліотеки readline.
-
--..SH ENVIROMENT
-+.SH ENVIROMENT
- Змінні Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ \fIsdcv\fR:
--..TP 20
--..B STARDICT_DATA_DIR
-+.TP 20
-+.B STARDICT_DATA_DIR
- Якщо вÑтановлена, sdcv викориÑтає цю змінну Ñк теку даних, це означає,
- що sdcv шукатиме Ñловники у $\fBSTARDICT_DATA_DIR\fR\dic
--..TP 20
--..B SDCV_HISTSIZE
-+.TP 20
-+.B SDCV_HISTSIZE
- Якщо вÑтановлена, sdcv пиÑатиме у $(HOME)/.sdcv_history лише
- оÑтанні $(SDCV_HISTSIZE) Ñлова, Ñкі Ви шукали з sdcv. Якщо не вÑтановлена,
- то збірігатиметьÑÑ Ð¾Ñтанніх 2000 Ñлів у $(HOME)/.sdcv_history.
--..SH BUGS
-+.SH BUGS
- Звіти про помилки виÑилайте на адреÑу dushistov на mail крапка ru.
- Ðе забувайте включати Ñлово "sdcv" деÑÑŒ у полі "Тема:".
--..SH AUTHORS
-+.SH AUTHORS
- Эвгений Ð. ДушиÑтов, Hu Zheng
--..SH SEE ALSO
-+.SH SEE ALSO
- stardict(1), http://sdcv.sourceforge.net/, http://stardict.sourceforge.net
---- a/doc/sdcv.1
-+++ b/doc/sdcv.1
-@@ -55,7 +55,7 @@
-
- Place, where sdcv expect to find dictionaries.
- Instead of /usr/share/stardict/dic you can use everything
--that you want, just set STARDICT_DATA_DIR enviroment variable.
-+that you want, just set STARDICT_DATA_DIR environment variable.
- For example, if you have dictionaries in /mnt/data/stardict-dicts/dic,
- set STARDICT_DATA_DIR to /mnt/data/stardict-dicts.
- .TP
-@@ -64,7 +64,7 @@
- This file include last $(SDCV_HISTSIZE) words, which you seek with sdcv.
- SDCV use this file only if it was compiled with readline library support.
-
--.SH ENVIROMENT
-+.SH ENVIRONMENT
- Environment Variables Used By \fIsdcv\fR:
- .TP 20
- .B STARDICT_DATA_DIR
diff --git a/misc/sdcv/patches/03_c++.patch b/misc/sdcv/patches/03_c++.patch
deleted file mode 100644
index d8e99e028b..0000000000
--- a/misc/sdcv/patches/03_c++.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Fixes compilation with recent GCC which is more strict about C++.
-Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2125955&group_id=122858&atid=694730
---- a/src/readline.cpp
-+++ b/src/readline.cpp
-@@ -23,6 +23,7 @@
- #endif
-
- #include <cstdio>
-+#include <cstdlib>
- #ifdef WITH_READLINE
- # include <readline/readline.h>
- # include <readline/history.h>
---- a/src/libwrapper.cpp
-+++ b/src/libwrapper.cpp
-@@ -24,6 +24,7 @@
-
- #include <glib/gi18n.h>
- #include <map>
-+#include <cstring>
-
- #include "utils.hpp"
-
---- a/src/utils.cpp
-+++ b/src/utils.cpp
-@@ -22,6 +22,8 @@
- # include "config.h"
- #endif
-
-+#include <cstdio>
-+#include <cstdlib>
- #include <glib.h>
- #include <glib/gi18n.h>
-
---- a/src/lib/lib.cpp
-+++ b/src/lib/lib.cpp
-@@ -513,7 +513,7 @@
- {
- fseek(idxfile, wordoffset[page_idx], SEEK_SET);
- guint32 page_size=wordoffset[page_idx+1]-wordoffset[page_idx];
-- fread(wordentry_buf, std::min(sizeof(wordentry_buf), page_size), 1, idxfile); //TODO: check returned values, deal with word entry that strlen>255.
-+ fread(wordentry_buf, std::min(sizeof(wordentry_buf), (size_t)page_size), 1, idxfile); //TODO: check returned values, deal with word entry that strlen>255.
- return wordentry_buf;
- }
-
diff --git a/misc/sdcv/patches/04_format.patch b/misc/sdcv/patches/04_format.patch
deleted file mode 100644
index bbb562363a..0000000000
--- a/misc/sdcv/patches/04_format.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Fixes displaying of 'g' (gtk markup) entries.
-Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2125962&group_id=122858&atid=694730
---- a/src/libwrapper.cpp
-+++ b/src/libwrapper.cpp
-@@ -118,7 +118,6 @@
- switch (*p++) {
- case 'm':
- case 'l': //need more work...
-- case 'g':
- sec_size = strlen(p);
- if (sec_size) {
- res+="\n";
-@@ -128,6 +127,7 @@
- }
- sec_size++;
- break;
-+ case 'g':
- case 'x':
- sec_size = strlen(p);
- if (sec_size) {
diff --git a/misc/sdcv/patches/05_locales.patch b/misc/sdcv/patches/05_locales.patch
deleted file mode 100644
index 3724e3b57e..0000000000
--- a/misc/sdcv/patches/05_locales.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Fixes typo in program (choise -> choice).
-Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2125953&group_id=122858&atid=694730
---- a/po/ru.po
-+++ b/po/ru.po
-@@ -127,7 +127,7 @@
- #: src/libwrapper.cpp:366
- #, c-format
- msgid ""
--"Invalid choise.\n"
-+"Invalid choice.\n"
- "It must be from 0 to %d or -1.\n"
- msgstr ""
- "îÅÐÒÁ×ÉÌØÎÙÊ ×ÙÂÏÒ.\n"
---- a/po/sdcv.pot
-+++ b/po/sdcv.pot
-@@ -118,7 +118,7 @@
- #: src/libwrapper.cpp:366
- #, c-format
- msgid ""
--"Invalid choise.\n"
-+"Invalid choice.\n"
- "It must be from 0 to %d or -1.\n"
- msgstr ""
-
---- a/po/sk.po
-+++ b/po/sk.po
-@@ -124,7 +124,7 @@
- #: src/libwrapper.cpp:366
- #, fuzzy, c-format
- msgid ""
--"Invalid choise.\n"
-+"Invalid choice.\n"
- "It must be from 0 to %d or -1.\n"
- msgstr ""
- "Neplatná voľba.\n"
---- a/po/uk.po
-+++ b/po/uk.po
-@@ -127,7 +127,7 @@
- #: src/libwrapper.cpp:366
- #, fuzzy, c-format
- msgid ""
--"Invalid choise.\n"
-+"Invalid choice.\n"
- "It must be from 0 to %d or -1.\n"
- msgstr ""
- "Ðеправильний вибір.\n"
---- a/po/zh_CN.po
-+++ b/po/zh_CN.po
-@@ -118,7 +118,7 @@
- #: src/libwrapper.cpp:366
- #, fuzzy, c-format
- msgid ""
--"Invalid choise.\n"
-+"Invalid choice.\n"
- "It must be from 0 to %d or -1.\n"
- msgstr ""
- "无效的选择。\n"
---- a/po/zh_TW.po
-+++ b/po/zh_TW.po
-@@ -120,7 +120,7 @@
- #: src/libwrapper.cpp:366
- #, fuzzy, c-format
- msgid ""
--"Invalid choise.\n"
-+"Invalid choice.\n"
- "It must be from 0 to %d or -1.\n"
- msgstr ""
- "無效的é¸æ“‡ã€‚\n"
---- a/src/libwrapper.cpp
-+++ b/src/libwrapper.cpp
-@@ -364,7 +364,7 @@
- } else if (choise==-1)
- break;
- else
-- printf(_("Invalid choise.\nIt must be from 0 to %d or -1.\n"),
-+ printf(_("Invalid choice.\nIt must be from 0 to %d or -1.\n"),
- res_list.size()-1);
- }
- } else {
diff --git a/misc/sdcv/patches/06_sk.po.patch b/misc/sdcv/patches/06_sk.po.patch
deleted file mode 100644
index 69a26fd7ec..0000000000
--- a/misc/sdcv/patches/06_sk.po.patch
+++ /dev/null
@@ -1,134 +0,0 @@
-From: Ivan Masár <helix84@centrum.sk>
-Subject: Updates Slovak translation.
-Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2125956&group_id=122858&atid=694730
---- a/po/sk.po
-+++ b/po/sk.po
-@@ -1,21 +1,21 @@
- # translation of sdcv.po to Slovak
- # Copyright (C)
- # Zdenko Podobný <zdpo@mailbox.sk>, 2004, 2005.
--#
-+# Ivan Masár <helix84@centrum.sk>, 2007.
-+
- msgid ""
- msgstr ""
- "Project-Id-Version: sdcv 0.3.2\n"
- "Report-Msgid-Bugs-To: dushistov@mail.ru\n"
- "POT-Creation-Date: 2006-04-24 15:18+0400\n"
--"PO-Revision-Date: 2005-01-04 20:19+0100\n"
--"Last-Translator: Zdenko Podobný <zdpo@mailbox.sk>\n"
--"Language-Team: Slovak <<sk-i18n@lists.linux.sk>>\n"
-+"PO-Revision-Date: 2007-09-11 00:22+0100\n"
-+"Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
-+"Language-Team: Slovak <sk-i18n@lists.linux.sk>\n"
- "MIME-Version: 1.0\n"
- "Content-Type: text/plain; charset=UTF-8\n"
- "Content-Transfer-Encoding: 8bit\n"
- "X-Generator: KBabel 1.9.1\n"
--"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
--"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-
- #: src/sdcv.cpp:127
- #, c-format
-@@ -24,7 +24,7 @@
- "Try '%s --help' for more information.\n"
- msgstr ""
- "Neznáma voľba.\n"
--"Skúste `%s --help'.\n"
-+"Skúste „%s --help“.\n"
-
- #: src/sdcv.cpp:134
- #, c-format
-@@ -43,15 +43,12 @@
-
- #: src/sdcv.cpp:137
- #, c-format
--msgid ""
--"-l, --list-dicts display list of available dictionaries and exit\n"
--msgstr ""
--"-l, --list-dicts zobrazí zoznam dostupných slovníkov a skonÄí\n"
-+msgid "-l, --list-dicts display list of available dictionaries and exit\n"
-+msgstr "-l, --list-dicts zobrazí zoznam dostupných slovníkov a skonÄí\n"
-
- #: src/sdcv.cpp:138
- #, c-format
--msgid ""
--"-u, --use-dict bookname for search use only dictionary with this bookname\n"
-+msgid "-u, --use-dict bookname for search use only dictionary with this bookname\n"
- msgstr "-u, --use-dict názov použiť pre hľadanie iba zvolený slovník\n"
-
- #: src/sdcv.cpp:139
-@@ -71,12 +68,8 @@
-
- #: src/sdcv.cpp:142
- #, c-format
--msgid ""
--"--data-dir path/to/dir use this directory as path to stardict data "
--"directory\n"
--msgstr ""
--"--data-dir path/to/dir použiÅ¥ tento prieÄinok ako cestu pre stardict "
--"dátový prieÄinok\n"
-+msgid "--data-dir path/to/dir use this directory as path to stardict data directory\n"
-+msgstr "--data-dir path/to/dir použiÅ¥ tento prieÄinok ako cestu pre stardict dátový prieÄinok\n"
-
- #: src/sdcv.cpp:148
- #, c-format
-@@ -84,14 +77,14 @@
- msgstr "Konzolová verzia StarDict, verzia %s\n"
-
- #: src/sdcv.cpp:169
--#, fuzzy, c-format
-+#, c-format
- msgid "Dictionary's name Word count\n"
--msgstr "názov poÄet slov\n"
-+msgstr "názov slovníka poÄet slov\n"
-
- #: src/sdcv.cpp:191
- #, c-format
- msgid "g_mkdir failed: %s\n"
--msgstr ""
-+msgstr "g_mkdir zlyhalo: %s\n"
-
- #: src/sdcv.cpp:207
- msgid "Enter word or phrase: "
-@@ -104,7 +97,7 @@
-
- #: src/libwrapper.cpp:245
- msgid "popen failed"
--msgstr ""
-+msgstr "popen zlyhalo"
-
- #: src/libwrapper.cpp:282
- #, c-format
-@@ -117,18 +110,18 @@
- msgstr "Nájdené %d položiek, podobných %s,\n"
-
- #: src/libwrapper.cpp:352
--#, fuzzy, c-format
-+#, c-format
- msgid "Your choice[-1 to abort]: "
--msgstr "Vaša voľba: "
-+msgstr "Vaša voľba[-1 zruší]: "
-
- #: src/libwrapper.cpp:366
--#, fuzzy, c-format
-+#, c-format
- msgid ""
- "Invalid choice.\n"
- "It must be from 0 to %d or -1.\n"
- msgstr ""
- "Neplatná voľba.\n"
--"Musí byť od 0 po %d.\n"
-+"Musí byť od 0 do %d alebo -1.\n"
-
- #: src/libwrapper.cpp:382
- #, c-format
-@@ -137,6 +130,6 @@
-
- #~ msgid "Can not convert %s to current locale.\n"
- #~ msgstr "Nie je možné konvertovať %s na aktuálne locale.\n"
--
- #~ msgid "There is no dictionary with this bookname: %s.\n"
- #~ msgstr "Neexistuje slovník s takýmto názvom: %s.\n"
-+
diff --git a/misc/sdcv/patches/07_cs.po.patch b/misc/sdcv/patches/07_cs.po.patch
deleted file mode 100644
index 300727dd57..0000000000
--- a/misc/sdcv/patches/07_cs.po.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Add Czech translation.
-Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2125958&group_id=122858&atid=694730
---- a/po/LINGUAS
-+++ b/po/LINGUAS
-@@ -1,2 +1,2 @@
- # Set of available languages.
--sk zh_CN ru uk zh_TW
-+cs sk zh_CN ru uk zh_TW
---- /dev/null
-+++ b/po/cs.po
-@@ -0,0 +1,133 @@
-+# Czech translations for sdcv package.
-+# Copyright (C) 2008 Free Software Foundation, Inc.
-+# This file is distributed under the same license as the sdcv package.
-+# Michal ÄŒihaÅ™ <michal@cihar.com>, 2008.
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: sdcv 0.4.2\n"
-+"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
-+"POT-Creation-Date: 2008-09-24 10:54+0200\n"
-+"PO-Revision-Date: 2008-09-24 10:42+0200\n"
-+"Last-Translator: Michal ÄŒihaÅ™ <michal@cihar.com>\n"
-+"Language-Team: Czech <cs@li.org>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=UTF-8\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-+
-+#: src/sdcv.cpp:127
-+#, c-format
-+msgid ""
-+"Unknown option.\n"
-+"Try '%s --help' for more information.\n"
-+msgstr ""
-+"Neznámý parametr.\n"
-+"Zkuste '%s --help' pro nápovědu.\n"
-+
-+#: src/sdcv.cpp:134
-+#, c-format
-+msgid "Usage: %s [OPTIONS] words\n"
-+msgstr "Použití: %s [PARAMETRY] slova\n"
-+
-+#: src/sdcv.cpp:135
-+#, c-format
-+msgid "-h, --help display this help and exit\n"
-+msgstr "-h, --help zobrazí tuto nápovÄ›du a skonÄí\n"
-+
-+#: src/sdcv.cpp:136
-+#, c-format
-+msgid "-v, --version display version information and exit\n"
-+msgstr "-v, --version zobrazí informace o verzi a skonÄí\n"
-+
-+#: src/sdcv.cpp:137
-+#, c-format
-+msgid ""
-+"-l, --list-dicts display list of available dictionaries and exit\n"
-+msgstr "-l, --list-dicts zobrazí seznam dostupných slovníků a skonÄí\n"
-+
-+#: src/sdcv.cpp:138
-+#, c-format
-+msgid ""
-+"-u, --use-dict bookname for search use only dictionary with this bookname\n"
-+msgstr "-u, --use-dict jméno vyhledávat jen v zadaném slovníku\n"
-+
-+#: src/sdcv.cpp:139
-+#, c-format
-+msgid "-n, --non-interactive for use in scripts\n"
-+msgstr "-n, --non-interactive pro použití ve skriptech\n"
-+
-+#: src/sdcv.cpp:140
-+#, c-format
-+msgid "--utf8-output output must be in utf8\n"
-+msgstr "--utf8-output výstup musí být v utf8\n"
-+
-+#: src/sdcv.cpp:141
-+#, c-format
-+msgid "--utf8-input input of sdcv in utf8\n"
-+msgstr "--utf8-input vstup musí být v utf8\n"
-+
-+#: src/sdcv.cpp:142
-+#, c-format
-+msgid ""
-+"--data-dir path/to/dir use this directory as path to stardict data "
-+"directory\n"
-+msgstr ""
-+"--data-dir cesta/někam použít tento adresář jako cestu ke slovníkům "
-+"stardict\n"
-+
-+#: src/sdcv.cpp:148
-+#, c-format
-+msgid "Console version of Stardict, version %s\n"
-+msgstr "Konzolová verze Stardictu, verze %s\n"
-+
-+#: src/sdcv.cpp:169
-+#, c-format
-+msgid "Dictionary's name Word count\n"
-+msgstr "Jméno slovníku PoÄet slov\n"
-+
-+#: src/sdcv.cpp:191
-+#, c-format
-+msgid "g_mkdir failed: %s\n"
-+msgstr "g_mkdir selhalo: %s\n"
-+
-+#: src/sdcv.cpp:207
-+msgid "Enter word or phrase: "
-+msgstr "Zadejte slovo nebo frázi: "
-+
-+#: src/sdcv.cpp:215
-+#, c-format
-+msgid "There are no words/phrases to translate.\n"
-+msgstr "Nebyla zadáno nic k přeložení.\n"
-+
-+#: src/libwrapper.cpp:246
-+msgid "popen failed"
-+msgstr "popen selhalo"
-+
-+#: src/libwrapper.cpp:283
-+#, c-format
-+msgid "Can not convert %s to utf8.\n"
-+msgstr "Nepodařilo se převést %s do utf8.\n"
-+
-+#: src/libwrapper.cpp:340 src/libwrapper.cpp:372
-+#, c-format
-+msgid "Found %d items, similar to %s.\n"
-+msgstr "Nalezeno %d záznamů podobných %s.\n"
-+
-+#: src/libwrapper.cpp:353
-+#, c-format
-+msgid "Your choice[-1 to abort]: "
-+msgstr "VaÅ¡e volba [-1 pro ukonÄení]: "
-+
-+#: src/libwrapper.cpp:367
-+#, c-format
-+msgid ""
-+"Invalid choice.\n"
-+"It must be from 0 to %d or -1.\n"
-+msgstr ""
-+"Chybná volba.\n"
-+"Musí být mezi 0 a %d nebo -1.\n"
-+
-+#: src/libwrapper.cpp:383
-+#, c-format
-+msgid "Nothing similar to %s, sorry :(\n"
-+msgstr "Nic podobného %s nenalezeno, promiň :(\n"
diff --git a/misc/sdcv/patches/08_fr.po.patch b/misc/sdcv/patches/08_fr.po.patch
deleted file mode 100644
index 498772d751..0000000000
--- a/misc/sdcv/patches/08_fr.po.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From: Vincent Petry <PVince81@yahoo.fr>
-Subject: This patch adds a french translation.
---- /dev/null
-+++ b/po/fr.po
-@@ -0,0 +1,147 @@
-+# French translations for sdcv package
-+# Traduction française pour le paquet sdcv.
-+# Copyright (C) 2004 THE sdcv'S COPYRIGHT HOLDER
-+# This file is distributed under the same license as the sdcv package.
-+# <dushistov@mail.ru>, 2004.
-+#
-+msgid ""
-+msgstr ""
-+"Project-Id-Version: sdcv 0.4.2\n"
-+"Report-Msgid-Bugs-To: dushistov@mail.ru\n"
-+"POT-Creation-Date: 2009-06-15 23:20+0800\n"
-+"PO-Revision-Date: 2009-06-15 23:20+0800\n"
-+"Last-Translator: <PVince81@yahoo.fr>\n"
-+"Language-Team: Vincent Petry <PVince81@yahoo.fr>\n"
-+"MIME-Version: 1.0\n"
-+"Content-Type: text/plain; charset=UTF-8\n"
-+"Content-Transfer-Encoding: 8bit\n"
-+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-+
-+#: src/sdcv.cpp:127
-+#, c-format
-+msgid ""
-+"Unknown option.\n"
-+"Try '%s --help' for more information.\n"
-+msgstr ""
-+"Option inconnue.\n"
-+"Essayez '%s --help' pour plus d'informations.\n"
-+
-+#: src/sdcv.cpp:134
-+#, c-format
-+msgid "Usage: %s [OPTIONS] words\n"
-+msgstr "Usage: %s [OPTIONS] mots\n"
-+
-+#: src/sdcv.cpp:135
-+#, c-format
-+msgid "-h, --help display this help and exit\n"
-+msgstr "-h, --help afficher cet aide et sortir\n"
-+
-+#: src/sdcv.cpp:136
-+#, c-format
-+msgid "-v, --version display version information and exit\n"
-+msgstr ""
-+"-v, --version afficher les informations de version et sortir\n"
-+
-+#: src/sdcv.cpp:137
-+#, c-format
-+msgid ""
-+"-l, --list-dicts display list of available dictionaries and exit\n"
-+msgstr ""
-+"-l, --list-dicts afficher la liste des dictionnaires disponibles et "
-+"sortir\n"
-+
-+#: src/sdcv.cpp:138
-+#, c-format
-+msgid ""
-+"-u, --use-dict bookname for search use only dictionary with this bookname\n"
-+msgstr ""
-+"-u, --use-dict nom_dict pour chercher seulement en utilisant le dictionnaire "
-+"spécifié\n"
-+
-+#: src/sdcv.cpp:139
-+#, c-format
-+msgid "-n, --non-interactive for use in scripts\n"
-+msgstr "-n, --non-interactive pour l'utilisation dans des scripts\n"
-+
-+#: src/sdcv.cpp:140
-+#, c-format
-+msgid "--utf8-output output must be in utf8\n"
-+msgstr "--utf8-output force la sortie au format utf8\n"
-+
-+#: src/sdcv.cpp:141
-+#, c-format
-+msgid "--utf8-input input of sdcv in utf8\n"
-+msgstr "--utf8-input force l'entrée de sdcv au format utf8\n"
-+
-+#: src/sdcv.cpp:142
-+#, c-format
-+msgid ""
-+"--data-dir path/to/dir use this directory as path to stardict data "
-+"directory\n"
-+msgstr ""
-+"--data-dir chemin utiliser ce chemin pour trouver les données de "
-+"stardict\n"
-+
-+#: src/sdcv.cpp:148
-+#, c-format
-+msgid "Console version of Stardict, version %s\n"
-+msgstr "Version console de Stardict, version %s\n"
-+
-+#: src/sdcv.cpp:169
-+#, c-format
-+msgid "Dictionary's name Word count\n"
-+msgstr "Nom dictionnaire Nombre de mots\n"
-+
-+#: src/sdcv.cpp:191
-+#, c-format
-+msgid "g_mkdir failed: %s\n"
-+msgstr "Échec de g_mkdir : %s\n"
-+
-+#: src/sdcv.cpp:207
-+msgid "Enter word or phrase: "
-+msgstr "Entrez un mot ou une phrase: "
-+
-+#: src/sdcv.cpp:215
-+#, c-format
-+msgid "There are no words/phrases to translate.\n"
-+msgstr "Il n'y a pas de mots/phrases à traduire.\n"
-+
-+#: src/libwrapper.cpp:245
-+msgid "popen failed"
-+msgstr "Échec de popen"
-+
-+#: src/libwrapper.cpp:282
-+#, c-format
-+msgid "Can not convert %s to utf8.\n"
-+msgstr "Ne peut convertir %s au format utf8.\n"
-+
-+#: src/libwrapper.cpp:339 src/libwrapper.cpp:371
-+#, c-format
-+msgid "Found %d items, similar to %s.\n"
-+msgstr "Trouvé %d éléments similaires à %s.\n"
-+
-+#: src/libwrapper.cpp:352
-+#, c-format
-+msgid "Your choice[-1 to abort]: "
-+msgstr "Votre choix[-1 pour abandonner] : "
-+
-+#: src/libwrapper.cpp:366
-+#, c-format
-+msgid ""
-+"Invalid choise.\n"
-+"It must be from 0 to %d or -1.\n"
-+msgstr ""
-+"Selection invalide.\n"
-+"Veuillez choisir un nombre entre 0 et %d, ou -1.\n"
-+
-+#: src/libwrapper.cpp:382
-+#, c-format
-+msgid "Nothing similar to %s, sorry :(\n"
-+msgstr "Aucun mot/phrase similaire à %s, désolé :(\n"
-+
-+#~ msgid "Can not convert %s to current locale.\n"
-+#~ msgstr "Ne peut pas convertir %s dans la locale courante.\n"
-+
-+#~ msgid "There is no dictionary with this bookname: %s.\n"
-+#~ msgstr "Pas de dictionnaire : %s.\n"
---- a/po/LINGUAS
-+++ b/po/LINGUAS
-@@ -1,2 +1,2 @@
- # Set of available languages.
--cs sk zh_CN ru uk zh_TW
-+cs sk zh_CN ru uk zh_TW fr
diff --git a/misc/sdcv/patches/09_fix-tests.patch b/misc/sdcv/patches/09_fix-tests.patch
deleted file mode 100644
index cc93890280..0000000000
--- a/misc/sdcv/patches/09_fix-tests.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Fixes tests so that they can be executed using dash as /bin/sh.
-Bug: http://sourceforge.net/tracker/index.php?func=detail&aid=2125959&group_id=122858&atid=694730
---- a/tests/t_datadir
-+++ b/tests/t_datadir
-@@ -2,11 +2,11 @@
-
- unset SDCV_PAGER
- have=`../src/sdcv --data-dir ./ -l | wc -l`
--let have=have-1
-+have=$(($have-1))
- ndicts=`find "${HOME}"/.stardict/dic -name "*.ifo" -print | wc -l`
--let ndicts=ndicts+1
-+ndicts=$(($ndicts+1))
- if [ $have -ne $ndicts ]; then
-- let ndicts=ndicts-1
-+ ndicts=$(($ndicts-1))
- echo "test failed: sdcv says: we have: $have, but really we have: $ndicts" >&2
- exit 1
- fi
---- a/tests/t_list
-+++ b/tests/t_list
-@@ -1,10 +1,10 @@
- #!/bin/sh
-
- ndicts=`../src/sdcv -l | wc -l`
--let ndicts=ndicts-1
-+ndicts=$(($ndicts-1))
- ncom=`find /usr/share/stardict/dic -name "*.ifo" | wc -l`
- nspe=`find "${HOME}"/.stardict/dic -name "*.ifo" | wc -l`
--let nmy=ncom+nspe
-+nmy=$(($ncom+$nspe))
-
- if [ $nmy -ne $ndicts ]; then
- echo "should be: $nmy, we have: $ndicts" >&2
---- a/tests/t_utf8input
-+++ b/tests/t_utf8input
-@@ -9,13 +9,13 @@
- "
- j=0
- for i in `../src/sdcv --utf8-input -n человек 2>&1`; do
-- let j=j+1
-+ j=$(($j+1))
- if [ $j -ne 1 ]; then
- break;
- fi
- done
-
--if [ $j -eq 1 ]; then
-+if [ $j -ne 1 ]; then
- echo "empty results of search: test failed" >&2
- exit 1
- fi
diff --git a/misc/sdcv/patches/10_use-env-home.patch b/misc/sdcv/patches/10_use-env-home.patch
deleted file mode 100644
index e912c68268..0000000000
--- a/misc/sdcv/patches/10_use-env-home.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Use environment variable HOME to get home directory. g_get_home_dir does ignore it.
-Index: sdcv-0.4.2/src/sdcv.cpp
-===================================================================
---- sdcv-0.4.2.orig/src/sdcv.cpp 2008-10-03 09:15:26.000000000 +0200
-+++ sdcv-0.4.2/src/sdcv.cpp 2008-10-03 09:16:25.000000000 +0200
-@@ -157,11 +157,14 @@
- data_dir="/usr/share/stardict/dic";
- }
-
-+ const char *homedir = g_getenv ("HOME");
-+ if (!homedir)
-+ homedir = g_get_home_dir ();
-
-
- strlist_t dicts_dir_list;
-
-- dicts_dir_list.push_back(std::string(g_get_home_dir())+G_DIR_SEPARATOR+
-+ dicts_dir_list.push_back(std::string(homedir)+G_DIR_SEPARATOR+
- ".stardict"+G_DIR_SEPARATOR+"dic");
- dicts_dir_list.push_back(data_dir);
-
-@@ -186,7 +189,7 @@
- }
-
-
-- string conf_dir = string(g_get_home_dir())+G_DIR_SEPARATOR+".stardict";
-+ string conf_dir = string(homedir)+G_DIR_SEPARATOR+".stardict";
- if (g_mkdir(conf_dir.c_str(), S_IRWXU)==-1 && errno!=EEXIST)
- fprintf(stderr, _("g_mkdir failed: %s\n"), strerror(errno));
-
diff --git a/misc/sdcv/patches/11_allignment.patch b/misc/sdcv/patches/11_allignment.patch
deleted file mode 100644
index dd719f6b7f..0000000000
--- a/misc/sdcv/patches/11_allignment.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Fix unalligned access to buffer.
-
-On several architectures (arm, armel, sparc and ia64), unalligned access to
-integers is not allowed. Buffer in this function is not alligned at all and
-attempt to read integer from it causes crash of application on such
-architectures.
-
-Bug: https://sourceforge.net/tracker/index.php?func=detail&aid=2149388&group_id=122858&atid=694730
---- a/src/lib/lib.cpp
-+++ b/src/lib/lib.cpp
-@@ -496,9 +496,13 @@
- entries[i].keystr=p;
- len=strlen(p);
- p+=len+1;
-- entries[i].off=g_ntohl(*reinterpret_cast<guint32 *>(p));
-+ /*
-+ * Can not use typecasting here, because *data does not have
-+ * to be alligned and unalligned access fails on some architectures.
-+ */
-+ entries[i].off=((unsigned char)p[0] << 24) | ((unsigned char)p[1] << 16) | ((unsigned char)p[2] << 8) | (unsigned char)p[3];
- p+=sizeof(guint32);
-- entries[i].size=g_ntohl(*reinterpret_cast<guint32 *>(p));
-+ entries[i].size=((unsigned char)p[0] << 24) | ((unsigned char)p[1] << 16) | ((unsigned char)p[2] << 8) | (unsigned char)p[3];
- p+=sizeof(guint32);
- }
- }
diff --git a/misc/sdcv/patches/12_fix-formats.patch b/misc/sdcv/patches/12_fix-formats.patch
deleted file mode 100644
index 2d8fcc3025..0000000000
--- a/misc/sdcv/patches/12_fix-formats.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Printing of size_t type should use %zd.
---- a/src/libwrapper.cpp
-+++ b/src/libwrapper.cpp
-@@ -337,13 +337,13 @@
- }//if (!force)
-
- if (!show_all_results && !force) {
-- printf(_("Found %d items, similar to %s.\n"), res_list.size(),
-+ printf(_("Found %zd items, similar to %s.\n"), res_list.size(),
- utf8_output ? str : utf8_to_locale_ign_err(str).c_str());
- for (size_t i=0; i<res_list.size(); ++i) {
- string loc_bookname, loc_def;
- loc_bookname=utf8_to_locale_ign_err(res_list[i].bookname);
- loc_def=utf8_to_locale_ign_err(res_list[i].def);
-- printf("%d)%s-->%s\n", i,
-+ printf("%zd)%s-->%s\n", i,
- utf8_output ? res_list[i].bookname.c_str() : loc_bookname.c_str(),
- utf8_output ? res_list[i].def.c_str() : loc_def.c_str());
- }
-@@ -364,12 +364,12 @@
- } else if (choise==-1)
- break;
- else
-- printf(_("Invalid choice.\nIt must be from 0 to %d or -1.\n"),
-+ printf(_("Invalid choice.\nIt must be from 0 to %zd or -1.\n"),
- res_list.size()-1);
- }
- } else {
- sdcv_pager pager(force);
-- fprintf(pager.get_stream(), _("Found %d items, similar to %s.\n"),
-+ fprintf(pager.get_stream(), _("Found %zd items, similar to %s.\n"),
- res_list.size(), utf8_output ? str : utf8_to_locale_ign_err(str).c_str());
- for (PSearchResult ptr=res_list.begin(); ptr!=res_list.end(); ++ptr)
- print_search_result(pager.get_stream(), *ptr);
diff --git a/misc/sdcv/patches/13_zlib-return-value.patch b/misc/sdcv/patches/13_zlib-return-value.patch
deleted file mode 100644
index 171ac15538..0000000000
--- a/misc/sdcv/patches/13_zlib-return-value.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-From: Michal ÄŒihaÅ™ <nijel@debian.org>
-Subject: Zlib can return negative value, but gulong is unsigned, so it can not catch the error state.
---- a/src/lib/lib.cpp
-+++ b/src/lib/lib.cpp
-@@ -751,12 +751,12 @@
-
- idxdatabuf = (gchar *)g_malloc(fsize);
-
-- gulong len = gzread(in, idxdatabuf, fsize);
-+ ssize_t len = gzread(in, idxdatabuf, fsize);
- gzclose(in);
- if (len < 0)
- return false;
-
-- if (len != fsize)
-+ if (len != (ssize_t)fsize)
- return false;
-
- wordlist.resize(wc+1);
diff --git a/misc/sdcv/sdcv.SlackBuild b/misc/sdcv/sdcv.SlackBuild
index 25393c9013..50c28f0698 100644
--- a/misc/sdcv/sdcv.SlackBuild
+++ b/misc/sdcv/sdcv.SlackBuild
@@ -25,14 +25,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=sdcv
-VERSION=${VERSION:-0.4.2}
+VERSION=${VERSION:-0.5.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -79,34 +79,30 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
-exec chmod 644 {} \;
-# Apply Debian patches
-for i in $CWD/patches/* ; do patch -p1 < $i ; done
-
-autoreconf -fi
-
-CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS" \
-./configure \
- --prefix=/usr \
- --libdir=/usr/lib${LIBDIRSUFFIX} \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --mandir=/usr/man \
- --with-readline \
- --build=$ARCH-slackware-linux
-
-make
-make install DESTDIR=$PKG
+mkdir -p build/locale
+cd build
+ cmake \
+ -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DLIB_SUFFIX=${LIBDIRSUFFIX} \
+ -DMAN_INSTALL_DIR=/usr/man \
+ -DCMAKE_BUILD_TYPE=Release ..
+ make
+ make lang
+ make install DESTDIR=$PKG
+cd ..
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+mv $PKG/usr/share/man $PKG/usr
find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- ABOUT-NLS AUTHORS BUGS COPYING ChangeLog INSTALL NEWS README TODO\
+ AUTHORS LICENSE NEWS README.org \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/sdcv/sdcv.info b/misc/sdcv/sdcv.info
index 0415f46a7d..08f292fe0c 100644
--- a/misc/sdcv/sdcv.info
+++ b/misc/sdcv/sdcv.info
@@ -1,8 +1,8 @@
PRGNAM="sdcv"
-VERSION="0.4.2"
-HOMEPAGE="http://sdcv.sourceforge.net"
-DOWNLOAD="http://downloads.sourceforge.net/sdcv/sdcv-0.4.2.tar.bz2"
-MD5SUM="f624662b333daa5da2d3e99cef519f17"
+VERSION="0.5.3"
+HOMEPAGE="https://dushistov.github.io/sdcv/"
+DOWNLOAD="https://github.com/Dushistov/sdcv/archive/v0.5.3/sdcv-0.5.3.tar.gz"
+MD5SUM="6a75cfe650ce1d0fca229e63278d5c0e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/sdcv/slack-desc b/misc/sdcv/slack-desc
index bbad001845..bf3ca424b5 100644
--- a/misc/sdcv/slack-desc
+++ b/misc/sdcv/slack-desc
@@ -11,7 +11,7 @@ sdcv:
sdcv: sdcv is a console version of stardict, a cross-platform
sdcv: and international dictionary.
sdcv:
-sdcv: homepage: http://sdcv.sourceforge.net
+sdcv: homepage: https://dushistov.github.io/sdcv/
sdcv:
sdcv:
sdcv:
diff --git a/misc/seahorse-plugins/seahorse-plugins.SlackBuild b/misc/seahorse-plugins/seahorse-plugins.SlackBuild
index 558a9fa6d0..a2e67837d5 100644
--- a/misc/seahorse-plugins/seahorse-plugins.SlackBuild
+++ b/misc/seahorse-plugins/seahorse-plugins.SlackBuild
@@ -14,7 +14,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -32,8 +32,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/simh-classic/README b/misc/simh-classic/README
new file mode 100644
index 0000000000..304c40d607
--- /dev/null
+++ b/misc/simh-classic/README
@@ -0,0 +1,28 @@
+SimH (History Simulator) is a collection of simulators for historically
+significant or just plain interesting computer hardware and software
+from the past. The goal of the project is to create highly portable
+system simulators and to publish them as freeware on the Internet,
+with freely available copies of significant or representative software.
+
+SimH implements simulators for:
+
+- Data General Nova, Eclipse
+- Digital Equipment Corporation PDP-1, PDP-4, PDP-7, PDP-8, PDP-9,
+ PDP-10, PDP-11, PDP-15 (and UC15), VAX11/780, VAX3900
+- GRI Corporation GRI-909, GRI-99
+- IBM 1401, 1620, 7090/7094, System 3
+- Interdata (Perkin-Elmer) 16b and 32b systems
+- Hewlett-Packard 2114, 2115, 2116, 2100, 21MX, 1000, 3000
+- Honeywell H316/H516
+- MITS Altair 8800, 8080 only
+- Royal-Mcbee LGP-30, LGP-21
+- Scientific Data Systems SDS 940
+- Xerox Data Systems Sigma 32b systems
+
+This package contains the "classic" version of SimH, the 3.X stream.
+This version is simpler than the 4.X stream, which can be found in
+Github.
+
+Note: Please add /opt/simh-classic/bin to your $PATH or simply
+ invoke each simulator with simh-classic-"name".
+ Example: simh-classic-vax
diff --git a/misc/simh-classic/pdp11_defs.h.patch.gz b/misc/simh-classic/pdp11_defs.h.patch.gz
new file mode 100644
index 0000000000..195ad5a0f8
--- /dev/null
+++ b/misc/simh-classic/pdp11_defs.h.patch.gz
Binary files differ
diff --git a/misc/simh-classic/simh-classic.SlackBuild b/misc/simh-classic/simh-classic.SlackBuild
new file mode 100644
index 0000000000..0bef46e241
--- /dev/null
+++ b/misc/simh-classic/simh-classic.SlackBuild
@@ -0,0 +1,157 @@
+#!/bin/bash
+
+# Slackware build script for the SimH 3.X classic stream
+
+# Copyright 2023 Antonio Leal, Oeiras Porto Salvo, Portugal
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=simh-classic
+VERSION=${VERSION:-3.12_4}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+BASENAME=${BASENAME:-simhv312-4}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+BUILDDIR=$TMP/$BASENAME
+
+rm -rf $PKG $BUILDDIR
+mkdir -p $TMP $PKG $OUTPUT $BUILDDIR
+cd $BUILDDIR
+
+unzip $CWD/$BASENAME.zip
+mv sim/* .
+rmdir sim
+
+# Patch the sources in order for uc15 to compile...
+# gzipped to preserve CRLF line endings
+zcat $CWD/pdp11_defs.h.patch.gz | patch PDP11/pdp11_defs.h
+
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+# make the simulators
+# Randomly fails with more than one job so use -j1
+make -j1 all
+#make -j1 pdp11
+
+# install & strip binaries
+# The subdirectory BIN/buildtools will cause an exit code > 0 hence || true
+install -Dsv -m 0755 BIN/* -t $PKG/opt/$PRGNAM/bin || true
+
+# create program symlinks
+mkdir -p $PKG/usr/bin
+( cd $PKG/usr/bin ; rm -rf simh-classic-altair )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/altair simh-classic-altair )
+( cd $PKG/usr/bin ; rm -rf simh-classic-eclipse )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/eclipse simh-classic-eclipse )
+( cd $PKG/usr/bin ; rm -rf simh-classic-gri )
+( cd $PKG/usr/bin ; rm -rf ../..simh-classic-h316 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/h316 simh-classic-h316 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-i1401 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/i1401 simh-classic-i1401 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-i1620 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/i1620 simh-classic-i1620 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-i7094 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/i7094 simh-classic-i7094 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-id16 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/id16 simh-classic-id16 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-id32 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/id32 simh-classic-id32 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-lgp )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/lgp simh-classic-lgp )
+( cd $PKG/usr/bin ; rm -rf simh-classic-nova )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/nova simh-classic-nova )
+( cd $PKG/usr/bin ; rm -rf simh-classic-pdp1 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/pdp1 simh-classic-pdp1 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-pdp10 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/pdp10 simh-classic-pdp10 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-pdp11 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/pdp11 simh-classic-pdp11 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-pdp15 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/pdp15 simh-classic-pdp15 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-pdp4 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/pdp4 simh-classic-pdp4 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-pdp7 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/pdp7 simh-classic-pdp7 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-pdp8 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/pdp8 simh-classic-pdp8 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-pdp9 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/pdp9 simh-classic-pdp9 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-sds )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/sds simh-classic-sds )
+( cd $PKG/usr/bin ; rm -rf simh-classic-sigma )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/sigma simh-classic-sigma )
+( cd $PKG/usr/bin ; rm -rf simh-classic-uc15 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/uc15 simh-classic-uc15 )
+( cd $PKG/usr/bin ; rm -rf simh-classic-vax )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/vax simh-classic-vax )
+( cd $PKG/usr/bin ; rm -rf simh-classic-vax780 )
+( cd $PKG/usr/bin ; ln -sf ../../opt/simh-classic/bin/vax780 simh-classic-vax780 )
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+mv $BUILDDIR/doc/* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cat $CWD/pdp11_defs.h.patch.gz > $PKG/usr/doc/$PRGNAM-$VERSION/pdp11_defs.h.patch.gz
+
+( cd $PKG/opt/$PRGNAM ; rm -rf doc )
+( cd $PKG/opt/$PRGNAM ; ln -sf ../../usr/doc/$PRGNAM-$VERSION doc )
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG/
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/simh-classic/simh-classic.info b/misc/simh-classic/simh-classic.info
new file mode 100644
index 0000000000..af42c9c550
--- /dev/null
+++ b/misc/simh-classic/simh-classic.info
@@ -0,0 +1,10 @@
+PRGNAM="simh-classic"
+VERSION="3.12_4"
+HOMEPAGE="http://simh.trailing-edge.com/"
+DOWNLOAD="UNSUPPORTED"
+MD5SUM=""
+DOWNLOAD_x86_64="http://simh.trailing-edge.com/sources/simhv312-4.zip"
+MD5SUM_x86_64="aecca3d9b2f8065f93ba3831cfd1d6d0"
+REQUIRES=""
+MAINTAINER="Antonio Leal"
+EMAIL="antonioleal@yahoo.com"
diff --git a/misc/simh-classic/slack-desc b/misc/simh-classic/slack-desc
new file mode 100644
index 0000000000..f96303454a
--- /dev/null
+++ b/misc/simh-classic/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+simh-classic: simh-classic (3.X Classic Version)
+simh-classic:
+simh-classic: SimH (History Simulator) is a collection of simulators for
+simh-classic: historically significant or just plain interesting computer hardware
+simh-classic: and software from the past. The goal of the project is to create
+simh-classic: highly portable system simulators and to publish them as freeware on
+simh-classic: the Internet, with freely available copies of significant or
+simh-classic: representative software.
+simh-classic:
+simh-classic: Homepage: http://simh.trailing-edge.com/
+simh-classic:
diff --git a/misc/slop/slop.SlackBuild b/misc/slop/slop.SlackBuild
index 3b0abfe588..49feb48510 100644
--- a/misc/slop/slop.SlackBuild
+++ b/misc/slop/slop.SlackBuild
@@ -90,6 +90,9 @@ rm -rf $PKG/usr/share
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+find $PKG/usr/man -type f -exec gzip -9 {} \;
+for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING README.md license.txt $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/solunar/README b/misc/solunar/README
index a00192fa67..ba7353a6a2 100644
--- a/misc/solunar/README
+++ b/misc/solunar/README
@@ -1,4 +1,4 @@
-solunar is a simple, command-line utility for rapidly displaying sun- and
-moon-related data, such as sunset times and equinoxes. solunar produces
-output that can be readily parsed by scripts, although it is reasonably
-human-readable.
+solunar is a simple, command-line utility for rapidly displaying sun-
+and moon-related data, such as sunset times and equinoxes. solunar
+produces output that can be readily parsed by scripts, although it is
+reasonably human-readable.
diff --git a/misc/solunar/solunar.SlackBuild b/misc/solunar/solunar.SlackBuild
index 60fc63a2b3..b5e7df5896 100644
--- a/misc/solunar/solunar.SlackBuild
+++ b/misc/solunar/solunar.SlackBuild
@@ -13,7 +13,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -31,8 +31,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/solunar/solunar.info b/misc/solunar/solunar.info
index d15bd8e27a..d3d745719e 100644
--- a/misc/solunar/solunar.info
+++ b/misc/solunar/solunar.info
@@ -1,7 +1,7 @@
PRGNAM="solunar"
VERSION="0.1.0"
HOMEPAGE="http://kevinboone.net/README_solunar.html"
-DOWNLOAD="http://kevinboone.net/solunar.tar.gz"
+DOWNLOAD="https://slackware.uk/sbosrcarch/by-md5/e/2/e264e77db001c5ded56725088db36ac0/solunar.tar.gz"
MD5SUM="e264e77db001c5ded56725088db36ac0"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/spotlighter/spotlighter.SlackBuild b/misc/spotlighter/spotlighter.SlackBuild
index 05cc556481..995b6c3fc8 100644
--- a/misc/spotlighter/spotlighter.SlackBuild
+++ b/misc/spotlighter/spotlighter.SlackBuild
@@ -16,7 +16,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -34,8 +34,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/ssss/patches/0004-Remove-the-direct-PayPal-link.patch b/misc/ssss/patches/0004-Remove-the-direct-PayPal-link.patch
new file mode 100644
index 0000000000..c208e18a71
--- /dev/null
+++ b/misc/ssss/patches/0004-Remove-the-direct-PayPal-link.patch
@@ -0,0 +1,22 @@
+From: Tomasz Buchert <tomasz@debian.org>
+Date: Wed, 2 Sep 2015 20:29:18 +0200
+Subject: Remove the direct PayPal link
+
+---
+ doc.html | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/doc.html b/doc.html
+index 4c79856..d2d3102 100644
+--- a/doc.html
++++ b/doc.html
+@@ -162,8 +162,7 @@
+ <input name="no_note" value="1" type="hidden">
+ <input name="currency_code" value="EUR" type="hidden">
+ <p>
+-If you like this software, think about donating some money via
+- <input src="https://www.paypal.com/en_US/i/btn/x-click-but7.gif" name="submit" alt="PayPal" type="image">.
++If you like this software, think about donating some money (<a href="http://point-at-infinity.org/ssss/">information</a>).
+ </p>
+ </form>
+ <hr>
diff --git a/misc/ssss/patches/series b/misc/ssss/patches/series
new file mode 100644
index 0000000000..cf26d42e4c
--- /dev/null
+++ b/misc/ssss/patches/series
@@ -0,0 +1 @@
+0004-Remove-the-direct-PayPal-link.patch
diff --git a/misc/ssss/slack-desc b/misc/ssss/slack-desc
index d80db2ad98..33bf2bcfc9 100644
--- a/misc/ssss/slack-desc
+++ b/misc/ssss/slack-desc
@@ -13,7 +13,7 @@ ssss: participants, each of which is allocated a share of the secret.
ssss: The secret can only be reconstructed when the shares are combined
ssss: together; individual shares are of no use on their own.
ssss:
-ssss: Homepage: http://point-at-infinity.org/ssss/
+ssss:
ssss:
ssss:
ssss:
diff --git a/misc/ssss/ssss.1 b/misc/ssss/ssss.1
index a429c634e9..3268f57ba3 100644
--- a/misc/ssss/ssss.1
+++ b/misc/ssss/ssss.1
@@ -1,10 +1,10 @@
-.TH ssss 1 User Manuals
+.TH SSSS "1" "September 2023" "0.5" "SlackBuilds.org"
.SH NAME
ssss \- Split and Combine Secrets using Shamir's Secret Sharing Scheme.
.SH SYNOPSIS
-\fBssss-split -t \fIthreshold\fB -n \fIshares\fB [-w \fItoken\fB] [-s \fIlevel\fB] [-x] [-q] [-Q] [-D] [-v]
+\fBssss-split -t \fIthreshold\fB -n \fIshares\fB [-w \fItoken\fB] [-s \fIlevel\fB] [-M] [-r] [-x] [-q] [-Q] [-D] [-v]
-ssss-combine -t \fIthreshold\fB [-x] [-q] [-Q] [-D] [-v]
+ssss-combine -t \fIthreshold\fB [-M] [-r -n \fIshares\fB] [-x] [-q] [-Q] [-D] [-v]
\f1
.SH DESCRIPTION
ssss is an implementation of Shamir's Secret Sharing Scheme. The program suite does both: the generation of shares for a known secret, and the reconstruction of a secret using user-provided shares.
@@ -20,12 +20,18 @@ Specify the number of shares necessary to reconstruct the secret.
\fB-n \fIshares\fB\f1
Specify the number of shares to be generated.
.TP
+\fB-M\f1
+Require a successful memory lock in order to proceed, and terminate if one was not obtained. Option is not available if the code was compiled with NOMLOCK.
+.TP
\fB-w \fItoken\fB\f1
Text token to name shares in order to avoid confusion in case one utilizes secret sharing to protect several independent secrets. The generated shares are prefixed by these tokens.
.TP
\fB-s \fIlevel\fB\f1
Enforce the scheme's security level (in bits). This option implies an upper bound for the length of the shared secret (shorter secrets are padded). Only multiples of 8 in the range from 8 to 1024 are allowed. If this option is ommitted (or the value given is 0) the security level is chosen automatically depending on the secret's length. The security level directly determines the length of the shares.
.TP
+\fB-r\f1
+Recovery mode: \fBssss-combine\f1 reads in a set of \fIt\f1 shares and reconstruct \fIn\f1 shares again. \fBssss-split\f1 doesn't generate shares randomly, but asks the secret and \fIt\f1 - 1 shares (secret is treated here as a share). Usable to recover forgotten shares.
+.TP
\fB-x\f1
Hex mode: use hexadecimal digits in place of ASCII characters for I/O. This is useful if one wants to protect binary data, like block cipher keys.
.TP
@@ -36,7 +42,7 @@ Quiet mode: disable all unnecessary output. Useful in scripts.
Extra quiet mode: like \fB-q\f1, but also suppress warnings.
.TP
\fB-D\f1
-Disable the diffusion layer added in version 0.2. This option is needed when shares are combined that where generated with ssss version 0.1.
+Disable the diffusion layer added in version 0.2. This option is needed when shares are combined that were generated with ssss version 0.1.
.TP
\fB-v\f1
Print version information.
@@ -57,6 +63,6 @@ gpg -c < file.plain > file.encrypted
.SH SECURITY
\fBssss\f1 tries to lock its virtual address space into RAM for privacy reasons. But this may fail for two reasons: either the current uid doesn't permit page locking, or the RLIMIT_MEMLOCK is set too low. After printing a warning message \fBssss\f1 will run even without obtaining the desired mlock.
.SH AUTHOR
-This software (v0.5) was written in 2006 by B. Poettering (ssss AT point-at-infinity.org). Find the newest version of ssss on the project's homepage: \fBhttp://point-at-infinity.org/ssss/\f1.
+The original software (v0.5) was written in 2006 by B. Poettering (ssss AT point-at-infinity.org). Find the newest version of ssss on the project's homepage: \fBhttp://point-at-infinity.org/ssss/\f1. The amended versions (v0.5.1+) were written between 2011..2020 by Jon D Frisby (jfrisby AT mrjoy.com). Find the newest version on github: \fBhttps://github.com/MrJoy/ssss\f1.
.SH FURTHER READING
\fBhttp://en.wikipedia.org/wiki/Secret_sharing\f1
diff --git a/misc/ssss/ssss.1.html b/misc/ssss/ssss.1.html
deleted file mode 100644
index cbcee6ee6f..0000000000
--- a/misc/ssss/ssss.1.html
+++ /dev/null
@@ -1,177 +0,0 @@
-<body text="#000000" link="#0000ff" bgcolor="#ffffff"><center><table width="80%">
-<tr><td><h1>ssss</h1>
-<h2>Split and Combine Secrets using Shamir's Secret Sharing Scheme.</h2>
-
-
-<h2>Synopsis</h2>
-<b>
- ssss-split -t <em>threshold</em> -n <em>shares</em> [-w <em>token</em>]
- [-s <em>level</em>] [-x] [-q] [-Q] [-D] [-v]<br>
-
- ssss-combine -t <em>threshold</em> [-x] [-q] [-Q] [-D] [-v]<br>
-
-</b>
-
-
-<h2>Description</h2>
-
-<p>ssss is an implementation of Shamir's Secret Sharing Scheme. The
-program suite does both: the generation of shares for a known secret,
-and the reconstruction of a secret using user-provided shares.</p>
-
-
-
-<h2>Commands</h2>
-
- <p><b>ssss-split</b>: prompt the user for a secret and generate a set of
- corresponding shares.</p>
-
- <p><b>ssss-combine</b>: read in a set of shares and reconstruct
- the secret.</p>
-
-
-
-<h2>Options</h2>
-
-
-
-<p><b>-t <em>threshold</em></b></p>
-<p>Specify the number of
- shares necessary to reconstruct the secret.</p>
-
-
-
-
-<p><b>-n <em>shares</em></b></p>
-
- <p>Specify the number of shares to be generated.</p>
-
-
-
- <p><b>-w <em>token</em></b></p>
-
- <p>Text token to name shares in order to avoid confusion in case one
- utilizes secret sharing to protect several independent secrets. The
- generated shares are prefixed by these tokens.</p>
-
-
-
- <p><b>-s <em>level</em></b></p>
-
- <p>Enforce the scheme's security level (in bits). This option
- implies an upper bound for the length of the shared secret
- (shorter secrets are padded). Only multiples of 8 in the range
- from 8 to 1024 are allowed. If this option is ommitted (or the
- value given is 0) the security level is chosen automatically
- depending on the secret's length. The security level directly
- determines the length of the shares.</p>
-
-
-
- <p><b>-x</b></p>
-
- <p>Hex mode: use hexadecimal digits in place of ASCII characters for
- I/O. This is useful if one wants to protect binary data, like
- block cipher keys.</p>
-
-
-
- <p><b>-q</b></p>
-
- <p>Quiet mode: disable all unnecessary output. Useful in scripts.
- </p>
-
-
- <p><b>-Q</b></p>
-
- <p>Extra quiet mode: like <b>-q</b>, but also suppress
-warnings.</p>
-
-
-
- <p><b>-D</b></p>
-
- <p>Disable the diffusion layer added in version 0.2. This option
- is needed when shares are combined that where generated with
- ssss version 0.1.</p>
-
-
-
- <p><b>-v</b></p>
-
- <p>Print version information.</p>
-
-
-
-
-<h2>Example</h2>
-
-<p>
- In case you want to protect your login password with a set of ten
- shares in such a way that any three of them can reconstruct the
- password, you simply run the command
-</p>
-
-<p>
- ssss-split -t 3 -n 10 -w passwd
-</p>
-
-<p>
- To reconstruct the password pass three of the generated shares
- (in any order) to
-</p>
-
-<p>
- ssss-combine -t 3
-</p>
-
-
-
-<h2>Notes</h2>
-
-<p>
-To protect a secret larger than 1024 bits a hybrid technique has to be
-applied: encrypt the secret with a block cipher and apply secret
-sharing to just the key. Among others openssl and gpg can do the
-encryption part:
-</p>
-<p>
-openssl bf -e &lt; file.plain &gt; file.encrypted
-</p>
-<p>
-gpg -c &lt; file.plain &gt; file.encrypted
-</p>
-
-
-
-
-<h2>Security</h2>
-
-<p>
-<b>ssss</b> tries to lock its virtual address space into RAM for
-privacy reasons. But this may fail for two reasons: either the current uid
-doesn't permit page locking, or the RLIMIT_MEMLOCK is set too
-low. After printing a warning message <b>ssss</b> will run even without
-obtaining the desired mlock.
-</p>
-
-
-
-
-<h2>Author</h2>
-
- This software (v0.5) was written in 2006 by B. Poettering
- (ssss AT point-at-infinity.org). Find the newest version of
- ssss on the project's homepage: <a href = "http://point-at-infinity.org/ssss/">http://point-at-infinity.org/ssss/</a>.
-
-
-
-<h2>Further reading</h2>
-
- <a href = "http://en.wikipedia.org/wiki/Secret_sharing">http://en.wikipedia.org/wiki/Secret_sharing</a>
-
-
-
-
-</td></tr></table></center>
-</body>
diff --git a/misc/ssss/ssss.SlackBuild b/misc/ssss/ssss.SlackBuild
index fa4a21816c..27c75fc97f 100644
--- a/misc/ssss/ssss.SlackBuild
+++ b/misc/ssss/ssss.SlackBuild
@@ -23,14 +23,27 @@
# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
-# markus reichelt, slackbuilds@mareichelt.de, 0xCCEEF115
+# markus reichelt, email removed.
# 2011 Apr 07 - initial release
+# 20230911 bkw: update for v0.5.7.
+# - switch to MrJoy's fork, which has some minor enhancements.
+# - get rid of ssss.1.html: the existing one in our repo is outdated,
+# and the updated one doesn't build properly. it's the same content
+# as the man page, anyway, so redundant.
+
+# 20230709 bkw: BUILD=2
+# - new maintainer.
+# - man page symlinks to the actual command names.
+# - borrow patches from Debian to fix a bug (bad use of memset) and
+# clean up doc.html so it doesn't load an image from paypal.com every
+# time you view it.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ssss
-VERSION=${VERSION:-0.5}
-BUILD=${BUILD:-1}
+VERSION=${VERSION:-0.5.7}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -42,9 +55,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -56,16 +66,12 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -73,34 +79,52 @@ set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-releases-v$VERSION
+# 20230911 bkw: since upstream puts a / in the tag name (releases/v0.5.7),
+# the magic github URL includes a "v" in the filename.
+tar xvf $CWD/$PRGNAM-releases-v$VERSION.tar.gz
+cd $PRGNAM-releases-v$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} + -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} +
-mkdir -p $PKG/usr/bin $PKG/usr/man/man1 $PKG/usr/doc/$PRGNAM-$VERSION
+# 20230709 bkw: Some patches taken from Debian's ssss-0.5-5. Don't
+# need the Makefile patch, and the "man page" patch really patches the
+# XML source to the man page, which doesn't help us because we can't
+# rebuild the man page anyway.
+# 20230911 bkw: no longer need the memset patch, upstream applied it already.
+for i in $( cat $CWD/patches/series ); do
+ patch -p1 < $CWD/patches/$i
+done
-sed -i "s/-O2/${SLKCFLAGS}/" Makefile
+# 20230709 bkw: No 'make install', so manual install.
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+PKGBIN=$PKG/usr/bin
+PKGMAN1=$PKG/usr/man/man1
-make ssss-split
-make ssss-combine
+mkdir -p $PKGBIN $PKGDOC $PKGMAN1
-cp -a ssss-split ssss-combine $PKG/usr/bin
-cp $CWD/ssss.1 $PKG/usr/man/man1/
+sed -i "s/-O2/${SLKCFLAGS}/" Makefile
+# 20230709 bkw: 'make ssss.1' is supposed to build the man page, but
+# fails. Original script author included the man page with the
+# script. We can't do "make" with no argument here...
+# 20230911 bkw: MrJoy's fork has a 'make install', but it doesn't do
+# what we want. Manual install still works.
+make ssss-split
-find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+# 20230709 bkw: ssss-combine is just a symlink.
+cp -a ssss-split $PKGBIN
+ln -s ssss-split $PKGBIN/ssss-combine
-gzip -9 $PKG/usr/man/man1/ssss.1
+# 20230709 bkw: symlink the man pages to the actual command names, to
+# avoid guesswork on the user's part.
+gzip -9c < $CWD/ssss.1 > $PKGMAN1/ssss.1.gz
+ln -s ssss.1.gz $PKGMAN1/ssss-split.1.gz
+ln -s ssss.1.gz $PKGMAN1/ssss-combine.1.gz
-cp -a HISTORY LICENSE doc.html $CWD/ssss.1.html $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cp -a README* HISTORY* LICENSE* THANKS* doc.html $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/ssss/ssss.info b/misc/ssss/ssss.info
index 75cb36a54d..a19e09bb63 100644
--- a/misc/ssss/ssss.info
+++ b/misc/ssss/ssss.info
@@ -1,10 +1,10 @@
PRGNAM="ssss"
-VERSION="0.5"
-HOMEPAGE="http://point-at-infinity.org/ssss/"
-DOWNLOAD="http://point-at-infinity.org/ssss/ssss-0.5.tar.gz"
-MD5SUM="24227252aa195a146d09de1df10357a1"
+VERSION="0.5.7"
+HOMEPAGE="https://github.com/MrJoy/ssss/"
+DOWNLOAD="https://github.com/MrJoy/ssss/archive/releases/v0.5.7/ssss-releases-v0.5.7.tar.gz"
+MD5SUM="63c757d7b9a06e074d4a58193401cece"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="markus reichelt"
-EMAIL="slackbuilds@mareichelt.de"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/stardict-tools/stardict-tools.SlackBuild b/misc/stardict-tools/stardict-tools.SlackBuild
index 23021ebee4..7c3b51782d 100644
--- a/misc/stardict-tools/stardict-tools.SlackBuild
+++ b/misc/stardict-tools/stardict-tools.SlackBuild
@@ -6,7 +6,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=stardict-tools
-VERSION=${VERSION:-3.0.1}
+VERSION=${VERSION:-3.0.6.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -51,9 +51,9 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar -xvf $CWD/$PRGNAM-$VERSION.tar.bz2
-cd $PRGNAM-$VERSION
+rm -rf stardict-$VERSION
+tar -xvf $CWD/stardict-$VERSION-github-2.tar.?z*
+cd stardict-$VERSION
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
@@ -61,10 +61,16 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-patch -p0 < $CWD/stardict-tools.patch
+sed -i 's/, enchant/, enchant-2/' dict/configure.ac
+sed -i '/AM_GCONF_SOURCE_2/d' dict/configure.ac
+sed -i '/GNOME_DOC_INIT/d' dict/configure.ac
+sed -i '/gnome-doc-utils.make/d' dict/help/Makefile.am
+
+./autogen.sh
+( cd dict ; ./autogen.sh )
CFLAGS="$SLKCFLAGS" \
-CXXFLAGS="$SLKCFLAGS -Wno-error=narrowing -fpermissive" \
+CXXFLAGS="$SLKCFLAGS -std=c++11" \
./configure \
--prefix=/usr \
--libdir=/usr/lib${LIBDIRSUFFIX} \
@@ -72,23 +78,30 @@ CXXFLAGS="$SLKCFLAGS -Wno-error=narrowing -fpermissive" \
--localstatedir=/var \
--mandir=/usr/man \
--docdir=/usr/doc/$PRGNAM-$VERSION \
- --enable-static=no \
+ --disable-gucharmap \
+ --disable-festival \
+ --disable-flite \
+ --disable-espeak \
+ --disable-gnome-support \
+ --disable-schemas-install \
+ --disable-updateinfo \
+ --disable-static \
--build=$ARCH-slackware-linux
+sed -e 's/ -shared / -Wl,-O1,--as-needed\0/g' -i {dict,lib,tools}/libtool
make
-make install DESTDIR=$PKG
mkdir -p $PKG/usr/bin
-cd src
+cd tools/src
cp -a \
21shiji dictbuilder exc2i2e kingsoft soothill wikipedia \
21tech dictd2dic fest2dict mova stardict-editor wikipediaImage \
KangXi directory2dic frgb2utf myspell2dic stardict2txt wordnet \
- Unihan directory2treedic gmx2utf olddic2newdic stardict_dict_update wquick2dic \
- babylon downloadwiki i2e2dict ooo2dict stardict_verify wubi \
- bgl2txt dsl2dict jdictionary oxford2dic tabfile xiaoxuetang-ja \
+ Unihan directory2treedic gmx2utf olddic2newdic wquick2dic \
+ babylon downloadwiki i2e2dict ooo2dict wubi \
+ jdictionary oxford2dic tabfile xiaoxuetang-ja \
buddhist duden jpgb2utf powerword tabfile2sql xmlinout \
- cedict ec50 kanjidic2 pydict2dic testutf8 ydp2dict \
+ cedict ec50 kanjidic2 pydict2dic ydp2dict \
degb2utf edict kdic rucn treedict2dir \
$PKG/usr/bin
cd -
@@ -101,23 +114,23 @@ cp -a AUTHORS COPYING ChangeLog INSTALL README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/examples
-cd src
+cd tools/src
cp -a Po2Tab.zip example.ifo example_treedict.tar.bz2 \
$PKG/usr/doc/$PRGNAM-$VERSION/examples
cd -
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/scripts
-cd src
+cd tools/src
cp -a \
KangXiZiDian-djvu2tiff.py hanzim2dict.py makevietdict.py ooo.sh \
- dictd2dic.sh i2e.sh mkguangyunst.py parse-oxford.perl \
+ i2e.sh mkguangyunst.py parse-oxford.perl \
exc.sh jm2stardict.py myspell.sh stmerge.py \
extractKangXi.py lingea-trd-decoder.py ncce2stardict.pl uyghur2dict.py \
$PKG/usr/doc/$PRGNAM-$VERSION/scripts
cd -
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION/contrib
-cp $CWD/sd $CWD/README.sd $PKG/usr/doc/$PRGNAM-$VERSION/contrib
+cp $CWD/sd $CWD/README.sd $PKG/usr/doc/$PRGNAM-$VERSION/contrib
cp $CWD/README.StarDict $PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/misc/stardict-tools/stardict-tools.info b/misc/stardict-tools/stardict-tools.info
index 34823b914c..cd2ce4b68d 100644
--- a/misc/stardict-tools/stardict-tools.info
+++ b/misc/stardict-tools/stardict-tools.info
@@ -1,10 +1,10 @@
PRGNAM="stardict-tools"
-VERSION="3.0.1"
+VERSION="3.0.6.2"
HOMEPAGE="https://sourceforge.net/projects/stardict-4/"
-DOWNLOAD="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/stardictproject/stardict-tools-3.0.1.tar.bz2"
-MD5SUM="1d78c5da68080368b854278cdf56b8da"
+DOWNLOAD="http://downloads.sourceforge.net/stardict-4/stardict-3.0.6.2-github-2.tar.xz"
+MD5SUM="3a7a0891144b3e9f666de0edf2288363"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="gnome-common"
MAINTAINER="Cezary M. Kruk"
EMAIL="c.kruk@bigfoot.com"
diff --git a/misc/stardict-tools/stardict-tools.patch b/misc/stardict-tools/stardict-tools.patch
deleted file mode 100644
index e7b5aa7243..0000000000
--- a/misc/stardict-tools/stardict-tools.patch
+++ /dev/null
@@ -1,172 +0,0 @@
-Author: Cezary M. Kruk <c.kruk@bigfoot.com>
-Date: 2014-11-06
-Package: stardict-tools
-Version: 3.0.1
-Origin: https://code.google.com/p/stardict-3/downloads/list/stardict-3.0.1.tar.bz2
-Description: fixes things up for gcc-4.8.2
-
-diff -us src/KangXi.cpp src/KangXi.cpp
---- src/KangXi.cpp 2007-07-10 09:16:06.000000000 +0200
-+++ src/KangXi.cpp 2014-11-06 04:08:47.000000000 +0100
-@@ -6,6 +6,9 @@
- #include <list>
- #include <string>
-
-+#include <cstring>
-+using std::strrchr;
-+
- static int hexalpha_to_int(int c)
- {
- char hexalpha[] = "aAbBcCdDeEfF";
-@@ -57,7 +60,7 @@
- gchar utf8[7];
- gint n = g_unichar_to_utf8(uc, utf8);
- utf8[n] = '\0';
-- char *p;
-+ const char *p;
- p = strchr(line, '\t');
- if (!p) {
- g_print("Error: %s\n", line);
-diff -us src/Unihan.cpp src/Unihan.cpp
---- src/Unihan.cpp 2007-07-10 09:16:06.000000000 +0200
-+++ src/Unihan.cpp 2014-11-06 04:15:20.000000000 +0100
-@@ -57,13 +57,13 @@
- }
- const char *han = line+2;
-
-- char *p;
-+ const char *p;
- p = strchr(han, '\t');
- if (!p) {
- g_print("Error: %s\n", line);
- return;
- }
-- *p = '\0';
-+ p = '\0';
- p++;
- const char *key = p;
-
-@@ -72,7 +72,7 @@
- g_print("Error: %s\n", line);
- return;
- }
-- *p = '\0';
-+ p = '\0';
- p++;
- const char *def = p;
-
-diff -us src/bgl2txt.cpp src/bgl2txt.cpp
---- src/bgl2txt.cpp 2007-08-01 05:00:02.000000000 +0200
-+++ src/bgl2txt.cpp 2014-11-06 04:20:23.000000000 +0100
-@@ -1,5 +1,8 @@
- #include "libbgl2txt.h"
-
-+#include <string.h>
-+#include <stdio.h>
-+
- int main(int argc, char * argv[])
- {
- if (argc<2) {
-diff -us src/bgl_babylon.cpp src/bgl_babylon.cpp
---- src/bgl_babylon.cpp 2007-08-16 07:14:35.000000000 +0200
-+++ src/bgl_babylon.cpp 2014-11-06 05:02:40.090014886 +0100
-@@ -25,6 +25,8 @@
- #include <glib/gstdio.h>
- #include <iconv.h>
-
-+#include <string.h>
-+
- #ifdef _WIN32
- #include <io.h>
- #define DUP _dup
-diff -us src/bgl_stardictbuilder.cpp src/bgl_stardictbuilder.cpp
---- src/bgl_stardictbuilder.cpp 2007-09-05 05:48:06.000000000 +0200
-+++ src/bgl_stardictbuilder.cpp 2014-11-06 05:03:42.639927341 +0100
-@@ -23,6 +23,9 @@
- #include <iostream>
- #include <glib.h>
-
-+#include <cstring>
-+using std::strrchr;
-+
- StarDictBuilder::StarDictBuilder( std::string filename )
- {
- const char *p = strrchr(filename.c_str(), G_DIR_SEPARATOR);
-diff -us src/dictbuilder.cpp src/dictbuilder.cpp
---- src/dictbuilder.cpp 2007-07-10 09:16:06.000000000 +0200
-+++ src/dictbuilder.cpp 2014-11-06 03:36:56.000000000 +0100
-@@ -14,6 +14,9 @@
-
- #include "dictbuilder-tree.h"
-
-+#include <string.h>
-+#include <stdio.h>
-+
- struct sectionEntry
- {
- char sign;
-diff -us src/libbgl2txt.cpp src/libbgl2txt.cpp
---- src/libbgl2txt.cpp 2007-08-01 05:01:10.000000000 +0200
-+++ src/libbgl2txt.cpp 2014-11-06 05:04:31.950070070 +0100
-@@ -2,6 +2,9 @@
- #include "bgl_babylonreader.h"
- #include "bgl_stardictbuilder.h"
-
-+#include <cstring>
-+using std::strrchr;
-+
- void convert_bglfile(std::string infile, std::string source_charset, std::string target_charset)
- {
- std::string outfile;
-diff -us src/tabfile2sql.cpp src/tabfile2sql.cpp
---- src/tabfile2sql.cpp 2007-08-15 07:56:06.000000000 +0200
-+++ src/tabfile2sql.cpp 2014-11-06 03:38:08.000000000 +0100
-@@ -9,6 +9,9 @@
-
- #include <string>
-
-+#include <cstring>
-+using std::strrchr;
-+
- void print_info(const char *info)
- {
- g_print("%s", info);
-diff -us src/wordnet.cpp src/wordnet.cpp
---- src/wordnet.cpp 2007-09-10 09:49:15.000000000 +0200
-+++ src/wordnet.cpp 2014-11-06 05:08:15.152193594 +0100
-@@ -3,6 +3,7 @@
- #include <glib.h>
- #include <string>
-
-+#include <string.h>
-
- static int hexalpha_to_int(int c)
- {
-@@ -42,12 +43,12 @@
- return answer;
- }
-
--void convert(std::string &filename, std::string &content)
-+int convert(std::string &filename, std::string &content)
- {
- gchar *contents;
- if (!g_file_get_contents(filename.c_str(), &contents, NULL, NULL)) {
- g_print("Open file %s failed!\n", filename.c_str());
-- return;
-+// return;
- }
- char *p, *p1, *p2, *p3, *p4;
- p = contents;
-diff -us src/wubi.cpp src/wubi.cpp
---- src/wubi.cpp 2007-07-10 09:16:06.000000000 +0200
-+++ src/wubi.cpp 2014-11-06 04:18:16.000000000 +0100
-@@ -6,6 +6,9 @@
- #include <glib.h>
- #include <string>
-
-+#include <cstring>
-+#include <cstdlib>
-+
- void convert(const char *filename)
- {
- struct stat stats;
diff --git a/misc/stardict/patches/fixup_build_on_gcc44.patch b/misc/stardict/patches/fixup_build_on_gcc44.patch
deleted file mode 100644
index 9653171976..0000000000
--- a/misc/stardict/patches/fixup_build_on_gcc44.patch
+++ /dev/null
@@ -1,8728 +0,0 @@
-diff -Nur stardict-3.0.1.orig//src/gconf_file.cpp stardict-3.0.1/src/gconf_file.cpp
---- stardict-3.0.1.orig//src/gconf_file.cpp 2007-07-10 02:16:04.000000000 -0500
-+++ stardict-3.0.1/src/gconf_file.cpp 2010-05-24 00:53:36.371667435 -0500
-@@ -22,6 +22,8 @@
- # include "config.h"
- #endif
-
-+#include <memory>
-+
- #include <glib/gi18n.h>
-
- #include "gconf_file.hpp"
-diff -Nur stardict-3.0.1.orig//src/gconf_file.cpp~ stardict-3.0.1/src/gconf_file.cpp~
---- stardict-3.0.1.orig//src/gconf_file.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/gconf_file.cpp~ 2007-07-10 02:16:04.000000000 -0500
-@@ -0,0 +1,224 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ * Copyright (C) 2005-2006 Evgeniy <dushistov@mail.ru>
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <glib/gi18n.h>
-+
-+#include "gconf_file.hpp"
-+
-+gconf_file::gconf_file(const std::string& path)
-+{
-+ cfgname=path;
-+ if ((gconf_client = gconf_client_get_default())==NULL)
-+ g_warning("Cannot connect to gconf.\n");
-+ else
-+ gconf_client_add_dir(gconf_client, cfgname.c_str(), GCONF_CLIENT_PRELOAD_RECURSIVE, NULL);
-+}
-+
-+gconf_file::~gconf_file()
-+{
-+ for (std::vector<guint>::iterator it=notification_ids.begin();
-+ it!=notification_ids.end(); ++it)
-+ gconf_client_notify_remove(gconf_client, *it);
-+
-+ if (!gconf_client)
-+ return;
-+ gconf_client_remove_dir(gconf_client, cfgname.c_str(), NULL);
-+ g_object_unref(gconf_client);
-+}
-+
-+bool gconf_file::read_bool(const gchar *sect, const gchar *key, bool& val)
-+{
-+ if (!gconf_client)
-+ return false;
-+
-+ std::string real_key(std::string(sect)+"/"+key);
-+
-+ GConfValue *gval=gconf_client_get(gconf_client, real_key.c_str(), NULL);
-+ if (!gval)
-+ return false;
-+ val=gconf_value_get_bool(gval);
-+ gconf_value_free(gval);
-+
-+ return true;
-+}
-+
-+bool gconf_file::read_int(const gchar *sect, const gchar *key, int& val)
-+{
-+ if (!gconf_client)
-+ return false;
-+ std::string real_key(std::string(sect)+"/"+key);
-+ GConfValue *gval=gconf_client_get(gconf_client, real_key.c_str(), NULL);
-+ if (!gval)
-+ return false;
-+ val=gconf_value_get_int(gval);
-+ gconf_value_free(gval);
-+
-+ return true;
-+}
-+
-+bool gconf_file::read_string(const gchar * sect, const gchar *key, std::string& val)
-+{
-+ if (!gconf_client)
-+ return false;
-+
-+ std::string real_key(std::string(sect)+"/"+key);
-+ gchar *gconf_val = gconf_client_get_string(gconf_client, real_key.c_str(), NULL);
-+ if (gconf_val!=NULL)
-+ val=gconf_val;
-+
-+ g_free(gconf_val);
-+
-+ return true;
-+}
-+
-+bool gconf_file::read_strlist(const gchar * sect, const gchar * key, std::list<std::string>& slist)
-+{
-+ if (!gconf_client)
-+ return false;
-+
-+ std::string real_key(std::string(sect)+"/"+key);
-+ GSList *gslist = gconf_client_get_list(gconf_client, real_key.c_str(), GCONF_VALUE_STRING, NULL);
-+ if (!gslist)
-+ return false;
-+
-+ slist.clear();
-+ GSList *p = gslist;
-+ while (p) {
-+ slist.push_back(static_cast<char *>(p->data));
-+ g_free(p->data);
-+ p=g_slist_next(p);
-+ }
-+ g_slist_free(gslist);
-+
-+ return true;
-+}
-+
-+void gconf_file::write_bool(const gchar *sect, const gchar *key, bool val)
-+{
-+ if (!gconf_client)
-+ return;
-+ gchar *real_key=g_strdup_printf("%s/%s", sect, key);
-+ gconf_client_set_bool(gconf_client, real_key, val, NULL);
-+ g_free(real_key);
-+}
-+
-+void gconf_file::write_int(const gchar *sect, const gchar *key, int val)
-+{
-+ if (!gconf_client)
-+ return;
-+ gchar *real_key=g_strdup_printf("%s/%s", sect, key);
-+ gconf_client_set_int(gconf_client, real_key, val, NULL);
-+ g_free(real_key);
-+}
-+
-+void gconf_file::write_string(const gchar *sect, const gchar *key, const std::string& val)
-+{
-+ if(!gconf_client)
-+ return;
-+ gchar *real_key=g_strdup_printf("%s/%s", sect, key);
-+ gconf_client_set_string(gconf_client, real_key, val.c_str(), NULL);
-+ g_free(real_key);
-+}
-+
-+void gconf_file::write_strlist(const gchar *sect, const gchar *key, const std::list<std::string>& slist)
-+{
-+ if (!gconf_client)
-+ return;
-+
-+ GSList *gslist = NULL;
-+ for (std::list<std::string>::const_iterator p = slist.begin();
-+ p!=slist.end(); ++p)
-+ gslist = g_slist_append(gslist, const_cast<char *>(p->c_str()));
-+
-+ gchar *real_key=g_strdup_printf("%s/%s", sect, key);
-+ gconf_client_set_list(gconf_client, real_key, GCONF_VALUE_STRING, gslist, NULL);
-+ g_free(real_key);
-+ g_slist_free(gslist);
-+}
-+
-+static void gconf_client_notify_func(GConfClient *client, guint cnxn_id,
-+ GConfEntry *entry, gpointer user_data)
-+{
-+ sigc::signal<void, const baseconfval*> *ch =
-+ static_cast< sigc::signal<void, const baseconfval*> *>(user_data);
-+ std::auto_ptr<baseconfval> cv;
-+ switch (entry->value->type) {
-+ case GCONF_VALUE_BOOL:
-+ cv.reset(new confval<bool>);
-+ static_cast<confval<bool> *>(cv.get())->val_ =
-+ gconf_value_get_bool(entry->value);
-+ break;
-+ case GCONF_VALUE_INT:
-+ cv.reset(new confval<int>);
-+ static_cast<confval<int> *>(cv.get())->val_ =
-+ gconf_value_get_int(entry->value);
-+ break;
-+ case GCONF_VALUE_STRING: {
-+ cv.reset(new confval<std::string>);
-+ const gchar *gconf_val = gconf_value_get_string(entry->value);
-+ if (gconf_val)
-+ static_cast<confval<std::string> *>(cv.get())->val_ =
-+ gconf_val;
-+ }
-+ case GCONF_VALUE_LIST: {
-+ confval<std::list<std::string> > *newval =
-+ new confval<std::list<std::string> >;
-+ cv.reset(newval);
-+ GSList *gslist = gconf_value_get_list(entry->value);
-+
-+
-+ GSList *p = gslist;
-+ while (p) {
-+ newval->val_.push_back(static_cast<char *>(p->data));
-+ p = g_slist_next(p);
-+ }
-+
-+ }
-+ break;
-+ default:
-+ g_assert(false);
-+ return;
-+ }
-+ ch->emit(cv.get());
-+}
-+
-+static void gfree_func(gpointer data)
-+{
-+ sigc::signal<void, const baseconfval*> *bcv =
-+ static_cast< sigc::signal<void, const baseconfval*> *>(data);
-+ delete bcv;
-+}
-+
-+void gconf_file::notify_add(const gchar *sect, const gchar *key,
-+ const sigc::slot<void, const baseconfval*>& slot)
-+{
-+ std::string name = std::string(sect) + "/" + key;
-+ sigc::signal<void, const baseconfval*> *ch =
-+ new sigc::signal<void, const baseconfval*>;
-+ ch->connect(slot);
-+ guint id = gconf_client_notify_add(gconf_client, name.c_str(),
-+ gconf_client_notify_func, ch,
-+ gfree_func, NULL);
-+ notification_ids.push_back(id);
-+}
-diff -Nur stardict-3.0.1.orig//src/inifile.cpp stardict-3.0.1/src/inifile.cpp
---- stardict-3.0.1.orig//src/inifile.cpp 2007-08-01 04:43:00.000000000 -0500
-+++ stardict-3.0.1/src/inifile.cpp 2010-05-24 00:53:36.372667591 -0500
-@@ -25,6 +25,7 @@
- #include <vector>
- #include <cerrno>
- #include <cstring>
-+#include <cstdlib>
- #include <cstdio>
- #include <glib/gi18n.h>
- #include <glib/gstdio.h>
-diff -Nur stardict-3.0.1.orig//src/inifile.cpp~ stardict-3.0.1/src/inifile.cpp~
---- stardict-3.0.1.orig//src/inifile.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/inifile.cpp~ 2007-08-01 04:43:00.000000000 -0500
-@@ -0,0 +1,272 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ * Copyright (C) 2005-2006 Evgeniy <dushistov@mail.ru>
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <vector>
-+#include <cerrno>
-+#include <cstring>
-+#include <cstdio>
-+#include <glib/gi18n.h>
-+#include <glib/gstdio.h>
-+
-+#include "utils.h"
-+
-+#include "inifile.hpp"
-+
-+static const guchar NEW_STRING_SEP = 1;
-+static const guchar OLD_STRING_SEP = 0xFF;
-+static const gchar *myversion = "1.0";
-+
-+typedef ResourceWrapper<GError, GError, g_error_free> MyGError;
-+
-+void inifile::create_empty()
-+{
-+ g_key_file_set_string(gkeyfile_, "stardict-private", "version",
-+ myversion);
-+ save();
-+ g_key_file_free(gkeyfile_);
-+}
-+
-+void inifile::convert_from_locale_enc()
-+{
-+ MyGError err;
-+ glib::CharStr data;
-+
-+ if (!g_file_get_contents(fname_.c_str(), get_addr(data), NULL,
-+ get_addr(err))) {
-+ g_error(("Can not read %s, reason %s\n"), fname_.c_str(),
-+ err->message);
-+ exit(EXIT_SUCCESS);
-+ }
-+
-+ glib::CharStr utfdata(g_locale_to_utf8(get_impl(data), -1, NULL, NULL,
-+ NULL));
-+ if (!utfdata) {
-+ g_error(("Can not convert ini file content to current locale\n"));
-+ exit(EXIT_SUCCESS);
-+ }
-+
-+ if (!g_file_set_contents(fname_.c_str(), get_impl(utfdata), -1, get_addr(err))) {
-+ g_error("can not save content of ini file %s, reason %s\n",
-+ fname_.c_str(), err->message);
-+ exit(EXIT_SUCCESS);
-+ }
-+}
-+
-+inifile::inifile(const std::string& path)
-+{
-+ fname_ = path;
-+ bool done = false;
-+ while (!done) {
-+ gkeyfile_ = g_key_file_new();
-+ g_key_file_set_list_separator(gkeyfile_, NEW_STRING_SEP);
-+/* create file if not exist, because of g_key_file can not do that */
-+ if (!g_file_test(path.c_str(),
-+ GFileTest(G_FILE_TEST_EXISTS |
-+ G_FILE_TEST_IS_REGULAR))) {
-+ create_empty();
-+ continue;
-+ }
-+
-+ MyGError err;
-+ if (!g_key_file_load_from_file(gkeyfile_, path.c_str(),
-+ GKeyFileFlags(G_KEY_FILE_KEEP_COMMENTS |
-+ G_KEY_FILE_KEEP_TRANSLATIONS),
-+ get_addr(err))) {
-+ if (err->code == G_KEY_FILE_ERROR_UNKNOWN_ENCODING) {
-+ g_key_file_free(gkeyfile_);
-+ convert_from_locale_enc();
-+ continue;
-+ }
-+ g_error(("Can not open config file: %s, reason: %s\n"),
-+ path.c_str(), err->message);
-+ exit(EXIT_FAILURE);//just in case
-+ }
-+
-+ glib::CharStr version(g_key_file_get_string(gkeyfile_, "stardict-private",
-+ "version", get_addr(err)));
-+ if (err) {
-+ if (err->code != G_KEY_FILE_ERROR_KEY_NOT_FOUND &&
-+ err->code != G_KEY_FILE_ERROR_GROUP_NOT_FOUND) {
-+ g_error(("internal error, reason: %s\n"),
-+ err->message);
-+ exit(EXIT_FAILURE);//just in case
-+ }
-+ create_empty();
-+ continue;
-+ }
-+ if (strcmp(get_impl(version), myversion)) {
-+ g_error(("unsupported ini file format\n"));
-+ exit(EXIT_FAILURE);
-+ }
-+ done = true;
-+ }
-+
-+}
-+
-+void inifile::save()
-+{
-+ gsize len;
-+ MyGError err;
-+ glib::CharStr data(
-+ g_key_file_to_data(gkeyfile_, &len, get_addr(err)));
-+
-+ if (err) {
-+ g_warning(("internal error, reason: %s\n"),
-+ err->message);
-+ return;
-+ }
-+ FILE *f = g_fopen(fname_.c_str(), "w");
-+ if (!f) {
-+ g_warning(("can not open file: %s\n"),
-+ fname_.c_str());
-+ return;
-+ }
-+ size_t writeb = fwrite(get_impl(data), 1, len, f);
-+ fclose(f);
-+ if (writeb < len)
-+ g_warning(("write to %s failed, instead of %lu,"
-+ " we wrote %lu\n"), fname_.c_str(), gulong(len), gulong(writeb));
-+}
-+
-+inifile::~inifile()
-+{
-+ save();
-+ g_key_file_free(gkeyfile_);
-+}
-+
-+static bool report_error(GError *err, const gchar *sect, const gchar *key)
-+{
-+ bool res = false;
-+ if (err->code == G_KEY_FILE_ERROR_KEY_NOT_FOUND ||
-+ err->code == G_KEY_FILE_ERROR_GROUP_NOT_FOUND)
-+ res = true;
-+ else
-+ g_warning("Can not read %s/%s value,"
-+ " reason %s\n", sect, key, err->message);
-+ g_error_free(err);
-+ return res;
-+}
-+
-+bool inifile::read_bool(const gchar *sect, const gchar *key, bool& val)
-+{
-+ GError *err = NULL;
-+
-+ gboolean newval = g_key_file_get_boolean(gkeyfile_, sect, key, &err);
-+ if (err)
-+ return report_error(err, sect, key);
-+
-+ val = newval;
-+ return true;
-+}
-+
-+bool inifile::read_int(const gchar *sect, const gchar *key, int& val)
-+{
-+ GError *err = NULL;
-+ gint newval = g_key_file_get_integer(gkeyfile_, sect, key, &err);
-+ if (err)
-+ return report_error(err, sect, key);
-+
-+ val = newval;
-+ return true;
-+}
-+
-+bool inifile::read_string(const gchar * sect, const gchar *key, std::string& val)
-+{
-+ GError *err = NULL;
-+ gchar *newval = g_key_file_get_string(gkeyfile_, sect, key, &err);
-+ if (err) {
-+ g_free(newval);
-+ return report_error(err, sect, key);
-+ }
-+ val = newval;
-+ g_free(newval);
-+ return true;
-+}
-+
-+bool inifile::read_strlist(const gchar *sect, const gchar * key,
-+ std::list<std::string>& slist)
-+{
-+ GError *err = NULL;
-+ gchar **newval = g_key_file_get_string_list(gkeyfile_, sect, key,
-+ NULL, &err);
-+ if (err) {
-+ g_strfreev(newval);
-+ return report_error(err, sect, key);
-+ }
-+ slist.clear();
-+ gchar **p = newval;
-+ while (*p) {
-+ slist.push_back(*p);
-+ ++p;
-+ }
-+ g_strfreev(newval);
-+ return true;
-+}
-+
-+void inifile::write_bool(const gchar *sect, const gchar *key, bool val)
-+{
-+ g_key_file_set_boolean(gkeyfile_, sect, key, val);
-+ expose_event(sect, key, val);
-+}
-+
-+void inifile::write_int(const gchar *sect, const gchar *key, int val)
-+{
-+ g_key_file_set_integer(gkeyfile_, sect, key, val);
-+ expose_event(sect, key, val);
-+}
-+
-+void inifile::write_string(const gchar *sect, const gchar *key,
-+ const std::string& val)
-+{
-+ g_key_file_set_string(gkeyfile_, sect, key, val.c_str());
-+ expose_event(sect, key, val);
-+}
-+
-+void inifile::write_strlist(const gchar *sect, const gchar *key,
-+ const std::list<std::string>& slist)
-+{
-+ size_t len = slist.size();
-+ std::vector<const gchar *> glib_list(len + 1);
-+
-+ std::list<std::string>::const_iterator it;
-+ size_t i;
-+
-+ for (it = slist.begin(), i = 0; it != slist.end(); ++it, ++i)
-+ glib_list[i] = it->c_str();
-+ glib_list[i] = NULL;
-+ g_key_file_set_string_list(gkeyfile_, sect, key, &glib_list[0], len);
-+ expose_event(sect, key, slist);
-+}
-+
-+void inifile::notify_add(const gchar *sect, const gchar *key,
-+ const sigc::slot<void, const baseconfval*>& slot)
-+{
-+ std::string name = std::string(sect) + "/" + key;
-+
-+ ChangeEventsMap::iterator it =
-+ change_events_map_.insert(
-+ std::make_pair(name,
-+ sigc::signal<void, const baseconfval*>())).first;
-+ it->second.connect(slot);
-+}
-diff -Nur stardict-3.0.1.orig//src/lib/common.cpp stardict-3.0.1/src/lib/common.cpp
---- stardict-3.0.1.orig//src/lib/common.cpp 2007-09-24 21:27:24.000000000 -0500
-+++ stardict-3.0.1/src/lib/common.cpp 2010-05-24 00:53:36.372667591 -0500
-@@ -25,6 +25,8 @@
- #endif
-
- #include "common.hpp"
-+#include <cstring>
-+#include <cstdlib>
-
- static void parse_description(const char *p, long len, std::string &description)
- {
-diff -Nur stardict-3.0.1.orig//src/lib/common.cpp~ stardict-3.0.1/src/lib/common.cpp~
---- stardict-3.0.1.orig//src/lib/common.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/lib/common.cpp~ 2007-09-24 21:27:24.000000000 -0500
-@@ -0,0 +1,221 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+/*
-+ * implementation of methods of common for dictionaries structures
-+ */
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include "common.hpp"
-+
-+static void parse_description(const char *p, long len, std::string &description)
-+{
-+ description.clear();
-+ const char *p1 = p;
-+ while (p1 - p < len) {
-+ if (*p1 == '<') {
-+ p1++;
-+ if ((*p1 == 'b' || *p1 == 'B') && (*(p1+1)=='r' || *(p1+1)=='R') && *(p1+2)=='>') {
-+ description += '\n';
-+ p1+=3;
-+ } else {
-+ description += '<';
-+ }
-+ } else {
-+ description += *p1;
-+ p1++;
-+ }
-+ }
-+}
-+
-+//looks not optimal, TODO: refactor
-+bool DictInfo::load_from_ifo_file(const std::string& ifofilename,
-+ bool istreedict)
-+{
-+ ifo_file_name=ifofilename;
-+ gchar *buffer;
-+ if (!g_file_get_contents(ifofilename.c_str(), &buffer, NULL, NULL))
-+ return false;
-+
-+#define TREEDICT_MAGIC_DATA "StarDict's treedict ifo file\nversion="
-+#define DICT_MAGIC_DATA "StarDict's dict ifo file\nversion="
-+ const gchar *magic_data=istreedict ? TREEDICT_MAGIC_DATA : DICT_MAGIC_DATA;
-+ if (!g_str_has_prefix(buffer, magic_data)) {
-+ g_free(buffer);
-+ return false;
-+ }
-+
-+ bool is_dict_300 = false;
-+ gchar *p1;
-+ if (istreedict) {
-+ p1 = buffer + sizeof(TREEDICT_MAGIC_DATA) -1;
-+#define TREEDICT_VERSION_242 "2.4.2\n"
-+ if (g_str_has_prefix(p1, TREEDICT_VERSION_242)) {
-+ p1 += sizeof(TREEDICT_VERSION_242) -2;
-+ } else {
-+ g_print("Load %s failed: Unknown version.\n", ifofilename.c_str());
-+ g_free(buffer);
-+ return false;
-+ }
-+ } else {
-+ p1 = buffer + sizeof(DICT_MAGIC_DATA) -1;
-+#define DICT_VERSION_242 "2.4.2\n"
-+#define DICT_VERSION_300 "3.0.0\n"
-+ if (g_str_has_prefix(p1, DICT_VERSION_242)) {
-+ p1 += sizeof(DICT_VERSION_242) -2;
-+ } else if (g_str_has_prefix(p1, DICT_VERSION_300)) {
-+ p1 += sizeof(DICT_VERSION_300) -2;
-+ is_dict_300 = true;
-+ } else {
-+ g_print("Load %s failed: Unknown version.\n", ifofilename.c_str());
-+ g_free(buffer);
-+ return false;
-+ }
-+ }
-+
-+ gchar *p2,*p3;
-+
-+ if (is_dict_300) {
-+ p2 = strstr(p1,"\nidxoffsetbits=");
-+ if (p2) {
-+ p2 = p2 + sizeof("\nidxoffsetbits=") -1;
-+ if (g_str_has_prefix(p2, "64\n")) {
-+ // TODO
-+ g_print("Load %s failed: not supported presently.\n", ifofilename.c_str());
-+ g_free(buffer);
-+ return false;
-+ }
-+ }
-+ }
-+
-+ p2 = strstr(p1,"\nwordcount=");
-+ if (!p2) {
-+ g_free(buffer);
-+ return false;
-+ }
-+
-+ p3 = strchr(p2+ sizeof("\nwordcount=")-1,'\n');
-+ gchar *tmpstr = (gchar *)g_memdup(p2+sizeof("\nwordcount=")-1, p3-(p2+sizeof("\nwordcount=")-1)+1);
-+ tmpstr[p3-(p2+sizeof("\nwordcount=")-1)] = '\0';
-+ wordcount = atol(tmpstr);
-+ g_free(tmpstr);
-+
-+ p2 = strstr(p1,"\nsynwordcount=");
-+ if (p2) {
-+ p3 = strchr(p2+ sizeof("\nsynwordcount=")-1,'\n');
-+ gchar *tmpstr = (gchar *)g_memdup(p2+sizeof("\nsynwordcount=")-1, p3-(p2+sizeof("\nsynwordcount=")-1)+1);
-+ tmpstr[p3-(p2+sizeof("\nsynwordcount=")-1)] = '\0';
-+ synwordcount = atol(tmpstr);
-+ g_free(tmpstr);
-+ } else {
-+ synwordcount = 0;
-+ }
-+
-+ if (istreedict) {
-+ p2 = strstr(p1,"\ntdxfilesize=");
-+ if (!p2) {
-+ g_free(buffer);
-+ return false;
-+ }
-+ p3 = strchr(p2+ sizeof("\ntdxfilesize=")-1,'\n');
-+ tmpstr = (gchar *)g_memdup(p2+sizeof("\ntdxfilesize=")-1, p3-(p2+sizeof("\ntdxfilesize=")-1)+1);
-+ tmpstr[p3-(p2+sizeof("\ntdxfilesize=")-1)] = '\0';
-+ index_file_size = atol(tmpstr);
-+ g_free(tmpstr);
-+ } else {
-+ p2 = strstr(p1,"\nidxfilesize=");
-+ if (!p2) {
-+ g_free(buffer);
-+ return false;
-+ }
-+
-+ p3 = strchr(p2+ sizeof("\nidxfilesize=")-1,'\n');
-+ tmpstr = (gchar *)g_memdup(p2+sizeof("\nidxfilesize=")-1, p3-(p2+sizeof("\nidxfilesize=")-1)+1);
-+ tmpstr[p3-(p2+sizeof("\nidxfilesize=")-1)] = '\0';
-+ index_file_size = atol(tmpstr);
-+ g_free(tmpstr);
-+
-+ p2 = strstr(p1,"\ndicttype=");
-+ if (p2) {
-+ p2+=sizeof("\ndicttype=")-1;
-+ p3 = strchr(p2, '\n');
-+ dicttype.assign(p2, p3-p2);
-+ }
-+ }
-+
-+ p2 = strstr(p1,"\nbookname=");
-+
-+ if (!p2) {
-+ g_free(buffer);
-+ return false;
-+ }
-+
-+ p2 = p2 + sizeof("\nbookname=") -1;
-+ p3 = strchr(p2, '\n');
-+ bookname.assign(p2, p3-p2);
-+
-+ p2 = strstr(p1,"\nauthor=");
-+ if (p2) {
-+ p2 = p2 + sizeof("\nauthor=") -1;
-+ p3 = strchr(p2, '\n');
-+ author.assign(p2, p3-p2);
-+ }
-+
-+ p2 = strstr(p1,"\nemail=");
-+ if (p2) {
-+ p2 = p2 + sizeof("\nemail=") -1;
-+ p3 = strchr(p2, '\n');
-+ email.assign(p2, p3-p2);
-+ }
-+
-+ p2 = strstr(p1,"\nwebsite=");
-+ if (p2) {
-+ p2 = p2 + sizeof("\nwebsite=") -1;
-+ p3 = strchr(p2, '\n');
-+ website.assign(p2, p3-p2);
-+ }
-+
-+ p2 = strstr(p1,"\ndate=");
-+ if (p2) {
-+ p2 = p2 + sizeof("\ndate=") -1;
-+ p3 = strchr(p2, '\n');
-+ date.assign(p2, p3-p2);
-+ }
-+
-+ p2 = strstr(p1,"\ndescription=");
-+ if (p2) {
-+ p2 = p2 + sizeof("\ndescription=")-1;
-+ p3 = strchr(p2, '\n');
-+ parse_description(p2, p3-p2, description);
-+ }
-+
-+ p2 = strstr(p1,"\nsametypesequence=");
-+ if (p2) {
-+ p2+=sizeof("\nsametypesequence=")-1;
-+ p3 = strchr(p2, '\n');
-+ sametypesequence.assign(p2, p3-p2);
-+ }
-+
-+ g_free(buffer);
-+
-+ return true;
-+}
-+
-diff -Nur stardict-3.0.1.orig//src/lib/data.cpp stardict-3.0.1/src/lib/data.cpp
---- stardict-3.0.1.orig//src/lib/data.cpp 2007-09-20 20:09:52.000000000 -0500
-+++ stardict-3.0.1/src/lib/data.cpp 2010-05-24 00:54:04.762542528 -0500
-@@ -26,7 +26,8 @@
-
- #include "data.hpp"
- #include "getuint32.h"
--
-+#include <stdio.h>
-+#include <cstring>
-
- DictBase::DictBase()
- {
-diff -Nur stardict-3.0.1.orig//src/lib/data.cpp~ stardict-3.0.1/src/lib/data.cpp~
---- stardict-3.0.1.orig//src/lib/data.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/lib/data.cpp~ 2007-09-20 20:09:52.000000000 -0500
-@@ -0,0 +1,298 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+/* implementation of class to work with dictionary data */
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include "kmp.h"
-+
-+#include "data.hpp"
-+#include "getuint32.h"
-+
-+
-+DictBase::DictBase()
-+{
-+ dictfile = NULL;
-+ cache_cur =0;
-+}
-+
-+DictBase::~DictBase()
-+{
-+ if (dictfile)
-+ fclose(dictfile);
-+}
-+
-+gchar* DictBase::GetWordData(guint32 idxitem_offset, guint32 idxitem_size)
-+{
-+ for (int i=0; i<WORDDATA_CACHE_NUM; i++)
-+ if (cache[i].data && cache[i].offset == idxitem_offset)
-+ return cache[i].data;
-+
-+ if (dictfile)
-+ fseek(dictfile, idxitem_offset, SEEK_SET);
-+
-+ gchar *data;
-+ if (!sametypesequence.empty()) {
-+ gchar *origin_data = (gchar *)g_malloc(idxitem_size);
-+
-+ if (dictfile)
-+ fread(origin_data, idxitem_size, 1, dictfile);
-+ else
-+ dictdzfile->read(origin_data, idxitem_offset, idxitem_size);
-+
-+ guint32 data_size;
-+ gint sametypesequence_len = sametypesequence.length();
-+ //there have sametypesequence_len char being omitted.
-+ data_size = idxitem_size + sametypesequence_len; //Here is a bug fix of 2.4.8, which don't add sizeof(guint32) anymore.
-+
-+ //if the last item's size is determined by the end up '\0',then +=sizeof(gchar);
-+ //if the last item's size is determined by the head guint32 type data,then +=sizeof(guint32);
-+ switch (sametypesequence[sametypesequence_len-1]) {
-+ case 'm':
-+ case 't':
-+ case 'y':
-+ case 'l':
-+ case 'g':
-+ case 'x':
-+ case 'k':
-+ case 'w':
-+ data_size += sizeof(gchar);
-+ break;
-+ case 'W':
-+ case 'P':
-+ data_size += sizeof(guint32);
-+ break;
-+ default:
-+ if (g_ascii_isupper(sametypesequence[sametypesequence_len-1]))
-+ data_size += sizeof(guint32);
-+ else
-+ data_size += sizeof(gchar);
-+ break;
-+ }
-+ data = (gchar *)g_malloc(data_size + sizeof(guint32));
-+ gchar *p1,*p2;
-+ p1 = data + sizeof(guint32);
-+ p2 = origin_data;
-+ guint32 sec_size;
-+ //copy the head items.
-+ for (int i=0; i<sametypesequence_len-1; i++) {
-+ *p1=sametypesequence[i];
-+ p1+=sizeof(gchar);
-+ switch (sametypesequence[i]) {
-+ case 'm':
-+ case 't':
-+ case 'y':
-+ case 'l':
-+ case 'g':
-+ case 'x':
-+ case 'k':
-+ case 'w':
-+ sec_size = strlen(p2)+1;
-+ memcpy(p1, p2, sec_size);
-+ p1+=sec_size;
-+ p2+=sec_size;
-+ break;
-+ case 'W':
-+ case 'P':
-+ sec_size = get_uint32(p2);
-+ sec_size += sizeof(guint32);
-+ memcpy(p1, p2, sec_size);
-+ p1+=sec_size;
-+ p2+=sec_size;
-+ break;
-+ default:
-+ if (g_ascii_isupper(sametypesequence[i])) {
-+ sec_size = get_uint32(p2);
-+ sec_size += sizeof(guint32);
-+ } else {
-+ sec_size = strlen(p2)+1;
-+ }
-+ memcpy(p1, p2, sec_size);
-+ p1+=sec_size;
-+ p2+=sec_size;
-+ break;
-+ }
-+ }
-+ //calculate the last item 's size.
-+ sec_size = idxitem_size - (p2-origin_data);
-+ *p1=sametypesequence[sametypesequence_len-1];
-+ p1+=sizeof(gchar);
-+ switch (sametypesequence[sametypesequence_len-1]) {
-+ case 'm':
-+ case 't':
-+ case 'y':
-+ case 'l':
-+ case 'g':
-+ case 'x':
-+ case 'k':
-+ case 'w':
-+ memcpy(p1, p2, sec_size);
-+ p1 += sec_size;
-+ *p1='\0';//add the end up '\0';
-+ break;
-+ case 'W':
-+ case 'P':
-+ memcpy(p1, &sec_size, sizeof(guint32));
-+ p1 += sizeof(guint32);
-+ memcpy(p1, p2, sec_size);
-+ break;
-+ default:
-+ if (g_ascii_isupper(sametypesequence[sametypesequence_len-1])) {
-+ memcpy(p1, &sec_size, sizeof(guint32));
-+ p1 += sizeof(guint32);
-+ memcpy(p1, p2, sec_size);
-+ } else {
-+ memcpy(p1, p2, sec_size);
-+ p1 += sec_size;
-+ *p1='\0';
-+ }
-+ break;
-+ }
-+ g_free(origin_data);
-+ memcpy(data, &data_size, sizeof(guint32));
-+ } else {
-+ data = (gchar *)g_malloc(idxitem_size + sizeof(guint32));
-+ if (dictfile)
-+ fread(data+sizeof(guint32), idxitem_size, 1, dictfile);
-+ else
-+ dictdzfile->read(data+sizeof(guint32), idxitem_offset, idxitem_size);
-+ memcpy(data, &idxitem_size, sizeof(guint32));
-+ }
-+ g_free(cache[cache_cur].data);
-+
-+ cache[cache_cur].data = data;
-+ cache[cache_cur].offset = idxitem_offset;
-+ cache_cur++;
-+ if (cache_cur==WORDDATA_CACHE_NUM)
-+ cache_cur = 0;
-+ return data;
-+}
-+
-+bool DictBase::SearchData(std::vector<std::string> &SearchWords, guint32 idxitem_offset, guint32 idxitem_size, gchar *origin_data)
-+{
-+ int nWord = SearchWords.size();
-+ std::vector<bool> WordFind(nWord, false);
-+ int nfound=0;
-+
-+ if (dictfile)
-+ fseek(dictfile, idxitem_offset, SEEK_SET);
-+ if (dictfile)
-+ fread(origin_data, idxitem_size, 1, dictfile);
-+ else
-+ dictdzfile->read(origin_data, idxitem_offset, idxitem_size);
-+ gchar *p = origin_data;
-+ guint32 sec_size;
-+ int j;
-+ if (!sametypesequence.empty()) {
-+ gint sametypesequence_len = sametypesequence.length();
-+ for (int i=0; i<sametypesequence_len-1; i++) {
-+ switch (sametypesequence[i]) {
-+ case 'm':
-+ case 't':
-+ case 'y':
-+ case 'l':
-+ case 'g':
-+ case 'x':
-+ case 'k':
-+ case 'w':
-+ case 'h':
-+ for (j=0; j<nWord; j++)
-+ // KMP() is faster than strstr() in theory. Really? Always be true?
-+ //if (!WordFind[j] && strstr(p, SearchWords[j].c_str())) {
-+ if (!WordFind[j] && KMP(p, strlen(p), SearchWords[j].c_str())!=-1) {
-+ WordFind[j] = true;
-+ ++nfound;
-+ }
-+
-+ if (nfound==nWord)
-+ return true;
-+ sec_size = strlen(p)+1;
-+ p+=sec_size;
-+ break;
-+ default:
-+ if (g_ascii_isupper(sametypesequence[i])) {
-+ sec_size = get_uint32(p);
-+ sec_size += sizeof(guint32);
-+ } else {
-+ sec_size = strlen(p)+1;
-+ }
-+ p+=sec_size;
-+ }
-+ }
-+ switch (sametypesequence[sametypesequence_len-1]) {
-+ case 'm':
-+ case 't':
-+ case 'y':
-+ case 'l':
-+ case 'g':
-+ case 'x':
-+ case 'k':
-+ case 'w':
-+ case 'h':
-+ sec_size = idxitem_size - (p-origin_data);
-+ for (j=0; j<nWord; j++)
-+ //if (!WordFind[j] && g_strstr_len(p, sec_size, SearchWords[j].c_str())) {
-+ if (!WordFind[j] && KMP(p, sec_size, SearchWords[j].c_str())!=-1) {
-+ WordFind[j] = true;
-+ ++nfound;
-+ }
-+
-+ if (nfound==nWord)
-+ return true;
-+ break;
-+ }
-+ } else {
-+ while (guint32(p - origin_data)<idxitem_size) {
-+ switch (*p) {
-+ case 'm':
-+ case 't':
-+ case 'y':
-+ case 'l':
-+ case 'g':
-+ case 'x':
-+ case 'k':
-+ case 'w':
-+ case 'h':
-+ for (j=0; j<nWord; j++)
-+ if (!WordFind[j] && strstr(p, SearchWords[j].c_str())) {
-+ WordFind[j] = true;
-+ ++nfound;
-+ }
-+
-+ if (nfound==nWord)
-+ return true;
-+ sec_size = strlen(p)+1;
-+ p+=sec_size;
-+ break;
-+ default:
-+ if (g_ascii_isupper(*p)) {
-+ sec_size = get_uint32(p);
-+ sec_size += sizeof(guint32);
-+ } else {
-+ sec_size = strlen(p)+1;
-+ }
-+ p+=sec_size;
-+ }
-+ }
-+ }
-+ return false;
-+}
-+
-diff -Nur stardict-3.0.1.orig//src/lib/http_client.h stardict-3.0.1/src/lib/http_client.h
---- stardict-3.0.1.orig//src/lib/http_client.h 2007-08-30 04:23:32.000000000 -0500
-+++ stardict-3.0.1/src/lib/http_client.h 2010-05-24 00:53:36.373667747 -0500
-@@ -5,6 +5,7 @@
- #include "sigc++/sigc++.h"
- #include <string>
- #include <vector>
-+#include <cstring>
-
- #ifndef _WIN32
- # include <netdb.h>
-diff -Nur stardict-3.0.1.orig//src/lib/pluginmanager.cpp stardict-3.0.1/src/lib/pluginmanager.cpp
---- stardict-3.0.1.orig//src/lib/pluginmanager.cpp 2007-10-09 22:26:45.000000000 -0500
-+++ stardict-3.0.1/src/lib/pluginmanager.cpp 2010-05-24 00:53:36.374667481 -0500
-@@ -1,6 +1,7 @@
- #include "pluginmanager.h"
- #include "file.hpp"
- #include <string>
-+#include <cstring>
-
- StarDictPluginBaseObject::StarDictPluginBaseObject(const char *filename, GModule *module_, plugin_configure_func_t configure_func_):
- plugin_filename(filename), module(module_), configure_func(configure_func_)
-diff -Nur stardict-3.0.1.orig//src/lib/stardict_client.cpp stardict-3.0.1/src/lib/stardict_client.cpp
---- stardict-3.0.1.orig//src/lib/stardict_client.cpp 2007-10-31 03:32:11.000000000 -0500
-+++ stardict-3.0.1/src/lib/stardict_client.cpp 2010-05-24 00:55:03.618667273 -0500
-@@ -30,6 +30,9 @@
- #include "getuint32.h"
-
- #include "stardict_client.hpp"
-+#include <stdio.h>
-+#include <cstdlib>
-+#include <cstring>
-
- #define PROTOCOL_VERSION "0.3"
-
-diff -Nur stardict-3.0.1.orig//src/lib/stardict_client.cpp~ stardict-3.0.1/src/lib/stardict_client.cpp~
---- stardict-3.0.1.orig//src/lib/stardict_client.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/lib/stardict_client.cpp~ 2007-10-31 03:32:11.000000000 -0500
-@@ -0,0 +1,1263 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ * Copyright (C) 2006 Hu Zheng <huzheng_001@163.com>
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <glib.h>
-+#include <glib/gi18n.h>
-+
-+#include "sockets.hpp"
-+#include "md5.h"
-+#include "getuint32.h"
-+
-+#include "stardict_client.hpp"
-+
-+#define PROTOCOL_VERSION "0.3"
-+
-+#define CODE_HELLO 220 /* text msg-id */
-+#define CODE_GOODBYE 221 /* Closing Connection */
-+#define CODE_OK 250 /* ok */
-+#define CODE_TEMPORARILY_UNAVAILABLE 420 /* server unavailable */
-+#define CODE_SYNTAX_ERROR 500 /* syntax, command not recognized */
-+#define CODE_DENIED 521
-+#define CODE_DICTMASK_NOTSET 522
-+
-+unsigned int STARDICT::Cmd::next_seq = 1;
-+
-+sigc::signal<void, const char *> StarDictClient::on_error_;
-+sigc::signal<void, const struct STARDICT::LookupResponse *, unsigned int> StarDictClient::on_lookup_end_;
-+sigc::signal<void, const struct STARDICT::LookupResponse *, unsigned int> StarDictClient::on_floatwin_lookup_end_;
-+sigc::signal<void, const char *> StarDictClient::on_register_end_;
-+sigc::signal<void, const char *> StarDictClient::on_getdictmask_end_;
-+sigc::signal<void, const char *> StarDictClient::on_dirinfo_end_;
-+sigc::signal<void, const char *> StarDictClient::on_dictinfo_end_;
-+sigc::signal<void, int> StarDictClient::on_maxdictcount_end_;
-+sigc::signal<void, std::list<char *> *> StarDictClient::on_previous_end_;
-+sigc::signal<void, std::list<char *> *> StarDictClient::on_next_end_;
-+
-+static void arg_escape(std::string &earg, const char *arg)
-+{
-+ earg.clear();
-+ while (*arg) {
-+ if (*arg=='\\') {
-+ earg+="\\\\";
-+ } else if (*arg==' ') {
-+ earg+="\\ ";
-+ } else if (*arg=='\n') {
-+ earg+="\\n";
-+ } else {
-+ earg+=*arg;
-+ }
-+ arg++;
-+ }
-+}
-+
-+STARDICT::Cmd::Cmd(int cmd, ...)
-+{
-+ this->seq = this->next_seq;
-+ this->next_seq++;
-+ this->reading_status = 0;
-+ this->command = cmd;
-+ va_list ap;
-+ va_start( ap, cmd );
-+ switch (cmd) {
-+ case CMD_CLIENT:
-+ {
-+ const char *client_name = va_arg( ap, const char * );
-+ std::string earg1, earg2;
-+ arg_escape(earg1, PROTOCOL_VERSION);
-+ arg_escape(earg2, client_name);
-+ this->data = g_strdup_printf("client %s %s\n", earg1.c_str(), earg2.c_str());
-+ break;
-+ }
-+ case CMD_REGISTER:
-+ {
-+ const char *user = va_arg( ap, const char * );
-+ const char *passwd = va_arg( ap, const char * );
-+ const char *email = va_arg( ap, const char * );
-+ std::string earg1, earg2, earg3;
-+ arg_escape(earg1, user);
-+ arg_escape(earg2, passwd);
-+ arg_escape(earg3, email);
-+ this->data = g_strdup_printf("register %s %s %s\n", earg1.c_str(), earg2.c_str(), earg3.c_str());
-+ break;
-+ }
-+ /*case CMD_CHANGE_PASSWD:
-+ {
-+ const char *user = va_arg( ap, const char * );
-+ const char *old_passwd = va_arg( ap, const char * );
-+ const char *new_passwd = va_arg( ap, const char * );
-+ std::string earg1, earg2, earg3;
-+ arg_escape(earg1, user);
-+ arg_escape(earg2, old_passwd);
-+ arg_escape(earg3, new_passwd);
-+ this->data = g_strdup_printf("change_password %s %s %s\n", earg1.c_str(), earg2.c_str(), earg3.c_str());
-+ break;
-+ }*/
-+ case CMD_AUTH:
-+ this->auth = new AuthInfo();
-+ this->auth->user = va_arg( ap, const char * );
-+ this->auth->passwd = va_arg( ap, const char * );
-+ break;
-+ case CMD_LOOKUP:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("lookup %s 30\n", earg.c_str());
-+ this->lookup_response = NULL;
-+ break;
-+ }
-+ case CMD_PREVIOUS:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("previous %s 15\n", earg.c_str());
-+ this->wordlist_response = NULL;
-+ break;
-+ }
-+ case CMD_NEXT:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("next %s 30\n", earg.c_str());
-+ this->wordlist_response = NULL;
-+ break;
-+ }
-+ /*case CMD_QUERY:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("query %s\n", earg.c_str());
-+ this->lookup_response = NULL;
-+ break;
-+ }*/
-+ case CMD_SELECT_QUERY:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("selectquery %s\n", earg.c_str());
-+ this->lookup_response = NULL;
-+ break;
-+ }
-+ case CMD_SMART_QUERY:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ int BeginPos = va_arg( ap, int );
-+ this->data = g_strdup_printf("smartquery %s %d\n", earg.c_str(), BeginPos);
-+ this->lookup_response = NULL;
-+ break;
-+ }
-+ case CMD_DEFINE:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("define %s\n", earg.c_str());
-+ this->lookup_response = NULL;
-+ break;
-+ }
-+ case CMD_SET_DICT_MASK:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("setdictmask %s\n", earg.c_str());
-+ break;
-+ }
-+ case CMD_GET_DICT_MASK:
-+ this->data = g_strdup("getdictmask\n");
-+ break;
-+ /*case CMD_SET_COLLATE_FUNC:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("setcollatefunc %s\n", earg.c_str());
-+ break;
-+ }
-+ case CMD_GET_COLLATE_FUNC:
-+ this->data = g_strdup("getcollatefunc\n");
-+ break;
-+ case CMD_SET_LANGUAGE:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("setlanguage %s\n", earg.c_str());
-+ break;
-+ }
-+ case CMD_GET_LANGUAGE:
-+ this->data = g_strdup("getlanguage\n");
-+ break;
-+ case CMD_SET_EMAIL:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("setemail %s\n", earg.c_str());
-+ break;
-+ }
-+ case CMD_GET_EMAIL:
-+ this->data = g_strdup("getemail\n");
-+ break;
-+ case CMD_GET_USER_LEVEL:
-+ this->data = g_strdup("getuserlevel\n");
-+ break;*/
-+ case CMD_MAX_DICT_COUNT:
-+ this->data = g_strdup("maxdictcount\n");
-+ break;
-+ case CMD_DIR_INFO:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("dirinfo %s\n", earg.c_str());
-+ break;
-+ }
-+ case CMD_DICT_INFO:
-+ {
-+ std::string earg;
-+ arg_escape(earg, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("dictinfo %s\n", earg.c_str());
-+ break;
-+ }
-+ /*case CMD_USER_LEVEL:
-+ {
-+ std::string earg1, earg2, earg3;
-+ arg_escape(earg1, va_arg( ap, const char * ));
-+ arg_escape(earg2, va_arg( ap, const char * ));
-+ arg_escape(earg3, va_arg( ap, const char * ));
-+ this->data = g_strdup_printf("userlevel %s %s %s\n", earg1.c_str(), earg2.c_str(), earg3.c_str());
-+ break;
-+ }*/
-+ case CMD_QUIT:
-+ this->data = g_strdup("quit\n");
-+ break;
-+ }
-+ va_end( ap );
-+}
-+
-+STARDICT::LookupResponse::DictResponse::DictResponse()
-+{
-+ oword = NULL;
-+}
-+
-+STARDICT::LookupResponse::DictResponse::~DictResponse()
-+{
-+ g_free(oword);
-+ for (std::list<DictResult *>::iterator i = dict_result_list.begin(); i != dict_result_list.end(); ++i) {
-+ delete *i;
-+ }
-+}
-+
-+STARDICT::LookupResponse::DictResponse::DictResult::DictResult()
-+{
-+ bookname = NULL;
-+}
-+
-+STARDICT::LookupResponse::DictResponse::DictResult::~DictResult()
-+{
-+ g_free(bookname);
-+ for (std::list<WordResult *>::iterator i = word_result_list.begin(); i != word_result_list.end(); ++i) {
-+ delete *i;
-+ }
-+}
-+
-+STARDICT::LookupResponse::DictResponse::DictResult::WordResult::WordResult()
-+{
-+ word = NULL;
-+}
-+
-+STARDICT::LookupResponse::DictResponse::DictResult::WordResult::~WordResult()
-+{
-+ g_free(word);
-+ for (std::list<char *>::iterator i = datalist.begin(); i != datalist.end(); ++i) {
-+ g_free(*i);
-+ }
-+}
-+
-+STARDICT::LookupResponse::~LookupResponse()
-+{
-+ if (listtype == ListType_List) {
-+ for (std::list<char *>::iterator i = wordlist->begin(); i != wordlist->end(); ++i) {
-+ g_free(*i);
-+ }
-+ delete wordlist;
-+ } else if (listtype == ListType_Tree) {
-+ for (std::list<WordTreeElement *>::iterator i = wordtree->begin(); i != wordtree->end(); ++i) {
-+ g_free((*i)->bookname);
-+ for (std::list<char *>::iterator j = (*i)->wordlist.begin(); j != (*i)->wordlist.end(); ++j) {
-+ g_free(*j);
-+ }
-+ delete *i;
-+ }
-+ delete wordtree;
-+ }
-+}
-+
-+STARDICT::Cmd::~Cmd()
-+{
-+ if (this->command == CMD_AUTH) {
-+ delete this->auth;
-+ } else {
-+ g_free(this->data);
-+ }
-+ if (this->command == CMD_LOOKUP || this->command == CMD_DEFINE || this->command == CMD_SELECT_QUERY || this->command == CMD_SMART_QUERY) {
-+ delete this->lookup_response;
-+ } else if (this->command == CMD_PREVIOUS || this->command == CMD_NEXT) {
-+ if (this->wordlist_response) {
-+ for (std::list<char *>::iterator i = this->wordlist_response->begin(); i != this->wordlist_response->end(); ++i) {
-+ g_free(*i);
-+ }
-+ delete this->wordlist_response;
-+ }
-+ }
-+}
-+
-+StarDictCache::StarDictCache()
-+{
-+ str_pool.resize(str_pool_size);
-+ for (size_t i = 0; i< str_pool_size; i++) {
-+ str_pool[i] = NULL;
-+ }
-+ cur_str_pool_pos = 0;
-+
-+ lookup_response_pool.resize(lookup_response_pool_size);
-+ for (size_t i = 0; i< lookup_response_pool_size; i++) {
-+ lookup_response_pool[i] = NULL;
-+ }
-+ cur_lookup_response_pool_pos = 0;
-+}
-+
-+StarDictCache::~StarDictCache()
-+{
-+ clean_all_cache();
-+}
-+
-+void StarDictCache::clean_all_cache()
-+{
-+ for (std::vector<StrElement *>::iterator i = str_pool.begin(); i != str_pool.end(); ++i) {
-+ if (*i) {
-+ g_free((*i)->data);
-+ delete *i;
-+ *i = NULL;
-+ }
-+ }
-+ clean_cache_lookup_response();
-+}
-+
-+void StarDictCache::clean_cache_lookup_response()
-+{
-+ for (std::vector<LookupResponseElement *>::iterator i = lookup_response_pool.begin(); i != lookup_response_pool.end(); ++i) {
-+ if (*i) {
-+ delete ((*i)->lookup_response);
-+ delete *i;
-+ *i = NULL;
-+ }
-+ }
-+}
-+
-+char *StarDictCache::get_cache_str(const char *key_str)
-+{
-+ for (std::vector<StrElement *>::iterator i = str_pool.begin(); i != str_pool.end(); ++i) {
-+ if (*i) {
-+ if ((*i)->key == key_str)
-+ return (*i)->data;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+STARDICT::LookupResponse *StarDictCache::get_cache_lookup_response(const char *key_str)
-+{
-+ for (std::vector<LookupResponseElement *>::iterator i = lookup_response_pool.begin(); i != lookup_response_pool.end(); ++i) {
-+ if (*i) {
-+ if ((*i)->key == key_str)
-+ return (*i)->lookup_response;
-+ }
-+ }
-+ return NULL;
-+}
-+
-+void StarDictCache::clean_cache_str(const char *key_str)
-+{
-+ for (std::vector<StrElement *>::iterator i = str_pool.begin(); i != str_pool.end(); ++i) {
-+ if (*i) {
-+ if ((*i)->key == key_str) {
-+ g_free((*i)->data);
-+ delete *i;
-+ *i = NULL;
-+ //return;
-+ }
-+ }
-+ }
-+}
-+
-+void StarDictCache::save_cache_str(const char *key_str, char *data)
-+{
-+ if (str_pool[cur_str_pool_pos]) {
-+ g_free(str_pool[cur_str_pool_pos]->data);
-+ delete str_pool[cur_str_pool_pos];
-+ }
-+ str_pool[cur_str_pool_pos] = new StrElement();
-+ str_pool[cur_str_pool_pos]->key = key_str;
-+ str_pool[cur_str_pool_pos]->data = data;
-+ cur_str_pool_pos++;
-+ if (cur_str_pool_pos == str_pool_size)
-+ cur_str_pool_pos = 0;
-+}
-+
-+void StarDictCache::save_cache_lookup_response(const char *key_str, STARDICT::LookupResponse *lookup_response)
-+{
-+ if (lookup_response_pool[cur_lookup_response_pool_pos]) {
-+ delete lookup_response_pool[cur_lookup_response_pool_pos]->lookup_response;
-+ delete lookup_response_pool[cur_lookup_response_pool_pos];
-+ }
-+ lookup_response_pool[cur_lookup_response_pool_pos] = new LookupResponseElement();
-+ lookup_response_pool[cur_lookup_response_pool_pos]->key = key_str;
-+ lookup_response_pool[cur_lookup_response_pool_pos]->lookup_response = lookup_response;
-+ cur_lookup_response_pool_pos++;
-+ if (cur_lookup_response_pool_pos == lookup_response_pool_size)
-+ cur_lookup_response_pool_pos = 0;
-+}
-+
-+StarDictClient::StarDictClient()
-+{
-+ sd_ = -1;
-+ channel_ = NULL;
-+ in_source_id_ = 0;
-+ out_source_id_ = 0;
-+ is_connected_ = false;
-+}
-+
-+StarDictClient::~StarDictClient()
-+{
-+ disconnect();
-+}
-+
-+void StarDictClient::set_server(const char *host, int port)
-+{
-+ if (host_ != host || port_ != port) {
-+ host_ = host;
-+ port_ = port;
-+ host_resolved = false;
-+ clean_all_cache();
-+ }
-+}
-+
-+void StarDictClient::set_auth(const char *user, const char *md5passwd)
-+{
-+ if (user_ != user || md5passwd_ != md5passwd) {
-+ user_ = user;
-+ md5passwd_ = md5passwd;
-+ clean_all_cache();
-+ }
-+}
-+
-+bool StarDictClient::try_cache(STARDICT::Cmd *c)
-+{
-+ if (c->command == STARDICT::CMD_LOOKUP || c->command == STARDICT::CMD_DEFINE || c->command == STARDICT::CMD_SELECT_QUERY || c->command == STARDICT::CMD_SMART_QUERY) {
-+ STARDICT::LookupResponse *res = get_cache_lookup_response(c->data);
-+ if (res) {
-+ if (c->command == STARDICT::CMD_LOOKUP || c->command == STARDICT::CMD_DEFINE)
-+ on_lookup_end_.emit(res, 0);
-+ else if (c->command == STARDICT::CMD_SELECT_QUERY || c->command == STARDICT::CMD_SMART_QUERY)
-+ on_floatwin_lookup_end_.emit(res, 0);
-+ delete c;
-+ return true;
-+ } else {
-+ return false;
-+ }
-+ }
-+ if (c->command == STARDICT::CMD_PREVIOUS || c->command == STARDICT::CMD_NEXT) {
-+ // Not implemented yet.
-+ return false;
-+ }
-+ char *data = get_cache_str(c->data);
-+ if (data) {
-+ switch (c->command) {
-+ case STARDICT::CMD_DIR_INFO:
-+ on_dirinfo_end_.emit(data);
-+ break;
-+ case STARDICT::CMD_DICT_INFO:
-+ on_dictinfo_end_.emit(data);
-+ break;
-+ case STARDICT::CMD_GET_DICT_MASK:
-+ on_getdictmask_end_.emit(data);
-+ break;
-+ case STARDICT::CMD_MAX_DICT_COUNT:
-+ on_maxdictcount_end_.emit(atoi(data));
-+ break;
-+ }
-+ delete c;
-+ return true;
-+ } else {
-+ return false;
-+ }
-+}
-+
-+void StarDictClient::send_commands(int num, ...)
-+{
-+ STARDICT::Cmd *c;
-+ if (!is_connected_) {
-+#ifdef _WIN32
-+ c = new STARDICT::Cmd(STARDICT::CMD_CLIENT, "StarDict Windows");
-+#else
-+ c = new STARDICT::Cmd(STARDICT::CMD_CLIENT, "StarDict Linux");
-+#endif
-+ cmdlist.push_back(c);
-+ if (!user_.empty() && !md5passwd_.empty()) {
-+ c = new STARDICT::Cmd(STARDICT::CMD_AUTH, user_.c_str(), md5passwd_.c_str());
-+ cmdlist.push_back(c);
-+ }
-+ }
-+ va_list ap;
-+ va_start( ap, num);
-+ for (int i = 0; i< num; i++) {
-+ c = va_arg( ap, STARDICT::Cmd *);
-+ cmdlist.push_back(c);
-+ }
-+ va_end( ap );
-+ if (!is_connected_) {
-+ waiting_banner_ = true;
-+ connect();
-+ }
-+}
-+
-+void StarDictClient::try_cache_or_send_commands(int num, ...)
-+{
-+ STARDICT::Cmd *c;
-+ std::list<STARDICT::Cmd *> send_cmdlist;
-+ va_list ap;
-+ va_start( ap, num);
-+ for (int i = 0; i< num; i++) {
-+ c = va_arg( ap, STARDICT::Cmd *);
-+ if (!try_cache(c)) {
-+ send_cmdlist.push_back(c);
-+ }
-+ }
-+ va_end( ap );
-+ if (send_cmdlist.empty())
-+ return;
-+
-+ if (!is_connected_) {
-+#ifdef _WIN32
-+ c = new STARDICT::Cmd(STARDICT::CMD_CLIENT, "StarDict Windows");
-+#else
-+ c = new STARDICT::Cmd(STARDICT::CMD_CLIENT, "StarDict Linux");
-+#endif
-+ cmdlist.push_back(c);
-+ if (!user_.empty() && !md5passwd_.empty()) {
-+ c = new STARDICT::Cmd(STARDICT::CMD_AUTH, user_.c_str(), md5passwd_.c_str());
-+ cmdlist.push_back(c);
-+ }
-+ }
-+ for (std::list<STARDICT::Cmd *>::iterator i = send_cmdlist.begin(); i!= send_cmdlist.end(); ++i) {
-+ cmdlist.push_back(*i);
-+ }
-+ if (!is_connected_) {
-+ waiting_banner_ = true;
-+ connect();
-+ }
-+}
-+
-+void StarDictClient::write_str(const char *str, GError **err)
-+{
-+ int len = strlen(str);
-+ int left_byte = len;
-+ GIOStatus res;
-+ gsize bytes_written;
-+ while (left_byte) {
-+ res = g_io_channel_write_chars(channel_, str+(len - left_byte), left_byte, &bytes_written, err);
-+ if (res == G_IO_STATUS_ERROR) {
-+ disconnect();
-+ return;
-+ }
-+ left_byte -= bytes_written;
-+ }
-+ res = g_io_channel_flush(channel_, err);
-+ if (res == G_IO_STATUS_ERROR) {
-+ disconnect();
-+ }
-+ if (out_source_id_ == 0)
-+ out_source_id_ = g_io_add_watch(channel_, GIOCondition(G_IO_OUT), on_io_out_event, this);
-+}
-+
-+void StarDictClient::request_command()
-+{
-+ reading_type_ = READ_LINE;
-+ if (cmdlist.empty()) {
-+ cmdlist.push_back(new STARDICT::Cmd(STARDICT::CMD_QUIT));
-+ }
-+ STARDICT::Cmd *c = cmdlist.front();
-+ switch (c->command) {
-+ case STARDICT::CMD_AUTH:
-+ {
-+ struct MD5Context ctx;
-+ unsigned char digest[16];
-+ char hex[33];
-+ int i;
-+ MD5Init(&ctx);
-+ MD5Update(&ctx, (const unsigned char*)cmd_reply.daemonStamp.c_str(), cmd_reply.daemonStamp.length());
-+ MD5Update(&ctx, (const unsigned char*)(c->auth->passwd.c_str()), c->auth->passwd.length());
-+ MD5Final(digest, &ctx );
-+ for (i = 0; i < 16; i++)
-+ sprintf( hex+2*i, "%02x", digest[i] );
-+ hex[32] = '\0';
-+ std::string earg1, earg2;
-+ arg_escape(earg1, c->auth->user.c_str());
-+ arg_escape(earg2, hex);
-+ char *data = g_strdup_printf("auth %s %s\n", earg1.c_str(), earg2.c_str());
-+ GError *err = NULL;
-+ write_str(data, &err);
-+ g_free(data);
-+ if (err) {
-+ on_error_.emit(err->message);
-+ g_error_free(err);
-+ return;
-+ }
-+ break;
-+ }
-+ default:
-+ {
-+ GError *err = NULL;
-+ write_str(c->data, &err);
-+ if (err) {
-+ on_error_.emit(err->message);
-+ g_error_free(err);
-+ return;
-+ }
-+ break;
-+ }
-+ }
-+ return;
-+}
-+
-+void StarDictClient::clean_command()
-+{
-+ for (std::list<STARDICT::Cmd *>::iterator i=cmdlist.begin(); i!=cmdlist.end(); ++i) {
-+ delete *i;
-+ }
-+ cmdlist.clear();
-+}
-+
-+void StarDictClient::connect()
-+{
-+ if (host_resolved) {
-+ on_resolved(this, true, sa);
-+ } else {
-+ Socket::resolve(host_, this, on_resolved);
-+ }
-+}
-+
-+void StarDictClient::on_resolved(gpointer data, bool resolved, in_addr_t sa_)
-+{
-+ StarDictClient *oStarDictClient = (StarDictClient *)data;
-+ if (!resolved) {
-+ static bool showed_once = false;
-+ if (!showed_once) {
-+ showed_once = true;
-+ gchar *mes = g_strdup_printf("Can not reslove %s: %s\n",
-+ oStarDictClient->host_.c_str(), Socket::get_error_msg().c_str());
-+ on_error_.emit(mes);
-+ g_free(mes);
-+ }
-+ return;
-+ }
-+
-+ if (oStarDictClient->host_resolved == false) {
-+ oStarDictClient->sa = sa_;
-+ oStarDictClient->host_resolved = true;
-+ }
-+
-+ oStarDictClient->sd_ = Socket::socket();
-+
-+ if (oStarDictClient->sd_ == -1) {
-+ std::string str = "Can not create socket: " + Socket::get_error_msg();
-+ on_error_.emit(str.c_str());
-+ return;
-+ }
-+ Socket::connect(oStarDictClient->sd_, sa_, oStarDictClient->port_, oStarDictClient, on_connected);
-+}
-+
-+void StarDictClient::on_connected(gpointer data, bool succeeded)
-+{
-+ StarDictClient *oStarDictClient = (StarDictClient *)data;
-+ if (!succeeded) {
-+ static bool showed_once = false;
-+ if (!showed_once) {
-+ showed_once = true;
-+ gchar *mes = g_strdup_printf("Can not connect to %s: %s\n",
-+ oStarDictClient->host_.c_str(), Socket::get_error_msg().c_str());
-+ on_error_.emit(mes);
-+ g_free(mes);
-+ }
-+ return;
-+ }
-+#ifdef _WIN32
-+ oStarDictClient->channel_ = g_io_channel_win32_new_socket(oStarDictClient->sd_);
-+#else
-+ oStarDictClient->channel_ = g_io_channel_unix_new(oStarDictClient->sd_);
-+#endif
-+
-+ g_io_channel_set_encoding(oStarDictClient->channel_, NULL, NULL);
-+
-+ /* make sure that the channel is non-blocking */
-+ int flags = g_io_channel_get_flags(oStarDictClient->channel_);
-+ flags |= G_IO_FLAG_NONBLOCK;
-+ GError *err = NULL;
-+ g_io_channel_set_flags(oStarDictClient->channel_, GIOFlags(flags), &err);
-+ if (err) {
-+ g_io_channel_unref(oStarDictClient->channel_);
-+ oStarDictClient->channel_ = NULL;
-+ gchar *str = g_strdup_printf("Unable to set the channel as non-blocking: %s", err->message);
-+ on_error_.emit(str);
-+ g_free(str);
-+ g_error_free(err);
-+ return;
-+ }
-+
-+ oStarDictClient->is_connected_ = true;
-+ oStarDictClient->waiting_banner_ = true;
-+ oStarDictClient->reading_type_ = READ_LINE;
-+ oStarDictClient->in_source_id_ = g_io_add_watch(oStarDictClient->channel_, GIOCondition(G_IO_IN | G_IO_ERR), on_io_in_event, oStarDictClient);
-+}
-+
-+void StarDictClient::disconnect()
-+{
-+ clean_command();
-+ if (in_source_id_) {
-+ g_source_remove(in_source_id_);
-+ in_source_id_ = 0;
-+ }
-+ if (out_source_id_) {
-+ g_source_remove(out_source_id_);
-+ out_source_id_ = 0;
-+ }
-+
-+ if (channel_) {
-+ g_io_channel_shutdown(channel_, TRUE, NULL);
-+ g_io_channel_unref(channel_);
-+ channel_ = NULL;
-+ }
-+ if (sd_ != -1) {
-+ Socket::close(sd_);
-+ sd_ = -1;
-+ }
-+ is_connected_ = false;
-+}
-+
-+gboolean StarDictClient::on_io_out_event(GIOChannel *ch, GIOCondition cond,
-+ gpointer user_data)
-+{
-+ StarDictClient *stardict_client = static_cast<StarDictClient *>(user_data);
-+ GError *err = NULL;
-+ GIOStatus res = g_io_channel_flush(stardict_client->channel_, &err);
-+ if (res == G_IO_STATUS_AGAIN) {
-+ return TRUE;
-+ } else if (err) {
-+ on_error_.emit(err->message);
-+ g_error_free(err);
-+ }
-+ stardict_client->out_source_id_ = 0;
-+ return FALSE;
-+}
-+
-+gboolean StarDictClient::on_io_in_event(GIOChannel *ch, GIOCondition cond,
-+ gpointer user_data)
-+{
-+ StarDictClient *stardict_client = static_cast<StarDictClient *>(user_data);
-+
-+ if (!stardict_client->channel_) {
-+ //g_warning("No channel available\n");
-+ return FALSE;
-+ }
-+ if (cond & G_IO_ERR) {
-+ /*gchar *mes =
-+ g_strdup_printf("Connection failed to the dictionary server at %s:%d",
-+ stardict_client->host_.c_str(), stardict_client->port_);
-+ on_error_.emit(mes);
-+ g_free(mes);*/
-+ stardict_client->disconnect();
-+ return FALSE;
-+ }
-+ GError *err = NULL;
-+ gsize term, len;
-+ gchar *line;
-+ GIOStatus res;
-+
-+ for (;;) {
-+ if (!stardict_client->channel_)
-+ break;
-+ bool result;
-+ if (stardict_client->reading_type_ == READ_SIZE) {
-+ gsize bytes_read;
-+ res = g_io_channel_read_chars(stardict_client->channel_, stardict_client->size_data+(stardict_client->size_count-stardict_client->size_left), stardict_client->size_left, &bytes_read, &err);
-+ if (res == G_IO_STATUS_ERROR || res == G_IO_STATUS_EOF) {
-+ if (err) {
-+ gchar *str = g_strdup_printf("Error while reading reply from server: %s", err->message);
-+ on_error_.emit(str);
-+ g_free(str);
-+ g_error_free(err);
-+ }
-+ stardict_client->disconnect();
-+
-+ return FALSE;
-+ }
-+ stardict_client->size_left -= bytes_read;
-+ if (stardict_client->size_left == 0)
-+ result = stardict_client->parse(stardict_client->size_data);
-+ else
-+ break;
-+ } else {
-+ if (stardict_client->reading_type_ == READ_LINE)
-+ g_io_channel_set_line_term(stardict_client->channel_, "\n", 1);
-+ else if (stardict_client->reading_type_ == READ_STRING)
-+ g_io_channel_set_line_term(stardict_client->channel_, "", 1);
-+
-+ res = g_io_channel_read_line(stardict_client->channel_, &line,
-+ &len, &term, &err);
-+ if (res == G_IO_STATUS_ERROR || res == G_IO_STATUS_EOF) {
-+ if (err) {
-+ gchar *str = g_strdup_printf("Error while reading reply from server: %s", err->message);
-+ on_error_.emit(str);
-+ g_free(str);
-+ g_error_free(err);
-+ }
-+ stardict_client->disconnect();
-+
-+ return FALSE;
-+ }
-+
-+ if (!len)
-+ break;
-+
-+ //truncate the line terminator before parsing
-+ line[term] = '\0';
-+ result = stardict_client->parse(line);
-+ }
-+ if (!result) {
-+ stardict_client->disconnect();
-+ return FALSE;
-+ }
-+ }
-+
-+ return TRUE;
-+}
-+
-+int StarDictClient::parse_banner(gchar *line)
-+{
-+ int status;
-+ status = atoi(line);
-+ if (status != CODE_HELLO) {
-+ if (status == CODE_TEMPORARILY_UNAVAILABLE) {
-+ printf("Server temporarily unavailable!\n");
-+ } else {
-+ printf("Unexpected status code %d\n", status);
-+ }
-+ return 0;
-+ }
-+ char *p;
-+ p = strrchr(line, ' ');
-+ if (p) {
-+ p++;
-+ cmd_reply.daemonStamp = p;
-+ }
-+ return 1;
-+}
-+
-+int StarDictClient::parse_command_client(gchar *line)
-+{
-+ int status;
-+ status = atoi(line);
-+ if (status != CODE_OK) {
-+ gchar *str = g_strdup_printf("Client denied: %s", line);
-+ on_error_.emit(str);
-+ g_free(str);
-+ return 0;
-+ }
-+ return 1;
-+}
-+
-+int StarDictClient::parse_command_auth(gchar *line)
-+{
-+ int status;
-+ status = atoi(line);
-+ if (status != CODE_OK) {
-+ gchar *str = g_strdup_printf(_("Authentication denied: %s"), line);
-+ on_error_.emit(str);
-+ g_free(str);
-+ return 0;
-+ }
-+ return 1;
-+}
-+
-+int StarDictClient::parse_command_register(gchar *line)
-+{
-+ int status;
-+ status = atoi(line);
-+ if (status != CODE_OK) {
-+ gchar *str = g_strdup_printf(_("Register failed: %s"), line);
-+ on_error_.emit(str);
-+ g_free(str);
-+ return 0;
-+ }
-+ on_register_end_.emit(_("Register success!"));
-+ return 1;
-+}
-+
-+int StarDictClient::parse_command_quit(gchar *line)
-+{
-+ int status;
-+ status = atoi(line);
-+ if (status != CODE_GOODBYE) {
-+ }
-+ return 0;
-+}
-+
-+int StarDictClient::parse_command_setdictmask(gchar *line)
-+{
-+ int status;
-+ status = atoi(line);
-+ if (status != CODE_OK) {
-+ gchar *str = g_strdup_printf("Set Dict Mask failed: %s", line);
-+ on_error_.emit(str);
-+ g_free(str);
-+ return 0;
-+ }
-+ clean_cache_str("getdictmask\n");
-+ clean_cache_lookup_response();
-+ return 1;
-+}
-+
-+int StarDictClient::parse_command_getdictmask(STARDICT::Cmd* cmd, gchar *buf)
-+{
-+ if (cmd->reading_status == 0) {
-+ int status;
-+ status = atoi(buf);
-+ if (status != CODE_OK) {
-+ g_free(buf);
-+ on_error_.emit(_("You haven't setup the account. Please open the \"Net Dict\" page in the Preferences dialog and register an account first."));
-+ return 0;
-+ }
-+ g_free(buf);
-+ cmd->reading_status = 1;
-+ reading_type_ = READ_STRING;
-+ } else if (cmd->reading_status == 1) {
-+ on_getdictmask_end_.emit(buf);
-+ save_cache_str(cmd->data, buf);
-+ return 1;
-+ }
-+ return 2;
-+}
-+
-+int StarDictClient::parse_command_dirinfo(STARDICT::Cmd* cmd, gchar *buf)
-+{
-+ if (cmd->reading_status == 0) {
-+ int status;
-+ status = atoi(buf);
-+ if (status != CODE_OK) {
-+ gchar *str = g_strdup_printf("Get dir info failed: %s", buf);
-+ g_free(buf);
-+ on_error_.emit(str);
-+ g_free(str);
-+ return 0;
-+ }
-+ g_free(buf);
-+ cmd->reading_status = 1;
-+ reading_type_ = READ_STRING;
-+ } else if (cmd->reading_status == 1) {
-+ on_dirinfo_end_.emit(buf);
-+ save_cache_str(cmd->data, buf);
-+ return 1;
-+ }
-+ return 2;
-+}
-+
-+int StarDictClient::parse_command_dictinfo(STARDICT::Cmd* cmd, gchar *buf)
-+{
-+ if (cmd->reading_status == 0) {
-+ int status;
-+ status = atoi(buf);
-+ if (status != CODE_OK) {
-+ gchar *str = g_strdup_printf("Get dict info failed: %s", buf);
-+ g_free(buf);
-+ on_error_.emit(str);
-+ g_free(str);
-+ return 0;
-+ }
-+ g_free(buf);
-+ cmd->reading_status = 1;
-+ reading_type_ = READ_STRING;
-+ } else if (cmd->reading_status == 1) {
-+ on_dictinfo_end_.emit(buf);
-+ save_cache_str(cmd->data, buf);
-+ return 1;
-+ }
-+ return 2;
-+}
-+
-+int StarDictClient::parse_command_maxdictcount(STARDICT::Cmd* cmd, gchar *buf)
-+{
-+ if (cmd->reading_status == 0) {
-+ int status;
-+ status = atoi(buf);
-+ if (status != CODE_OK) {
-+ gchar *str = g_strdup_printf("Get max dict count failed: %s", buf);
-+ g_free(buf);
-+ on_error_.emit(str);
-+ g_free(str);
-+ return 0;
-+ }
-+ g_free(buf);
-+ cmd->reading_status = 1;
-+ reading_type_ = READ_STRING;
-+ } else if (cmd->reading_status == 1) {
-+ on_maxdictcount_end_.emit(atoi(buf));
-+ save_cache_str(cmd->data, buf);
-+ return 1;
-+ }
-+ return 2;
-+}
-+
-+int StarDictClient::parse_wordlist(STARDICT::Cmd* cmd, gchar *buf)
-+{
-+ if (cmd->reading_status == 0) { // Read code.
-+ int status;
-+ status = atoi(buf);
-+ g_free(buf);
-+ if (status != CODE_OK) {
-+ return 0;
-+ }
-+ cmd->wordlist_response = new std::list<char *>;
-+ cmd->reading_status = 1;
-+ reading_type_ = READ_STRING;
-+ } else if (cmd->reading_status == 1) {
-+ if (*buf == '\0') {
-+ g_free(buf);
-+ if (cmd->command == STARDICT::CMD_PREVIOUS) {
-+ on_previous_end_.emit(cmd->wordlist_response);
-+ return 1;
-+ } else {
-+ on_next_end_.emit(cmd->wordlist_response);
-+ return 1;
-+ }
-+ } else {
-+ cmd->wordlist_response->push_back(buf);
-+ }
-+ }
-+ return 2;
-+}
-+
-+int StarDictClient::parse_dict_result(STARDICT::Cmd* cmd, gchar *buf)
-+{
-+ if (cmd->reading_status == 0) { // Read code.
-+ int status;
-+ status = atoi(buf);
-+ g_free(buf);
-+ if (status != CODE_OK) {
-+ if (status == CODE_DICTMASK_NOTSET) {
-+ on_error_.emit(_("You haven't chosen any dictionaries, please choose some by clicking \"Manage Dict\"->\"Network dictionaries\"->\"Add\"."));
-+ return 1;
-+ } else {
-+ return 0;
-+ }
-+ }
-+ cmd->lookup_response = new STARDICT::LookupResponse();
-+ cmd->lookup_response->listtype = STARDICT::LookupResponse::ListType_None;
-+ cmd->reading_status = 1;
-+ reading_type_ = READ_STRING;
-+ } else if (cmd->reading_status == 1) { // Read original word.
-+ cmd->lookup_response->dict_response.oword = buf;
-+ cmd->reading_status = 2;
-+ } else if (cmd->reading_status == 2) { // Read book name.
-+ if (*buf == '\0') {
-+ g_free(buf);
-+ if (cmd->command == STARDICT::CMD_DEFINE) {
-+ on_lookup_end_.emit(cmd->lookup_response, cmd->seq);
-+ save_cache_lookup_response(cmd->data, cmd->lookup_response);
-+ cmd->lookup_response = NULL;
-+ return 1;
-+ } else if ( cmd->command == STARDICT::CMD_SELECT_QUERY || cmd->command == STARDICT::CMD_SMART_QUERY) {
-+ on_floatwin_lookup_end_.emit(cmd->lookup_response, cmd->seq);
-+ save_cache_lookup_response(cmd->data, cmd->lookup_response);
-+ cmd->lookup_response = NULL;
-+ return 1;
-+ }
-+ cmd->reading_status = 6;
-+ reading_type_ = READ_STRING;
-+ } else {
-+ struct STARDICT::LookupResponse::DictResponse::DictResult *dict_result = new STARDICT::LookupResponse::DictResponse::DictResult();
-+ dict_result->bookname = buf;
-+ cmd->lookup_response->dict_response.dict_result_list.push_back(dict_result);
-+ cmd->reading_status = 3;
-+ }
-+ } else if (cmd->reading_status == 3) { // Read word.
-+ if (*buf == '\0') {
-+ g_free(buf);
-+ cmd->reading_status = 2;
-+ } else {
-+ struct STARDICT::LookupResponse::DictResponse::DictResult::WordResult *word_result = new STARDICT::LookupResponse::DictResponse::DictResult::WordResult();
-+ word_result->word = buf;
-+ cmd->lookup_response->dict_response.dict_result_list.back()->word_result_list.push_back(word_result);;
-+ cmd->reading_status = 4;
-+ reading_type_ = READ_SIZE;
-+ size_data = (char *)g_malloc(sizeof(guint32));
-+ size_count = size_left = sizeof(guint32);
-+ }
-+ } else if (cmd->reading_status == 4) {
-+ guint32 datasize = g_ntohl(get_uint32(buf));
-+ memcpy(buf, &datasize, sizeof(guint32));
-+ if (datasize == 0) {
-+ g_free(buf);
-+ cmd->reading_status = 3;
-+ reading_type_ = READ_STRING;
-+ } else {
-+ cmd->reading_status = 5;
-+ size_data = (char *)g_realloc(buf, datasize + sizeof(guint32));
-+ size_count = datasize + sizeof(guint32);
-+ size_left = datasize;
-+ }
-+ } else if (cmd->reading_status == 5) {
-+ cmd->lookup_response->dict_response.dict_result_list.back()->word_result_list.back()->datalist.push_back(buf);
-+ cmd->reading_status = 4;
-+ size_data = (char *)g_malloc(sizeof(guint32));
-+ size_count = size_left = sizeof(guint32);
-+ } else if (cmd->reading_status == 6) {
-+ if (strcmp(buf, "d") == 0) {
-+ cmd->reading_status = 8;
-+ cmd->lookup_response->listtype = STARDICT::LookupResponse::ListType_Tree;
-+ cmd->lookup_response->wordtree = new std::list<STARDICT::LookupResponse::WordTreeElement *>;
-+ } else {
-+ cmd->reading_status = 7;
-+ if (strcmp(buf, "r") == 0)
-+ cmd->lookup_response->listtype = STARDICT::LookupResponse::ListType_Rule_List;
-+ else if (strcmp(buf, "g") == 0)
-+ cmd->lookup_response->listtype = STARDICT::LookupResponse::ListType_Regex_List;
-+ else if (strcmp(buf, "f") == 0)
-+ cmd->lookup_response->listtype = STARDICT::LookupResponse::ListType_Fuzzy_List;
-+ else
-+ cmd->lookup_response->listtype = STARDICT::LookupResponse::ListType_List;
-+ cmd->lookup_response->wordlist = new std::list<char *>;
-+ }
-+ g_free(buf);
-+ } else if (cmd->reading_status == 7) {
-+ if (*buf == '\0') {
-+ g_free(buf);
-+ on_lookup_end_.emit(cmd->lookup_response, cmd->seq);
-+ save_cache_lookup_response(cmd->data, cmd->lookup_response);
-+ cmd->lookup_response = NULL;
-+ return 1;
-+ } else {
-+ cmd->lookup_response->wordlist->push_back(buf);
-+ }
-+ } else if (cmd->reading_status == 8) {
-+ if (*buf == '\0') {
-+ g_free(buf);
-+ on_lookup_end_.emit(cmd->lookup_response, cmd->seq);
-+ save_cache_lookup_response(cmd->data, cmd->lookup_response);
-+ cmd->lookup_response = NULL;
-+ return 1;
-+ } else {
-+ STARDICT::LookupResponse::WordTreeElement *element = new STARDICT::LookupResponse::WordTreeElement();
-+ element->bookname = buf;
-+ cmd->lookup_response->wordtree->push_back(element);
-+ cmd->reading_status = 9;
-+ }
-+ } else if (cmd->reading_status == 9) {
-+ if (*buf == '\0') {
-+ g_free(buf);
-+ cmd->reading_status = 8;
-+ } else {
-+ cmd->lookup_response->wordtree->back()->wordlist.push_back(buf);
-+ }
-+ }
-+ return 2;
-+}
-+
-+bool StarDictClient::parse(gchar *line)
-+{
-+ int result;
-+ if (waiting_banner_) {
-+ waiting_banner_ = false;
-+ result = parse_banner(line);
-+ g_free(line);
-+ if (!result)
-+ return false;
-+ request_command();
-+ return true;
-+ }
-+ STARDICT::Cmd* cmd = cmdlist.front();
-+ switch (cmd->command) {
-+ case STARDICT::CMD_CLIENT:
-+ result = parse_command_client(line);
-+ g_free(line);
-+ break;
-+ case STARDICT::CMD_AUTH:
-+ result = parse_command_auth(line);
-+ g_free(line);
-+ break;
-+ case STARDICT::CMD_REGISTER:
-+ result = parse_command_register(line);
-+ g_free(line);
-+ break;
-+ case STARDICT::CMD_GET_DICT_MASK:
-+ result = parse_command_getdictmask(cmd, line);
-+ break;
-+ case STARDICT::CMD_SET_DICT_MASK:
-+ result = parse_command_setdictmask(line);
-+ break;
-+ case STARDICT::CMD_DIR_INFO:
-+ result = parse_command_dirinfo(cmd, line);
-+ break;
-+ case STARDICT::CMD_DICT_INFO:
-+ result = parse_command_dictinfo(cmd, line);
-+ break;
-+ case STARDICT::CMD_MAX_DICT_COUNT:
-+ result = parse_command_maxdictcount(cmd, line);
-+ break;
-+ case STARDICT::CMD_DEFINE:
-+ case STARDICT::CMD_LOOKUP:
-+ case STARDICT::CMD_SELECT_QUERY:
-+ case STARDICT::CMD_SMART_QUERY:
-+ result = parse_dict_result(cmd, line);
-+ break;
-+ case STARDICT::CMD_PREVIOUS:
-+ case STARDICT::CMD_NEXT:
-+ result = parse_wordlist(cmd, line);
-+ break;
-+ case STARDICT::CMD_QUIT:
-+ result = parse_command_quit(line);
-+ g_free(line);
-+ break;
-+ default:
-+ result = 0;
-+ g_free(line);
-+ break;
-+ }
-+ if (result == 0)
-+ return false;
-+ if (result == 1) {
-+ delete cmd;
-+ cmdlist.pop_front();
-+ if (cmdlist.empty()) {
-+ cmdlist.push_back(new STARDICT::Cmd(STARDICT::CMD_QUIT));
-+ }
-+ request_command();
-+ }
-+ return true;
-+}
-diff -Nur stardict-3.0.1.orig//src/lib/stddict.cpp stardict-3.0.1/src/lib/stddict.cpp
---- stardict-3.0.1.orig//src/lib/stddict.cpp 2007-10-30 04:06:07.000000000 -0500
-+++ stardict-3.0.1/src/lib/stddict.cpp 2010-05-24 00:53:36.377667178 -0500
-@@ -39,6 +39,7 @@
- #include "stddict.hpp"
- #include <algorithm>
- #include "getuint32.h"
-+#include <cstring>
-
- static inline gint stardict_strcmp(const gchar *s1, const gchar *s2)
- {
-diff -Nur stardict-3.0.1.orig//src/lib/stddict.cpp~ stardict-3.0.1/src/lib/stddict.cpp~
---- stardict-3.0.1.orig//src/lib/stddict.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/lib/stddict.cpp~ 2007-10-30 04:06:07.000000000 -0500
-@@ -0,0 +1,3263 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+/*
-+ * Implementation of class to work with standard StarDict's dictionaries
-+ * lookup word, get articles and so on.
-+ *
-+ * Notice: read doc/DICTFILE_FORMAT for the dictionary
-+ * file's format information!
-+ */
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <glib/gi18n.h>
-+#include <glib/gstdio.h>
-+
-+#include "common.hpp"
-+#include "distance.h"
-+#include "kmp.h"
-+#include "mapfile.hpp"
-+
-+#include "stddict.hpp"
-+#include <algorithm>
-+#include "getuint32.h"
-+
-+static inline gint stardict_strcmp(const gchar *s1, const gchar *s2)
-+{
-+ gint a=g_ascii_strcasecmp(s1, s2);
-+ if (a == 0)
-+ return strcmp(s1, s2);
-+ else
-+ return a;
-+}
-+
-+static gint stardict_collate(const gchar *str1, const gchar *str2, CollateFunctions func)
-+{
-+ gint x = utf8_collate(str1, str2, func);
-+ if (x == 0)
-+ return strcmp(str1, str2);
-+ else
-+ return x;
-+}
-+
-+gint stardict_server_collate(const gchar *str1, const gchar *str2, int EnableCollationLevel, CollateFunctions func, int servercollatefunc)
-+{
-+ if (EnableCollationLevel == 0)
-+ return stardict_strcmp(str1, str2);
-+ if (EnableCollationLevel == 1)
-+ return stardict_collate(str1, str2, func);
-+ if (servercollatefunc == 0)
-+ return stardict_strcmp(str1, str2);
-+ return stardict_collate(str1, str2, (CollateFunctions)(servercollatefunc-1));
-+}
-+
-+gint stardict_casecmp(const gchar *s1, const gchar *s2, int EnableCollationLevel, CollateFunctions func, int servercollatefunc)
-+{
-+ if (EnableCollationLevel == 0)
-+ return g_ascii_strcasecmp(s1, s2);
-+ if (EnableCollationLevel == 1)
-+ return utf8_collate(s1, s2, func);
-+ if (servercollatefunc == 0)
-+ return g_ascii_strcasecmp(s1, s2);
-+ return utf8_collate(s1, s2, (CollateFunctions)(servercollatefunc-1));
-+}
-+
-+static inline gint prefix_match (const gchar *s1, const gchar *s2)
-+{
-+ gint ret=-1;
-+ gunichar u1, u2;
-+ do {
-+ u1 = g_utf8_get_char(s1);
-+ u2 = g_utf8_get_char(s2);
-+ s1 = g_utf8_next_char(s1);
-+ s2 = g_utf8_next_char(s2);
-+ ret++;
-+ } while (u1 && g_unichar_tolower(u1) == g_unichar_tolower(u2));
-+ return ret;
-+}
-+
-+static inline bool bIsVowel(gchar inputchar)
-+{
-+ gchar ch = g_ascii_toupper(inputchar);
-+ return( ch=='A' || ch=='E' || ch=='I' || ch=='O' || ch=='U' );
-+}
-+
-+
-+bool bIsPureEnglish(const gchar *str)
-+{
-+ // i think this should work even when it is UTF8 string :).
-+ for (int i=0; str[i]!=0; i++)
-+ //if(str[i]<0)
-+ //if(str[i]<32 || str[i]>126) // tab equal 9,so this is not OK.
-+ // Better use isascii() but not str[i]<0 while char is default unsigned in arm
-+ if (!isascii(str[i]))
-+ return false;
-+ return true;
-+}
-+
-+class offset_index : public index_file {
-+public:
-+ offset_index();
-+ ~offset_index();
-+ bool load(const std::string& url, gulong wc, gulong fsize,
-+ bool CreateCacheFile, int EnableCollationLevel,
-+ CollateFunctions _CollateFunction, show_progress_t *sp);
-+ void get_data(glong idx);
-+ const gchar *get_key_and_data(glong idx);
-+private:
-+ const gchar *get_key(glong idx);
-+ bool lookup(const char *str, glong &idx, glong &idx_suggest);
-+
-+ static const gint ENTR_PER_PAGE=32;
-+
-+ cache_file oft_file;
-+ FILE *idxfile;
-+ gulong npages;
-+
-+ gchar wordentry_buf[256+sizeof(guint32)*2]; // The length of "word_str" should be less than 256. See doc/DICTFILE_FORMAT.
-+ struct index_entry {
-+ glong idx;
-+ std::string keystr;
-+ void assign(glong i, const std::string& str) {
-+ idx=i;
-+ keystr.assign(str);
-+ }
-+ };
-+ index_entry first, last, middle, real_last;
-+
-+ struct page_entry {
-+ gchar *keystr;
-+ guint32 off, size;
-+ };
-+ std::vector<gchar> page_data;
-+ struct page_t {
-+ glong idx;
-+ page_entry entries[ENTR_PER_PAGE];
-+
-+ page_t(): idx(-1) {}
-+ void fill(gchar *data, gint nent, glong idx_);
-+ } page;
-+ gulong load_page(glong page_idx);
-+ const gchar *read_first_on_page_key(glong page_idx);
-+ const gchar *get_first_on_page_key(glong page_idx);
-+};
-+
-+class wordlist_index : public index_file {
-+public:
-+ wordlist_index();
-+ ~wordlist_index();
-+ bool load(const std::string& url, gulong wc, gulong fsize,
-+ bool CreateCacheFile, int EnableCollationLevel,
-+ CollateFunctions _CollateFunction, show_progress_t *sp);
-+ void get_data(glong idx);
-+ const gchar *get_key_and_data(glong idx);
-+private:
-+ const gchar *get_key(glong idx);
-+ bool lookup(const char *str, glong &idx, glong &idx_suggest);
-+
-+ gchar *idxdatabuf;
-+ std::vector<gchar *> wordlist;
-+};
-+
-+offset_index::offset_index() : oft_file(CacheFileType_oft)
-+{
-+ clt_file = NULL;
-+ idxfile = NULL;
-+}
-+
-+offset_index::~offset_index()
-+{
-+ delete clt_file;
-+ if (idxfile)
-+ fclose(idxfile);
-+}
-+
-+void offset_index::page_t::fill(gchar *data, gint nent, glong idx_)
-+{
-+ idx=idx_;
-+ gchar *p=data;
-+ glong len;
-+ for (gint i=0; i<nent; ++i) {
-+ entries[i].keystr=p;
-+ len=strlen(p);
-+ p+=len+1;
-+ entries[i].off=g_ntohl(get_uint32(p));
-+ p+=sizeof(guint32);
-+ entries[i].size=g_ntohl(get_uint32(p));
-+ p+=sizeof(guint32);
-+ }
-+}
-+
-+inline const gchar *offset_index::read_first_on_page_key(glong page_idx)
-+{
-+ fseek(idxfile, oft_file.wordoffset[page_idx], SEEK_SET);
-+ guint32 page_size=oft_file.wordoffset[page_idx+1]-oft_file.wordoffset[page_idx];
-+ gulong minsize = sizeof(wordentry_buf);
-+ if (page_size < minsize)
-+ minsize = page_size;
-+ fread(wordentry_buf, minsize, 1, idxfile); //TODO: check returned values, deal with word entry that strlen>255.
-+ return wordentry_buf;
-+}
-+
-+inline const gchar *offset_index::get_first_on_page_key(glong page_idx)
-+{
-+ if (page_idx<middle.idx) {
-+ if (page_idx==first.idx)
-+ return first.keystr.c_str();
-+ return read_first_on_page_key(page_idx);
-+ } else if (page_idx>middle.idx) {
-+ if (page_idx==last.idx)
-+ return last.keystr.c_str();
-+ return read_first_on_page_key(page_idx);
-+ } else
-+ return middle.keystr.c_str();
-+}
-+
-+cache_file::cache_file(CacheFileType _cachefiletype)
-+{
-+ wordoffset = NULL;
-+ mf = NULL;
-+ cachefiletype = _cachefiletype;
-+}
-+
-+
-+cache_file::~cache_file()
-+{
-+ if (mf)
-+ delete mf;
-+ else
-+ g_free(wordoffset);
-+}
-+
-+#define OFFSETFILE_MAGIC_DATA "StarDict's oft file\nversion=2.4.8\n"
-+#define COLLATIONFILE_MAGIC_DATA "StarDict's clt file\nversion=2.4.8\n"
-+
-+MapFile* cache_file::get_cache_loadfile(const gchar *filename, const std::string &url, const std::string &saveurl, CollateFunctions cltfunc, glong filedatasize, int next)
-+{
-+ struct stat cachestat;
-+ if (g_stat(filename, &cachestat)!=0)
-+ return NULL;
-+ MapFile *mf = new MapFile;
-+ if (!mf->open(filename, cachestat.st_size)) {
-+ delete mf;
-+ return NULL;
-+ }
-+
-+ gchar *p = mf->begin();
-+ gboolean has_prefix;
-+ if (cachefiletype == CacheFileType_oft)
-+ has_prefix = g_str_has_prefix(p, OFFSETFILE_MAGIC_DATA);
-+ else
-+ has_prefix = g_str_has_prefix(p, COLLATIONFILE_MAGIC_DATA);
-+ if (!has_prefix) {
-+ delete mf;
-+ return NULL;
-+ }
-+ if (cachefiletype == CacheFileType_oft)
-+ p+= sizeof(OFFSETFILE_MAGIC_DATA)-1-1;
-+ else
-+ p+= sizeof(COLLATIONFILE_MAGIC_DATA)-1-1;
-+ gchar *p2;
-+ p2 = strstr(p, "\nurl=");
-+ if (!p2) {
-+ delete mf;
-+ return NULL;
-+ }
-+ p2+=sizeof("\nurl=")-1;
-+ gchar *p3;
-+ p3 = strchr(p2, '\n');
-+ if (!p3) {
-+ delete mf;
-+ return NULL;
-+ }
-+ gchar *tmpstr;
-+ tmpstr = (gchar *)g_memdup(p2, p3-p2+1);
-+ tmpstr[p3-p2] = '\0';
-+ if (saveurl == tmpstr) {
-+ g_free(tmpstr);
-+ if (cachefiletype == CacheFileType_clt) {
-+ p2 = strstr(p, "\nfunc=");
-+ if (!p2) {
-+ delete mf;
-+ return NULL;
-+ }
-+ p2+=sizeof("\nfunc=")-1;
-+ p3 = strchr(p2, '\n');
-+ if (!p3) {
-+ delete mf;
-+ return NULL;
-+ }
-+ tmpstr = (gchar *)g_memdup(p2, p3-p2+1);
-+ tmpstr[p3-p2] = '\0';
-+ if (atoi(tmpstr)!=cltfunc) {
-+ g_free(tmpstr);
-+ delete mf;
-+ return NULL;
-+ }
-+ g_free(tmpstr);
-+ }
-+ if (cachestat.st_size!=glong(filedatasize + strlen(mf->begin()) +1)) {
-+ delete mf;
-+ return NULL;
-+ }
-+ struct stat idxstat;
-+ if (g_stat(url.c_str(), &idxstat)!=0) {
-+ delete mf;
-+ return NULL;
-+ }
-+ if (cachestat.st_mtime<idxstat.st_mtime) {
-+ delete mf;
-+ return NULL;
-+ }
-+ //g_print("Using map file: %s\n", filename);
-+ return mf;
-+ }
-+ g_free(tmpstr);
-+ delete mf;
-+ gchar *basename = g_path_get_basename(saveurl.c_str());
-+ p = strrchr(basename, '.');
-+ if (!p) {
-+ g_free(basename);
-+ return NULL;
-+ }
-+ *p='\0';
-+ gchar *extendname = p+1;
-+ gchar *dirname = g_path_get_dirname(filename);
-+ gchar *nextfilename;
-+ if (cachefiletype == CacheFileType_oft)
-+ nextfilename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s(%d).%s.oft", dirname, basename, next, extendname);
-+ else if (cachefiletype == CacheFileType_clt)
-+ nextfilename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s(%d).%s.clt", dirname, basename, next, extendname);
-+ else
-+ nextfilename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s(%d).%s.%d.clt", dirname, basename, next, extendname, cltfunc);
-+ MapFile *out = get_cache_loadfile(nextfilename, url, saveurl, cltfunc, filedatasize, next+1);
-+ g_free(basename);
-+ g_free(dirname);
-+ g_free(nextfilename);
-+ return out;
-+}
-+
-+bool cache_file::load_cache(const std::string& url, const std::string& saveurl, CollateFunctions cltfunc, glong filedatasize)
-+{
-+ std::string oftfilename;
-+ if (cachefiletype == CacheFileType_oft)
-+ oftfilename=saveurl+".oft";
-+ else if (cachefiletype == CacheFileType_clt)
-+ oftfilename=saveurl+".clt";
-+ else {
-+ gchar *func = g_strdup_printf("%d", cltfunc);
-+ oftfilename=saveurl+'.'+func+".clt";
-+ g_free(func);
-+ }
-+ for (int i=0;i<2;i++) {
-+ if (i==1) {
-+ if (!get_cache_filename(saveurl, oftfilename, false, cltfunc))
-+ break;
-+ }
-+ mf = get_cache_loadfile(oftfilename.c_str(), url, saveurl, cltfunc, filedatasize, 2);
-+ if (!mf)
-+ continue;
-+ wordoffset = (guint32 *)(mf->begin()+strlen(mf->begin())+1);
-+ return true;
-+ }
-+ return false;
-+}
-+
-+bool cache_file::get_cache_filename(const std::string& url, std::string &cachefilename, bool create, CollateFunctions cltfunc)
-+{
-+ if (create) {
-+ if (!g_file_test(g_get_user_cache_dir(), G_FILE_TEST_EXISTS) &&
-+ g_mkdir(g_get_user_cache_dir(), 0700)==-1)
-+ return false;
-+ }
-+
-+ std::string cache_dir=g_get_user_cache_dir();
-+ cache_dir += G_DIR_SEPARATOR_S "stardict";
-+
-+ if (create) {
-+ if (!g_file_test(cache_dir.c_str(), G_FILE_TEST_EXISTS)) {
-+ if (g_mkdir(cache_dir.c_str(), 0700)==-1)
-+ return false;
-+ } else if (!g_file_test(cache_dir.c_str(), G_FILE_TEST_IS_DIR))
-+ return false;
-+ }
-+
-+ gchar *base=g_path_get_basename(url.c_str());
-+ if (cachefiletype == CacheFileType_oft) {
-+ cachefilename = cache_dir+G_DIR_SEPARATOR_S+base+".oft";
-+ } else if (cachefiletype == CacheFileType_clt) {
-+ cachefilename = cache_dir+G_DIR_SEPARATOR_S+base+".clt";
-+ } else {
-+ gchar *func = g_strdup_printf("%d", cltfunc);
-+ cachefilename = cache_dir+G_DIR_SEPARATOR_S+base+'.'+func+".clt";
-+ g_free(func);
-+ }
-+ g_free(base);
-+ return true;
-+}
-+
-+FILE* cache_file::get_cache_savefile(const gchar *filename, const std::string &url, int next, std::string &cfilename, CollateFunctions cltfunc)
-+{
-+ cfilename = filename;
-+ struct stat oftstat;
-+ if (g_stat(filename, &oftstat)!=0) {
-+ return fopen(filename, "wb");
-+ }
-+ MapFile mf;
-+ if (!mf.open(filename, oftstat.st_size)) {
-+ return fopen(filename, "wb");
-+ }
-+ gchar *p = mf.begin();
-+ bool has_prefix;
-+ if (cachefiletype == CacheFileType_oft)
-+ has_prefix = g_str_has_prefix(p, OFFSETFILE_MAGIC_DATA);
-+ else
-+ has_prefix = g_str_has_prefix(p, COLLATIONFILE_MAGIC_DATA);
-+ if (!has_prefix) {
-+ mf.close();
-+ return fopen(filename, "wb");
-+ }
-+ if (cachefiletype == CacheFileType_oft)
-+ p+= sizeof(OFFSETFILE_MAGIC_DATA)-1-1;
-+ else
-+ p+= sizeof(COLLATIONFILE_MAGIC_DATA)-1-1;
-+ gchar *p2;
-+ p2 = strstr(p, "\nurl=");
-+ if (!p2) {
-+ mf.close();
-+ return fopen(filename, "wb");
-+ }
-+ p2+=sizeof("\nurl=")-1;
-+ gchar *p3;
-+ p3 = strchr(p2, '\n');
-+ if (!p3) {
-+ mf.close();
-+ return fopen(filename, "wb");
-+ }
-+ gchar *tmpstr;
-+ tmpstr = (gchar *)g_memdup(p2, p3-p2+1);
-+ tmpstr[p3-p2] = '\0';
-+ if (url == tmpstr) {
-+ g_free(tmpstr);
-+ mf.close();
-+ return fopen(filename, "wb");
-+ }
-+ g_free(tmpstr);
-+ mf.close();
-+ gchar *basename = g_path_get_basename(url.c_str());
-+ p = strrchr(basename, '.');
-+ if (!p) {
-+ g_free(basename);
-+ return NULL;
-+ }
-+ *p='\0';
-+ gchar *extendname = p+1;
-+ gchar *dirname = g_path_get_dirname(filename);
-+ gchar *nextfilename;
-+ if (cachefiletype == CacheFileType_oft)
-+ nextfilename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s(%d).%s.oft", dirname, basename, next, extendname);
-+ else if (cachefiletype == CacheFileType_clt)
-+ nextfilename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s(%d).%s.clt", dirname, basename, next, extendname);
-+ else
-+ nextfilename = g_strdup_printf("%s" G_DIR_SEPARATOR_S "%s(%d).%s.%d.clt", dirname, basename, next, extendname, cltfunc);
-+ FILE *out = get_cache_savefile(nextfilename, url, next+1, cfilename, cltfunc);
-+ g_free(basename);
-+ g_free(dirname);
-+ g_free(nextfilename);
-+ return out;
-+}
-+
-+bool cache_file::save_cache(const std::string& url, CollateFunctions cltfunc, gulong npages)
-+{
-+ std::string oftfilename;
-+ if (cachefiletype == CacheFileType_oft) {
-+ oftfilename=url+".oft";
-+ } else if (cachefiletype == CacheFileType_clt) {
-+ oftfilename=url+".clt";
-+ } else {
-+ gchar *func = g_strdup_printf("%d", cltfunc);
-+ oftfilename=url+'.'+func+".clt";
-+ g_free(func);
-+ }
-+ for (int i=0;i<2;i++) {
-+ if (i==1) {
-+ if (!get_cache_filename(url, oftfilename, true, cltfunc))
-+ break;
-+ }
-+ std::string cfilename;
-+ FILE *out= get_cache_savefile(oftfilename.c_str(), url, 2, cfilename, cltfunc);
-+ if (!out)
-+ continue;
-+ if (cachefiletype == CacheFileType_oft)
-+ fwrite(OFFSETFILE_MAGIC_DATA, 1, sizeof(OFFSETFILE_MAGIC_DATA)-1, out);
-+ else
-+ fwrite(COLLATIONFILE_MAGIC_DATA, 1, sizeof(COLLATIONFILE_MAGIC_DATA)-1, out);
-+ fwrite("url=", 1, sizeof("url=")-1, out);
-+ fwrite(url.c_str(), 1, url.length(), out);
-+ if (cachefiletype == CacheFileType_clt) {
-+#ifdef _MSC_VER
-+ fprintf_s(out, "\nfunc=%d", cltfunc);
-+#else
-+ fprintf(out, "\nfunc=%d", cltfunc);
-+#endif
-+ }
-+ fwrite("\n", 1, 2, out);
-+ fwrite(wordoffset, sizeof(guint32), npages, out);
-+ fclose(out);
-+ g_print("Save cache file: %s\n", cfilename.c_str());
-+ return true;
-+ }
-+ return false;
-+}
-+
-+collation_file::collation_file(idxsyn_file *_idx_file, CacheFileType _cachefiletype) : cache_file(_cachefiletype)
-+{
-+ idx_file = _idx_file;
-+}
-+
-+const gchar *collation_file::GetWord(glong idx)
-+{
-+ return idx_file->get_key(wordoffset[idx]);
-+}
-+
-+glong collation_file::GetOrigIndex(glong cltidx)
-+{
-+ return wordoffset[cltidx];
-+}
-+
-+bool collation_file::lookup(const char *sWord, glong &idx, glong &idx_suggest)
-+{
-+ bool bFound=false;
-+ glong iTo=idx_file->wordcount-1;
-+ if (stardict_collate(sWord, GetWord(0), CollateFunction)<0) {
-+ idx = 0;
-+ idx_suggest = 0;
-+ } else if (stardict_collate(sWord, GetWord(iTo), CollateFunction) >0) {
-+ idx = INVALID_INDEX;
-+ idx_suggest = iTo;
-+ } else {
-+ glong iThisIndex=0;
-+ glong iFrom=0;
-+ gint cmpint;
-+ while (iFrom<=iTo) {
-+ iThisIndex=(iFrom+iTo)/2;
-+ cmpint = stardict_collate(sWord, GetWord(iThisIndex), CollateFunction);
-+ if (cmpint>0)
-+ iFrom=iThisIndex+1;
-+ else if (cmpint<0)
-+ iTo=iThisIndex-1;
-+ else {
-+ bFound=true;
-+ break;
-+ }
-+ }
-+ if (!bFound) {
-+ idx = iFrom; //next
-+ idx_suggest = iFrom;
-+ gint best, back;
-+ best = prefix_match (sWord, GetWord(idx_suggest));
-+ for (;;) {
-+ if ((iTo=idx_suggest-1) < 0)
-+ break;
-+ back = prefix_match (sWord, GetWord(iTo));
-+ if (!back || back < best)
-+ break;
-+ best = back;
-+ idx_suggest = iTo;
-+ }
-+ } else {
-+ idx = iThisIndex;
-+ idx_suggest = iThisIndex;
-+ }
-+ }
-+ return bFound;
-+}
-+
-+struct sort_collation_index_user_data {
-+ idxsyn_file *idx_file;
-+ CollateFunctions cltfunc;
-+};
-+
-+static gint sort_collation_index(gconstpointer a, gconstpointer b, gpointer user_data)
-+{
-+ sort_collation_index_user_data *data = (sort_collation_index_user_data*)user_data;
-+ gchar *str1 = g_strdup(data->idx_file->get_key(*((guint32 *)a)));
-+ const gchar *str2 = data->idx_file->get_key(*((guint32 *)b));
-+ gint x = stardict_collate(str1, str2, data->cltfunc);
-+ g_free(str1);
-+ if (x==0)
-+ return *((guint32 *)a) - *((guint32 *)b);
-+ else
-+ return x;
-+}
-+
-+idxsyn_file::idxsyn_file()
-+{
-+ memset(clt_files, 0, sizeof(clt_files));
-+}
-+
-+const gchar *idxsyn_file::getWord(glong idx, int EnableCollationLevel, int servercollatefunc)
-+{
-+ if (EnableCollationLevel == 0)
-+ return get_key(idx);
-+ if (EnableCollationLevel == 1)
-+ return clt_file->GetWord(idx);
-+ if (servercollatefunc == 0)
-+ return get_key(idx);
-+ collate_load((CollateFunctions)(servercollatefunc-1));
-+ return clt_files[servercollatefunc-1]->GetWord(idx);
-+}
-+
-+bool idxsyn_file::Lookup(const char *str, glong &idx, glong &idx_suggest, int EnableCollationLevel, int servercollatefunc)
-+{
-+ if (EnableCollationLevel == 0)
-+ return lookup(str, idx, idx_suggest);
-+ if (EnableCollationLevel == 1)
-+ return clt_file->lookup(str, idx, idx_suggest);
-+ if (servercollatefunc == 0)
-+ return lookup(str, idx, idx_suggest);
-+ collate_load((CollateFunctions)(servercollatefunc-1));
-+ return clt_files[servercollatefunc-1]->lookup(str, idx, idx_suggest);
-+}
-+
-+void idxsyn_file::collate_sort(const std::string& url,
-+ const std::string& saveurl,
-+ CollateFunctions collf,
-+ show_progress_t *sp)
-+{
-+ clt_file = new collation_file(this, CacheFileType_clt);
-+ clt_file->CollateFunction = collf;
-+ if (!clt_file->load_cache(url, saveurl, collf, wordcount*sizeof(guint32))) {
-+ sp->notify_about_start(_("Sorting, please wait..."));
-+ clt_file->wordoffset = (guint32 *)g_malloc(wordcount*sizeof(guint32));
-+ for (glong i=0; i<wordcount; i++)
-+ clt_file->wordoffset[i] = i;
-+ sort_collation_index_user_data data;
-+ data.idx_file = this;
-+ data.cltfunc = collf;
-+ g_qsort_with_data(clt_file->wordoffset, wordcount, sizeof(guint32), sort_collation_index, &data);
-+ if (!clt_file->save_cache(saveurl, collf, wordcount))
-+ g_printerr("Cache update failed.\n");
-+ }
-+}
-+
-+void idxsyn_file::collate_save_info(const std::string& _url, const std::string& _saveurl)
-+{
-+ url = _url;
-+ saveurl = _saveurl;
-+}
-+
-+void idxsyn_file::collate_load(CollateFunctions collf)
-+{
-+ if (clt_files[collf])
-+ return;
-+ clt_files[collf] = new collation_file(this, CacheFileType_server_clt);
-+ clt_files[collf]->CollateFunction = collf;
-+ if (!clt_files[collf]->load_cache(url, saveurl, collf, wordcount*sizeof(guint32))) {
-+ clt_files[collf]->wordoffset = (guint32 *)g_malloc(wordcount*sizeof(guint32));
-+ for (glong i=0; i<wordcount; i++)
-+ clt_files[collf]->wordoffset[i] = i;
-+ sort_collation_index_user_data data;
-+ data.idx_file = this;
-+ data.cltfunc = collf;
-+ g_qsort_with_data(clt_files[collf]->wordoffset, wordcount, sizeof(guint32), sort_collation_index, &data);
-+ if (!clt_files[collf]->save_cache(saveurl, collf, wordcount))
-+ g_printerr("Cache update failed.\n");
-+ }
-+}
-+
-+bool offset_index::load(const std::string& url, gulong wc, gulong fsize,
-+ bool CreateCacheFile, int EnableCollationLevel,
-+ CollateFunctions _CollateFunction, show_progress_t *sp)
-+{
-+ wordcount=wc;
-+ npages=(wc-1)/ENTR_PER_PAGE+2;
-+ if (!oft_file.load_cache(url, url, _CollateFunction, npages*sizeof(guint32))) {
-+ MapFile map_file;
-+ if (!map_file.open(url.c_str(), fsize))
-+ return false;
-+ const gchar *idxdatabuffer=map_file.begin();
-+ oft_file.wordoffset = (guint32 *)g_malloc(npages*sizeof(guint32));
-+ const gchar *p1 = idxdatabuffer;
-+ gulong index_size;
-+ guint32 j=0;
-+ for (guint32 i=0; i<wc; i++) {
-+ index_size=strlen(p1) +1 + 2*sizeof(guint32);
-+ if (i % ENTR_PER_PAGE==0) {
-+ oft_file.wordoffset[j]=p1-idxdatabuffer;
-+ ++j;
-+ }
-+ p1 += index_size;
-+ }
-+ oft_file.wordoffset[j]=p1-idxdatabuffer;
-+ map_file.close();
-+ if (CreateCacheFile) {
-+ if (!oft_file.save_cache(url, _CollateFunction, npages))
-+ g_printerr("Cache update failed.\n");
-+ }
-+ }
-+
-+ if (!(idxfile = fopen(url.c_str(), "rb"))) {
-+ return false;
-+ }
-+
-+ first.assign(0, read_first_on_page_key(0));
-+ last.assign(npages-2, read_first_on_page_key(npages-2));
-+ middle.assign((npages-2)/2, read_first_on_page_key((npages-2)/2));
-+ real_last.assign(wc-1, get_key(wc-1));
-+
-+ if (EnableCollationLevel == 0) {
-+ } else if (EnableCollationLevel == 1) {
-+ collate_sort(url, url, _CollateFunction, sp);
-+ } else if (EnableCollationLevel == 2) {
-+ collate_save_info(url, url);
-+ }
-+
-+ return true;
-+}
-+
-+inline gulong offset_index::load_page(glong page_idx)
-+{
-+ gulong nentr=ENTR_PER_PAGE;
-+ if (page_idx==glong(npages-2))
-+ if ((nentr=wordcount%ENTR_PER_PAGE)==0)
-+ nentr=ENTR_PER_PAGE;
-+
-+
-+ if (page_idx!=page.idx) {
-+ page_data.resize(oft_file.wordoffset[page_idx+1]-oft_file.wordoffset[page_idx]);
-+ fseek(idxfile, oft_file.wordoffset[page_idx], SEEK_SET);
-+ fread(&page_data[0], 1, page_data.size(), idxfile);
-+ page.fill(&page_data[0], nentr, page_idx);
-+ }
-+
-+ return nentr;
-+}
-+
-+const gchar *offset_index::get_key(glong idx)
-+{
-+ load_page(idx/ENTR_PER_PAGE);
-+ glong idx_in_page=idx%ENTR_PER_PAGE;
-+ wordentry_offset=page.entries[idx_in_page].off;
-+ wordentry_size=page.entries[idx_in_page].size;
-+
-+ return page.entries[idx_in_page].keystr;
-+}
-+
-+void offset_index::get_data(glong idx)
-+{
-+ get_key(idx);
-+}
-+
-+const gchar *offset_index::get_key_and_data(glong idx)
-+{
-+ return get_key(idx);
-+}
-+
-+bool offset_index::lookup(const char *str, glong &idx, glong &idx_suggest)
-+{
-+ bool bFound=false;
-+ glong iFrom;
-+ glong iTo=npages-2;
-+ gint cmpint;
-+ glong iThisIndex;
-+ if (stardict_strcmp(str, first.keystr.c_str())<0) {
-+ idx = 0;
-+ idx_suggest = 0;
-+ return false;
-+ } else if (stardict_strcmp(str, real_last.keystr.c_str()) >0) {
-+ idx = INVALID_INDEX;
-+ idx_suggest = iTo;
-+ return false;
-+ } else {
-+ iFrom=0;
-+ iThisIndex=0;
-+ while (iFrom<=iTo) {
-+ iThisIndex=(iFrom+iTo)/2;
-+ cmpint = stardict_strcmp(str, get_first_on_page_key(iThisIndex));
-+ if (cmpint>0)
-+ iFrom=iThisIndex+1;
-+ else if (cmpint<0)
-+ iTo=iThisIndex-1;
-+ else {
-+ bFound=true;
-+ break;
-+ }
-+ }
-+ if (!bFound) {
-+ idx = iTo; //prev
-+ } else {
-+ idx = iThisIndex;
-+ }
-+ }
-+ if (!bFound) {
-+ gulong netr=load_page(idx);
-+ iFrom=1; // Needn't search the first word anymore.
-+ iTo=netr-1;
-+ iThisIndex=0;
-+ while (iFrom<=iTo) {
-+ iThisIndex=(iFrom+iTo)/2;
-+ cmpint = stardict_strcmp(str, page.entries[iThisIndex].keystr);
-+ if (cmpint>0)
-+ iFrom=iThisIndex+1;
-+ else if (cmpint<0)
-+ iTo=iThisIndex-1;
-+ else {
-+ bFound=true;
-+ break;
-+ }
-+ }
-+ idx*=ENTR_PER_PAGE;
-+ if (!bFound) {
-+ idx += iFrom; //next
-+ idx_suggest = idx;
-+ gint best, back;
-+ best = prefix_match (str, page.entries[idx_suggest % ENTR_PER_PAGE].keystr);
-+ for (;;) {
-+ if ((iTo=idx_suggest-1) < 0)
-+ break;
-+ if (idx_suggest % ENTR_PER_PAGE == 0)
-+ load_page(iTo / ENTR_PER_PAGE);
-+ back = prefix_match (str, page.entries[iTo % ENTR_PER_PAGE].keystr);
-+ if (!back || back < best)
-+ break;
-+ best = back;
-+ idx_suggest = iTo;
-+ }
-+ } else {
-+ idx += iThisIndex;
-+ idx_suggest = idx;
-+ }
-+ } else {
-+ idx*=ENTR_PER_PAGE;
-+ idx_suggest = idx;
-+ }
-+ return bFound;
-+}
-+
-+wordlist_index::wordlist_index()
-+{
-+ clt_file = NULL;
-+ idxdatabuf = NULL;
-+}
-+
-+wordlist_index::~wordlist_index()
-+{
-+ delete clt_file;
-+ g_free(idxdatabuf);
-+}
-+
-+bool wordlist_index::load(const std::string& url, gulong wc, gulong fsize,
-+ bool CreateCacheFile, int EnableCollationLevel,
-+ CollateFunctions _CollateFunction, show_progress_t *sp)
-+{
-+ wordcount=wc;
-+ gzFile in = gzopen(url.c_str(), "rb");
-+ if (in == NULL)
-+ return false;
-+
-+ idxdatabuf = (gchar *)g_malloc(fsize);
-+
-+ gulong len = gzread(in, idxdatabuf, fsize);
-+ gzclose(in);
-+ if (len < 0)
-+ return false;
-+
-+ if (len != fsize)
-+ return false;
-+
-+ wordlist.resize(wc+1);
-+ gchar *p1 = idxdatabuf;
-+ guint32 i;
-+ for (i=0; i<wc; i++) {
-+ wordlist[i] = p1;
-+ p1 += strlen(p1) +1 + 2*sizeof(guint32);
-+ }
-+ wordlist[wc] = p1;
-+
-+ if (EnableCollationLevel == 0) {
-+ } else {
-+ std::string saveurl = url;
-+ saveurl.erase(saveurl.length()-sizeof(".gz")+1, sizeof(".gz")-1);
-+ if (EnableCollationLevel == 1) {
-+ collate_sort(url, saveurl, _CollateFunction, sp);
-+ } else if (EnableCollationLevel == 2) {
-+ collate_save_info(url, saveurl);
-+ }
-+ }
-+ return true;
-+}
-+
-+const gchar *wordlist_index::get_key(glong idx)
-+{
-+ return wordlist[idx];
-+}
-+
-+void wordlist_index::get_data(glong idx)
-+{
-+ gchar *p1 = wordlist[idx]+strlen(wordlist[idx])+sizeof(gchar);
-+ wordentry_offset = g_ntohl(get_uint32(p1));
-+ p1 += sizeof(guint32);
-+ wordentry_size = g_ntohl(get_uint32(p1));
-+}
-+
-+const gchar *wordlist_index::get_key_and_data(glong idx)
-+{
-+ get_data(idx);
-+ return get_key(idx);
-+}
-+
-+bool wordlist_index::lookup(const char *str, glong &idx, glong &idx_suggest)
-+{
-+ bool bFound=false;
-+ glong iTo=wordlist.size()-2;
-+
-+ if (stardict_strcmp(str, get_key(0))<0) {
-+ idx = 0;
-+ idx_suggest = 0;
-+ } else if (stardict_strcmp(str, get_key(iTo)) >0) {
-+ idx = INVALID_INDEX;
-+ idx_suggest = iTo;
-+ } else {
-+ glong iThisIndex=0;
-+ glong iFrom=0;
-+ gint cmpint;
-+ while (iFrom<=iTo) {
-+ iThisIndex=(iFrom+iTo)/2;
-+ cmpint = stardict_strcmp(str, get_key(iThisIndex));
-+ if (cmpint>0)
-+ iFrom=iThisIndex+1;
-+ else if (cmpint<0)
-+ iTo=iThisIndex-1;
-+ else {
-+ bFound=true;
-+ break;
-+ }
-+ }
-+ if (!bFound) {
-+ idx = iFrom; //next
-+ idx_suggest = iFrom;
-+ gint best, back;
-+ best = prefix_match (str, get_key(idx_suggest));
-+ for (;;) {
-+ if ((iTo=idx_suggest-1) < 0)
-+ break;
-+ back = prefix_match (str, get_key(iTo));
-+ if (!back || back < best)
-+ break;
-+ best = back;
-+ idx_suggest = iTo;
-+ }
-+ } else {
-+ idx = iThisIndex;
-+ idx_suggest = iThisIndex;
-+ }
-+ }
-+ return bFound;
-+}
-+
-+//===================================================================
-+void synonym_file::page_t::fill(gchar *data, gint nent, glong idx_)
-+{
-+ idx=idx_;
-+ gchar *p=data;
-+ glong len;
-+ for (gint i=0; i<nent; ++i) {
-+ entries[i].keystr=p;
-+ len=strlen(p);
-+ p+=len+1;
-+ entries[i].index=g_ntohl(get_uint32(p));
-+ p+=sizeof(guint32);
-+ }
-+}
-+
-+synonym_file::synonym_file() : oft_file(CacheFileType_oft)
-+{
-+ clt_file = NULL;
-+}
-+
-+synonym_file::~synonym_file()
-+{
-+ delete clt_file;
-+ if (synfile)
-+ fclose(synfile);
-+}
-+
-+inline const gchar *synonym_file::read_first_on_page_key(glong page_idx)
-+{
-+ fseek(synfile, oft_file.wordoffset[page_idx], SEEK_SET);
-+ guint32 page_size=oft_file.wordoffset[page_idx+1]-oft_file.wordoffset[page_idx];
-+ gulong minsize = sizeof(wordentry_buf);
-+ if (page_size < minsize)
-+ minsize = page_size;
-+ fread(wordentry_buf, minsize, 1, synfile); //TODO: check returned values, deal with word entry that strlen>255.
-+ return wordentry_buf;
-+}
-+
-+inline const gchar *synonym_file::get_first_on_page_key(glong page_idx)
-+{
-+ if (page_idx<middle.idx) {
-+ if (page_idx==first.idx)
-+ return first.keystr.c_str();
-+ return read_first_on_page_key(page_idx);
-+ } else if (page_idx>middle.idx) {
-+ if (page_idx==last.idx)
-+ return last.keystr.c_str();
-+ return read_first_on_page_key(page_idx);
-+ } else
-+ return middle.keystr.c_str();
-+}
-+
-+bool synonym_file::load(const std::string& url, gulong wc, bool CreateCacheFile,
-+ int EnableCollationLevel, CollateFunctions _CollateFunction,
-+ show_progress_t *sp)
-+{
-+ wordcount=wc;
-+ npages=(wc-1)/ENTR_PER_PAGE+2;
-+ if (!oft_file.load_cache(url, url, _CollateFunction, npages*sizeof(guint32))) {
-+ struct stat stats;
-+ if (stat (url.c_str(), &stats) == -1)
-+ return false;
-+ MapFile map_file;
-+ if (!map_file.open(url.c_str(), stats.st_size))
-+ return false;
-+ const gchar *syndatabuffer=map_file.begin();
-+ oft_file.wordoffset = (guint32 *)g_malloc(npages*sizeof(guint32));
-+ const gchar *p1 = syndatabuffer;
-+ gulong index_size;
-+ guint32 j=0;
-+ for (guint32 i=0; i<wc; i++) {
-+ index_size=strlen(p1) +1 + sizeof(guint32);
-+ if (i % ENTR_PER_PAGE==0) {
-+ oft_file.wordoffset[j]=p1-syndatabuffer;
-+ ++j;
-+ }
-+ p1 += index_size;
-+ }
-+ oft_file.wordoffset[j]=p1-syndatabuffer;
-+ map_file.close();
-+ if (CreateCacheFile) {
-+ if (!oft_file.save_cache(url, _CollateFunction, npages))
-+ g_printerr("Cache update failed.\n");
-+ }
-+ }
-+
-+ if (!(synfile = fopen(url.c_str(), "rb"))) {
-+ return false;
-+ }
-+
-+ first.assign(0, read_first_on_page_key(0));
-+ last.assign(npages-2, read_first_on_page_key(npages-2));
-+ middle.assign((npages-2)/2, read_first_on_page_key((npages-2)/2));
-+ real_last.assign(wc-1, get_key(wc-1));
-+
-+ if (EnableCollationLevel == 0) {
-+ } else if (EnableCollationLevel == 1)
-+ collate_sort(url, url, _CollateFunction, sp);
-+ else if (EnableCollationLevel == 2) {
-+ collate_save_info(url, url);
-+ }
-+
-+ return true;
-+}
-+
-+inline gulong synonym_file::load_page(glong page_idx)
-+{
-+ gulong nentr=ENTR_PER_PAGE;
-+ if (page_idx==glong(npages-2))
-+ if ((nentr=wordcount%ENTR_PER_PAGE)==0)
-+ nentr=ENTR_PER_PAGE;
-+
-+
-+ if (page_idx!=page.idx) {
-+ page_data.resize(oft_file.wordoffset[page_idx+1]-oft_file.wordoffset[page_idx]);
-+ fseek(synfile, oft_file.wordoffset[page_idx], SEEK_SET);
-+ fread(&page_data[0], 1, page_data.size(), synfile);
-+ page.fill(&page_data[0], nentr, page_idx);
-+ }
-+
-+ return nentr;
-+}
-+
-+const gchar *synonym_file::get_key(glong idx)
-+{
-+ load_page(idx/ENTR_PER_PAGE);
-+ glong idx_in_page=idx%ENTR_PER_PAGE;
-+ wordentry_index=page.entries[idx_in_page].index;
-+
-+ return page.entries[idx_in_page].keystr;
-+}
-+
-+bool synonym_file::lookup(const char *str, glong &idx, glong &idx_suggest)
-+{
-+ bool bFound=false;
-+ glong iFrom;
-+ glong iTo=npages-2;
-+ gint cmpint;
-+ glong iThisIndex;
-+ if (stardict_strcmp(str, first.keystr.c_str())<0) {
-+ idx = 0;
-+ idx_suggest = 0;
-+ return false;
-+ } else if (stardict_strcmp(str, real_last.keystr.c_str()) >0) {
-+ idx = INVALID_INDEX;
-+ idx_suggest = iTo;
-+ return false;
-+ } else {
-+ iFrom=0;
-+ iThisIndex=0;
-+ while (iFrom<=iTo) {
-+ iThisIndex=(iFrom+iTo)/2;
-+ cmpint = stardict_strcmp(str, get_first_on_page_key(iThisIndex));
-+ if (cmpint>0)
-+ iFrom=iThisIndex+1;
-+ else if (cmpint<0)
-+ iTo=iThisIndex-1;
-+ else {
-+ bFound=true;
-+ break;
-+ }
-+ }
-+ if (!bFound)
-+ idx = iTo; //prev
-+ else
-+ idx = iThisIndex;
-+ }
-+ if (!bFound) {
-+ gulong netr=load_page(idx);
-+ iFrom=1; // Needn't search the first word anymore.
-+ iTo=netr-1;
-+ iThisIndex=0;
-+ while (iFrom<=iTo) {
-+ iThisIndex=(iFrom+iTo)/2;
-+ cmpint = stardict_strcmp(str, page.entries[iThisIndex].keystr);
-+ if (cmpint>0)
-+ iFrom=iThisIndex+1;
-+ else if (cmpint<0)
-+ iTo=iThisIndex-1;
-+ else {
-+ bFound=true;
-+ break;
-+ }
-+ }
-+ idx*=ENTR_PER_PAGE;
-+ if (!bFound) {
-+ idx += iFrom; //next
-+ idx_suggest = idx;
-+ gint best, back;
-+ best = prefix_match (str, page.entries[idx_suggest % ENTR_PER_PAGE].keystr);
-+ for (;;) {
-+ if ((iTo=idx_suggest-1) < 0)
-+ break;
-+ if (idx_suggest % ENTR_PER_PAGE == 0)
-+ load_page(iTo / ENTR_PER_PAGE);
-+ back = prefix_match (str, page.entries[iTo % ENTR_PER_PAGE].keystr);
-+ if (!back || back < best)
-+ break;
-+ best = back;
-+ idx_suggest = iTo;
-+ }
-+ } else {
-+ idx += iThisIndex;
-+ idx_suggest = idx;
-+ }
-+ } else {
-+ idx*=ENTR_PER_PAGE;
-+ idx_suggest = idx;
-+ }
-+ return bFound;
-+}
-+
-+//===================================================================
-+Dict::Dict()
-+{
-+ storage = NULL;
-+}
-+
-+Dict::~Dict()
-+{
-+ delete storage;
-+}
-+
-+bool Dict::load(const std::string& ifofilename, bool CreateCacheFile,
-+ int EnableCollationLevel, CollateFunctions CollateFunction,
-+ show_progress_t *sp)
-+{
-+ gulong idxfilesize;
-+ glong wordcount, synwordcount;
-+ if (!load_ifofile(ifofilename, idxfilesize, wordcount, synwordcount))
-+ return false;
-+ sp->notify_about_start(_("Loading..."));
-+ std::string fullfilename(ifofilename);
-+ fullfilename.replace(fullfilename.length()-sizeof("ifo")+1, sizeof("ifo")-1, "dict.dz");
-+
-+ if (g_file_test(fullfilename.c_str(), G_FILE_TEST_EXISTS)) {
-+ dictdzfile.reset(new dictData);
-+ if (!dictdzfile->open(fullfilename, 0)) {
-+ //g_print("open file %s failed!\n",fullfilename);
-+ return false;
-+ }
-+ } else {
-+ fullfilename.erase(fullfilename.length()-sizeof(".dz")+1, sizeof(".dz")-1);
-+ dictfile = fopen(fullfilename.c_str(),"rb");
-+ if (!dictfile) {
-+ //g_print("open file %s failed!\n",fullfilename);
-+ return false;
-+ }
-+ }
-+
-+ fullfilename=ifofilename;
-+ fullfilename.replace(fullfilename.length()-sizeof("ifo")+1, sizeof("ifo")-1, "idx.gz");
-+
-+ if (g_file_test(fullfilename.c_str(), G_FILE_TEST_EXISTS)) {
-+ idx_file.reset(new wordlist_index);
-+ } else {
-+ fullfilename.erase(fullfilename.length()-sizeof(".gz")+1, sizeof(".gz")-1);
-+ idx_file.reset(new offset_index);
-+ }
-+
-+ if (!idx_file->load(fullfilename, wordcount, idxfilesize,
-+ CreateCacheFile, EnableCollationLevel,
-+ CollateFunction, sp))
-+ return false;
-+
-+ if (synwordcount) {
-+ fullfilename=ifofilename;
-+ fullfilename.replace(fullfilename.length()-sizeof("ifo")+1, sizeof("ifo")-1, "syn");
-+ if (g_file_test(fullfilename.c_str(), G_FILE_TEST_EXISTS)) {
-+ syn_file.reset(new synonym_file);
-+ if (!syn_file->load(fullfilename, synwordcount,
-+ CreateCacheFile, EnableCollationLevel,
-+ CollateFunction, sp))
-+ return false;
-+ }
-+ }
-+
-+ bool has_res = false;
-+ gchar *dirname = g_path_get_dirname(ifofilename.c_str());
-+ fullfilename = dirname;
-+ fullfilename += G_DIR_SEPARATOR_S "res";
-+ if (g_file_test(fullfilename.c_str(), G_FILE_TEST_IS_DIR)) {
-+ has_res = true;
-+ } else {
-+ fullfilename = dirname;
-+ fullfilename += G_DIR_SEPARATOR_S "res.rifo";
-+ if (g_file_test(fullfilename.c_str(), G_FILE_TEST_EXISTS)) {
-+ has_res = true;
-+ }
-+ }
-+ if (has_res) {
-+ storage = new ResourceStorage();
-+ bool failed = storage->load(dirname);
-+ if (failed) {
-+ delete storage;
-+ storage = NULL;
-+ }
-+ }
-+ g_free(dirname);
-+
-+ g_print("bookname: %s , wordcount %lu\n", bookname.c_str(), wordcount);
-+ return true;
-+}
-+
-+bool Dict::load_ifofile(const std::string& ifofilename, gulong &idxfilesize, glong &wordcount, glong &synwordcount)
-+{
-+ DictInfo dict_info;
-+ if (!dict_info.load_from_ifo_file(ifofilename, false))
-+ return false;
-+ if (dict_info.wordcount==0)
-+ return false;
-+
-+ ifo_file_name=dict_info.ifo_file_name;
-+ bookname=dict_info.bookname;
-+
-+ idxfilesize=dict_info.index_file_size;
-+ wordcount=dict_info.wordcount;
-+ synwordcount=dict_info.synwordcount;
-+
-+ sametypesequence=dict_info.sametypesequence;
-+ dicttype=dict_info.dicttype;
-+
-+ return true;
-+}
-+
-+glong Dict::nsynarticles()
-+{
-+ if (syn_file.get() == NULL)
-+ return 0;
-+ return syn_file->wordcount;
-+}
-+
-+bool Dict::GetWordPrev(glong idx, glong &pidx, bool isidx, int EnableCollationLevel, int servercollatefunc)
-+{
-+ idxsyn_file *is_file;
-+ if (isidx)
-+ is_file = idx_file.get();
-+ else
-+ is_file = syn_file.get();
-+ if (idx==INVALID_INDEX) {
-+ pidx = is_file->wordcount-1;
-+ return true;
-+ }
-+ pidx = idx;
-+ gchar *cWord = g_strdup(is_file->getWord(pidx, EnableCollationLevel, servercollatefunc));
-+ const gchar *pWord;
-+ bool found=false;
-+ while (pidx>0) {
-+ pWord = is_file->getWord(pidx-1, EnableCollationLevel, servercollatefunc);
-+ if (strcmp(pWord, cWord)!=0) {
-+ found=true;
-+ break;
-+ }
-+ pidx--;
-+ }
-+ g_free(cWord);
-+ if (found) {
-+ pidx--;
-+ return true;
-+ } else {
-+ return false;
-+ }
-+}
-+
-+void Dict::GetWordNext(glong &idx, bool isidx, int EnableCollationLevel, int servercollatefunc)
-+{
-+ idxsyn_file *is_file;
-+ if (isidx)
-+ is_file = idx_file.get();
-+ else
-+ is_file = syn_file.get();
-+ gchar *cWord = g_strdup(is_file->getWord(idx, EnableCollationLevel, servercollatefunc));
-+ const gchar *pWord;
-+ bool found=false;
-+ while (idx < is_file->wordcount-1) {
-+ pWord = is_file->getWord(idx+1, EnableCollationLevel, servercollatefunc);
-+ if (strcmp(pWord, cWord)!=0) {
-+ found=true;
-+ break;
-+ }
-+ idx++;
-+ }
-+ g_free(cWord);
-+ if (found)
-+ idx++;
-+ else
-+ idx=INVALID_INDEX;
-+}
-+
-+gint Dict::GetOrigWordCount(glong& idx, bool isidx)
-+{
-+ idxsyn_file *is_file;
-+ if (isidx)
-+ is_file = idx_file.get();
-+ else
-+ is_file = syn_file.get();
-+ gchar *cWord = g_strdup(is_file->get_key(idx));
-+ const gchar *pWord;
-+ gint count = 1;
-+ glong idx1 = idx;
-+ while (idx1>0) {
-+ pWord = is_file->get_key(idx1-1);
-+ if (strcmp(pWord, cWord)!=0)
-+ break;
-+ count++;
-+ idx1--;
-+ }
-+ glong idx2=idx;
-+ while (idx2<is_file->wordcount-1) {
-+ pWord = is_file->get_key(idx2+1);
-+ if (strcmp(pWord, cWord)!=0)
-+ break;
-+ count++;
-+ idx2++;
-+ }
-+ idx=idx1;
-+ g_free(cWord);
-+ return count;
-+}
-+
-+bool Dict::LookupSynonym(const char *str, glong &synidx, glong &synidx_suggest, int EnableCollationLevel, int servercollatefunc)
-+{
-+ if (syn_file.get() == NULL) {
-+ synidx = UNSET_INDEX;
-+ synidx_suggest = UNSET_INDEX;
-+ return false;
-+ }
-+ return syn_file->Lookup(str, synidx, synidx_suggest, EnableCollationLevel, servercollatefunc);
-+}
-+
-+bool Dict::LookupWithRule(GPatternSpec *pspec, glong *aIndex, int iBuffLen)
-+{
-+ int iIndexCount=0;
-+ for (glong i=0; i<narticles() && iIndexCount<iBuffLen-1; i++)
-+ // Need to deal with same word in index? But this will slow down processing in most case.
-+ if (g_pattern_match_string(pspec, idx_file->getWord(i, 0, 0)))
-+ aIndex[iIndexCount++]=i;
-+ aIndex[iIndexCount]= -1; // -1 is the end.
-+ return (iIndexCount>0);
-+}
-+
-+bool Dict::LookupWithRuleSynonym(GPatternSpec *pspec, glong *aIndex, int iBuffLen)
-+{
-+ if (syn_file.get() == NULL)
-+ return false;
-+ int iIndexCount=0;
-+ for (glong i=0; i<nsynarticles() && iIndexCount<iBuffLen-1; i++)
-+ // Need to deal with same word in index? But this will slow down processing in most case.
-+ if (g_pattern_match_string(pspec, syn_file->getWord(i, 0, 0)))
-+ aIndex[iIndexCount++]=i;
-+ aIndex[iIndexCount]= -1; // -1 is the end.
-+ return (iIndexCount>0);
-+}
-+
-+bool Dict::LookupWithRegex(GRegex *regex, glong *aIndex, int iBuffLen)
-+{
-+ int iIndexCount=0;
-+ for (glong i=0; i<narticles() && iIndexCount<iBuffLen-1; i++)
-+ // Need to deal with same word in index? But this will slow down processing in most case.
-+ if (g_regex_match(regex, idx_file->getWord(i, 0, 0), (GRegexMatchFlags)0, NULL))
-+ aIndex[iIndexCount++]=i;
-+ aIndex[iIndexCount]= -1; // -1 is the end.
-+ return (iIndexCount>0);
-+}
-+
-+bool Dict::LookupWithRegexSynonym(GRegex *regex, glong *aIndex, int iBuffLen)
-+{
-+ if (syn_file.get() == NULL)
-+ return false;
-+ int iIndexCount=0;
-+ for (glong i=0; i<nsynarticles() && iIndexCount<iBuffLen-1; i++)
-+ // Need to deal with same word in index? But this will slow down processing in most case.
-+ if (g_regex_match(regex, syn_file->getWord(i, 0, 0), (GRegexMatchFlags)0, NULL))
-+ aIndex[iIndexCount++]=i;
-+ aIndex[iIndexCount]= -1; // -1 is the end.
-+ return (iIndexCount>0);
-+}
-+
-+//===================================================================
-+show_progress_t Libs::default_show_progress;
-+
-+Libs::Libs(show_progress_t *sp, bool create, int enablelevel, int function)
-+{
-+#ifdef SD_SERVER_CODE
-+ root_info_item = NULL;
-+#endif
-+ set_show_progress(sp);
-+ CreateCacheFile = create;
-+ EnableCollationLevel = enablelevel;
-+ CollateFunction = (CollateFunctions)function;
-+ iMaxFuzzyDistance = MAX_FUZZY_DISTANCE; //need to read from cfg.
-+ if (EnableCollationLevel == 0) {
-+ } else if (EnableCollationLevel == 1) {
-+ if (utf8_collate_init(CollateFunction))
-+ printf("Init collate function failed!\n");
-+ } else if (EnableCollationLevel == 2){
-+ if (utf8_collate_init_all())
-+ printf("Init collate functions failed!\n");
-+ }
-+}
-+
-+Libs::~Libs()
-+{
-+#ifdef SD_SERVER_CODE
-+ if (root_info_item)
-+ delete root_info_item;
-+#endif
-+ for (std::vector<Dict *>::iterator p=oLib.begin(); p!=oLib.end(); ++p)
-+ delete *p;
-+ utf8_collate_end();
-+}
-+
-+bool Libs::load_dict(const std::string& url, show_progress_t *sp)
-+{
-+ Dict *lib=new Dict;
-+ if (lib->load(url, CreateCacheFile, EnableCollationLevel,
-+ CollateFunction, sp)) {
-+ oLib.push_back(lib);
-+ return true;
-+ } else {
-+ delete lib;
-+ return false;
-+ }
-+}
-+
-+#ifdef SD_SERVER_CODE
-+void Libs::LoadFromXML()
-+{
-+ root_info_item = new DictInfoItem();
-+ root_info_item->isdir = 1;
-+ root_info_item->dir = new DictInfoDirItem();
-+ root_info_item->dir->name='/';
-+ LoadXMLDir("/usr/share/stardict/dic", root_info_item);
-+ GenLinkDict(root_info_item);
-+}
-+
-+void Libs::GenLinkDict(DictInfoItem *info_item)
-+{
-+ std::list<std::list<DictInfoItem *>::iterator> eraselist;
-+ for (std::list<DictInfoItem *>::iterator i = info_item->dir->info_item_list.begin(); i!= info_item->dir->info_item_list.end(); ++i) {
-+ if ((*i)->isdir == 1) {
-+ GenLinkDict(*i);
-+ } else if ((*i)->isdir == 2) {
-+ std::map<std::string, DictInfoDictItem *>::iterator uid_iter;
-+ uid_iter = uidmap.find(*((*i)->linkuid));
-+ if (uid_iter!=uidmap.end()) {
-+ delete (*i)->linkuid;
-+ (*i)->dict = uid_iter->second;
-+ } else {
-+ g_print("Error, linkdict uid not found! %s\n", (*i)->linkuid->c_str());
-+ delete (*i)->linkuid;
-+ eraselist.push_back(i);
-+ }
-+ }
-+ }
-+ for (std::list<std::list<DictInfoItem *>::iterator>::iterator i = eraselist.begin(); i!= eraselist.end(); ++i) {
-+ info_item->dir->info_item_list.erase(*i);
-+ }
-+}
-+
-+void Libs::func_parse_start_element(GMarkupParseContext *context, const gchar *element_name, const gchar **attribute_names, const gchar **attribute_values, gpointer user_data, GError **error)
-+{
-+ if (strcmp(element_name, "dict")==0) {
-+ ParseUserData *Data = (ParseUserData *)user_data;
-+ Data->indict = true;
-+ Data->path.clear();
-+ Data->uid.clear();
-+ Data->level.clear();
-+ Data->download.clear();
-+ Data->from.clear();
-+ Data->to.clear();
-+ } else if (strcmp(element_name, "linkdict")==0) {
-+ ParseUserData *Data = (ParseUserData *)user_data;
-+ Data->inlinkdict = true;
-+ Data->linkuid.clear();
-+ }
-+}
-+
-+void Libs::func_parse_end_element(GMarkupParseContext *context, const gchar *element_name, gpointer user_data, GError **error)
-+{
-+ if (strcmp(element_name, "dict")==0) {
-+ ParseUserData *Data = (ParseUserData *)user_data;
-+ Data->indict = false;
-+ if (!Data->path.empty() && !Data->uid.empty()) {
-+ std::string url;
-+ url = Data->dir;
-+ url += G_DIR_SEPARATOR;
-+ url += Data->path;
-+ if (Data->oLibs->load_dict(url, Data->oLibs->show_progress)) {
-+ DictInfoItem *sub_info_item = new DictInfoItem();
-+ sub_info_item->isdir = 0;
-+ sub_info_item->dict = new DictInfoDictItem();
-+ sub_info_item->dict->uid = Data->uid;
-+ sub_info_item->dict->download = Data->download;
-+ sub_info_item->dict->from = Data->from;
-+ sub_info_item->dict->to = Data->to;
-+ if (Data->level.empty())
-+ sub_info_item->dict->level = 0;
-+ else
-+ sub_info_item->dict->level = atoi(Data->level.c_str());
-+ sub_info_item->dict->id = Data->oLibs->oLib.size()-1;
-+ Data->info_item->dir->info_item_list.push_back(sub_info_item);
-+ Data->oLibs->uidmap[Data->uid] = sub_info_item->dict;
-+ }
-+ }
-+ } else if (strcmp(element_name, "linkdict")==0) {
-+ ParseUserData *Data = (ParseUserData *)user_data;
-+ Data->inlinkdict = false;
-+ if (!Data->linkuid.empty()) {
-+ DictInfoItem *sub_info_item = new DictInfoItem();
-+ sub_info_item->isdir = 2;
-+ sub_info_item->linkuid = new std::string(Data->linkuid);
-+ Data->info_item->dir->info_item_list.push_back(sub_info_item);
-+ }
-+ }
-+}
-+
-+void Libs::func_parse_text(GMarkupParseContext *context, const gchar *text, gsize text_len, gpointer user_data, GError **error)
-+{
-+ const gchar *element = g_markup_parse_context_get_element(context);
-+ if (!element)
-+ return;
-+ ParseUserData *Data = (ParseUserData *)user_data;
-+ if (strcmp(element, "subdir")==0) {
-+ std::string subdir;
-+ subdir = Data->dir;
-+ subdir += G_DIR_SEPARATOR;
-+ subdir.append(text, text_len);
-+ DictInfoItem *sub_info_item = new DictInfoItem();
-+ sub_info_item->isdir = 1;
-+ sub_info_item->dir = new DictInfoDirItem();
-+ sub_info_item->dir->name.assign(text, text_len);
-+ Data->oLibs->LoadXMLDir(subdir.c_str(), sub_info_item);
-+ Data->info_item->dir->info_item_list.push_back(sub_info_item);
-+ } else if (strcmp(element, "dirname")==0) {
-+ Data->info_item->dir->dirname.assign(text, text_len);
-+ } else if (strcmp(element, "path")==0) {
-+ Data->path.assign(text, text_len);
-+ } else if (strcmp(element, "uid")==0) {
-+ if (Data->indict) {
-+ std::string uid(text, text_len);
-+ if (uid.find_first_of(' ')!=std::string::npos) {
-+ g_print("Error: uid contains space! %s: %s\n", Data->dir, uid.c_str());
-+ } else {
-+ std::map<std::string, DictInfoDictItem *>::iterator uid_iter;
-+ uid_iter = Data->oLibs->uidmap.find(uid);
-+ if (uid_iter!=Data->oLibs->uidmap.end()) {
-+ g_print("Error: uid duplicated! %s: %s\n", Data->dir, uid.c_str());
-+ } else {
-+ Data->uid = uid;
-+ }
-+ }
-+ } else if (Data->inlinkdict) {
-+ Data->linkuid.assign(text, text_len);
-+ }
-+ } else if (strcmp(element, "level")==0) {
-+ Data->level.assign(text, text_len);
-+ } else if (strcmp(element, "download")==0) {
-+ Data->download.assign(text, text_len);
-+ } else if (strcmp(element, "from")==0) {
-+ Data->from.assign(text, text_len);
-+ } else if (strcmp(element, "to")==0) {
-+ Data->to.assign(text, text_len);
-+ }
-+}
-+
-+void Libs::LoadXMLDir(const char *dir, DictInfoItem *info_item)
-+{
-+ std::string filename;
-+ filename = dir;
-+ filename += G_DIR_SEPARATOR_S "stardictd.xml";
-+ struct stat filestat;
-+ if (g_stat(filename.c_str(), &filestat)!=0)
-+ return;
-+ MapFile mf;
-+ if (!mf.open(filename.c_str(), filestat.st_size))
-+ return;
-+ ParseUserData Data;
-+ Data.oLibs = this;
-+ Data.dir = dir;
-+ Data.info_item = info_item;
-+ Data.indict = false;
-+ Data.inlinkdict = false;
-+ GMarkupParser parser;
-+ parser.start_element = func_parse_start_element;
-+ parser.end_element = func_parse_end_element;
-+ parser.text = func_parse_text;
-+ parser.passthrough = NULL;
-+ parser.error = NULL;
-+ GMarkupParseContext* context = g_markup_parse_context_new(&parser, (GMarkupParseFlags)0, &Data, NULL);
-+ g_markup_parse_context_parse(context, mf.begin(), filestat.st_size, NULL);
-+ g_markup_parse_context_end_parse(context, NULL);
-+ g_markup_parse_context_free(context);
-+ mf.close();
-+ info_item->dir->dictcount = 0;
-+ for (std::list<DictInfoItem *>::iterator i = info_item->dir->info_item_list.begin(); i!= info_item->dir->info_item_list.end(); ++i) {
-+ if ((*i)->isdir == 1) {
-+ info_item->dir->dictcount += (*i)->dir->dictcount;
-+ } else if ((*i)->isdir == 0) {
-+ info_item->dir->dictcount++;
-+ }
-+ }
-+}
-+
-+const std::string &Libs::get_fromto_info() {
-+ if(cache_fromto.empty()){
-+ std::map<std::string, std::list<FromTo> > map_fromto;
-+ gen_fromto_info(root_info_item, map_fromto);
-+ cache_fromto+="<lang>";
-+ for (std::map<std::string, std::list<FromTo> >::iterator map_it = map_fromto.begin(); map_it != map_fromto.end(); ++map_it){
-+ cache_fromto+="<from lang=\"";
-+ cache_fromto+=map_it->first;
-+ cache_fromto+="\">";
-+ std::list<FromTo> &fromTo = map_it->second;
-+ for (std::list<FromTo>::iterator i = fromTo.begin() ; i!= fromTo.end(); ++i){
-+ cache_fromto+="<to lang=\"";
-+ cache_fromto+= i->to;
-+ cache_fromto+="\">";
-+ std::list<FromToInfo> &fromtoinfo = i->fromto_info;
-+ for (std::list<FromToInfo>::iterator j = fromtoinfo.begin() ; j!= fromtoinfo.end(); ++j){
-+ cache_fromto+="<dict><uid>";
-+ cache_fromto+=j->uid;
-+ cache_fromto+="</uid><bookname>";
-+ cache_fromto+= j->bookname;
-+ cache_fromto+="</bookname></dict>";
-+ }
-+ cache_fromto+="</to>";
-+ }
-+ cache_fromto+="</from>";
-+ }
-+ cache_fromto+="</lang>";
-+ }
-+ return cache_fromto;
-+}
-+
-+void Libs::gen_fromto_info(struct DictInfoItem *info_item, std::map<std::string, std::list<FromTo> > &map_fromto) {
-+ gchar *etext;
-+ for(std::list<DictInfoItem *>::iterator i = info_item->dir->info_item_list.begin() ; i!= info_item->dir->info_item_list.end(); ++i){
-+ if ((*i)->isdir == 1) {
-+ gen_fromto_info((*i), map_fromto);
-+ } else {
-+ std::string from_str = (*i)->dict->from;
-+ std::string to_str = (*i)->dict->to;
-+ if(from_str.empty() || to_str.empty()){
-+ continue;
-+ }
-+ std::string uid_str = (*i)->dict->uid;
-+ etext = g_markup_escape_text(oLib[(*i)->dict->id]->dict_name().c_str(), -1);
-+ std::string bookname_str = etext;
-+ g_free(etext);
-+ std::map<std::string, std::list<FromTo> >::iterator fromto1 = map_fromto.find(from_str);
-+ if (fromto1==map_fromto.end()) {
-+ //if an from_str element not already in map, add new from_str to map
-+ FromToInfo fromtoinfo;
-+ fromtoinfo.uid = uid_str;
-+ fromtoinfo.bookname = bookname_str;
-+ std::list<FromToInfo> list_fromtoinfo ;
-+ list_fromtoinfo.push_back(fromtoinfo);
-+ FromTo new_fromTo;
-+ new_fromTo.to = to_str;
-+ new_fromTo.fromto_info = list_fromtoinfo;
-+ std::list<FromTo> list_fromTo;
-+ list_fromTo.push_back(new_fromTo);
-+ map_fromto[from_str] = list_fromTo;
-+ } else {
-+ // else if from_str already in map, so comparison to_str and from_to1 , then choose insert.
-+ std::list<FromTo> &fromTo_list = fromto1->second;
-+ std::string from_name1 = fromto1->first;
-+ bool found = false;
-+ for (std::list<FromTo>::iterator new_fromTo = fromTo_list.begin(); new_fromTo != fromTo_list.end(); ++new_fromTo) {
-+ if(to_str == new_fromTo->to) {
-+ std::list<FromToInfo> &fromtoinfo1 = new_fromTo->fromto_info;
-+ FromToInfo fromtoinfo;
-+ fromtoinfo.uid = uid_str;
-+ fromtoinfo.bookname = bookname_str;
-+ fromtoinfo1.push_back(fromtoinfo);
-+ found = true;
-+ break;
-+ }
-+ }
-+ if(!found){
-+ FromToInfo fromtoinfo;
-+ fromtoinfo.uid = uid_str;
-+ fromtoinfo.bookname = bookname_str;
-+ std::list<FromToInfo> fromtoinfo1;
-+ fromtoinfo1.push_back(fromtoinfo);
-+ FromTo fromTo;
-+ fromTo.to = to_str;
-+ fromTo.fromto_info = fromtoinfo1;
-+ fromTo_list.push_back(fromTo);
-+ }
-+ }
-+ }
-+ }
-+}
-+
-+const std::string *Libs::get_dir_info(const char *path)
-+{
-+ if (path[0]!='/')
-+ return NULL;
-+ DictInfoItem *info_item = root_info_item;
-+ std::string item;
-+ const char *p = path+1;
-+ const char *p1;
-+ bool found;
-+ do {
-+ p1 = strchr(p, '/');
-+ if (p1) {
-+ item.assign(p, p1-p);
-+ if (!item.empty()) {
-+ found = false;
-+ for (std::list<DictInfoItem *>::iterator i = info_item->dir->info_item_list.begin(); i!= info_item->dir->info_item_list.end(); ++i) {
-+ if ((*i)->isdir == 1) {
-+ if ((*i)->dir->name == item) {
-+ info_item = (*i);
-+ found = true;
-+ break;
-+ }
-+ }
-+ }
-+ if (!found)
-+ return NULL;
-+ }
-+ p = p1+1;
-+ }
-+ } while (p1);
-+ if (*p)
-+ return NULL; // Not end by '/'.
-+ DictInfoDirItem *dir = info_item->dir;
-+ if (dir->info_string.empty()) {
-+ dir->info_string += "<parent>";
-+ dir->info_string += path;
-+ dir->info_string += "</parent>";
-+ gchar *etext;
-+ for (std::list<DictInfoItem *>::iterator i = info_item->dir->info_item_list.begin(); i!= info_item->dir->info_item_list.end(); ++i) {
-+ if ((*i)->isdir == 1) {
-+ dir->info_string += "<dir><name>";
-+ dir->info_string += (*i)->dir->name;
-+ dir->info_string += "</name><dirname>";
-+ dir->info_string += (*i)->dir->dirname;
-+ dir->info_string += "</dirname><dictcount>";
-+ gchar *dictcount = g_strdup_printf("%u", (*i)->dir->dictcount);
-+ dir->info_string += dictcount;
-+ g_free(dictcount);
-+ dir->info_string += "</dictcount></dir>";
-+ } else {
-+ dir->info_string += "<dict>";
-+ if ((*i)->isdir == 2)
-+ dir->info_string += "<islink>1</islink>";
-+ if ((*i)->dict->level != 0) {
-+ dir->info_string += "<level>";
-+ gchar *level = g_strdup_printf("%u", (*i)->dict->level);
-+ dir->info_string += level;
-+ g_free(level);
-+ dir->info_string += "</level>";
-+ }
-+ dir->info_string += "<uid>";
-+ dir->info_string += (*i)->dict->uid;
-+ dir->info_string += "</uid><bookname>";
-+ etext = g_markup_escape_text(oLib[(*i)->dict->id]->dict_name().c_str(), -1);
-+ dir->info_string += etext;
-+ g_free(etext);
-+ dir->info_string += "</bookname><wordcount>";
-+ gchar *wc = g_strdup_printf("%ld", oLib[(*i)->dict->id]->narticles());
-+ dir->info_string += wc;
-+ g_free(wc);
-+ dir->info_string += "</wordcount></dict>";
-+ }
-+ }
-+ }
-+ return &(dir->info_string);
-+}
-+
-+int Libs::get_dict_level(const char *uid)
-+{
-+ std::map<std::string, DictInfoDictItem *>::iterator uid_iter;
-+ uid_iter = uidmap.find(uid);
-+ if (uid_iter==uidmap.end())
-+ return -1;
-+ return uid_iter->second->level;
-+}
-+
-+std::string Libs::get_dicts_list(const char *dictmask, int max_dict_count, int userLevel)
-+{
-+ std::list<std::string> uid_list;
-+ std::string uid;
-+ const char *p, *p1;
-+ p = dictmask;
-+ do {
-+ p1 = strchr(p, ' ');
-+ if (p1) {
-+ uid.assign(p, p1-p);
-+ if (!uid.empty())
-+ uid_list.push_back(uid);
-+ p = p1+1;
-+ }
-+ } while (p1);
-+ uid = p;
-+ if (!uid.empty())
-+ uid_list.push_back(uid);
-+
-+ std::string dictmask_str;
-+ int count = 0;
-+ const std::string *info_string;
-+ int level;
-+ for (std::list<std::string>::iterator i = uid_list.begin(); i!= uid_list.end(); ++i) {
-+ level = get_dict_level((*i).c_str());
-+ if (level < 0 || level > userLevel)
-+ continue;
-+ info_string = get_dict_info(i->c_str(), true);
-+ if (info_string) {
-+ if (count>=max_dict_count)
-+ break;
-+ dictmask_str += info_string->c_str();
-+ count++;
-+ }
-+ }
-+ return dictmask_str;
-+}
-+
-+const std::string *Libs::get_dict_info(const char *uid, bool is_short)
-+{
-+ std::map<std::string, DictInfoDictItem *>::iterator uid_iter;
-+ uid_iter = uidmap.find(uid);
-+ if (uid_iter==uidmap.end())
-+ return NULL;
-+ DictInfoDictItem *dict;
-+ dict = uid_iter->second;
-+ if (is_short) {
-+ if (dict->short_info_string.empty()) {
-+ gchar *etext;
-+ dict->short_info_string += "<dict><uid>";
-+ dict->short_info_string += uid;
-+ dict->short_info_string += "</uid><bookname>";
-+ etext = g_markup_escape_text(oLib[dict->id]->dict_name().c_str(), -1);
-+ dict->short_info_string += etext;
-+ g_free(etext);
-+ dict->short_info_string += "</bookname><wordcount>";
-+ gchar *wc = g_strdup_printf("%ld", oLib[dict->id]->narticles());
-+ dict->short_info_string += wc;
-+ g_free(wc);
-+ dict->short_info_string += "</wordcount></dict>";
-+ }
-+ return &(dict->short_info_string);
-+ } else {
-+ if (dict->info_string.empty()) {
-+ gchar *etext;
-+ DictInfo dict_info;
-+ if (!dict_info.load_from_ifo_file(oLib[dict->id]->ifofilename(), false))
-+ return NULL;
-+ dict->info_string += "<dictinfo><bookname>";
-+ etext = g_markup_escape_text(dict_info.bookname.c_str(), -1);
-+ dict->info_string += etext;
-+ g_free(etext);
-+ dict->info_string += "</bookname><wordcount>";
-+ gchar *wc = g_strdup_printf("%u", dict_info.wordcount);
-+ dict->info_string += wc;
-+ g_free(wc);
-+ dict->info_string += "</wordcount>";
-+ if (dict_info.synwordcount!=0) {
-+ dict->info_string += "<synwordcount>";
-+ wc = g_strdup_printf("%u", dict_info.synwordcount);
-+ dict->info_string += wc;
-+ g_free(wc);
-+ dict->info_string += "</synwordcount>";
-+ }
-+ dict->info_string += "<author>";
-+ etext = g_markup_escape_text(dict_info.author.c_str(), -1);
-+ dict->info_string += etext;
-+ g_free(etext);
-+ dict->info_string += "</author><email>";
-+ etext = g_markup_escape_text(dict_info.email.c_str(), -1);
-+ dict->info_string += etext;
-+ g_free(etext);
-+ dict->info_string += "</email><website>";
-+ etext = g_markup_escape_text(dict_info.website.c_str(), -1);
-+ dict->info_string += etext;
-+ g_free(etext);
-+ dict->info_string += "</website><description>";
-+ etext = g_markup_escape_text(dict_info.description.c_str(), -1);
-+ dict->info_string += etext;
-+ g_free(etext);
-+ dict->info_string += "</description><date>";
-+ etext = g_markup_escape_text(dict_info.date.c_str(), -1);
-+ dict->info_string += etext;
-+ g_free(etext);
-+ dict->info_string += "</date><download>";
-+ etext = g_markup_escape_text(dict->download.c_str(), -1);
-+ dict->info_string += etext;
-+ g_free(etext);
-+ dict->info_string += "</download></dictinfo>";
-+ }
-+ return &(dict->info_string);
-+ }
-+}
-+
-+void Libs::SetServerDictMask(std::vector<InstantDictIndex> &dictmask, const char *dicts, int max, int userLevel)
-+{
-+ InstantDictIndex instance_dict_index;
-+ instance_dict_index.type = InstantDictType_LOCAL;
-+ dictmask.clear();
-+ std::list<std::string> uid_list;
-+ std::string uid;
-+ const char *p, *p1;
-+ p = dicts;
-+ do {
-+ p1 = strchr(p, ' ');
-+ if (p1) {
-+ uid.assign(p, p1-p);
-+ if (!uid.empty())
-+ uid_list.push_back(uid);
-+ p = p1+1;
-+ }
-+ } while (p1);
-+ uid = p;
-+ if (!uid.empty())
-+ uid_list.push_back(uid);
-+ int count = 0;
-+ std::map<std::string, DictInfoDictItem *>::iterator uid_iter;
-+ for (std::list<std::string>::iterator i = uid_list.begin(); i!= uid_list.end(); ++i) {
-+ uid_iter = uidmap.find(*i);
-+ if (uid_iter!=uidmap.end()) {
-+ if (max>=0 && count >= max)
-+ break;
-+ if (userLevel>=0 && (unsigned int)userLevel< uid_iter->second->level)
-+ continue;
-+ instance_dict_index.index = uid_iter->second->id;
-+ dictmask.push_back(instance_dict_index);
-+ count++;
-+ }
-+ }
-+}
-+
-+void Libs::LoadCollateFile(std::vector<InstantDictIndex> &dictmask, CollateFunctions cltfuc)
-+{
-+ for (std::vector<InstantDictIndex>::iterator i = dictmask.begin(); i!=dictmask.end(); ++i) {
-+ if ((*i).type == InstantDictType_LOCAL) {
-+ oLib[(*i).index]->idx_file->collate_load(cltfuc);
-+ if (oLib[(*i).index]->syn_file.get() != NULL)
-+ oLib[(*i).index]->syn_file->collate_load(cltfuc);
-+ }
-+ }
-+}
-+#endif
-+
-+#ifdef SD_CLIENT_CODE
-+bool Libs::find_lib_by_filename(const char *filename, size_t &iLib)
-+{
-+ for (std::vector<Dict *>::size_type i =0; i < oLib.size(); i++) {
-+ if (oLib[i]->ifofilename() == filename) {
-+ iLib = i;
-+ return true;
-+ }
-+ }
-+ return false;
-+}
-+
-+void Libs::load(std::list<std::string> &load_list)
-+{
-+ for (std::list<std::string>::iterator i = load_list.begin(); i != load_list.end(); ++i) {
-+ load_dict(*i, show_progress);
-+ }
-+}
-+
-+void Libs::reload(std::list<std::string> &load_list, int is_coll_enb, int collf)
-+{
-+ if (is_coll_enb == EnableCollationLevel && collf == CollateFunction) {
-+ std::vector<Dict *> prev(oLib);
-+ oLib.clear();
-+ for (std::list<std::string>::iterator i = load_list.begin(); i != load_list.end(); ++i) {
-+ std::vector<Dict *>::iterator it;
-+ for (it=prev.begin(); it!=prev.end(); ++it) {
-+ if ((*it)->ifofilename()==*i)
-+ break;
-+ }
-+ if (it==prev.end()) {
-+ load_dict(*i, show_progress);
-+ } else {
-+ Dict *res=*it;
-+ prev.erase(it);
-+ oLib.push_back(res);
-+ }
-+ }
-+ for (std::vector<Dict *>::iterator it=prev.begin(); it!=prev.end(); ++it) {
-+ delete *it;
-+ }
-+ } else {
-+ for (std::vector<Dict *>::iterator it = oLib.begin(); it != oLib.end(); ++it)
-+ delete *it;
-+ oLib.clear();
-+ EnableCollationLevel = is_coll_enb;
-+ CollateFunction = CollateFunctions(collf);
-+ if (EnableCollationLevel == 0) {
-+ } else if (EnableCollationLevel == 1) {
-+ if (utf8_collate_init(CollateFunction))
-+ printf("Init collate function failed!\n");
-+ } else if (EnableCollationLevel == 2) {
-+ if (utf8_collate_init_all())
-+ printf("Init collate functions failed!\n");
-+ }
-+ load(load_list);
-+ }
-+}
-+#endif
-+
-+glong Libs::CltIndexToOrig(glong cltidx, size_t iLib, int servercollatefunc)
-+{
-+ if (EnableCollationLevel == 0)
-+ return cltidx;
-+ if (EnableCollationLevel == 1) {
-+ if (cltidx == INVALID_INDEX)
-+ return cltidx;
-+ return oLib[iLib]->idx_file->clt_file->GetOrigIndex(cltidx);
-+ }
-+ if (servercollatefunc == 0)
-+ return cltidx;
-+ if (cltidx == INVALID_INDEX)
-+ return cltidx;
-+ oLib[iLib]->idx_file->collate_load((CollateFunctions)(servercollatefunc-1));
-+ return oLib[iLib]->idx_file->clt_files[servercollatefunc-1]->GetOrigIndex(cltidx);
-+}
-+
-+glong Libs::CltSynIndexToOrig(glong cltidx, size_t iLib, int servercollatefunc)
-+{
-+ if (EnableCollationLevel == 0)
-+ return cltidx;
-+ if (EnableCollationLevel == 1) {
-+ if (cltidx == UNSET_INDEX || cltidx == INVALID_INDEX)
-+ return cltidx;
-+ return oLib[iLib]->syn_file->clt_file->GetOrigIndex(cltidx);
-+ }
-+ if (servercollatefunc == 0)
-+ return cltidx;
-+ if (cltidx == UNSET_INDEX || cltidx == INVALID_INDEX)
-+ return cltidx;
-+ oLib[iLib]->syn_file->collate_load((CollateFunctions)(servercollatefunc-1));
-+ return oLib[iLib]->syn_file->clt_files[servercollatefunc-1]->GetOrigIndex(cltidx);
-+}
-+
-+const gchar *Libs::GetSuggestWord(const gchar *sWord, CurrentIndex *iCurrent, std::vector<InstantDictIndex> &dictmask, int servercollatefunc)
-+{
-+ const gchar *poCurrentWord = NULL;
-+ const gchar *word;
-+ gint best =0;
-+ gint back;
-+ std::vector<InstantDictIndex>::size_type iLib;
-+ std::vector<Dict *>::size_type iRealLib;
-+ for (iLib=0; iLib < dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if ( poCurrentWord == NULL ) {
-+ poCurrentWord = poGetWord(iCurrent[iLib].idx_suggest, iRealLib, servercollatefunc);
-+ best = prefix_match (sWord, poCurrentWord);
-+ } else {
-+ word = poGetWord(iCurrent[iLib].idx_suggest, iRealLib, servercollatefunc);
-+ back = prefix_match (sWord, word);
-+ if (back > best) {
-+ best = back;
-+ poCurrentWord = word;
-+ } else if (back == best) {
-+ gint x = stardict_server_collate(poCurrentWord, word, EnableCollationLevel, CollateFunction, servercollatefunc);
-+ if (x > 0) {
-+ poCurrentWord = word;
-+ }
-+ }
-+ }
-+ }
-+ for (iLib=0; iLib<dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ if (iCurrent[iLib].synidx_suggest==UNSET_INDEX)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if ( poCurrentWord == NULL ) {
-+ poCurrentWord = poGetSynonymWord(iCurrent[iLib].synidx_suggest, iRealLib, servercollatefunc);
-+ best = prefix_match (sWord, poCurrentWord);
-+ } else {
-+ word = poGetSynonymWord(iCurrent[iLib].synidx_suggest, iRealLib, servercollatefunc);
-+ back = prefix_match (sWord, word);
-+ if (back > best) {
-+ best = back;
-+ poCurrentWord = word;
-+ } else if (back == best) {
-+ gint x = stardict_server_collate(poCurrentWord, word, EnableCollationLevel, CollateFunction, servercollatefunc);
-+ if (x > 0) {
-+ poCurrentWord = word;
-+ }
-+ }
-+ }
-+ }
-+ return poCurrentWord;
-+}
-+
-+const gchar *Libs::poGetCurrentWord(CurrentIndex * iCurrent, std::vector<InstantDictIndex> &dictmask, int servercollatefunc)
-+{
-+ const gchar *poCurrentWord = NULL;
-+ const gchar *word;
-+ std::vector<InstantDictIndex>::size_type iLib;
-+ std::vector<Dict *>::size_type iRealLib;
-+ for (iLib=0; iLib < dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (iCurrent[iLib].idx==INVALID_INDEX)
-+ continue;
-+ if ( iCurrent[iLib].idx>=narticles(iRealLib) || iCurrent[iLib].idx<0)
-+ continue;
-+ if ( poCurrentWord == NULL ) {
-+ poCurrentWord = poGetWord(iCurrent[iLib].idx, iRealLib, servercollatefunc);
-+ } else {
-+ word = poGetWord(iCurrent[iLib].idx, iRealLib, servercollatefunc);
-+ gint x = stardict_server_collate(poCurrentWord, word, EnableCollationLevel, CollateFunction, servercollatefunc);
-+ if (x > 0) {
-+ poCurrentWord = word;
-+ }
-+ }
-+ }
-+ for (iLib=0; iLib<dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (iCurrent[iLib].synidx==UNSET_INDEX)
-+ continue;
-+ if (iCurrent[iLib].synidx==INVALID_INDEX)
-+ continue;
-+ if ( iCurrent[iLib].synidx>=nsynarticles(iRealLib) || iCurrent[iLib].synidx<0)
-+ continue;
-+ if ( poCurrentWord == NULL ) {
-+ poCurrentWord = poGetSynonymWord(iCurrent[iLib].synidx, iRealLib, servercollatefunc);
-+ } else {
-+ word = poGetSynonymWord(iCurrent[iLib].synidx, iRealLib, servercollatefunc);
-+ gint x = stardict_server_collate(poCurrentWord, word, EnableCollationLevel, CollateFunction, servercollatefunc);
-+ if (x > 0) {
-+ poCurrentWord = word;
-+ }
-+ }
-+ }
-+ return poCurrentWord;
-+}
-+
-+const gchar *
-+Libs::poGetNextWord(const gchar *sWord, CurrentIndex *iCurrent, std::vector<InstantDictIndex> &dictmask, int servercollatefunc)
-+{
-+ // the input can be:
-+ // (word,iCurrent),read word,write iNext to iCurrent,and return next word. used by TopWin::NextCallback();
-+ // (NULL,iCurrent),read iCurrent,write iNext to iCurrent,and return next word. used by AppCore::ListWords();
-+ const gchar *poCurrentWord = NULL;
-+ std::vector<Dict *>::size_type iCurrentLib=0, iCurrentRealLib=0;
-+ bool isLib = false;
-+ const gchar *word;
-+
-+ std::vector<InstantDictIndex>::size_type iLib;
-+ std::vector<Dict *>::size_type iRealLib;
-+ for (iLib=0; iLib < dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (sWord) {
-+ oLib[iRealLib]->Lookup(sWord, iCurrent[iLib].idx, iCurrent[iLib].idx_suggest, EnableCollationLevel, servercollatefunc);
-+ }
-+ if (iCurrent[iLib].idx==INVALID_INDEX)
-+ continue;
-+ if (iCurrent[iLib].idx>=narticles(iRealLib) || iCurrent[iLib].idx<0)
-+ continue;
-+ if (poCurrentWord == NULL ) {
-+ poCurrentWord = poGetWord(iCurrent[iLib].idx, iRealLib, servercollatefunc);
-+ iCurrentLib = iLib;
-+ iCurrentRealLib = iRealLib;
-+ isLib=true;
-+ } else {
-+ gint x;
-+ word = poGetWord(iCurrent[iLib].idx, iRealLib, servercollatefunc);
-+ x = stardict_server_collate(poCurrentWord, word, EnableCollationLevel, CollateFunction, servercollatefunc);
-+ if (x > 0) {
-+ poCurrentWord = word;
-+ iCurrentLib = iLib;
-+ iCurrentRealLib = iRealLib;
-+ isLib=true;
-+ }
-+ }
-+ }
-+ for (iLib=0; iLib < dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (sWord) {
-+ oLib[iRealLib]->LookupSynonym(sWord, iCurrent[iLib].synidx, iCurrent[iLib].synidx_suggest, EnableCollationLevel, servercollatefunc);
-+ }
-+ if (iCurrent[iLib].synidx==UNSET_INDEX)
-+ continue;
-+ if (iCurrent[iLib].synidx==INVALID_INDEX)
-+ continue;
-+ if (iCurrent[iLib].synidx>=nsynarticles(iRealLib) || iCurrent[iLib].synidx<0)
-+ continue;
-+ if (poCurrentWord == NULL ) {
-+ poCurrentWord = poGetSynonymWord(iCurrent[iLib].synidx, iRealLib, servercollatefunc);
-+ iCurrentLib = iLib;
-+ iCurrentRealLib = iRealLib;
-+ isLib=false;
-+ } else {
-+ gint x;
-+ word = poGetSynonymWord(iCurrent[iLib].synidx, iRealLib, servercollatefunc);
-+ x = stardict_server_collate(poCurrentWord, word, EnableCollationLevel, CollateFunction, servercollatefunc);
-+ if (x > 0 ) {
-+ poCurrentWord = word;
-+ iCurrentLib = iLib;
-+ iCurrentRealLib = iRealLib;
-+ isLib=false;
-+ }
-+ }
-+ }
-+ if (poCurrentWord) {
-+ for (iLib=0; iLib < dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (isLib && (iLib == iCurrentLib))
-+ continue;
-+ if (iCurrent[iLib].idx==INVALID_INDEX)
-+ continue;
-+ if (iCurrent[iLib].idx>=narticles(iRealLib) || iCurrent[iLib].idx<0)
-+ continue;
-+ word = poGetWord(iCurrent[iLib].idx, iRealLib, servercollatefunc);
-+ if (strcmp(poCurrentWord, word) == 0) {
-+ GetWordNext(iCurrent[iLib].idx, iRealLib, true, servercollatefunc);
-+ }
-+ }
-+ for (iLib=0; iLib < dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if ((!isLib) && (iLib == iCurrentLib))
-+ continue;
-+ if (iCurrent[iLib].synidx==UNSET_INDEX)
-+ continue;
-+ if (iCurrent[iLib].synidx==INVALID_INDEX)
-+ continue;
-+ if (iCurrent[iLib].synidx>=nsynarticles(iRealLib) || iCurrent[iLib].synidx<0)
-+ continue;
-+ word = poGetSynonymWord(iCurrent[iLib].synidx, iRealLib, servercollatefunc);
-+ if (strcmp(poCurrentWord, word) == 0) {
-+ GetWordNext(iCurrent[iLib].synidx, iRealLib, false, servercollatefunc);
-+ }
-+ }
-+ //GetWordNext will change poCurrentWord's content, so do it at the last.
-+ if (isLib) {
-+ GetWordNext(iCurrent[iCurrentLib].idx, iCurrentRealLib, true, servercollatefunc);
-+ } else {
-+ GetWordNext(iCurrent[iCurrentLib].synidx, iCurrentRealLib, false, servercollatefunc);
-+ }
-+ poCurrentWord = poGetCurrentWord(iCurrent, dictmask, servercollatefunc);
-+ }
-+ return poCurrentWord;
-+}
-+
-+const gchar *
-+Libs::poGetPreWord(const gchar *sWord, CurrentIndex* iCurrent, std::vector<InstantDictIndex> &dictmask, int servercollatefunc)
-+{
-+ // used by TopWin::PreviousCallback(); the iCurrent is cached by AppCore::TopWinWordChange();
-+ const gchar *poCurrentWord = NULL;
-+ std::vector<Dict *>::size_type iCurrentLib=0, iCurrentRealLib=0;
-+ bool isLib = false;
-+
-+ const gchar *word;
-+ glong pidx;
-+ std::vector<InstantDictIndex>::size_type iLib;
-+ std::vector<Dict *>::size_type iRealLib;
-+ for (iLib=0;iLib<dictmask.size();iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (sWord) {
-+ oLib[iRealLib]->Lookup(sWord, iCurrent[iLib].idx, iCurrent[iLib].idx_suggest, EnableCollationLevel, servercollatefunc);
-+ }
-+ if (iCurrent[iLib].idx!=INVALID_INDEX) {
-+ if ( iCurrent[iLib].idx>=narticles(iRealLib) || iCurrent[iLib].idx<=0)
-+ continue;
-+ }
-+ if ( poCurrentWord == NULL ) {
-+ if (GetWordPrev(iCurrent[iLib].idx, pidx, iRealLib, true, servercollatefunc)) {
-+ poCurrentWord = poGetWord(pidx, iRealLib, servercollatefunc);
-+ iCurrentLib = iLib;
-+ iCurrentRealLib = iRealLib;
-+ isLib=true;
-+ }
-+ } else {
-+ if (GetWordPrev(iCurrent[iLib].idx, pidx, iRealLib, true, servercollatefunc)) {
-+ gint x;
-+ word = poGetWord(pidx, iRealLib, servercollatefunc);
-+ x = stardict_server_collate(poCurrentWord, word, EnableCollationLevel, CollateFunction, servercollatefunc);
-+ if (x < 0 ) {
-+ poCurrentWord = word;
-+ iCurrentLib = iLib;
-+ iCurrentRealLib = iRealLib;
-+ isLib=true;
-+ }
-+ }
-+ }
-+ }
-+ for (iLib=0;iLib<dictmask.size();iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (sWord) {
-+ oLib[iRealLib]->LookupSynonym(sWord, iCurrent[iLib].synidx, iCurrent[iLib].synidx_suggest, EnableCollationLevel, servercollatefunc);
-+ }
-+ if (iCurrent[iLib].synidx==UNSET_INDEX)
-+ continue;
-+ if (iCurrent[iLib].synidx!=INVALID_INDEX) {
-+ if ( iCurrent[iLib].synidx>=nsynarticles(iRealLib) || iCurrent[iLib].synidx<=0)
-+ continue;
-+ }
-+ if ( poCurrentWord == NULL ) {
-+ if (GetWordPrev(iCurrent[iLib].synidx, pidx, iRealLib, false, servercollatefunc)) {
-+ poCurrentWord = poGetSynonymWord(pidx, iRealLib, servercollatefunc);
-+ iCurrentLib = iLib;
-+ iCurrentRealLib = iRealLib;
-+ isLib=false;
-+ }
-+ } else {
-+ if (GetWordPrev(iCurrent[iLib].synidx, pidx, iRealLib, false, servercollatefunc)) {
-+ gint x;
-+ word = poGetSynonymWord(pidx,iRealLib, servercollatefunc);
-+ x = stardict_server_collate(poCurrentWord, word, EnableCollationLevel, CollateFunction, servercollatefunc);
-+ if (x < 0 ) {
-+ poCurrentWord = word;
-+ iCurrentLib = iLib;
-+ iCurrentRealLib = iRealLib;
-+ isLib=false;
-+ }
-+ }
-+ }
-+ }
-+ if (poCurrentWord) {
-+ for (iLib=0;iLib<dictmask.size();iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (isLib && (iLib == iCurrentLib))
-+ continue;
-+ if (iCurrent[iLib].idx!=INVALID_INDEX) {
-+ if (iCurrent[iLib].idx>=narticles(iRealLib) || iCurrent[iLib].idx<=0)
-+ continue;
-+ }
-+ if (GetWordPrev(iCurrent[iLib].idx, pidx, iRealLib, true, servercollatefunc)) {
-+ word = poGetWord(pidx, iRealLib, servercollatefunc);
-+ if (strcmp(poCurrentWord, word) == 0) {
-+ iCurrent[iLib].idx=pidx;
-+ }
-+ }
-+ }
-+ for (iLib=0;iLib<dictmask.size();iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if ((!isLib) && (iLib == iCurrentLib))
-+ continue;
-+ if (iCurrent[iLib].synidx==UNSET_INDEX)
-+ continue;
-+ if (iCurrent[iLib].synidx!=INVALID_INDEX) {
-+ if (iCurrent[iLib].synidx>=nsynarticles(iRealLib) || iCurrent[iLib].synidx<=0)
-+ continue;
-+ }
-+ if (GetWordPrev(iCurrent[iLib].synidx, pidx, iRealLib, false, servercollatefunc)) {
-+ word = poGetSynonymWord(pidx, iRealLib, servercollatefunc);
-+ if (strcmp(poCurrentWord, word) == 0) {
-+ iCurrent[iLib].synidx=pidx;
-+ }
-+ }
-+ }
-+ if (isLib) {
-+ GetWordPrev(iCurrent[iCurrentLib].idx, pidx, iCurrentRealLib, true, servercollatefunc);
-+ iCurrent[iCurrentLib].idx = pidx;
-+ } else {
-+ GetWordPrev(iCurrent[iCurrentLib].synidx, pidx, iCurrentRealLib, false, servercollatefunc);
-+ iCurrent[iCurrentLib].synidx = pidx;
-+ }
-+ }
-+ return poCurrentWord;
-+}
-+
-+bool Libs::LookupSynonymSimilarWord(const gchar* sWord, glong &iSynonymWordIndex, glong &synidx_suggest, size_t iLib, int servercollatefunc)
-+{
-+ if (oLib[iLib]->syn_file.get() == NULL)
-+ return false;
-+
-+ glong iIndex;
-+ glong iIndex_suggest;
-+ bool bFound=false;
-+ gchar *casestr;
-+ bool bLookup;
-+
-+ if (!bFound) {
-+ // to lower case.
-+ casestr = g_utf8_strdown(sWord, -1);
-+ if (strcmp(casestr, sWord)) {
-+ bLookup = oLib[iLib]->LookupSynonym(casestr, iIndex, iIndex_suggest, EnableCollationLevel, servercollatefunc);
-+ if(bLookup)
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ // to upper case.
-+ if (!bFound) {
-+ casestr = g_utf8_strup(sWord, -1);
-+ if (strcmp(casestr, sWord)) {
-+ bLookup = oLib[iLib]->LookupSynonym(casestr, iIndex, iIndex_suggest, EnableCollationLevel, servercollatefunc);
-+ if(bLookup)
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ // Upper the first character and lower others.
-+ if (!bFound) {
-+ gchar *nextchar = g_utf8_next_char(sWord);
-+ gchar *firstchar = g_utf8_strup(sWord, nextchar - sWord);
-+ nextchar = g_utf8_strdown(nextchar, -1);
-+ casestr = g_strdup_printf("%s%s", firstchar, nextchar);
-+ g_free(firstchar);
-+ g_free(nextchar);
-+ if (strcmp(casestr, sWord)) {
-+ bLookup = oLib[iLib]->LookupSynonym(casestr, iIndex, iIndex_suggest, EnableCollationLevel, servercollatefunc);
-+ if(bLookup)
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ if (!bFound) {
-+ iIndex = iSynonymWordIndex;
-+ glong pidx;
-+ const gchar *cword;
-+ do {
-+ if (GetWordPrev(iIndex, pidx, iLib, false, servercollatefunc)) {
-+ cword = poGetSynonymWord(pidx, iLib, servercollatefunc);
-+ if (stardict_casecmp(cword, sWord, EnableCollationLevel, CollateFunction, servercollatefunc)==0) {
-+ iIndex = pidx;
-+ bFound=true;
-+ } else {
-+ break;
-+ }
-+ } else {
-+ break;
-+ }
-+ } while (true);
-+ if (!bFound) {
-+ if (iIndex!=INVALID_INDEX) {
-+ cword = poGetSynonymWord(iIndex, iLib, servercollatefunc);
-+ if (stardict_casecmp(cword, sWord, EnableCollationLevel, CollateFunction, servercollatefunc)==0) {
-+ bFound=true;
-+ }
-+ }
-+ }
-+ }
-+ }
-+ if (bFound) {
-+ iSynonymWordIndex = iIndex;
-+ synidx_suggest = iIndex_suggest;
-+ }
-+ return bFound;
-+}
-+
-+bool Libs::LookupSimilarWord(const gchar* sWord, glong & iWordIndex, glong &idx_suggest, size_t iLib, int servercollatefunc)
-+{
-+ glong iIndex;
-+ bool bFound=false;
-+ gchar *casestr;
-+
-+ if (!bFound) {
-+ // to lower case.
-+ casestr = g_utf8_strdown(sWord, -1);
-+ if (strcmp(casestr, sWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ // to upper case.
-+ if (!bFound) {
-+ casestr = g_utf8_strup(sWord, -1);
-+ if (strcmp(casestr, sWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ // Upper the first character and lower others.
-+ if (!bFound) {
-+ gchar *nextchar = g_utf8_next_char(sWord);
-+ gchar *firstchar = g_utf8_strup(sWord, nextchar - sWord);
-+ nextchar = g_utf8_strdown(nextchar, -1);
-+ casestr = g_strdup_printf("%s%s", firstchar, nextchar);
-+ g_free(firstchar);
-+ g_free(nextchar);
-+ if (strcmp(casestr, sWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ if (!bFound) {
-+ iIndex = iWordIndex;
-+ glong pidx;
-+ const gchar *cword;
-+ do {
-+ if (GetWordPrev(iIndex, pidx, iLib, true, servercollatefunc)) {
-+ cword = poGetWord(pidx, iLib, servercollatefunc);
-+ if (stardict_casecmp(cword, sWord, EnableCollationLevel, CollateFunction, servercollatefunc)==0) {
-+ iIndex = pidx;
-+ bFound=true;
-+ } else {
-+ break;
-+ }
-+ } else {
-+ break;
-+ }
-+ } while (true);
-+ if (!bFound) {
-+ if (iIndex!=INVALID_INDEX) {
-+ cword = poGetWord(iIndex, iLib, servercollatefunc);
-+ if (stardict_casecmp(cword, sWord, EnableCollationLevel, CollateFunction, servercollatefunc)==0) {
-+ bFound=true;
-+ }
-+ }
-+ }
-+ }
-+ }
-+
-+ if (bIsPureEnglish(sWord)) {
-+ // If not Found , try other status of sWord.
-+ size_t iWordLen=strlen(sWord);
-+ bool isupcase;
-+
-+ gchar *sNewWord = (gchar *)g_malloc(iWordLen + 1);
-+
-+ //cut one char "s" or "d"
-+ if(!bFound && iWordLen>1) {
-+ isupcase = sWord[iWordLen-1]=='S' || !strncmp(&sWord[iWordLen-2],"ED",2);
-+ if (isupcase || sWord[iWordLen-1]=='s' || !strncmp(&sWord[iWordLen-2],"ed",2)) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-1]='\0'; // cut "s" or "d"
-+ if (oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+
-+ //cut "ly"
-+ if(!bFound && iWordLen>2) {
-+ isupcase = !strncmp(&sWord[iWordLen-2],"LY",2);
-+ if (isupcase || (!strncmp(&sWord[iWordLen-2],"ly",2))) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-2]='\0'; // cut "ly"
-+ if (iWordLen>5 && sNewWord[iWordLen-3]==sNewWord[iWordLen-4]
-+ && !bIsVowel(sNewWord[iWordLen-4]) &&
-+ bIsVowel(sNewWord[iWordLen-5])) {//doubled
-+
-+ sNewWord[iWordLen-3]='\0';
-+ if(oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else {
-+ if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ if (!bFound)
-+ sNewWord[iWordLen-3]=sNewWord[iWordLen-4]; //restore
-+ }
-+ }
-+ if (!bFound) {
-+ if (oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+ }
-+
-+ //cut "ing"
-+ if(!bFound && iWordLen>3) {
-+ isupcase = !strncmp(&sWord[iWordLen-3],"ING",3);
-+ if (isupcase || !strncmp(&sWord[iWordLen-3],"ing",3) ) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-3]='\0';
-+ if ( iWordLen>6 && (sNewWord[iWordLen-4]==sNewWord[iWordLen-5])
-+ && !bIsVowel(sNewWord[iWordLen-5]) &&
-+ bIsVowel(sNewWord[iWordLen-6])) { //doubled
-+ sNewWord[iWordLen-4]='\0';
-+ if (oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else {
-+ if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ if (!bFound)
-+ sNewWord[iWordLen-4]=sNewWord[iWordLen-5]; //restore
-+ }
-+ }
-+ if( !bFound ) {
-+ if (oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ if(!bFound) {
-+ if (isupcase)
-+ strcat(sNewWord,"E"); // add a char "E"
-+ else
-+ strcat(sNewWord,"e"); // add a char "e"
-+ if(oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+ }
-+
-+ //cut two char "es"
-+ if(!bFound && iWordLen>3) {
-+ isupcase = (!strncmp(&sWord[iWordLen-2],"ES",2) &&
-+ (sWord[iWordLen-3] == 'S' ||
-+ sWord[iWordLen-3] == 'X' ||
-+ sWord[iWordLen-3] == 'O' ||
-+ (iWordLen >4 && sWord[iWordLen-3] == 'H' &&
-+ (sWord[iWordLen-4] == 'C' ||
-+ sWord[iWordLen-4] == 'S'))));
-+ if (isupcase ||
-+ (!strncmp(&sWord[iWordLen-2],"es",2) &&
-+ (sWord[iWordLen-3] == 's' || sWord[iWordLen-3] == 'x' ||
-+ sWord[iWordLen-3] == 'o' ||
-+ (iWordLen >4 && sWord[iWordLen-3] == 'h' &&
-+ (sWord[iWordLen-4] == 'c' || sWord[iWordLen-4] == 's'))))) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-2]='\0';
-+ if(oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+
-+ //cut "ed"
-+ if (!bFound && iWordLen>3) {
-+ isupcase = !strncmp(&sWord[iWordLen-2],"ED",2);
-+ if (isupcase || !strncmp(&sWord[iWordLen-2],"ed",2)) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-2]='\0';
-+ if (iWordLen>5 && (sNewWord[iWordLen-3]==sNewWord[iWordLen-4])
-+ && !bIsVowel(sNewWord[iWordLen-4]) &&
-+ bIsVowel(sNewWord[iWordLen-5])) {//doubled
-+ sNewWord[iWordLen-3]='\0';
-+ if (oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else {
-+ if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ if (!bFound)
-+ sNewWord[iWordLen-3]=sNewWord[iWordLen-4]; //restore
-+ }
-+ }
-+ if (!bFound) {
-+ if (oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+ }
-+
-+ // cut "ied" , add "y".
-+ if (!bFound && iWordLen>3) {
-+ isupcase = !strncmp(&sWord[iWordLen-3],"IED",3);
-+ if (isupcase || (!strncmp(&sWord[iWordLen-3],"ied",3))) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-3]='\0';
-+ if (isupcase)
-+ strcat(sNewWord,"Y"); // add a char "Y"
-+ else
-+ strcat(sNewWord,"y"); // add a char "y"
-+ if (oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+
-+ // cut "ies" , add "y".
-+ if (!bFound && iWordLen>3) {
-+ isupcase = !strncmp(&sWord[iWordLen-3],"IES",3);
-+ if (isupcase || (!strncmp(&sWord[iWordLen-3],"ies",3))) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-3]='\0';
-+ if (isupcase)
-+ strcat(sNewWord,"Y"); // add a char "Y"
-+ else
-+ strcat(sNewWord,"y"); // add a char "y"
-+ if(oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+
-+ // cut "er".
-+ if (!bFound && iWordLen>2) {
-+ isupcase = !strncmp(&sWord[iWordLen-2],"ER",2);
-+ if (isupcase || (!strncmp(&sWord[iWordLen-2],"er",2))) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-2]='\0';
-+ if(oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+
-+ // cut "est".
-+ if (!bFound && iWordLen>3) {
-+ isupcase = !strncmp(&sWord[iWordLen-3], "EST", 3);
-+ if (isupcase || (!strncmp(&sWord[iWordLen-3],"est", 3))) {
-+ strcpy(sNewWord,sWord);
-+ sNewWord[iWordLen-3]='\0';
-+ if(oLib[iLib]->Lookup(sNewWord, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ else if (isupcase || g_ascii_isupper(sWord[0])) {
-+ casestr = g_ascii_strdown(sNewWord, -1);
-+ if (strcmp(casestr, sNewWord)) {
-+ if(oLib[iLib]->Lookup(casestr, iIndex, idx_suggest, EnableCollationLevel, servercollatefunc))
-+ bFound=true;
-+ }
-+ g_free(casestr);
-+ }
-+ }
-+ }
-+
-+ g_free(sNewWord);
-+ }
-+
-+ if (bFound)
-+ iWordIndex = iIndex;
-+#if 0
-+ else {
-+ //don't change iWordIndex here.
-+ //when LookupSimilarWord all failed too, we want to use the old LookupWord index to list words.
-+ //iWordIndex = INVALID_INDEX;
-+ }
-+#endif
-+ return bFound;
-+}
-+
-+bool Libs::SimpleLookupWord(const gchar* sWord, glong & iWordIndex, glong &idx_suggest, size_t iLib, int servercollatefunc)
-+{
-+ bool bFound = oLib[iLib]->Lookup(sWord, iWordIndex, idx_suggest, EnableCollationLevel, servercollatefunc);
-+ if (!bFound)
-+ bFound = LookupSimilarWord(sWord, iWordIndex, idx_suggest, iLib, servercollatefunc);
-+ return bFound;
-+}
-+
-+bool Libs::SimpleLookupSynonymWord(const gchar* sWord, glong & iWordIndex, glong &synidx_suggest, size_t iLib, int servercollatefunc)
-+{
-+ bool bFound = oLib[iLib]->LookupSynonym(sWord, iWordIndex, synidx_suggest, EnableCollationLevel, servercollatefunc);
-+ if (!bFound)
-+ bFound = LookupSynonymSimilarWord(sWord, iWordIndex, synidx_suggest, iLib, servercollatefunc);
-+ return bFound;
-+}
-+
-+struct Fuzzystruct {
-+ char * pMatchWord;
-+ int iMatchWordDistance;
-+};
-+
-+static inline bool operator<(const Fuzzystruct & lh, const Fuzzystruct & rh) {
-+ if (lh.iMatchWordDistance!=rh.iMatchWordDistance)
-+ return lh.iMatchWordDistance<rh.iMatchWordDistance;
-+
-+ if (lh.pMatchWord && rh.pMatchWord)
-+ return stardict_strcmp(lh.pMatchWord, rh.pMatchWord)<0;
-+
-+ return false;
-+}
-+
-+static inline void unicode_strdown(gunichar *str)
-+{
-+ while (*str) {
-+ *str=g_unichar_tolower(*str);
-+ ++str;
-+ }
-+}
-+
-+bool Libs::LookupWithFuzzy(const gchar *sWord, gchar *reslist[], gint reslist_size, std::vector<InstantDictIndex> &dictmask)
-+{
-+ if (sWord[0] == '\0')
-+ return false;
-+
-+ std::vector<Fuzzystruct> oFuzzystruct(reslist_size);
-+
-+ for (int i=0; i<reslist_size; i++) {
-+ oFuzzystruct[i].pMatchWord = NULL;
-+ oFuzzystruct[i].iMatchWordDistance = iMaxFuzzyDistance;
-+ }
-+ int iMaxDistance = iMaxFuzzyDistance;
-+ int iDistance;
-+ bool Found = false;
-+ EditDistance oEditDistance;
-+
-+ glong iCheckWordLen;
-+ const char *sCheck;
-+ gunichar *ucs4_str1, *ucs4_str2;
-+ glong ucs4_str2_len;
-+
-+ ucs4_str2 = g_utf8_to_ucs4_fast(sWord, -1, &ucs4_str2_len);
-+ unicode_strdown(ucs4_str2);
-+
-+ std::vector<Dict *>::size_type iRealLib;
-+ for (std::vector<InstantDictIndex>::size_type iLib=0; iLib<dictmask.size(); iLib++) {
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ for (gint synLib=0; synLib<2; synLib++) {
-+ if (synLib==1) {
-+ if (oLib[iRealLib]->syn_file.get()==NULL)
-+ break;
-+ }
-+ show_progress->notify_about_work();
-+
-+ //if (stardict_strcmp(sWord, poGetWord(0,iRealLib))>=0 && stardict_strcmp(sWord, poGetWord(narticles(iRealLib)-1,iRealLib))<=0) {
-+ //there are Chinese dicts and English dicts...
-+ if (TRUE) {
-+ glong iwords;
-+ if (synLib==0)
-+ iwords = narticles(iRealLib);
-+ else
-+ iwords = nsynarticles(iRealLib);
-+ for (glong index=0; index<iwords; index++) {
-+ // Need to deal with same word in index? But this will slow down processing in most case.
-+ if (synLib==0)
-+ sCheck = poGetOrigWord(index,iRealLib);
-+ else
-+ sCheck = poGetOrigSynonymWord(index,iRealLib);
-+ // tolower and skip too long or too short words
-+ iCheckWordLen = g_utf8_strlen(sCheck, -1);
-+ if (iCheckWordLen-ucs4_str2_len>=iMaxDistance ||
-+ ucs4_str2_len-iCheckWordLen>=iMaxDistance)
-+ continue;
-+ ucs4_str1 = g_utf8_to_ucs4_fast(sCheck, -1, NULL);
-+ if (iCheckWordLen > ucs4_str2_len)
-+ ucs4_str1[ucs4_str2_len]=0;
-+ unicode_strdown(ucs4_str1);
-+
-+ iDistance = oEditDistance.CalEditDistance(ucs4_str1, ucs4_str2, iMaxDistance);
-+ g_free(ucs4_str1);
-+ if (iDistance<iMaxDistance && iDistance < ucs4_str2_len) {
-+ // when ucs4_str2_len=1,2 we need less fuzzy.
-+ Found = true;
-+ bool bAlreadyInList = false;
-+ int iMaxDistanceAt=0;
-+ for (int j=0; j<reslist_size; j++) {
-+ if (oFuzzystruct[j].pMatchWord &&
-+ strcmp(oFuzzystruct[j].pMatchWord,sCheck)==0 ) {//already in list
-+ bAlreadyInList = true;
-+ break;
-+ }
-+ //find the position,it will certainly be found (include the first time) as iMaxDistance is set by last time.
-+ if (oFuzzystruct[j].iMatchWordDistance == iMaxDistance ) {
-+ iMaxDistanceAt = j;
-+ }
-+ }
-+ if (!bAlreadyInList) {
-+ if (oFuzzystruct[iMaxDistanceAt].pMatchWord)
-+ g_free(oFuzzystruct[iMaxDistanceAt].pMatchWord);
-+ oFuzzystruct[iMaxDistanceAt].pMatchWord = g_strdup(sCheck);
-+ oFuzzystruct[iMaxDistanceAt].iMatchWordDistance = iDistance;
-+ // calc new iMaxDistance
-+ iMaxDistance = iDistance;
-+ for (int j=0; j<reslist_size; j++) {
-+ if (oFuzzystruct[j].iMatchWordDistance > iMaxDistance)
-+ iMaxDistance = oFuzzystruct[j].iMatchWordDistance;
-+ } // calc new iMaxDistance
-+ } // add to list
-+ } // find one
-+ } // each word
-+ } // ok for search
-+ } // synLib
-+ } // each lib
-+ g_free(ucs4_str2);
-+
-+ if (Found)// sort with distance
-+ std::sort(oFuzzystruct.begin(), oFuzzystruct.end());
-+
-+ for (gint i=0; i<reslist_size; ++i)
-+ reslist[i]=oFuzzystruct[i].pMatchWord;
-+
-+ return Found;
-+}
-+
-+static inline bool less_for_compare(const char *lh, const char *rh) {
-+ return stardict_strcmp(lh, rh)<0;
-+}
-+
-+gint Libs::LookupWithRule(const gchar *word, gchar **ppMatchWord, std::vector<InstantDictIndex> &dictmask)
-+{
-+ glong aiIndex[MAX_MATCH_ITEM_PER_LIB+1];
-+ gint iMatchCount = 0;
-+ GPatternSpec *pspec = g_pattern_spec_new(word);
-+
-+ const gchar * sMatchWord;
-+ bool bAlreadyInList;
-+ std::vector<Dict *>::size_type iRealLib;
-+ for (std::vector<InstantDictIndex>::size_type iLib=0; iLib<dictmask.size(); iLib++) {
-+ //if(oLibs.LookdupWordsWithRule(pspec,aiIndex,MAX_MATCH_ITEM_PER_LIB+1-iMatchCount,iLib))
-+ // -iMatchCount,so save time,but may got less result and the word may repeat.
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (oLib[iRealLib]->LookupWithRule(pspec, aiIndex, MAX_MATCH_ITEM_PER_LIB+1)) {
-+ show_progress->notify_about_work();
-+ for (int i=0; aiIndex[i]!=-1; i++) {
-+ sMatchWord = poGetOrigWord(aiIndex[i],iRealLib);
-+ bAlreadyInList = false;
-+ for (int j=0; j<iMatchCount; j++) {
-+ if (strcmp(ppMatchWord[j],sMatchWord)==0) {//already in list
-+ bAlreadyInList = true;
-+ break;
-+ }
-+ }
-+ if (!bAlreadyInList)
-+ ppMatchWord[iMatchCount++] = g_strdup(sMatchWord);
-+ }
-+ }
-+ if (oLib[iRealLib]->LookupWithRuleSynonym(pspec, aiIndex, MAX_MATCH_ITEM_PER_LIB+1)) {
-+ show_progress->notify_about_work();
-+ for (int i=0; aiIndex[i]!=-1; i++) {
-+ sMatchWord = poGetOrigSynonymWord(aiIndex[i],iRealLib);
-+ bAlreadyInList = false;
-+ for (int j=0; j<iMatchCount; j++) {
-+ if (strcmp(ppMatchWord[j],sMatchWord)==0) {//already in list
-+ bAlreadyInList = true;
-+ break;
-+ }
-+ }
-+ if (!bAlreadyInList)
-+ ppMatchWord[iMatchCount++] = g_strdup(sMatchWord);
-+ }
-+ }
-+ }
-+ g_pattern_spec_free(pspec);
-+
-+ if (iMatchCount)// sort it.
-+ std::sort(ppMatchWord, ppMatchWord+iMatchCount, less_for_compare);
-+ return iMatchCount;
-+}
-+
-+gint Libs::LookupWithRegex(const gchar *word, gchar **ppMatchWord, std::vector<InstantDictIndex> &dictmask)
-+{
-+ glong aiIndex[MAX_MATCH_ITEM_PER_LIB+1];
-+ gint iMatchCount = 0;
-+ GRegex *regex = g_regex_new(word, G_REGEX_OPTIMIZE, (GRegexMatchFlags)0, NULL);
-+
-+ const gchar * sMatchWord;
-+ bool bAlreadyInList;
-+ std::vector<Dict *>::size_type iRealLib;
-+ for (std::vector<InstantDictIndex>::size_type iLib=0; iLib<dictmask.size(); iLib++) {
-+ //if(oLibs.LookdupWordsWithRule(pspec,aiIndex,MAX_MATCH_ITEM_PER_LIB+1-iMatchCount,iLib))
-+ // -iMatchCount,so save time,but may got less result and the word may repeat.
-+ if (dictmask[iLib].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[iLib].index;
-+ if (oLib[iRealLib]->LookupWithRegex(regex, aiIndex, MAX_MATCH_ITEM_PER_LIB+1)) {
-+ show_progress->notify_about_work();
-+ for (int i=0; aiIndex[i]!=-1; i++) {
-+ sMatchWord = poGetOrigWord(aiIndex[i],iRealLib);
-+ bAlreadyInList = false;
-+ for (int j=0; j<iMatchCount; j++) {
-+ if (strcmp(ppMatchWord[j],sMatchWord)==0) {//already in list
-+ bAlreadyInList = true;
-+ break;
-+ }
-+ }
-+ if (!bAlreadyInList)
-+ ppMatchWord[iMatchCount++] = g_strdup(sMatchWord);
-+ }
-+ }
-+ if (oLib[iRealLib]->LookupWithRegexSynonym(regex, aiIndex, MAX_MATCH_ITEM_PER_LIB+1)) {
-+ show_progress->notify_about_work();
-+ for (int i=0; aiIndex[i]!=-1; i++) {
-+ sMatchWord = poGetOrigSynonymWord(aiIndex[i],iRealLib);
-+ bAlreadyInList = false;
-+ for (int j=0; j<iMatchCount; j++) {
-+ if (strcmp(ppMatchWord[j],sMatchWord)==0) {//already in list
-+ bAlreadyInList = true;
-+ break;
-+ }
-+ }
-+ if (!bAlreadyInList)
-+ ppMatchWord[iMatchCount++] = g_strdup(sMatchWord);
-+ }
-+ }
-+ }
-+ g_regex_unref(regex);
-+
-+ if (iMatchCount)// sort it.
-+ std::sort(ppMatchWord, ppMatchWord+iMatchCount, less_for_compare);
-+ return iMatchCount;
-+}
-+
-+bool Libs::LookupData(const gchar *sWord, std::vector<gchar *> *reslist, updateSearchDialog_func search_func, gpointer search_data, bool *cancel, std::vector<InstantDictIndex> &dictmask)
-+{
-+ std::vector<std::string> SearchWords;
-+ std::string SearchWord;
-+ const char *p=sWord;
-+ while (*p) {
-+ if (*p=='\\') {
-+ p++;
-+ switch (*p) {
-+ case ' ':
-+ SearchWord+=' ';
-+ break;
-+ case '\\':
-+ SearchWord+='\\';
-+ break;
-+ case 't':
-+ SearchWord+='\t';
-+ break;
-+ case 'n':
-+ SearchWord+='\n';
-+ break;
-+ default:
-+ SearchWord+=*p;
-+ }
-+ } else if (*p == ' ') {
-+ if (!SearchWord.empty()) {
-+ SearchWords.push_back(SearchWord);
-+ SearchWord.clear();
-+ }
-+ } else {
-+ SearchWord+=*p;
-+ }
-+ p++;
-+ }
-+ if (!SearchWord.empty()) {
-+ SearchWords.push_back(SearchWord);
-+ SearchWord.clear();
-+ }
-+ if (SearchWords.empty())
-+ return false;
-+
-+ glong search_count=0;
-+ glong total_count=0;
-+ if (search_func) {
-+ for (std::vector<InstantDictIndex>::size_type i=0; i<dictmask.size(); ++i) {
-+ if (dictmask[i].type == InstantDictType_LOCAL)
-+ total_count += narticles(dictmask[i].index);
-+ }
-+ }
-+
-+ guint32 max_size =0;
-+ gchar *origin_data = NULL;
-+ std::vector<InstantDictIndex>::size_type iRealLib;
-+ for (std::vector<InstantDictIndex>::size_type i=0; i<dictmask.size(); ++i) {
-+ if (dictmask[i].type != InstantDictType_LOCAL)
-+ continue;
-+ iRealLib = dictmask[i].index;
-+ if (!oLib[iRealLib]->containSearchData())
-+ continue;
-+ const gulong iwords = narticles(iRealLib);
-+ const gchar *key;
-+ guint32 offset, size;
-+ for (gulong j=0; j<iwords; ++j) {
-+ if (search_func) {
-+ if (*cancel)
-+ goto search_out;
-+ if (search_count % 10000 == 0) {
-+ search_func(search_data, (gdouble)search_count/(gdouble)total_count);
-+ }
-+ search_count++;
-+ }
-+ oLib[iRealLib]->get_key_and_data(j, &key, &offset, &size);
-+ if (size>max_size) {
-+ origin_data = (gchar *)g_realloc(origin_data, size);
-+ max_size = size;
-+ }
-+ if (oLib[iRealLib]->SearchData(SearchWords, offset, size, origin_data)) {
-+ if (reslist[i].empty() || strcmp(reslist[i].back(), key))
-+ reslist[i].push_back(g_strdup(key));
-+ }
-+ }
-+ }
-+search_out:
-+ g_free(origin_data);
-+ KMP_end();
-+
-+ std::vector<InstantDictIndex>::size_type i;
-+ for (i=0; i<dictmask.size(); ++i)
-+ if (!reslist[i].empty())
-+ break;
-+
-+ return i!=dictmask.size();
-+}
-+
-+int Libs::GetStorageType(size_t iLib)
-+{
-+ if (oLib[iLib]->storage == NULL)
-+ return -1;
-+ return oLib[iLib]->storage->is_file_or_db;
-+}
-+
-+const char *Libs::GetStorageFilePath(size_t iLib, const char *key)
-+{
-+ if (oLib[iLib]->storage == NULL)
-+ return NULL;
-+ return oLib[iLib]->storage->get_file_path(key);
-+}
-+
-+const char *Libs::GetStorageFileContent(size_t iLib, const char *key)
-+{
-+ if (oLib[iLib]->storage == NULL)
-+ return NULL;
-+ return oLib[iLib]->storage->get_file_content(key);
-+}
-diff -Nur stardict-3.0.1.orig//src/lib/treedict.cpp stardict-3.0.1/src/lib/treedict.cpp
---- stardict-3.0.1.orig//src/lib/treedict.cpp 2007-09-20 20:09:52.000000000 -0500
-+++ stardict-3.0.1/src/lib/treedict.cpp 2010-05-24 00:53:36.378667536 -0500
-@@ -29,6 +29,7 @@
- #include "getuint32.h"
-
- #include "treedict.hpp"
-+#include <cstring>
-
- GtkTreeStore *TreeDict::model=NULL;
-
-diff -Nur stardict-3.0.1.orig//src/lib/treedict.cpp~ stardict-3.0.1/src/lib/treedict.cpp~
---- stardict-3.0.1.orig//src/lib/treedict.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/lib/treedict.cpp~ 2007-09-20 20:09:52.000000000 -0500
-@@ -0,0 +1,197 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+/*
-+ * Implementation of class to work with GtkTree
-+ * based StarDict's dictionaries
-+ */
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include "file.hpp"
-+#include "getuint32.h"
-+
-+#include "treedict.hpp"
-+
-+GtkTreeStore *TreeDict::model=NULL;
-+
-+TreeDict::TreeDict()
-+{
-+ if (model)
-+ return;
-+
-+ // It is said G_TYPE_UINT will always be 32 bit.
-+ // see http://bugzilla.gnome.org/show_bug.cgi?id=337966
-+ model = gtk_tree_store_new (3, G_TYPE_STRING, G_TYPE_UINT, G_TYPE_UINT); //word, offset, size
-+}
-+
-+bool TreeDict::load(const std::string& ifofilename)
-+{
-+ gulong tdxfilesize;
-+ if (!load_ifofile(ifofilename, &tdxfilesize))
-+ return false;
-+
-+ std::string fullfilename(ifofilename);
-+ fullfilename.replace(fullfilename.length()-sizeof("ifo")+1, sizeof("ifo")-1, "dict.dz");
-+
-+ if (g_file_test(fullfilename.c_str(), G_FILE_TEST_EXISTS)) {
-+ dictdzfile.reset(new dictData);
-+ if (!dictdzfile->open(fullfilename, 0)) {
-+ //g_print("open file %s failed!\n",fullfilename);
-+ return false;
-+ }
-+ } else {
-+ fullfilename.erase(fullfilename.length()-sizeof(".dz")+1, sizeof(".dz")-1);
-+ dictfile = fopen(fullfilename.c_str(),"rb");
-+ if (!dictfile) {
-+ //g_print("open file %s failed!\n",fullfilename);
-+ return false;
-+ }
-+ }
-+
-+ fullfilename=ifofilename;
-+ fullfilename.replace(fullfilename.length()-sizeof("ifo")+1, sizeof("ifo")-1, "tdx.gz");
-+
-+ gchar *buffer= NULL;
-+ if (g_file_test(fullfilename.c_str(), G_FILE_TEST_EXISTS)) {
-+ gzFile in;
-+ in = gzopen(fullfilename.c_str(),"rb");
-+ if (in == NULL) {
-+ //g_print("Open file %s failed!\n",idxfilename);
-+ return false;
-+ }
-+
-+ buffer = (gchar *)g_malloc(tdxfilesize);
-+
-+ gulong len;
-+ len = gzread(in, buffer, tdxfilesize);
-+ if (len < 0) {
-+ g_free(buffer);
-+ return false;
-+ }
-+ gzclose(in);
-+ if (len != tdxfilesize) {
-+ g_free(buffer);
-+ return false;
-+ }
-+ } else {
-+ fullfilename.erase(fullfilename.length()-sizeof(".gz")+1, sizeof(".gz")-1);
-+ FILE *file;
-+ if (!(file = fopen (fullfilename.c_str(), "rb"))) {
-+ //g_print("Open file %s failed!\n",fullfilename);
-+ return false;
-+ }
-+ buffer = (gchar *)g_malloc(tdxfilesize);
-+ gulong read_len;
-+ read_len = fread(buffer, 1, tdxfilesize, file);
-+ fclose(file);
-+ if (read_len!=tdxfilesize) {
-+ g_free(buffer);
-+ return false;
-+ }
-+ }
-+
-+ gchar *tmp_buffer = buffer;
-+ load_model(&tmp_buffer, NULL, 1); // tmp_buffer will be changed.
-+ g_free(buffer);
-+ return true;
-+}
-+
-+bool TreeDict::load_ifofile(const std::string& ifofilename, gulong *tdxfilesize)
-+{
-+ DictInfo dict_info;
-+ if (!dict_info.load_from_ifo_file(ifofilename, true))
-+ return false;
-+
-+ *tdxfilesize = dict_info.index_file_size;
-+ sametypesequence=dict_info.sametypesequence;
-+
-+ return true;
-+}
-+
-+void TreeDict::load_model(gchar **buffer, GtkTreeIter *parent, guint32 count)
-+{
-+ GtkTreeIter iter;
-+ gchar *p1;
-+ guint32 offset, size, subentry_count;
-+
-+ for (guint32 i=0; i< count; i++) {
-+ p1 = *buffer + strlen(*buffer) +1;
-+ offset = g_ntohl(get_uint32(p1));
-+ p1 += sizeof(guint32);
-+ size = g_ntohl(get_uint32(p1));
-+ p1 += sizeof(guint32);
-+ subentry_count = g_ntohl(get_uint32(p1));
-+ p1 += sizeof(guint32);
-+ gtk_tree_store_append(model, &iter, parent);
-+ gtk_tree_store_set(model, &iter, 0, *buffer, 1, offset, 2, size, -1);
-+ *buffer = p1;
-+ if (subentry_count)
-+ load_model(buffer, &iter, subentry_count);
-+ }
-+}
-+
-+
-+/**************************************************/
-+TreeDicts::TreeDicts()
-+{
-+}
-+
-+TreeDicts::~TreeDicts()
-+{
-+ for (std::vector<TreeDict *>::iterator it=oTreeDict.begin();
-+ it!=oTreeDict.end(); ++it)
-+ delete *it;
-+}
-+
-+void TreeDicts::load_dict(const std::string& url)
-+{
-+ TreeDict *lib = new TreeDict;
-+ if (lib->load(url))
-+ oTreeDict.push_back(lib);
-+ else
-+ delete lib;
-+}
-+
-+class TreeDictLoader {
-+public:
-+ TreeDictLoader(TreeDicts& td_) : td(td_) {}
-+ void operator()(const std::string& url, bool disable) {
-+ if (!disable)
-+ td.load_dict(url);
-+ }
-+private:
-+ TreeDicts& td;
-+};
-+
-+GtkTreeStore* TreeDicts::Load(const strlist_t& tree_dicts_dirs,
-+ const strlist_t& order_list,
-+ const strlist_t& disable_list)
-+{
-+ TreeDictLoader load(*this);
-+ for_each_file(tree_dicts_dirs, ".ifo", order_list, disable_list, load);
-+
-+ return TreeDict::get_model();
-+}
-+
-+gchar* TreeDicts::poGetWordData(guint32 offset, guint32 size, int iTreeDict)
-+{
-+ return oTreeDict[iTreeDict]->GetWordData(offset, size);
-+}
-diff -Nur stardict-3.0.1.orig//src/pangoview.cpp stardict-3.0.1/src/pangoview.cpp
---- stardict-3.0.1.orig//src/pangoview.cpp 2007-09-25 02:11:48.000000000 -0500
-+++ stardict-3.0.1/src/pangoview.cpp 2010-05-24 00:53:36.378667536 -0500
-@@ -22,6 +22,8 @@
- # include "config.h"
- #endif
-
-+#include <cstring>
-+
- #include "gtktextviewpango.h"
- #include "utils.h"
- #include "skin.h"//for SkinCursor definition
-diff -Nur stardict-3.0.1.orig//src/pangoview.cpp~ stardict-3.0.1/src/pangoview.cpp~
---- stardict-3.0.1.orig//src/pangoview.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/pangoview.cpp~ 2007-09-25 02:11:48.000000000 -0500
-@@ -0,0 +1,499 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ * Copyright (C) 2005-2006 Evgeniy <dushistov@mail.ru>
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include "gtktextviewpango.h"
-+#include "utils.h"
-+#include "skin.h"//for SkinCursor definition
-+
-+#include "pangoview.h"
-+
-+class TextPangoWidget : public PangoWidgetBase {
-+public:
-+ TextPangoWidget();
-+ GtkWidget *widget() { return GTK_WIDGET(textview_); }
-+
-+ void clear();
-+ void append_mark(const char *mark);
-+ void append_pixbuf(GdkPixbuf *pixbuf, const char *label);
-+ void append_widget(GtkWidget *widget);
-+ void begin_update();
-+ void end_update();
-+ std::string get_text();
-+ void append_pango_text_with_links(const std::string&,
-+ const LinksPosList&);
-+protected:
-+ void do_set_text(const char *str);
-+ void do_append_text(const char *str);
-+ void do_append_pango_text(const char *str);
-+ void do_set_pango_text(const char *str);
-+private:
-+ GtkTextView *textview_;
-+ std::list<GtkTextMark *> marklist_;
-+ struct TextBufPos {
-+ gint beg_;
-+ gint end_;
-+ std::string link_;
-+ TextBufPos(gint beg, gint end, std::string link): beg_(beg), end_(end), link_(link) {}
-+ };
-+ typedef std::vector<TextBufPos> TextBufLinks;
-+
-+ TextBufLinks tb_links_;
-+ GtkTextIter iter_;
-+ SkinCursor hand_cursor_, regular_cursor_;
-+
-+ static gboolean on_mouse_move(GtkWidget *, GdkEventMotion *, gpointer);
-+ static gboolean on_button_release(GtkWidget *, GdkEventButton *, gpointer);
-+
-+ void goto_begin();
-+ void goto_end();
-+ TextBufLinks::const_iterator find_link(gint x, gint y);
-+};
-+
-+class LabelPangoWidget : public PangoWidgetBase {
-+public:
-+ LabelPangoWidget();
-+ GtkWidget *widget() { return GTK_WIDGET(label_); }
-+
-+ void clear();
-+ void append_mark(const char *mark) {}
-+ void append_pixbuf(GdkPixbuf *pixbuf, const char *label);
-+ void append_widget(GtkWidget *widget);
-+ std::string get_text();
-+ void modify_bg(GtkStateType state, const GdkColor *color);
-+protected:
-+ void do_set_text(const char *str);
-+ void do_append_text(const char *str);
-+ void do_append_pango_text(const char *str);
-+ void do_set_pango_text(const char *str);
-+private:
-+ GtkLabel *label_;
-+ GtkWidget *viewport_;
-+};
-+
-+
-+void PangoWidgetBase::begin_update()
-+{
-+ update_ = true;
-+}
-+
-+void PangoWidgetBase::end_update()
-+{
-+ if (update_) {
-+ update_ = false;
-+ do_append_pango_text(cache_.c_str());
-+ cache_.clear();
-+ }
-+}
-+
-+void PangoWidgetBase::append_text(const char *str)
-+{
-+ if (update_) {
-+ gchar *mark = g_markup_escape_text(str, -1);
-+ cache_ += mark;
-+ g_free(mark);
-+ } else {
-+ do_append_text(str);
-+ }
-+}
-+
-+void PangoWidgetBase::append_pango_text(const char *str)
-+{
-+ if (update_)
-+ cache_ += str;
-+ else
-+ do_append_pango_text(str);
-+}
-+
-+void PangoWidgetBase::append_pango_text_with_links(const std::string& str,
-+ const LinksPosList&)
-+{
-+ append_pango_text(str.c_str());
-+}
-+
-+void PangoWidgetBase::set_pango_text(const char *str)
-+{
-+ if (update_)
-+ cache_ = str;
-+ else
-+ do_set_pango_text(str);
-+}
-+
-+
-+void TextPangoWidget::begin_update()
-+{
-+ PangoWidgetBase::begin_update();
-+ gtk_text_buffer_begin_user_action(
-+ gtk_text_view_get_buffer(textview_));
-+}
-+
-+
-+void TextPangoWidget::end_update()
-+{
-+ PangoWidgetBase::end_update();
-+ gtk_text_buffer_end_user_action(gtk_text_view_get_buffer(textview_));
-+}
-+
-+
-+TextPangoWidget::TextPangoWidget()
-+{
-+ hand_cursor_.reset(gdk_cursor_new(GDK_HAND2));
-+ regular_cursor_.reset(gdk_cursor_new(GDK_XTERM));
-+ textview_ = GTK_TEXT_VIEW(gtk_text_view_new());
-+ gtk_widget_show(GTK_WIDGET(textview_));
-+ gtk_text_view_set_editable(textview_, FALSE);
-+ gtk_text_view_set_cursor_visible(textview_, FALSE);
-+ gtk_text_view_set_wrap_mode(textview_, GTK_WRAP_WORD_CHAR);
-+ gtk_text_view_set_left_margin(textview_, 5);
-+ gtk_text_view_set_right_margin(textview_, 5);
-+
-+ g_signal_connect(textview_, "button-release-event",
-+ G_CALLBACK(on_button_release), this);
-+ g_signal_connect(textview_, "motion-notify-event",
-+ G_CALLBACK(on_mouse_move), this);
-+
-+ gtk_text_buffer_get_iter_at_offset(gtk_text_view_get_buffer(textview_),
-+ &iter_, 0);
-+ scroll_win_ = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL));
-+ gtk_widget_show(GTK_WIDGET(scroll_win_));
-+
-+
-+ gtk_scrolled_window_set_policy(scroll_win_,
-+ //altought textview's set_wrap_mode will cause
-+ //this can be GTK_POLICY_NEVER,but...
-+ //there are widgets that may make this broken.
-+ GTK_POLICY_AUTOMATIC,
-+ GTK_POLICY_AUTOMATIC);
-+ gtk_container_add(GTK_CONTAINER(scroll_win_), GTK_WIDGET(textview_));
-+ gtk_scrolled_window_set_shadow_type(scroll_win_, GTK_SHADOW_IN);
-+}
-+
-+void LabelPangoWidget::modify_bg(GtkStateType state, const GdkColor *color)
-+{
-+ gtk_widget_modify_bg(viewport_, state, color);
-+}
-+
-+LabelPangoWidget::LabelPangoWidget()
-+{
-+ label_ = GTK_LABEL(gtk_label_new(NULL));
-+ gtk_label_set_justify(label_, GTK_JUSTIFY_LEFT);
-+ scroll_win_ = GTK_SCROLLED_WINDOW(gtk_scrolled_window_new(NULL, NULL));
-+ gtk_scrolled_window_set_shadow_type(scroll_win_, GTK_SHADOW_NONE);
-+ gtk_scrolled_window_set_policy(scroll_win_, GTK_POLICY_NEVER,
-+ GTK_POLICY_AUTOMATIC);
-+
-+ viewport_ =
-+ gtk_viewport_new(gtk_scrolled_window_get_hadjustment(scroll_win_),
-+ gtk_scrolled_window_get_vadjustment(scroll_win_));
-+ gtk_widget_add_events(viewport_, GDK_BUTTON1_MOTION_MASK);
-+ gtk_widget_add_events(viewport_, GDK_BUTTON_RELEASE_MASK);
-+ gtk_viewport_set_shadow_type(GTK_VIEWPORT(viewport_), GTK_SHADOW_NONE);
-+ gtk_container_add(GTK_CONTAINER(scroll_win_), viewport_);
-+ gtk_container_add(GTK_CONTAINER(viewport_), GTK_WIDGET(label_));
-+}
-+
-+PangoWidgetBase *PangoWidgetBase::create(bool autoresize)
-+{
-+ if (!autoresize)
-+ return new TextPangoWidget;
-+ else
-+ return new LabelPangoWidget;
-+}
-+
-+void TextPangoWidget::do_set_text(const char *text)
-+{
-+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(textview_);
-+
-+ std::list<GtkTextMark *>::const_iterator it;
-+ for (it = marklist_.begin(); it != marklist_.end(); ++it)
-+ gtk_text_buffer_delete_mark(buffer, *it);
-+ marklist_.clear();
-+ tb_links_.clear();
-+
-+ gtk_text_buffer_set_text(buffer, text, -1);
-+}
-+
-+void LabelPangoWidget::do_set_text(const char *text)
-+{
-+ scroll_to(0);
-+ // this should speed up the next two line.
-+ gtk_label_set_markup(label_, "");
-+ // so Popup()'s gtk_widget_size_request(label, &requisition); can
-+ gtk_widget_set_size_request(GTK_WIDGET(label_), -1, -1);
-+ // get its original width.
-+ gtk_label_set_line_wrap(label_, FALSE);
-+ gchar *mstr = g_markup_escape_text(text, -1);
-+ gtk_label_set_text(label_, mstr);
-+ g_free(mstr);
-+}
-+
-+void LabelPangoWidget::append_pixbuf(GdkPixbuf *pixbuf, const char *label)
-+{
-+ if (label) {
-+ gchar *markup = g_markup_printf_escaped("<span foreground=\"red\">[Image:%s]</span>", label);
-+ append_pango_text(markup);
-+ g_free(markup);
-+ } else {
-+ append_pango_text("<span foreground=\"red\">[Image]</span>");
-+ }
-+}
-+
-+void LabelPangoWidget::append_widget(GtkWidget *widget)
-+{
-+ append_pango_text("<span foreground=\"red\">[Widget]</span>");
-+ if (widget) {
-+ gtk_widget_destroy(widget);
-+ }
-+}
-+
-+void PangoWidgetBase::set_text(const char *str)
-+{
-+ if (update_) {
-+ gchar *mark = g_markup_escape_text(str, -1);
-+ cache_ = mark;
-+ g_free(mark);
-+ } else {
-+ do_set_text(str);
-+ }
-+}
-+
-+void TextPangoWidget::do_append_text(const char *str)
-+{
-+ gtk_text_buffer_insert(gtk_text_view_get_buffer(textview_),
-+ &iter_, str, strlen(str));
-+}
-+
-+void LabelPangoWidget::do_append_text(const char *str)
-+{
-+ set_text((std::string(gtk_label_get_text(label_)) + str).c_str());
-+}
-+
-+
-+void TextPangoWidget::do_append_pango_text(const char *str)
-+{
-+
-+ gtk_text_buffer_insert_markup(gtk_text_view_get_buffer(textview_),
-+ &iter_, str);
-+}
-+
-+void TextPangoWidget::do_set_pango_text(const char *str)
-+{
-+ clear();
-+ goto_begin();
-+ do_append_pango_text(str);
-+}
-+
-+void LabelPangoWidget::do_set_pango_text(const char *str)
-+{
-+ scroll_to(0);
-+ // this should speed up the next two line.
-+ gtk_label_set_markup(label_, "");
-+ // so Popup()'s gtk_widget_size_request(label,&requisition); can
-+ gtk_widget_set_size_request(GTK_WIDGET(label_), -1, -1);
-+ // get its original width.
-+ gtk_label_set_line_wrap(label_, FALSE);
-+ gtk_label_set_markup(label_, str);
-+}
-+
-+void LabelPangoWidget::do_append_pango_text(const char *str)
-+{
-+ do_set_pango_text((std::string(gtk_label_get_label(label_)) + str).c_str());
-+}
-+
-+void TextPangoWidget::append_mark(const char *mark)
-+{
-+ GtkTextBuffer *buffer=gtk_text_view_get_buffer(textview_);
-+ if (update_) {
-+ if (!cache_.empty()) {
-+ do_append_pango_text(cache_.c_str());
-+ cache_.clear();
-+ }
-+ }
-+ marklist_.push_back(
-+ gtk_text_buffer_create_mark(buffer, mark, &iter_, TRUE));
-+}
-+
-+void TextPangoWidget::clear()
-+{
-+ GtkTextBuffer *buffer = gtk_text_view_get_buffer(textview_);
-+
-+ std::list<GtkTextMark *>::const_iterator it;
-+ for (it = marklist_.begin(); it != marklist_.end(); ++it)
-+ gtk_text_buffer_delete_mark(buffer, *it);
-+
-+ marklist_.clear();
-+ tb_links_.clear();
-+
-+ GtkTextIter start, end;
-+ gtk_text_buffer_get_bounds(buffer, &start, &end);
-+ gtk_text_buffer_delete(buffer, &start, &end);
-+ scroll_to(0);
-+ cache_.clear();
-+}
-+
-+void LabelPangoWidget::clear()
-+{
-+ do_set_text("");
-+ cache_.clear();
-+}
-+
-+void TextPangoWidget::goto_begin()
-+{
-+ gtk_text_buffer_get_iter_at_offset(
-+ gtk_text_view_get_buffer(textview_), &iter_, 0
-+ );
-+}
-+
-+void TextPangoWidget::goto_end()
-+{
-+ gtk_text_buffer_get_iter_at_offset(gtk_text_view_get_buffer(textview_), &iter_, -1);
-+}
-+
-+std::string TextPangoWidget::get_text()
-+{
-+ std::string res;
-+
-+ GtkTextIter start, end;
-+ GtkTextBuffer *buffer=gtk_text_view_get_buffer(textview_);
-+ gtk_text_buffer_get_bounds(buffer, &start, &end);
-+ gchar *text = gtk_text_buffer_get_text(buffer, &start, &end, FALSE);
-+ res = text;
-+ g_free(text);
-+
-+ return res;
-+}
-+
-+std::string LabelPangoWidget::get_text()
-+{
-+ return gtk_label_get_text(label_);
-+}
-+
-+
-+void TextPangoWidget::append_pango_text_with_links(const std::string& str,
-+ const LinksPosList& links)
-+{
-+ if (links.empty()) {
-+ append_pango_text(str.c_str());
-+ return;
-+ }
-+
-+ do_append_pango_text(cache_.c_str());
-+ cache_.clear();
-+
-+ gint beg = gtk_text_iter_get_offset(&iter_);
-+
-+ for (LinksPosList::const_iterator it = links.begin();
-+ it != links.end(); ++it) {
-+ tb_links_.push_back(TextBufPos(beg + it->pos_, beg + it->pos_ + it->len_, it->link_));
-+ }
-+
-+ gtk_text_buffer_insert_markup(gtk_text_view_get_buffer(textview_),
-+ &iter_, str.c_str());
-+}
-+
-+void TextPangoWidget::append_pixbuf(GdkPixbuf *pixbuf, const char *label)
-+{
-+ do_append_pango_text(cache_.c_str());
-+ cache_.clear();
-+ gtk_text_buffer_insert_pixbuf (gtk_text_view_get_buffer(textview_), &iter_, pixbuf);
-+}
-+
-+void TextPangoWidget::append_widget(GtkWidget *widget)
-+{
-+ do_append_pango_text(cache_.c_str());
-+ cache_.clear();
-+ GtkTextChildAnchor *anchor = gtk_text_buffer_create_child_anchor (gtk_text_view_get_buffer(textview_), &iter_);
-+ gtk_text_view_add_child_at_anchor (textview_, widget, anchor);
-+}
-+
-+TextPangoWidget::TextBufLinks::const_iterator TextPangoWidget::find_link(gint x,
-+ gint y)
-+{
-+ GtkTextIter iter;
-+ gtk_text_view_get_iter_at_location(textview_, &iter, x, y);
-+ gint pos = gtk_text_iter_get_offset(&iter);
-+ TextBufLinks::const_iterator it;
-+ for (it = tb_links_.begin(); it != tb_links_.end(); ++it) {
-+ if (pos < it->beg_)
-+ return tb_links_.end();
-+ if (it->beg_ <= pos && pos < it->end_)
-+ break;
-+ }
-+ return it;
-+}
-+
-+gboolean TextPangoWidget::on_mouse_move(GtkWidget *widget, GdkEventMotion *event,
-+ gpointer userdata)
-+{
-+ TextPangoWidget *tpw = static_cast<TextPangoWidget *>(userdata);
-+ GtkTextWindowType win_type =
-+ gtk_text_view_get_window_type(tpw->textview_, event->window);
-+ gint x, y;
-+ gtk_text_view_window_to_buffer_coords(tpw->textview_, win_type,
-+ gint(event->x), gint(event->y),
-+ &x, &y);
-+
-+ TextBufLinks::const_iterator it = tpw->find_link(x, y);
-+ if (it != tpw->tb_links_.end()) {
-+ gdk_window_set_cursor(
-+ gtk_text_view_get_window(tpw->textview_,
-+ GTK_TEXT_WINDOW_TEXT),
-+ get_impl(tpw->hand_cursor_));
-+ } else {
-+ gdk_window_set_cursor(
-+ gtk_text_view_get_window(tpw->textview_,
-+ GTK_TEXT_WINDOW_TEXT),
-+ get_impl(tpw->regular_cursor_));
-+ }
-+
-+ gdk_window_get_pointer(widget->window, NULL, NULL, NULL);
-+
-+ return FALSE;
-+}
-+
-+
-+
-+gboolean TextPangoWidget::on_button_release(GtkWidget *, GdkEventButton *event,
-+ gpointer userdata)
-+{
-+ if (event->button != 1)
-+ return FALSE;
-+ TextPangoWidget *tpw = static_cast<TextPangoWidget *>(userdata);
-+ GtkTextBuffer *buf = gtk_text_view_get_buffer(tpw->textview_);
-+ /* we shouldn't follow a link if the user has selected something */
-+ GtkTextIter beg, end;
-+ gtk_text_buffer_get_selection_bounds (buf, &beg, &end);
-+ if (gtk_text_iter_get_offset (&beg) != gtk_text_iter_get_offset (&end))
-+ return FALSE;
-+ GtkTextWindowType win_type =
-+ gtk_text_view_get_window_type(tpw->textview_, event->window);
-+ gint x, y;
-+ gtk_text_view_window_to_buffer_coords(tpw->textview_, win_type,
-+ gint(event->x), gint(event->y),
-+ &x, &y);
-+ TextBufLinks::const_iterator it = tpw->find_link(x, y);
-+ if (it != tpw->tb_links_.end()) {
-+ tpw->on_link_click_.emit(it->link_);
-+ }
-+ return FALSE;
-+}
-diff -Nur stardict-3.0.1.orig//src/prefsdlg.cpp stardict-3.0.1/src/prefsdlg.cpp
---- stardict-3.0.1.orig//src/prefsdlg.cpp 2007-10-30 03:14:07.000000000 -0500
-+++ stardict-3.0.1/src/prefsdlg.cpp 2010-05-24 00:53:36.380667202 -0500
-@@ -21,6 +21,8 @@
- # include "config.h"
- #endif
-
-+#include <cstdlib>
-+
- #include <glib/gi18n.h>
- #include <glib/gstdio.h>
-
-diff -Nur stardict-3.0.1.orig//src/prefsdlg.cpp~ stardict-3.0.1/src/prefsdlg.cpp~
---- stardict-3.0.1.orig//src/prefsdlg.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/prefsdlg.cpp~ 2007-10-30 03:14:07.000000000 -0500
-@@ -0,0 +1,1908 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <glib/gi18n.h>
-+#include <glib/gstdio.h>
-+
-+#ifdef _WIN32
-+# include <gdk/gdkwin32.h>
-+#endif
-+
-+#include "stardict.h"
-+#include "conf.h"
-+#include "desktop.hpp"
-+#include "utils.h"
-+#include "iskeyspressed.hpp"
-+#include "lib/md5.h"
-+
-+#include "prefsdlg.h"
-+
-+#ifndef CONFIG_GPE
-+enum {
-+ LOGO = 0,
-+ DICTIONARY_SCAN_SETTINGS,
-+ DICTIONARY_FONT_SETTINGS,
-+ DICTIONARY_CACHE_SETTINGS,
-+ DICTIONARY_EXPORT_SETTINGS,
-+ DICTIONARY_SOUND_SETTINGS,
-+ DICIONARY_ARTICLE_RENDERING,
-+ NETWORK_NETDICT,
-+ MAINWIN_INPUT_SETTINGS,
-+ MAINWIN_OPTIONS_SETTINGS,
-+ MAINWIN_SEARCH_WEBSITE_SETTINGS,
-+ NOTIFICATION_AREA_ICON_OPITIONS_SETTINGS,
-+ FLOATWIN_OPTIONS_SETTINGS,
-+ FLOATWIN_SIZE_SETTINGS,
-+};
-+
-+enum
-+{
-+ CATEGORY_COLUMN = 0,
-+ PAGE_NUM_COLUMN,
-+ NUM_COLUMNS
-+};
-+
-+
-+struct CategoriesTreeItem {
-+ gchar *category;
-+
-+ CategoriesTreeItem *children;
-+
-+ gint notebook_page;
-+};
-+
-+static CategoriesTreeItem dictionary_behavior [] = {
-+ {N_("Scan Selection"), NULL, DICTIONARY_SCAN_SETTINGS},
-+ {N_("Font"), NULL, DICTIONARY_FONT_SETTINGS},
-+ {N_("Cache"), NULL, DICTIONARY_CACHE_SETTINGS},
-+ {N_("Export"), NULL, DICTIONARY_EXPORT_SETTINGS},
-+ {N_("Sound"), NULL, DICTIONARY_SOUND_SETTINGS},
-+ {N_("Article rendering"), NULL, DICIONARY_ARTICLE_RENDERING },
-+ { NULL }
-+};
-+
-+static CategoriesTreeItem network_behavior [] = {
-+ {N_("Net Dict"), NULL, NETWORK_NETDICT},
-+ { NULL }
-+};
-+
-+static CategoriesTreeItem mainwin_behavior [] =
-+{
-+ {N_("Input"), NULL, MAINWIN_INPUT_SETTINGS},
-+ {N_("Options"), NULL, MAINWIN_OPTIONS_SETTINGS},
-+ {N_("Search website"), NULL, MAINWIN_SEARCH_WEBSITE_SETTINGS},
-+
-+ { NULL }
-+};
-+
-+static CategoriesTreeItem NotificationAreaIcon_behavior [] =
-+{
-+ {N_("Options"), NULL, NOTIFICATION_AREA_ICON_OPITIONS_SETTINGS},
-+
-+ { NULL }
-+};
-+
-+static CategoriesTreeItem floatwin_behavior [] =
-+{
-+ {N_("Options"), NULL, FLOATWIN_OPTIONS_SETTINGS},
-+ {N_("Settings"), NULL, FLOATWIN_SIZE_SETTINGS},
-+
-+ { NULL }
-+};
-+
-+static CategoriesTreeItem toplevel [] =
-+{
-+ {N_("Dictionary"), dictionary_behavior, LOGO},
-+
-+ {N_("Network"), network_behavior, LOGO},
-+
-+ {N_("Main window"), mainwin_behavior, LOGO},
-+
-+ {N_("Notification area icon"), NotificationAreaIcon_behavior, LOGO},
-+
-+ {N_("Floating window"), floatwin_behavior, LOGO},
-+
-+ { NULL }
-+};
-+
-+static gint last_selected_page_num = DICTIONARY_SCAN_SETTINGS;
-+#endif
-+
-+void PrefsDlg::response_handler (GtkDialog *dialog, gint res_id, PrefsDlg *oPrefsDlg)
-+{
-+ if (res_id==GTK_RESPONSE_HELP)
-+ show_help("stardict-prefs");
-+}
-+
-+#ifndef CONFIG_GPE
-+GtkTreeModel* PrefsDlg::create_categories_tree_model ()
-+{
-+ GtkTreeStore *model;
-+ GtkTreeIter iter;
-+ CategoriesTreeItem *category = toplevel;
-+
-+ model = gtk_tree_store_new (NUM_COLUMNS, G_TYPE_STRING, G_TYPE_INT);
-+
-+ while (category->category) {
-+ CategoriesTreeItem *sub_category = category->children;
-+ gtk_tree_store_append (model, &iter, NULL);
-+ gtk_tree_store_set (model, &iter, CATEGORY_COLUMN, gettext (category->category), PAGE_NUM_COLUMN, category->notebook_page, -1);
-+
-+ while (sub_category->category) {
-+ GtkTreeIter child_iter;
-+ gtk_tree_store_append (model, &child_iter, &iter);
-+ gtk_tree_store_set (model, &child_iter,
-+ CATEGORY_COLUMN, gettext (sub_category->category),
-+ PAGE_NUM_COLUMN, sub_category->notebook_page,
-+ -1);
-+ sub_category++;
-+ }
-+ category++;
-+ }
-+ return GTK_TREE_MODEL (model);
-+}
-+
-+void PrefsDlg::categories_tree_selection_cb (GtkTreeSelection *selection, PrefsDlg *oPrefsDlg)
-+{
-+ GtkTreeIter iter;
-+ GValue value = {0, };
-+
-+ if (! gtk_tree_selection_get_selected (selection, NULL, &iter))
-+ return;
-+
-+ gtk_tree_model_get_value (oPrefsDlg->categories_tree_model, &iter,
-+ PAGE_NUM_COLUMN,
-+ &value);
-+
-+ last_selected_page_num = g_value_get_int (&value);
-+
-+ if (oPrefsDlg->notebook != NULL)
-+ gtk_notebook_set_current_page (GTK_NOTEBOOK (oPrefsDlg->notebook),
-+ last_selected_page_num);
-+ g_value_unset (&value);
-+}
-+
-+gboolean PrefsDlg::selection_init (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, PrefsDlg *oPrefsDlg)
-+{
-+ GValue value = {0, };
-+ gint page_num;
-+
-+ gtk_tree_model_get_value (oPrefsDlg->categories_tree_model, iter,
-+ PAGE_NUM_COLUMN,
-+ &value);
-+
-+ page_num = g_value_get_int (&value);
-+
-+ g_value_unset (&value);
-+
-+ if (page_num == last_selected_page_num)
-+ {
-+ GtkTreeSelection *selection;
-+
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (oPrefsDlg->categories_tree));
-+
-+ gtk_tree_selection_select_iter (selection, iter);
-+
-+ gtk_notebook_set_current_page (GTK_NOTEBOOK (oPrefsDlg->notebook), page_num);
-+
-+ return TRUE;
-+ }
-+ return FALSE;
-+}
-+
-+void PrefsDlg::categories_tree_realize (GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ gtk_tree_view_expand_all(GTK_TREE_VIEW(widget));
-+
-+ gtk_tree_model_foreach(oPrefsDlg->categories_tree_model,
-+ GtkTreeModelForeachFunc(selection_init),
-+ oPrefsDlg);
-+}
-+
-+void PrefsDlg::create_categories_tree(void)
-+{
-+ GtkWidget *sw;
-+ GtkTreeModel *model;
-+ GtkWidget *treeview;
-+ GtkCellRenderer *renderer;
-+ GtkTreeSelection *selection;
-+ GtkTreeViewColumn *column;
-+ gint col_offset;
-+
-+ sw = gtk_scrolled_window_new (NULL, NULL);
-+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
-+ GTK_SHADOW_ETCHED_IN);
-+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
-+ GTK_POLICY_AUTOMATIC,
-+ GTK_POLICY_AUTOMATIC);
-+
-+ gtk_widget_set_size_request (sw, 140, 240);
-+
-+ model = create_categories_tree_model ();
-+
-+ treeview = gtk_tree_view_new_with_model (model);
-+ g_object_unref (G_OBJECT (model));
-+ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
-+
-+ categories_tree = treeview;
-+ categories_tree_model = model;
-+
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
-+
-+ gtk_tree_selection_set_mode (selection,
-+ GTK_SELECTION_SINGLE);
-+
-+ /* add column for category */
-+ renderer = gtk_cell_renderer_text_new ();
-+ g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL);
-+
-+ col_offset = gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (treeview),
-+ -1, _("Categories"),
-+ renderer, "text",
-+ CATEGORY_COLUMN,
-+ NULL);
-+
-+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (treeview), col_offset - 1);
-+ gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), FALSE);
-+
-+ g_signal_connect (selection, "changed",
-+ G_CALLBACK (categories_tree_selection_cb),
-+ this);
-+
-+ gtk_container_add (GTK_CONTAINER (sw), treeview);
-+
-+ g_signal_connect (G_OBJECT (treeview), "realize",
-+ G_CALLBACK (categories_tree_realize),
-+ this);
-+
-+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (treeview), FALSE);
-+
-+ categories_window=sw;
-+}
-+
-+void PrefsDlg::setup_logo_page()
-+{
-+ GtkWidget *image = gtk_image_new_from_pixbuf(stardict_logo);
-+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook),image,NULL);
-+}
-+#endif
-+
-+static GtkWidget *prepare_page(GtkNotebook *notebook, const gchar *caption,
-+ const gchar *stock_id)
-+{
-+ GtkWidget *vbox = gtk_vbox_new(FALSE, 12);
-+#ifdef CONFIG_GPE
-+ gtk_container_set_border_width(GTK_CONTAINER (vbox), 5);
-+ GtkWidget *nb_label = gtk_label_new(caption);
-+ gtk_notebook_append_page(notebook, vbox, nb_label);
-+#else
-+ gtk_notebook_append_page(notebook, vbox, NULL);
-+#endif
-+
-+ GtkWidget *vbox1 = gtk_vbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox), vbox1, FALSE, FALSE, 6);
-+ GtkWidget *hbox = gtk_hbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox1), hbox, FALSE, FALSE, 0);
-+ GtkWidget *image =
-+ gtk_image_new_from_stock(stock_id,
-+ GTK_ICON_SIZE_LARGE_TOOLBAR);
-+ gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
-+ GtkWidget *label = gtk_label_new(NULL);
-+ glib::CharStr label_caption(
-+ g_markup_printf_escaped("<span weight=\"bold\" size=\"x-large\">%s</span>", caption));
-+ gtk_label_set_markup(GTK_LABEL(label), get_impl(label_caption));
-+ gtk_box_pack_start(GTK_BOX(hbox),label, FALSE, FALSE, 0);
-+ GtkWidget *hseparator = gtk_hseparator_new();
-+ gtk_box_pack_start(GTK_BOX(vbox1),hseparator,FALSE,FALSE,0);
-+
-+ return vbox;
-+}
-+
-+void PrefsDlg::on_setup_dictionary_scan_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean b = gtk_toggle_button_get_active(button);
-+ gtk_widget_set_sensitive(oPrefsDlg->scan_modifier_key_vbox,b);
-+ conf->set_bool_at("dictionary/only_scan_while_modifier_key", b);
-+}
-+
-+#ifdef _WIN32
-+void PrefsDlg::on_setup_dictionary_scan_clipboard_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean b = gtk_toggle_button_get_active(button);
-+ if (b) {
-+ if (conf->get_bool_at("dictionary/scan_selection"))
-+ gpAppFrame->oClipboard.start();
-+ } else {
-+ if (conf->get_bool_at("dictionary/scan_selection"))
-+ gpAppFrame->oClipboard.stop();
-+ }
-+ conf->set_bool_at("dictionary/scan_clipboard", b);
-+}
-+
-+void PrefsDlg::on_setup_dictionary_use_scan_hotkey_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean b = gtk_toggle_button_get_active(button);
-+ if (b)
-+ gpAppFrame->oHotkey.start_scan();
-+ else
-+ gpAppFrame->oHotkey.stop_scan();
-+ conf->set_bool_at("dictionary/use_scan_hotkey", b);
-+}
-+#endif
-+
-+void PrefsDlg::on_setup_dictionary_scan_combobox_changed(GtkComboBox *combobox, PrefsDlg *oPrefsDlg)
-+{
-+ gint key = gtk_combo_box_get_active(combobox);
-+ conf->set_int_at("dictionary/scan_modifier_key", key);
-+}
-+
-+void PrefsDlg::on_setup_dictionary_scan_hide_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean hide = gtk_toggle_button_get_active(button);
-+ conf->set_bool_at("dictionary/hide_floatwin_when_modifier_key_released", hide);
-+}
-+
-+void PrefsDlg::setup_dictionary_scan_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Scan Selection"), GTK_STOCK_CONVERT);
-+ GtkWidget *vbox1 = gtk_vbox_new(false, 0);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,false,false, 0);
-+ GtkWidget *check_button = gtk_check_button_new_with_mnemonic(_("_Only scan while the modifier key is being pressed."));
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ bool only_scan_while_modifier_key=
-+ conf->get_bool_at("dictionary/only_scan_while_modifier_key");
-+
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button),
-+ only_scan_while_modifier_key);
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_dictionary_scan_ckbutton_toggled), this);
-+
-+ scan_modifier_key_vbox = gtk_vbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox1), scan_modifier_key_vbox,
-+ FALSE, FALSE, 12);
-+ gtk_widget_set_sensitive(scan_modifier_key_vbox,
-+ only_scan_while_modifier_key);
-+
-+ check_button = gtk_check_button_new_with_mnemonic(_("H_ide floating window when modifier key released."));
-+ gtk_box_pack_start(GTK_BOX(scan_modifier_key_vbox),check_button,false,false,0);
-+
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button),
-+ conf->get_bool_at("dictionary/hide_floatwin_when_modifier_key_released"));
-+ g_signal_connect (G_OBJECT (check_button), "toggled", G_CALLBACK (on_setup_dictionary_scan_hide_ckbutton_toggled), this);
-+
-+ GtkWidget *hbox = gtk_hbox_new(false, 12);
-+ gtk_box_pack_start(GTK_BOX(scan_modifier_key_vbox), hbox,false,false,0);
-+ GtkWidget *label=gtk_label_new(NULL);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("Scan modifier _key:"));
-+ gtk_box_pack_start(GTK_BOX(hbox),label,false,false,0);
-+ gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
-+ GtkWidget *combobox = gtk_combo_box_new_text();
-+ gtk_combo_box_set_focus_on_click(GTK_COMBO_BOX(combobox), FALSE);
-+
-+ for (std::list<std::string>::const_iterator p=key_combs.begin();
-+ p!=key_combs.end(); ++p) {
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), p->c_str());
-+ }
-+
-+ int scan_modifier_key=
-+ conf->get_int_at("dictionary/scan_modifier_key");
-+
-+ gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), scan_modifier_key);
-+
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), combobox);
-+ gtk_box_pack_start(GTK_BOX(hbox), combobox, FALSE, FALSE, 0);
-+ g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (on_setup_dictionary_scan_combobox_changed), this);
-+
-+#ifdef _WIN32
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Scan clipboard."));
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), conf->get_bool_at("dictionary/scan_clipboard"));
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_dictionary_scan_clipboard_ckbutton_toggled), this);
-+
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Use scan hotkey: Ctrl+Alt+F1."));
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), conf->get_bool_at("dictionary/use_scan_hotkey"));
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_dictionary_use_scan_hotkey_ckbutton_toggled), this);
-+#endif
-+}
-+
-+void PrefsDlg::change_font_for_all_widgets(const std::string& fontname)
-+{
-+ gchar *aa =
-+ g_strdup_printf("style \"custom-font\" { font_name= \"%s\" }\n"
-+ "class \"GtkWidget\" style \"custom-font\"\n", fontname.c_str());
-+ gtk_rc_parse_string(aa);
-+ g_free(aa);
-+ GdkScreen *screen = gtk_window_get_screen(parent_window);
-+ GtkSettings *settings=gtk_settings_get_for_screen(screen);
-+ gtk_rc_reset_styles(settings);
-+#ifndef CONFIG_GPE
-+ resize_categories_tree();
-+#endif
-+}
-+
-+void PrefsDlg::on_setup_dictionary_font_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean b = gtk_toggle_button_get_active(button);
-+ gtk_widget_set_sensitive(oPrefsDlg->custom_font_hbox, b);
-+ conf->set_bool_at("dictionary/use_custom_font", b);
-+ if (b) {
-+ const std::string &custom_font=
-+ conf->get_string_at("dictionary/custom_font");
-+ oPrefsDlg->change_font_for_all_widgets(custom_font);
-+ } else
-+ oPrefsDlg->change_font_for_all_widgets("");
-+}
-+
-+void PrefsDlg::on_setup_dictionary_font_button_clicked(GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ GtkWidget *dlg = gtk_font_selection_dialog_new(_("Choose dictionary font"));
-+ gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (oPrefsDlg->window));
-+ const gchar *text = gtk_button_get_label(GTK_BUTTON(widget));
-+ if (strcmp(text,_("Choose")))
-+ gtk_font_selection_dialog_set_font_name(GTK_FONT_SELECTION_DIALOG(dlg), text);
-+ gtk_font_selection_dialog_set_preview_text(GTK_FONT_SELECTION_DIALOG(dlg),_("Dictionary font"));
-+ gint result = gtk_dialog_run (GTK_DIALOG (dlg));
-+ if (result==GTK_RESPONSE_OK) {
-+ gchar *font_name =
-+ gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(dlg));
-+ if (font_name) {
-+ gtk_button_set_label(GTK_BUTTON(widget),font_name);
-+ conf->set_string_at("dictionary/custom_font", std::string(font_name));
-+ }
-+ if (font_name && font_name[0]) {
-+ oPrefsDlg->change_font_for_all_widgets(font_name);
-+ }
-+ }
-+ gtk_widget_destroy (dlg);
-+}
-+
-+void PrefsDlg::setup_dictionary_font_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Font"), GTK_STOCK_SELECT_FONT);
-+ GtkWidget *vbox1 = gtk_vbox_new(false,6);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,false,false, 0);
-+ GtkWidget *check_button = gtk_check_button_new_with_mnemonic(_("_Use custom font."));
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ bool use_custom_font=
-+ conf->get_bool_at("dictionary/use_custom_font");
-+
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button),
-+ use_custom_font);
-+ g_signal_connect (G_OBJECT (check_button), "toggled", G_CALLBACK (on_setup_dictionary_font_ckbutton_toggled), this);
-+ custom_font_hbox = gtk_hbox_new(false, 12);
-+ gtk_box_pack_start(GTK_BOX(vbox1),custom_font_hbox,false,false,0);
-+ gtk_widget_set_sensitive(custom_font_hbox, use_custom_font);
-+ GtkWidget *label=gtk_label_new(NULL);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("Dictionary _font:"));
-+ gtk_box_pack_start(GTK_BOX(custom_font_hbox),label,false,false,0);
-+ gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
-+ GtkWidget *button;
-+ const std::string &custom_font=
-+ conf->get_string_at("dictionary/custom_font");
-+
-+ if (!custom_font.empty())
-+ button = gtk_button_new_with_label(custom_font.c_str());
-+ else
-+ button=gtk_button_new_with_label(_("Choose"));
-+
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), button);
-+ gtk_box_pack_start(GTK_BOX(custom_font_hbox),button,false,false,0);
-+ g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_setup_dictionary_font_button_clicked), this);
-+}
-+
-+void PrefsDlg::on_setup_dictionary_cache_CreateCacheFile_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean enable = gtk_toggle_button_get_active(button);
-+ conf->set_bool_at("dictionary/create_cache_file",enable);
-+}
-+
-+void PrefsDlg::on_setup_dictionary_cache_EnableCollation_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean enable = gtk_toggle_button_get_active(button);
-+ gtk_widget_set_sensitive(oPrefsDlg->collation_hbox, enable);
-+ conf->set_bool_at("dictionary/enable_collation",enable);
-+}
-+
-+void PrefsDlg::on_setup_dictionary_collation_combobox_changed(GtkComboBox *combobox, PrefsDlg *oPrefsDlg)
-+{
-+ gint key = gtk_combo_box_get_active(combobox);
-+ conf->set_int_at("dictionary/collate_function", key);
-+}
-+
-+static void clean_dir(const gchar *dirname)
-+{
-+ GDir *dir = g_dir_open(dirname, 0, NULL);
-+ if (dir) {
-+ const gchar *filename;
-+ gchar fullfilename[256];
-+ while ((filename = g_dir_read_name(dir))!=NULL) {
-+ sprintf(fullfilename, "%s" G_DIR_SEPARATOR_S "%s", dirname, filename);
-+ if (g_file_test(fullfilename, G_FILE_TEST_IS_DIR)) {
-+ clean_dir(fullfilename);
-+ } else if (g_str_has_suffix(filename,".oft") || g_str_has_suffix(filename,".clt")) {
-+ g_unlink(fullfilename);
-+ }
-+ }
-+ g_dir_close(dir);
-+ }
-+}
-+
-+void PrefsDlg::on_setup_dictionary_cache_cleanbutton_clicked(GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ std::string dirname = gStarDictDataDir+ G_DIR_SEPARATOR_S "dic";
-+ clean_dir(dirname.c_str());
-+ dirname = g_get_user_cache_dir();
-+ dirname += G_DIR_SEPARATOR_S "stardict";
-+ clean_dir(dirname.c_str());
-+ g_rmdir(dirname.c_str());
-+}
-+
-+void PrefsDlg::setup_dictionary_cache_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Cache"), GTK_STOCK_HARDDISK);
-+ GtkWidget *vbox1 = gtk_vbox_new(false, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,false,false, 0);
-+ GtkWidget *check_button;
-+ check_button = gtk_check_button_new_with_mnemonic(_("Create c_ache files to speed up loading."));
-+ bool enable = conf->get_bool_at("dictionary/create_cache_file");
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), enable);
-+ g_signal_connect (G_OBJECT (check_button), "toggled", G_CALLBACK (on_setup_dictionary_cache_CreateCacheFile_ckbutton_toggled), (gpointer)this);
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Sort word list by collation function."));
-+ enable = conf->get_bool_at("dictionary/enable_collation");
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), enable);
-+ g_signal_connect (G_OBJECT (check_button), "toggled", G_CALLBACK (on_setup_dictionary_cache_EnableCollation_ckbutton_toggled), (gpointer)this);
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ collation_hbox = gtk_hbox_new(false,6);
-+ gtk_box_pack_start(GTK_BOX(vbox1),collation_hbox,false,false,0);
-+ GtkWidget *label=gtk_label_new(NULL);
-+ gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("\tCollation _function:"));
-+ gtk_box_pack_start(GTK_BOX(collation_hbox),label,false,false,0);
-+ GtkWidget *combobox = gtk_combo_box_new_text();
-+ gtk_combo_box_set_focus_on_click(GTK_COMBO_BOX(combobox), FALSE);
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_general_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_unicode_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_bin");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_czech_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_danish_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_esperanto_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_estonian_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_hungarian_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_icelandic_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_latvian_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_lithuanian_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_persian_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_polish_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_roman_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_romanian_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_slovak_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_slovenian_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_spanish_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_spanish2_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_swedish_ci");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), "utf8_turkish_ci");
-+ int collate_function = conf->get_int_at("dictionary/collate_function");
-+ gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), collate_function);
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), combobox);
-+ gtk_box_pack_start(GTK_BOX(collation_hbox), combobox, FALSE, FALSE, 0);
-+ g_signal_connect (G_OBJECT (combobox), "changed", G_CALLBACK (on_setup_dictionary_collation_combobox_changed), this);
-+ gtk_widget_set_sensitive(collation_hbox, enable);
-+
-+ label = gtk_label_new(_("After enabled collation, when load the dictionaries for the first time, it will take some time for sorting, please wait for a moment."));
-+ gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
-+ gtk_box_pack_start(GTK_BOX(vbox1),label,false,false,0);
-+
-+ GtkWidget *hbox = gtk_hbox_new(false,6);
-+ gtk_box_pack_start(GTK_BOX(vbox1),hbox,false,false,0);
-+ GtkWidget *button = gtk_button_new_with_mnemonic(_("C_lean all cache files"));
-+ gtk_button_set_image(GTK_BUTTON(button), gtk_image_new_from_stock(GTK_STOCK_CLEAR, GTK_ICON_SIZE_BUTTON));
-+ gtk_box_pack_end(GTK_BOX(hbox),button,false,false,0);
-+ g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (on_setup_dictionary_cache_cleanbutton_clicked), this);
-+}
-+
-+
-+
-+void PrefsDlg::on_setup_dictionary_export_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean enable = gtk_toggle_button_get_active(button);
-+ conf->set_bool_at("dictionary/only_export_word", enable);
-+}
-+
-+void PrefsDlg::on_setup_dictionary_export_browse_button_clicked(GtkButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ GtkWidget *dialog;
-+ dialog = gtk_file_chooser_dialog_new (_("Open file..."),
-+ GTK_WINDOW(oPrefsDlg->window),
-+ GTK_FILE_CHOOSER_ACTION_OPEN,
-+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
-+ NULL);
-+ gtk_file_chooser_set_filename(GTK_FILE_CHOOSER (dialog), gtk_entry_get_text(oPrefsDlg->eExportFile));
-+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
-+ gchar *filename;
-+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
-+ gtk_entry_set_text(oPrefsDlg->eExportFile, filename);
-+ g_free (filename);
-+ }
-+ gtk_widget_destroy (dialog);
-+}
-+
-+void PrefsDlg::setup_dictionary_export_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Export"), GTK_STOCK_SAVE);
-+ GtkWidget *vbox1 = gtk_vbox_new(false, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,false,false, 0);
-+
-+ GtkWidget *check_button;
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Only export words."));
-+ bool enable= conf->get_bool_at("dictionary/only_export_word");
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), enable);
-+ g_signal_connect (G_OBJECT (check_button), "toggled", G_CALLBACK (on_setup_dictionary_export_ckbutton_toggled), this);
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+
-+ GtkWidget *hbox1 = gtk_hbox_new(FALSE, 6);
-+ GtkWidget *label=gtk_label_new(_("File name:"));
-+ gtk_box_pack_start(GTK_BOX(hbox1), label, FALSE, FALSE, 0);
-+ GtkWidget *e = gtk_entry_new();
-+ const std::string &exportfile= conf->get_string_at("dictionary/export_file");
-+ gtk_entry_set_text(GTK_ENTRY(e), exportfile.c_str());
-+ gtk_box_pack_start(GTK_BOX(hbox1), e, TRUE, TRUE, 0);
-+ eExportFile=GTK_ENTRY(e);
-+
-+ GtkWidget *button;
-+ button = gtk_button_new_with_mnemonic(_("_Browse..."));
-+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
-+ g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_setup_dictionary_export_browse_button_clicked), this);
-+ gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0);
-+ gtk_box_pack_start(GTK_BOX(vbox1), hbox1, FALSE, FALSE, 0);
-+}
-+
-+void PrefsDlg::on_markup_search_word(GtkToggleButton *button, PrefsDlg *)
-+{
-+ conf->set_bool_at("dictionary/markup_search_word",
-+ gtk_toggle_button_get_active(button));
-+}
-+
-+void PrefsDlg::setup_dict_article_rendering()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Article rendering"),
-+ GTK_STOCK_CONVERT);
-+ GtkWidget *vbox1 = gtk_vbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox), vbox1, FALSE, FALSE, 0);
-+
-+ GtkWidget *ck_btn =
-+ gtk_check_button_new_with_mnemonic(_("_Highlight search term"));
-+ gtk_box_pack_start(GTK_BOX(vbox1), ck_btn, FALSE, FALSE, 0);
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ck_btn),
-+ conf->get_bool_at("dictionary/markup_search_word"));
-+ g_signal_connect(G_OBJECT(ck_btn), "toggled",
-+ G_CALLBACK(on_markup_search_word), this);
-+}
-+
-+void PrefsDlg::on_setup_dictionary_sound_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean enable = gtk_toggle_button_get_active(button);
-+ conf->set_bool_at("dictionary/enable_sound_event",enable);
-+}
-+
-+#ifndef _WIN32
-+void PrefsDlg::on_setup_dictionary_use_tts_program_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean enable = gtk_toggle_button_get_active(button);
-+ gtk_widget_set_sensitive(oPrefsDlg->use_tts_program_hbox,enable);
-+ conf->set_bool("/apps/stardict/preferences/dictionary/use_tts_program", enable);
-+ gpAppFrame->oReadWord.use_command_tts = enable;
-+ gpAppFrame->oMidWin.oToolWin.UpdatePronounceMenu();
-+}
-+#endif
-+
-+void PrefsDlg::setup_dictionary_sound_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Sound"), GTK_STOCK_YES);
-+ GtkWidget *vbox1 = gtk_vbox_new(false, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,false,false, 0);
-+
-+ GtkWidget *check_button;
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Enable sound event."));
-+ bool enable=
-+ conf->get_bool_at("dictionary/enable_sound_event");
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), enable);
-+ g_signal_connect (G_OBJECT (check_button), "toggled", G_CALLBACK (on_setup_dictionary_sound_ckbutton_toggled), (gpointer)this);
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ GtkWidget *label;
-+#if defined(CONFIG_GTK) || defined(CONFIG_GPE)
-+ GtkWidget *hbox2 = gtk_hbox_new(FALSE, 6);
-+ label=gtk_label_new(_("Command for playing wav files:"));
-+ gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 0);
-+ GtkWidget *e = gtk_entry_new();
-+ gtk_widget_set_size_request(e, 50, -1);
-+ const std::string &playcmd=
-+ conf->get_string_at("dictionary/play_command");
-+ gtk_entry_set_text(GTK_ENTRY(e), playcmd.c_str());
-+ gtk_box_pack_start(GTK_BOX(hbox2), e, TRUE, TRUE, 0);
-+ gtk_widget_set_sensitive(hbox2, enable);
-+ ePlayCommand=GTK_ENTRY(e);
-+ gtk_box_pack_start(GTK_BOX(vbox1), hbox2, FALSE, FALSE, 0);
-+#endif
-+
-+ label = gtk_label_new(_("RealPeopleTTS search path:"));
-+ gtk_misc_set_alignment(GTK_MISC(label), 0, .5);
-+ gtk_box_pack_start(GTK_BOX(vbox1),label,false,false,0);
-+ tts_textview = gtk_text_view_new();
-+ gtk_widget_set_size_request(tts_textview, -1, 70);
-+ gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tts_textview), GTK_WRAP_CHAR);
-+ const std::string &ttspath = conf->get_string_at("dictionary/tts_path");
-+ GtkTextBuffer *text_view_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tts_textview));
-+ gtk_text_buffer_set_text(text_view_buffer, ttspath.c_str(), -1);
-+ GtkWidget *scrolled_window = gtk_scrolled_window_new(NULL, NULL);
-+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_window),
-+ GTK_SHADOW_ETCHED_IN);
-+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
-+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-+ gtk_container_add(GTK_CONTAINER(scrolled_window), tts_textview);
-+ gtk_box_pack_start(GTK_BOX(vbox1),scrolled_window,false,false,0);
-+
-+#ifndef _WIN32
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Use TTS program."));
-+ enable = conf->get_bool("/apps/stardict/preferences/dictionary/use_tts_program");
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), enable);
-+ g_signal_connect (G_OBJECT (check_button), "toggled", G_CALLBACK (on_setup_dictionary_use_tts_program_ckbutton_toggled), this);
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ use_tts_program_hbox = gtk_hbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox1),use_tts_program_hbox,false,false,0);
-+ gtk_widget_set_sensitive(use_tts_program_hbox,enable);
-+ label = gtk_label_new(_("Commandline:"));
-+ gtk_misc_set_alignment(GTK_MISC(label), 0, .5);
-+ gtk_box_pack_start(GTK_BOX(use_tts_program_hbox),label,false,false,0);
-+ GtkWidget *comboboxentry = gtk_combo_box_entry_new_text();
-+ gtk_widget_set_size_request(comboboxentry, 30, -1);
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(comboboxentry), "echo %s | festival --tts &");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(comboboxentry), "espeak %s &");
-+ eTTSCommandline = GTK_ENTRY(GTK_BIN(comboboxentry)->child);
-+ const std::string &tts_program_cmdline = conf->get_string("/apps/stardict/preferences/dictionary/tts_program_cmdline");
-+ gtk_entry_set_text(eTTSCommandline, tts_program_cmdline.c_str());
-+ gtk_box_pack_start(GTK_BOX(use_tts_program_hbox),comboboxentry,true,true,0);
-+#endif
-+}
-+
-+void PrefsDlg::on_setup_network_netdict_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ conf->set_bool_at("network/enable_netdict",
-+ gtk_toggle_button_get_active(button));
-+}
-+
-+static void on_account_passwd_entry_activated(GtkEntry *entry, GtkDialog *dialog)
-+{
-+ gtk_dialog_response(dialog, GTK_RESPONSE_OK);
-+}
-+
-+void PrefsDlg::on_setup_network_account_button_clicked(GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ GtkWidget *account_dialog;
-+ account_dialog =
-+ gtk_dialog_new_with_buttons (_("Account"),
-+ GTK_WINDOW (oPrefsDlg->window),
-+ GTK_DIALOG_DESTROY_WITH_PARENT,
-+ GTK_STOCK_CANCEL,
-+ GTK_RESPONSE_CANCEL,
-+ GTK_STOCK_OK,
-+ GTK_RESPONSE_OK,
-+ NULL);
-+ GtkWidget *table = gtk_table_new(2, 2, FALSE);
-+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(account_dialog)->vbox), table);
-+ gtk_container_set_border_width(GTK_CONTAINER(table), 6);
-+ GtkWidget *label = gtk_label_new_with_mnemonic(_("_User Name:"));
-+ gtk_misc_set_alignment(GTK_MISC(label), 0, .5);
-+ GtkWidget *user_entry = gtk_entry_new ();
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), user_entry);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, (GtkAttachOptions)0, 6, 4);
-+ gtk_table_attach(GTK_TABLE(table), user_entry, 1, 2, 0, 1, GTK_EXPAND, (GtkAttachOptions)0, 0, 4);
-+ label = gtk_label_new_with_mnemonic(_("_Password:"));
-+ gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
-+ GtkWidget *passwd_entry = gtk_entry_new ();
-+ gtk_entry_set_visibility(GTK_ENTRY(passwd_entry), FALSE);
-+ g_signal_connect(G_OBJECT(passwd_entry),"activate", G_CALLBACK(on_account_passwd_entry_activated), account_dialog);
-+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), passwd_entry);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, (GtkAttachOptions)0, 6, 4);
-+ gtk_table_attach(GTK_TABLE(table), passwd_entry, 1, 2, 1, 2, GTK_EXPAND, (GtkAttachOptions)0, 0, 4);
-+ gtk_dialog_set_default_response(GTK_DIALOG(account_dialog), GTK_RESPONSE_OK);
-+ gtk_window_set_resizable(GTK_WINDOW(account_dialog), FALSE);
-+ gtk_widget_show_all(GTK_WIDGET(account_dialog));
-+ while (gtk_dialog_run(GTK_DIALOG(account_dialog))==GTK_RESPONSE_OK) {
-+ const gchar *user = gtk_entry_get_text(GTK_ENTRY(user_entry));
-+ if (!user[0]) {
-+ conf->set_string_at("network/user", "");
-+ conf->set_string_at("network/md5passwd", "");
-+ gtk_button_set_label(oPrefsDlg->bAccount, "Guest");
-+ gpAppFrame->oStarDictClient.set_auth("", "");
-+ break;
-+ }
-+ gchar *error_msg = NULL;
-+ const gchar *passwd = gtk_entry_get_text(GTK_ENTRY(passwd_entry));
-+ if (!passwd[0])
-+ error_msg = _("Please input the password.");
-+ if (error_msg) {
-+ GtkWidget *message_dlg =
-+ gtk_message_dialog_new(
-+ GTK_WINDOW(account_dialog),
-+ (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
-+ GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
-+ error_msg);
-+ gtk_dialog_set_default_response(GTK_DIALOG(message_dlg), GTK_RESPONSE_OK);
-+ gtk_window_set_resizable(GTK_WINDOW(message_dlg), FALSE);
-+ gtk_dialog_run(GTK_DIALOG(message_dlg));
-+ gtk_widget_destroy(message_dlg);
-+ continue;
-+ }
-+ conf->set_string_at("network/user", user);
-+ struct MD5Context ctx;
-+ unsigned char digest[16];
-+ MD5Init(&ctx);
-+ MD5Update(&ctx, (const unsigned char*)passwd, strlen(passwd));
-+ MD5Final(digest, &ctx );
-+ char hex[33];
-+ for (int i = 0; i < 16; i++)
-+ sprintf( hex+2*i, "%02x", digest[i] );
-+ hex[32] = '\0';
-+ conf->set_string_at("network/md5passwd", hex);
-+ gtk_button_set_label(oPrefsDlg->bAccount, user);
-+ gpAppFrame->oStarDictClient.set_auth(user, hex);
-+ break;
-+ }
-+ gtk_widget_destroy(account_dialog);
-+}
-+
-+void PrefsDlg::on_register_end(const char *msg)
-+{
-+ gtk_button_set_label(bAccount, register_user.c_str());
-+ conf->set_string_at("network/user", register_user);
-+ conf->set_string_at("network/md5passwd", register_hex);
-+ gpAppFrame->oStarDictClient.set_auth(register_user.c_str(), register_hex.c_str());
-+
-+ GtkWidget *message_dlg = gtk_message_dialog_new(GTK_WINDOW(window),
-+ (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
-+ GTK_MESSAGE_INFO, GTK_BUTTONS_OK, msg);
-+ gtk_dialog_set_default_response(GTK_DIALOG(message_dlg), GTK_RESPONSE_OK);
-+ gtk_window_set_resizable(GTK_WINDOW(message_dlg), FALSE);
-+ g_signal_connect_swapped (message_dlg, "response", G_CALLBACK (gtk_widget_destroy), message_dlg);
-+ gtk_widget_show(message_dlg);
-+}
-+
-+static void on_register_email_button_activated(GtkEntry *entry, GtkDialog *dialog)
-+{
-+ gtk_dialog_response(dialog, GTK_RESPONSE_OK);
-+}
-+
-+void PrefsDlg::on_setup_network_register_button_clicked(GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ GtkWidget *register_dialog;
-+ register_dialog =
-+ gtk_dialog_new_with_buttons (_("Register"),
-+ GTK_WINDOW (oPrefsDlg->window),
-+ GTK_DIALOG_DESTROY_WITH_PARENT,
-+ GTK_STOCK_CANCEL,
-+ GTK_RESPONSE_CANCEL,
-+ GTK_STOCK_OK,
-+ GTK_RESPONSE_OK,
-+ NULL);
-+ GtkWidget *table = gtk_table_new(3, 2, FALSE);
-+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(register_dialog)->vbox), table);
-+ gtk_container_set_border_width(GTK_CONTAINER(table), 6);
-+ GtkWidget *label = gtk_label_new_with_mnemonic(_("_User Name:"));
-+ gtk_misc_set_alignment(GTK_MISC(label), 0, .5);
-+ GtkWidget *user_entry = gtk_entry_new ();
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), user_entry);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, (GtkAttachOptions)0, 6, 4);
-+ gtk_table_attach(GTK_TABLE(table), user_entry, 1, 2, 0, 1, GTK_EXPAND, (GtkAttachOptions)0, 0, 4);
-+ label = gtk_label_new_with_mnemonic(_("_Password:"));
-+ gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
-+ GtkWidget *passwd_entry = gtk_entry_new ();
-+ gtk_entry_set_visibility(GTK_ENTRY(passwd_entry), FALSE);
-+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), passwd_entry);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, (GtkAttachOptions)0, 6, 4);
-+ gtk_table_attach(GTK_TABLE(table), passwd_entry, 1, 2, 1, 2, GTK_EXPAND, (GtkAttachOptions)0, 0, 4);
-+ label = gtk_label_new_with_mnemonic(_("_Email:"));
-+ gtk_misc_set_alignment(GTK_MISC(label), 0, .5);
-+ GtkWidget *email_entry = gtk_entry_new ();
-+ g_signal_connect(G_OBJECT(email_entry),"activate", G_CALLBACK(on_register_email_button_activated), register_dialog);
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), email_entry);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, (GtkAttachOptions)0, 6, 4);
-+ gtk_table_attach(GTK_TABLE(table), email_entry, 1, 2, 2, 3, GTK_EXPAND, (GtkAttachOptions)0, 0, 4);
-+ gtk_dialog_set_default_response(GTK_DIALOG(register_dialog), GTK_RESPONSE_OK);
-+ gtk_window_set_resizable(GTK_WINDOW(register_dialog), FALSE);
-+ gtk_widget_show_all(GTK_WIDGET(register_dialog));
-+ while (gtk_dialog_run(GTK_DIALOG(register_dialog))==GTK_RESPONSE_OK) {
-+ gchar *error_msg = NULL;
-+ const gchar *user = gtk_entry_get_text(GTK_ENTRY(user_entry));
-+ const gchar *passwd = gtk_entry_get_text(GTK_ENTRY(passwd_entry));
-+ const gchar *email = gtk_entry_get_text(GTK_ENTRY(email_entry));
-+ if (!user[0])
-+ error_msg = _("Please input the user name.");
-+ else if (!passwd[0])
-+ error_msg = _("Please input the password.");
-+ else if (!email[0])
-+ error_msg = _("Please input the email.");
-+ else if (strchr(email, '@')==NULL)
-+ error_msg = _("Please input a valid email.");
-+ if (error_msg) {
-+ GtkWidget *message_dlg =
-+ gtk_message_dialog_new(
-+ GTK_WINDOW(register_dialog),
-+ (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
-+ GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
-+ error_msg);
-+ gtk_dialog_set_default_response(GTK_DIALOG(message_dlg), GTK_RESPONSE_OK);
-+ gtk_window_set_resizable(GTK_WINDOW(message_dlg), FALSE);
-+ gtk_dialog_run(GTK_DIALOG(message_dlg));
-+ gtk_widget_destroy(message_dlg);
-+ continue;
-+ }
-+ struct MD5Context ctx;
-+ unsigned char digest[16];
-+ MD5Init(&ctx);
-+ MD5Update(&ctx, (const unsigned char*)passwd, strlen(passwd));
-+ MD5Final(digest, &ctx );
-+ char hex[33];
-+ for (int i = 0; i < 16; i++)
-+ sprintf( hex+2*i, "%02x", digest[i] );
-+ hex[32] = '\0';
-+ const gchar *server = gtk_entry_get_text(oPrefsDlg->eStarDictServer);
-+ int port = atoi(gtk_entry_get_text(oPrefsDlg->eStarDictServerPort));
-+ gpAppFrame->oStarDictClient.set_server(server, port);
-+ gpAppFrame->oStarDictClient.set_auth("", "");
-+ oPrefsDlg->register_user = user;
-+ oPrefsDlg->register_hex = hex;
-+ STARDICT::Cmd *c = new STARDICT::Cmd(STARDICT::CMD_REGISTER, user, hex, email);
-+ gpAppFrame->oStarDictClient.send_commands(1, c);
-+ break;
-+ }
-+ gtk_widget_destroy(register_dialog);
-+}
-+
-+void PrefsDlg::setup_network_netdict()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Net Dict"),
-+ GTK_STOCK_NETWORK);
-+ GtkWidget *vbox1 = gtk_vbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox), vbox1, FALSE, FALSE, 0);
-+
-+ GtkWidget *ck_btn =
-+ gtk_check_button_new_with_mnemonic(_("Enable _network dictionaries."));
-+ gtk_box_pack_start(GTK_BOX(vbox1), ck_btn, FALSE, FALSE, 0);
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(ck_btn),
-+ conf->get_bool_at("network/enable_netdict"));
-+ g_signal_connect(G_OBJECT(ck_btn), "toggled",
-+ G_CALLBACK(on_setup_network_netdict_ckbutton_toggled), this);
-+
-+ GtkWidget *table;
-+ table = gtk_table_new(3, 2, FALSE);
-+ gtk_table_set_row_spacings(GTK_TABLE(table), 6);
-+ gtk_table_set_col_spacings(GTK_TABLE(table), 6);
-+ gtk_box_pack_start(GTK_BOX(vbox1),table,false,false,0);
-+ GtkWidget *label=gtk_label_new(_("StarDict server:"));
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-+ GtkWidget *comboboxentry = gtk_combo_box_entry_new_text();
-+ gtk_table_attach(GTK_TABLE(table), comboboxentry, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(comboboxentry), "dict.stardict.org");
-+ gtk_combo_box_append_text(GTK_COMBO_BOX(comboboxentry), "dict.stardict.cn");
-+ eStarDictServer=GTK_ENTRY(GTK_BIN(comboboxentry)->child);
-+ const std::string &server= conf->get_string_at("network/server");
-+ gtk_entry_set_text(eStarDictServer, server.c_str());
-+ label=gtk_label_new(_("Port:"));
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-+ GtkWidget *e = gtk_entry_new();
-+ int port = conf->get_int_at("network/port");
-+ gchar *str = g_strdup_printf("%d", port);
-+ gtk_entry_set_text(GTK_ENTRY(e), str);
-+ g_free(str);
-+ gtk_table_attach(GTK_TABLE(table), e, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-+ eStarDictServerPort=GTK_ENTRY(e);
-+ label=gtk_label_new(_("Account:"));
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 0, 0);
-+ const std::string &user= conf->get_string_at("network/user");
-+ GtkWidget *button;
-+ if (user.empty())
-+ button = gtk_button_new_with_label("Guest");
-+ else
-+ button = gtk_button_new_with_label(user.c_str());
-+ g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_setup_network_account_button_clicked), this);
-+ gtk_table_attach(GTK_TABLE(table), button, 1, 2, 2, 3, GTK_FILL, GTK_FILL, 0, 0);
-+ bAccount = GTK_BUTTON(button);
-+ button = gtk_button_new_with_mnemonic(_("_Register an account"));
-+ g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_setup_network_register_button_clicked), this);
-+ GtkWidget *hbox1 = gtk_hbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(hbox1),button,false,false,0);
-+ gtk_box_pack_start(GTK_BOX(vbox1),hbox1,false,false,0);
-+}
-+
-+void PrefsDlg::on_setup_mainwin_searchWhileTyping_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ conf->set_bool_at("main_window/search_while_typing",
-+ gtk_toggle_button_get_active(button));
-+}
-+
-+void PrefsDlg::on_setup_mainwin_showfirstWhenNotfound_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ conf->set_bool_at("main_window/showfirst_when_notfound",
-+ gtk_toggle_button_get_active(button));
-+}
-+
-+void PrefsDlg::on_setup_mainwin_input_timeout_spinbutton_changed(GtkSpinButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gint timeout = gtk_spin_button_get_value_as_int(button);
-+ conf->set_int_at("main_window/word_change_timeout", timeout);
-+ gpAppFrame->word_change_timeout = timeout;
-+}
-+
-+void PrefsDlg::setup_mainwin_input_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Input"),
-+ GTK_STOCK_EDIT);
-+
-+ GtkWidget *vbox1 = gtk_vbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,FALSE,FALSE, 0);
-+
-+ GtkWidget *check_button =
-+ gtk_check_button_new_with_mnemonic(_("_Search while typing."));
-+ gtk_box_pack_start(GTK_BOX(vbox1), check_button, FALSE, FALSE, 0);
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button),
-+ conf->get_bool_at("main_window/search_while_typing"));
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_mainwin_searchWhileTyping_ckbutton_toggled), this);
-+ GtkWidget *hbox = gtk_hbox_new(false, 5);
-+ gtk_box_pack_start(GTK_BOX(vbox1),hbox,FALSE,FALSE, 0);
-+ GtkWidget *label=gtk_label_new(NULL);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("Word change _timeout:"));
-+ gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE, 0);
-+ GtkWidget *spin_button;
-+ spin_button = gtk_spin_button_new_with_range(50,2000,50);
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), spin_button);
-+ gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(spin_button), GTK_UPDATE_IF_VALID);
-+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_button), conf->get_int_at("main_window/word_change_timeout"));
-+ g_signal_connect(G_OBJECT(spin_button), "value-changed", G_CALLBACK(on_setup_mainwin_input_timeout_spinbutton_changed), this);
-+ gtk_box_pack_start(GTK_BOX(hbox),spin_button,FALSE,FALSE, 0);
-+ label=gtk_label_new(_("(default:300)"));
-+ gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE, 0);
-+ check_button = gtk_check_button_new_with_mnemonic(_("Show the _first word when not found."));
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,FALSE,FALSE,0);
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), conf->get_bool_at("main_window/showfirst_when_notfound"));
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_mainwin_showfirstWhenNotfound_ckbutton_toggled), this);
-+}
-+
-+void PrefsDlg::on_setup_mainwin_startup_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ conf->set_bool_at("main_window/hide_on_startup",
-+ gtk_toggle_button_get_active(button));
-+}
-+
-+#ifdef _WIN32
-+void PrefsDlg::on_setup_mainwin_autorun_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean b = gtk_toggle_button_get_active(button);
-+ HKEY hKEY;
-+ LONG lRet;
-+ if (b) {
-+ lRet =RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hKEY);
-+ if(lRet==ERROR_SUCCESS) {
-+ std::string path = gStarDictDataDir+ G_DIR_SEPARATOR_S "stardict.exe";
-+ RegSetValueEx(hKEY, "StarDict", 0, REG_SZ, (const BYTE*)path.c_str(), path.length()+1);
-+ RegCloseKey(hKEY);
-+ }
-+ } else {
-+ lRet =RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_ALL_ACCESS,&hKEY);
-+ if(lRet==ERROR_SUCCESS) {
-+ RegDeleteValue(hKEY, "StarDict");
-+ RegCloseKey(hKEY);
-+ }
-+ }
-+}
-+
-+void PrefsDlg::on_setup_mainwin_use_mainwindow_hotkey_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean b = gtk_toggle_button_get_active(button);
-+ if (b)
-+ gpAppFrame->oHotkey.start_mainwindow();
-+ else
-+ gpAppFrame->oHotkey.stop_mainwindow();
-+ conf->set_bool_at("dictionary/use_mainwindow_hotkey", b);
-+}
-+#endif
-+
-+void PrefsDlg::on_setup_mainwin_transparent_scale_changed(GtkRange *range, PrefsDlg *oPrefsDlg)
-+{
-+ gint transparent = (gint)gtk_range_get_value(range);
-+ conf->set_int_at("main_window/transparent", transparent);
-+ gtk_window_set_opacity(GTK_WINDOW(gpAppFrame->window), (100-transparent)/100.0);
-+}
-+
-+void PrefsDlg::setup_mainwin_options_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Options"), GTK_STOCK_EXECUTE);
-+ GtkWidget *vbox1 = gtk_vbox_new(FALSE, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,FALSE,FALSE, 0);
-+
-+ GtkWidget *check_button;
-+#ifdef _WIN32
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Auto run StarDict after boot."));
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,FALSE,FALSE,0);
-+ gboolean autorun;
-+
-+ HKEY hKEY;
-+ LONG lRet =RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\Microsoft\\Windows\\CurrentVersion\\Run",0,KEY_QUERY_VALUE,&hKEY);
-+ if(lRet!=ERROR_SUCCESS) {
-+ autorun = false;
-+ } else {
-+ char owner_Get[80];
-+ DWORD cbData_1=80;
-+ DWORD type_1=REG_SZ;
-+ lRet=RegQueryValueEx(hKEY,"StarDict",NULL,&type_1,(LPBYTE)owner_Get,&cbData_1);
-+ RegCloseKey(hKEY);
-+ if((lRet!=ERROR_SUCCESS)||(cbData_1 > 80)) {
-+ autorun = false;
-+ } else {
-+ std::string path = gStarDictDataDir+ G_DIR_SEPARATOR_S "stardict.exe";
-+ if (strcmp(path.c_str(), owner_Get)==0)
-+ autorun = true;
-+ else
-+ autorun = false;
-+ }
-+ }
-+
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), autorun);
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_mainwin_autorun_ckbutton_toggled), this);
-+#endif
-+
-+ check_button = gtk_check_button_new_with_mnemonic(_("Hide main window when _starting StarDict."));
-+ gtk_box_pack_start(GTK_BOX(vbox1), check_button, FALSE, FALSE, 0);
-+ bool hide=
-+ conf->get_bool_at("main_window/hide_on_startup");
-+
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), hide);
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_mainwin_startup_ckbutton_toggled), this);
-+
-+#ifdef _WIN32
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Use open main window hotkey: Ctrl+Alt+Z."));
-+ gtk_box_pack_start(GTK_BOX(vbox1),check_button,false,false,0);
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), conf->get_bool_at("dictionary/use_mainwindow_hotkey"));
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_mainwin_use_mainwindow_hotkey_ckbutton_toggled), this);
-+#endif
-+
-+ GtkWidget *hbox = gtk_hbox_new(false, 5);
-+ gtk_box_pack_start(GTK_BOX(vbox1),hbox,FALSE,FALSE, 0);
-+ GtkWidget *label=gtk_label_new(NULL);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Transparency:"));
-+ gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE, 0);
-+ GtkWidget *hscale;
-+ hscale = gtk_hscale_new_with_range(0,80,1);
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), hscale);
-+ int transparent=conf->get_int_at("main_window/transparent");
-+ gtk_range_set_value(GTK_RANGE(hscale), transparent);
-+ g_signal_connect(G_OBJECT(hscale), "value-changed", G_CALLBACK(on_setup_mainwin_transparent_scale_changed), this);
-+ gtk_box_pack_start(GTK_BOX(hbox),hscale,TRUE,TRUE, 0);
-+}
-+
-+void PrefsDlg::write_mainwin_searchwebsite_list()
-+{
-+ GtkTreeIter iter;
-+ gboolean have_iter;
-+ gchar *website_name, *website_link, *website_searchlink;
-+ std::list<std::string> searchwebsite_list;
-+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW (searchwebsite_treeview));
-+
-+ have_iter = gtk_tree_model_get_iter_first(model, &iter);
-+ while (have_iter) {
-+ gtk_tree_model_get (model, &iter, 0, &website_name, 1, &website_link, 2, &website_searchlink, -1);
-+ std::string website(std::string(website_name)+'\t'+website_link+'\t'+website_searchlink);
-+ g_free(website_name);
-+ g_free(website_link);
-+ g_free(website_searchlink);
-+ searchwebsite_list.push_back(website);
-+ have_iter = gtk_tree_model_iter_next(model, &iter);
-+ }
-+ conf->set_strlist_at("main_window/search_website_list", searchwebsite_list);
-+}
-+
-+void PrefsDlg::on_setup_mainwin_searchwebsite_moveup_button_clicked(GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ GtkTreeSelection *selection;
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (oPrefsDlg->searchwebsite_treeview));
-+ GtkTreeModel *model;
-+ GtkTreeIter iter;
-+ if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
-+ GtkTreePath* path = gtk_tree_model_get_path(model, &iter);
-+ if (gtk_tree_path_prev(path)) {
-+ GtkTreeIter prev;
-+ gtk_tree_model_get_iter(model, &prev, path);
-+ gtk_list_store_swap(GTK_LIST_STORE(model), &iter, &prev);
-+ gtk_tree_selection_select_path(selection, path);
-+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW (oPrefsDlg->searchwebsite_treeview), path, NULL, false, 0, 0);
-+ oPrefsDlg->write_mainwin_searchwebsite_list();
-+ }
-+ gtk_tree_path_free(path);
-+ }
-+}
-+
-+void PrefsDlg::on_setup_mainwin_searchwebsite_movedown_button_clicked(GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ GtkTreeSelection *selection;
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (oPrefsDlg->searchwebsite_treeview));
-+ GtkTreeModel *model;
-+ GtkTreeIter iter;
-+ if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
-+ GtkTreePath* path = gtk_tree_model_get_path(model, &iter);
-+ gtk_tree_path_next(path);
-+ GtkTreeIter next;
-+ if (gtk_tree_model_get_iter(model, &next, path)) {
-+ gtk_list_store_swap(GTK_LIST_STORE(model), &iter, &next);
-+ gtk_tree_selection_select_path(selection, path);
-+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW (oPrefsDlg->searchwebsite_treeview), path, NULL, false, 0, 0);
-+ oPrefsDlg->write_mainwin_searchwebsite_list();
-+ }
-+ gtk_tree_path_free(path);
-+ }
-+}
-+
-+void PrefsDlg::on_setup_mainwin_searchwebsite_add_button_clicked(GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ GtkWidget *searchwebsite_add_dialog;
-+ GtkWidget *searchwebsite_add_dialog_name_entry;
-+ GtkWidget *searchwebsite_add_dialog_link_entry;
-+ GtkWidget *searchwebsite_add_dialog_searchlink_entry;
-+
-+ searchwebsite_add_dialog =
-+ gtk_dialog_new_with_buttons (_("Add"),
-+ GTK_WINDOW (oPrefsDlg->window),
-+ GTK_DIALOG_DESTROY_WITH_PARENT,
-+ GTK_STOCK_CANCEL,
-+ GTK_RESPONSE_CANCEL,
-+ GTK_STOCK_OK,
-+ GTK_RESPONSE_OK,
-+ NULL);
-+ GtkWidget *table = gtk_table_new(3, 2, FALSE);
-+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(searchwebsite_add_dialog)->vbox), table);
-+#ifndef CONFIG_GPE
-+ gtk_container_set_border_width(GTK_CONTAINER(table), 6);
-+#endif
-+ GtkWidget *label = gtk_label_new_with_mnemonic(_("Website Name"));
-+ gtk_misc_set_alignment(GTK_MISC(label), 0, .5);
-+ searchwebsite_add_dialog_name_entry = gtk_entry_new ();
-+#ifdef CONFIG_GPE
-+ gtk_widget_set_size_request(searchwebsite_add_dialog_name_entry, 100, -1);
-+#endif
-+ gtk_entry_set_activates_default(GTK_ENTRY(searchwebsite_add_dialog_name_entry), TRUE);
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), searchwebsite_add_dialog_name_entry);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, (GtkAttachOptions)0, 6, 4);
-+ gtk_table_attach(GTK_TABLE(table), searchwebsite_add_dialog_name_entry, 1, 2, 0, 1, GTK_EXPAND, (GtkAttachOptions)0, 0, 4);
-+
-+
-+ label = gtk_label_new_with_mnemonic(_("Website link"));
-+ gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
-+ searchwebsite_add_dialog_link_entry = gtk_entry_new ();
-+#ifdef CONFIG_GPE
-+ gtk_widget_set_size_request(searchwebsite_add_dialog_link_entry, 100, -1);
-+#endif
-+ gtk_entry_set_activates_default (GTK_ENTRY (searchwebsite_add_dialog_link_entry), TRUE);
-+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), searchwebsite_add_dialog_link_entry);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, (GtkAttachOptions)0, 6, 4);
-+ gtk_table_attach(GTK_TABLE(table), searchwebsite_add_dialog_link_entry, 1, 2, 1, 2, GTK_EXPAND, (GtkAttachOptions)0, 0, 4);
-+
-+ label = gtk_label_new_with_mnemonic(_("Website search link"));
-+ gtk_misc_set_alignment (GTK_MISC (label), 0, .5);
-+ searchwebsite_add_dialog_searchlink_entry = gtk_entry_new ();
-+#ifdef CONFIG_GPE
-+ gtk_widget_set_size_request(searchwebsite_add_dialog_searchlink_entry, 100, -1);
-+#endif
-+ gtk_entry_set_activates_default (GTK_ENTRY (searchwebsite_add_dialog_searchlink_entry), TRUE);
-+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), searchwebsite_add_dialog_searchlink_entry);
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, (GtkAttachOptions)0, 6, 4);
-+ gtk_table_attach(GTK_TABLE(table), searchwebsite_add_dialog_searchlink_entry, 1, 2, 2, 3, GTK_EXPAND, (GtkAttachOptions)0, 0, 4);
-+
-+ gtk_dialog_set_default_response(GTK_DIALOG(searchwebsite_add_dialog), GTK_RESPONSE_OK);
-+ gtk_window_set_resizable(GTK_WINDOW(searchwebsite_add_dialog), FALSE);
-+
-+ gtk_widget_show_all(GTK_WIDGET(searchwebsite_add_dialog));
-+ while (gtk_dialog_run(GTK_DIALOG(searchwebsite_add_dialog))==GTK_RESPONSE_OK) {
-+ gchar *error_msg = NULL;
-+ const gchar *website_name = gtk_entry_get_text(GTK_ENTRY(searchwebsite_add_dialog_name_entry));
-+ const gchar *website_link = gtk_entry_get_text(GTK_ENTRY(searchwebsite_add_dialog_link_entry));
-+ const gchar *website_searchlink = gtk_entry_get_text(GTK_ENTRY(searchwebsite_add_dialog_searchlink_entry));
-+ if (!website_name[0])
-+ error_msg = _("Please input the website name.");
-+ else if (!website_link[0])
-+ error_msg = _("Please input the website link.");
-+ else if (!website_searchlink[0])
-+ error_msg = _("Please input the website search link.");
-+ else if (!strstr(website_searchlink, "%s")) {
-+ error_msg = _("The website search link should contain a \"%%s\" string for querying a word.");
-+ }
-+
-+ if (error_msg) {
-+ GtkWidget *message_dlg =
-+ gtk_message_dialog_new(
-+ GTK_WINDOW(searchwebsite_add_dialog),
-+ (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
-+ GTK_MESSAGE_INFO, GTK_BUTTONS_OK,
-+ error_msg);
-+
-+ gtk_dialog_set_default_response(GTK_DIALOG(message_dlg), GTK_RESPONSE_OK);
-+ gtk_window_set_resizable(GTK_WINDOW(message_dlg), FALSE);
-+
-+ gtk_dialog_run(GTK_DIALOG(message_dlg));
-+ gtk_widget_destroy(message_dlg);
-+ continue;
-+ }
-+ GtkListStore *model =
-+ GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(oPrefsDlg->searchwebsite_treeview)));
-+ GtkTreeIter iter;
-+ gtk_list_store_prepend(model, &iter);
-+ gtk_list_store_set(model, &iter,
-+ 0, website_name,
-+ 1, website_link,
-+ 2, website_searchlink,
-+ 3, TRUE,
-+ -1);
-+ oPrefsDlg->write_mainwin_searchwebsite_list();
-+ break;
-+ }
-+ gtk_widget_destroy(searchwebsite_add_dialog);
-+}
-+
-+void PrefsDlg::on_setup_mainwin_searchwebsite_remove_button_clicked(GtkWidget *widget, PrefsDlg *oPrefsDlg)
-+{
-+ GtkTreeSelection *selection;
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (oPrefsDlg->searchwebsite_treeview));
-+ GtkTreeModel *model;
-+ GtkTreeIter iter;
-+ if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
-+ if (gtk_list_store_remove(GTK_LIST_STORE(model), &iter)) {
-+ GtkTreePath* path = gtk_tree_model_get_path(model, &iter);
-+ gtk_tree_selection_select_path(selection, path);
-+ gtk_tree_view_scroll_to_cell(GTK_TREE_VIEW (oPrefsDlg->searchwebsite_treeview), path, NULL, false, 0, 0);
-+ gtk_tree_path_free(path);
-+ }
-+ oPrefsDlg->write_mainwin_searchwebsite_list();
-+ }
-+}
-+
-+void PrefsDlg::on_setup_mainwin_searchwebsite_cell_edited(GtkCellRendererText *cell, const gchar *path_string, const gchar *new_text, PrefsDlg *oPrefsDlg)
-+{
-+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW (oPrefsDlg->searchwebsite_treeview));
-+ GtkTreePath *path = gtk_tree_path_new_from_string (path_string);
-+ GtkTreeIter iter;
-+
-+ glong column;
-+ column = (glong)(g_object_get_data (G_OBJECT (cell), "column"));
-+ gtk_tree_model_get_iter (model, &iter, path);
-+
-+ switch (column) {
-+ case 0:
-+ case 1:
-+ if (new_text[0]) {
-+ gtk_list_store_set (GTK_LIST_STORE (model), &iter, column, new_text, -1);
-+ oPrefsDlg->write_mainwin_searchwebsite_list();
-+ }
-+ break;
-+ case 2:
-+ if (new_text[0]) {
-+ if (!strstr(new_text, "%s")) {
-+ GtkWidget *message_dlg;
-+
-+ message_dlg = gtk_message_dialog_new (
-+ GTK_WINDOW (oPrefsDlg->window),
-+ (GtkDialogFlags) (GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
-+ GTK_MESSAGE_INFO,
-+ GTK_BUTTONS_OK,
-+ _("The website search link should contain a \"%%s\" string for querying a word."));
-+
-+ gtk_dialog_set_default_response (GTK_DIALOG (message_dlg), GTK_RESPONSE_OK);
-+
-+ gtk_window_set_resizable (GTK_WINDOW (message_dlg), FALSE);
-+
-+ gtk_dialog_run (GTK_DIALOG (message_dlg));
-+ gtk_widget_destroy (message_dlg);
-+ }
-+ else {
-+ gtk_list_store_set (GTK_LIST_STORE (model), &iter, 2, new_text, -1);
-+ oPrefsDlg->write_mainwin_searchwebsite_list();
-+ }
-+ }
-+ break;
-+
-+ }
-+
-+ gtk_tree_path_free (path);
-+}
-+
-+void PrefsDlg::setup_mainwin_searchwebsite_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Search website"), GTK_STOCK_JUMP_TO);
-+ GtkWidget *vbox2;
-+ vbox2 = gtk_vbox_new(false, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox), vbox2, true, true,0);
-+
-+ GtkListStore *model;
-+ model = gtk_list_store_new (4, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN);
-+
-+ const std::list<std::string> &web_list=
-+ conf->get_strlist_at("main_window/search_website_list");
-+
-+ GtkTreeIter iter;
-+ for (std::list<std::string>::const_iterator wit=web_list.begin();
-+ wit!=web_list.end(); ++wit) {
-+ std::vector<std::string> l=split(*wit, '\t');
-+ if (l.size()==3) {
-+ gtk_list_store_append(model, &iter);
-+ gtk_list_store_set(model, &iter,
-+ 0, l[0].c_str(),
-+ 1, l[1].c_str(),
-+ 2, l[2].c_str(),
-+ 3, TRUE,
-+ -1);
-+ }
-+ }
-+
-+ GtkWidget *sw;
-+ sw = gtk_scrolled_window_new (NULL, NULL);
-+ gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw), GTK_SHADOW_IN);
-+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
-+ GTK_POLICY_AUTOMATIC,
-+ GTK_POLICY_AUTOMATIC);
-+
-+ gtk_widget_set_size_request (sw, 300, 180);
-+
-+ searchwebsite_treeview = gtk_tree_view_new_with_model (GTK_TREE_MODEL(model));
-+ g_object_unref (G_OBJECT (model));
-+ gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (searchwebsite_treeview), TRUE);
-+
-+ GtkTreeSelection *selection;
-+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (searchwebsite_treeview));
-+
-+ gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE);
-+
-+ GtkCellRenderer *renderer;
-+ GtkTreeViewColumn *column;
-+
-+ renderer = gtk_cell_renderer_text_new ();
-+ g_signal_connect (renderer, "edited", G_CALLBACK (on_setup_mainwin_searchwebsite_cell_edited), this);
-+ g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL);
-+ g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER(0));
-+ column = gtk_tree_view_column_new_with_attributes (_("Website Name"), renderer, "text", 0, "editable", 3, NULL);
-+ gtk_tree_view_append_column (GTK_TREE_VIEW(searchwebsite_treeview), column);
-+ gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), FALSE);
-+
-+ renderer = gtk_cell_renderer_text_new ();
-+ g_signal_connect (renderer, "edited", G_CALLBACK (on_setup_mainwin_searchwebsite_cell_edited), this);
-+ g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL);
-+ g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER(1));
-+ column = gtk_tree_view_column_new_with_attributes (_("Website link"), renderer, "text", 1, "editable", 3, NULL);
-+ gtk_tree_view_append_column (GTK_TREE_VIEW(searchwebsite_treeview), column);
-+ gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), FALSE);
-+
-+ renderer = gtk_cell_renderer_text_new ();
-+ g_signal_connect (renderer, "edited", G_CALLBACK (on_setup_mainwin_searchwebsite_cell_edited), this);
-+ g_object_set (G_OBJECT (renderer), "xalign", 0.0, NULL);
-+ g_object_set_data (G_OBJECT (renderer), "column", GINT_TO_POINTER(2));
-+ column = gtk_tree_view_column_new_with_attributes (_("Website search link"), renderer, "text", 2, "editable", 3, NULL);
-+ gtk_tree_view_append_column (GTK_TREE_VIEW(searchwebsite_treeview), column);
-+ gtk_tree_view_column_set_clickable (GTK_TREE_VIEW_COLUMN (column), FALSE);
-+
-+ gtk_container_add (GTK_CONTAINER (sw), searchwebsite_treeview);
-+ gtk_box_pack_start (GTK_BOX (vbox2), sw, TRUE, TRUE, 0);
-+
-+ GtkWidget *hbox1;
-+ hbox1 = gtk_hbox_new(false,6);
-+ GtkWidget *button;
-+ button = gtk_button_new();
-+ GtkWidget *image = gtk_image_new_from_stock(GTK_STOCK_GO_UP, GTK_ICON_SIZE_BUTTON);
-+ gtk_container_add(GTK_CONTAINER(button), image);
-+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
-+ g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_setup_mainwin_searchwebsite_moveup_button_clicked), this);
-+ gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0);
-+ button = gtk_button_new();
-+ image = gtk_image_new_from_stock(GTK_STOCK_GO_DOWN, GTK_ICON_SIZE_BUTTON);
-+ gtk_container_add(GTK_CONTAINER(button), image);
-+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
-+ g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_setup_mainwin_searchwebsite_movedown_button_clicked), this);
-+ gtk_box_pack_start (GTK_BOX (hbox1), button, FALSE, FALSE, 0);
-+ button = gtk_button_new_from_stock(GTK_STOCK_REMOVE);
-+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
-+ g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_setup_mainwin_searchwebsite_remove_button_clicked), this);
-+ gtk_box_pack_end (GTK_BOX (hbox1), button, FALSE, FALSE, 0);
-+
-+/* button = gtk_button_new();
-+ GtkWidget *align = gtk_alignment_new (0.5, 0.5, 0.0, 0.0);
-+ gtk_container_add (GTK_CONTAINER (button), align);
-+ GtkWidget *hbox2 = gtk_hbox_new (FALSE, 2);
-+ gtk_container_add (GTK_CONTAINER (align), hbox2);
-+ label = gtk_label_new(NULL);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Modify"));
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), button);
-+ image = gtk_image_new_from_stock (GTK_STOCK_CONVERT, GTK_ICON_SIZE_BUTTON);
-+ gtk_box_pack_start (GTK_BOX (hbox2), image, FALSE, FALSE, 0);
-+ gtk_box_pack_end (GTK_BOX (hbox2), label, FALSE, FALSE, 0);
-+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
-+ g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_setup_mainwin_searchwebsite_edit_button_clicked), this);
-+ gtk_box_pack_end (GTK_BOX (hbox1), button, FALSE, FALSE, 0);*/
-+
-+ button = gtk_button_new_from_stock(GTK_STOCK_ADD);
-+ GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
-+ g_signal_connect(G_OBJECT(button),"clicked", G_CALLBACK(on_setup_mainwin_searchwebsite_add_button_clicked), this);
-+ gtk_box_pack_end (GTK_BOX (hbox1), button, FALSE, FALSE, 0);
-+
-+ gtk_box_pack_start (GTK_BOX (vbox2), hbox1, false, false, 0);
-+}
-+
-+void PrefsDlg::on_setup_NotificationAreaIcon_QueryInFloatWin_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean queryin = gtk_toggle_button_get_active(button);
-+ conf->set_bool_at("notification_area_icon/query_in_floatwin",
-+ queryin);
-+}
-+
-+void PrefsDlg::setup_NotificationAreaIcon_options_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Options"), GTK_STOCK_DND);
-+ GtkWidget *hbox1;
-+ hbox1 = gtk_hbox_new(false,0);
-+ gtk_box_pack_start(GTK_BOX(vbox),hbox1,false,false,0);
-+
-+ GtkWidget *check_button;
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Query in the floating window when middle mouse\nbutton is clicked."));
-+ bool query_in_floatwin=
-+ conf->get_bool_at("notification_area_icon/query_in_floatwin");
-+
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button),
-+ query_in_floatwin);
-+ g_signal_connect(G_OBJECT(check_button), "toggled",
-+ G_CALLBACK(on_setup_NotificationAreaIcon_QueryInFloatWin_ckbutton_toggled), this);
-+ gtk_box_pack_start(GTK_BOX(hbox1),check_button,false,false,0);
-+}
-+
-+void PrefsDlg::on_setup_floatwin_pronounce_ckbutton_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ conf->set_bool_at("floating_window/pronounce_when_popup",
-+ gtk_toggle_button_get_active(button));
-+}
-+
-+void PrefsDlg::on_setup_show_float_if_not_found(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ conf->set_bool_at("floating_window/show_if_not_found",
-+ gtk_toggle_button_get_active(button));
-+}
-+
-+void PrefsDlg::setup_floatwin_options_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Options"), GTK_STOCK_DND);
-+ GtkWidget *vbox1 = gtk_vbox_new(false, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,false,false, 0);
-+ GtkWidget *check_button = gtk_check_button_new_with_mnemonic(_("_Pronounce the word when it pops up."));
-+ bool pronounce_when_popup=
-+ conf->get_bool_at("floating_window/pronounce_when_popup");
-+
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button),
-+ pronounce_when_popup);
-+ g_signal_connect(G_OBJECT(check_button), "toggled", G_CALLBACK(on_setup_floatwin_pronounce_ckbutton_toggled), this);
-+ gtk_box_pack_start(GTK_BOX(vbox1), check_button, FALSE, FALSE, 0);
-+
-+ check_button = gtk_check_button_new_with_mnemonic(_("_Show floating window if word not found."));
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), conf->get_bool_at("floating_window/show_if_not_found"));
-+ g_signal_connect(G_OBJECT(check_button), "toggled", G_CALLBACK(on_setup_show_float_if_not_found), this);
-+ gtk_box_pack_start(GTK_BOX(vbox1), check_button, FALSE, FALSE, 0);
-+}
-+
-+#ifndef CONFIG_GPE
-+void PrefsDlg::on_setup_floatwin_size_max_width_spinbutton_changed(GtkSpinButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gint width = gtk_spin_button_get_value_as_int(button);
-+ conf->set_int_at("floating_window/max_window_width", width);
-+}
-+
-+void PrefsDlg::on_setup_floatwin_size_max_height_spinbutton_changed(GtkSpinButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gint height = gtk_spin_button_get_value_as_int(button);
-+ conf->set_int_at("floating_window/max_window_height", height);
-+}
-+
-+void PrefsDlg::on_setup_floatwin_use_custom_bg_toggled(GtkToggleButton *button, PrefsDlg *oPrefsDlg)
-+{
-+ gboolean use = gtk_toggle_button_get_active(button);
-+ conf->set_bool_at("floating_window/use_custom_bg", use);
-+ if (use) {
-+ GdkColor color;
-+ color.red = conf->get_int_at("floating_window/bg_red");
-+ color.green = conf->get_int_at("floating_window/bg_green");
-+ color.blue = conf->get_int_at("floating_window/bg_blue");
-+ gpAppFrame->oFloatWin.set_bg(&color);
-+ } else {
-+ gpAppFrame->oFloatWin.set_bg(NULL);
-+ }
-+}
-+
-+void PrefsDlg::on_setup_floatwin_color_set(GtkColorButton *widget, PrefsDlg *oPrefsDlg)
-+{
-+ GdkColor color;
-+ gtk_color_button_get_color(widget, &color);
-+ conf->set_int_at("floating_window/bg_red", color.red);
-+ conf->set_int_at("floating_window/bg_green", color.green);
-+ conf->set_int_at("floating_window/bg_blue", color.blue);
-+ if (conf->get_bool_at("floating_window/use_custom_bg")) {
-+ gpAppFrame->oFloatWin.set_bg(&color);
-+ }
-+}
-+
-+void PrefsDlg::on_setup_floatwin_transparent_scale_changed(GtkRange *range, PrefsDlg *oPrefsDlg)
-+{
-+ gint transparent = (gint)gtk_range_get_value(range);
-+ conf->set_int_at("floating_window/transparent", transparent);
-+ gtk_window_set_opacity(GTK_WINDOW(gpAppFrame->oFloatWin.FloatWindow), (100-transparent)/100.0);
-+}
-+
-+void PrefsDlg::setup_floatwin_size_page()
-+{
-+ GtkWidget *vbox = prepare_page(GTK_NOTEBOOK(notebook), _("Settings"), GTK_STOCK_ZOOM_FIT);
-+ GtkWidget *vbox1 = gtk_vbox_new(false, 6);
-+ gtk_box_pack_start(GTK_BOX(vbox),vbox1,false,false, 0);
-+ GtkWidget *table;
-+ table = gtk_table_new(3, 2, FALSE);
-+ gtk_table_set_row_spacings(GTK_TABLE(table), 6);
-+ gtk_table_set_col_spacings(GTK_TABLE(table), 6);
-+ gtk_box_pack_start(GTK_BOX(vbox1),table,false,false,0);
-+
-+ int max_width=
-+ conf->get_int_at("floating_window/max_window_width");
-+ int max_height=
-+ conf->get_int_at("floating_window/max_window_height");
-+
-+ GdkScreen *screen = gtk_window_get_screen(parent_window);
-+ gint screen_width = gdk_screen_get_width(screen);
-+ gint screen_height = gdk_screen_get_height(screen);
-+
-+ GtkWidget *label=gtk_label_new(NULL);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("Max window _width:"));
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-+ GtkWidget *spin_button;
-+ spin_button = gtk_spin_button_new_with_range(MIN_MAX_FLOATWIN_WIDTH,screen_width,1);
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), spin_button);
-+ gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(spin_button), GTK_UPDATE_IF_VALID);
-+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_button), max_width);
-+ g_signal_connect(G_OBJECT(spin_button), "value-changed",
-+ G_CALLBACK(on_setup_floatwin_size_max_width_spinbutton_changed), this);
-+ gtk_table_attach(GTK_TABLE(table), spin_button, 1, 2, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-+ label=gtk_label_new(_("(default:320)"));
-+ gtk_table_attach(GTK_TABLE(table), label, 2, 3, 0, 1, GTK_FILL, GTK_FILL, 0, 0);
-+
-+ label=gtk_label_new(NULL);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("Max window hei_ght:"));
-+ gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-+ spin_button = gtk_spin_button_new_with_range(MIN_MAX_FLOATWIN_HEIGHT,screen_height,1);
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), spin_button);
-+ gtk_spin_button_set_update_policy(GTK_SPIN_BUTTON(spin_button), GTK_UPDATE_IF_VALID);
-+ gtk_spin_button_set_value(GTK_SPIN_BUTTON(spin_button), max_height);
-+ g_signal_connect (G_OBJECT (spin_button), "value-changed", G_CALLBACK (on_setup_floatwin_size_max_height_spinbutton_changed), (gpointer)this);
-+ gtk_table_attach(GTK_TABLE(table), spin_button, 1, 2, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-+ label=gtk_label_new(_("(default:240)"));
-+ gtk_table_attach(GTK_TABLE(table), label, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 0, 0);
-+
-+ GtkWidget*hbox1 = gtk_hbox_new(false, 5);
-+ gtk_box_pack_start(GTK_BOX(vbox1),hbox1,false,false,0);
-+ GtkWidget *check_button = gtk_check_button_new_with_mnemonic(_("_Use custom background color:"));
-+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(check_button), conf->get_bool_at("floating_window/use_custom_bg"));
-+ g_signal_connect(G_OBJECT(check_button), "toggled", G_CALLBACK(on_setup_floatwin_use_custom_bg_toggled), this);
-+ gtk_box_pack_start(GTK_BOX(hbox1),check_button,false,false,0);
-+ GdkColor color;
-+ color.red = conf->get_int_at("floating_window/bg_red");
-+ color.green = conf->get_int_at("floating_window/bg_green");
-+ color.blue = conf->get_int_at("floating_window/bg_blue");
-+ GtkWidget *colorbutton = gtk_color_button_new_with_color(&color);
-+ g_signal_connect(G_OBJECT(colorbutton), "color-set", G_CALLBACK(on_setup_floatwin_color_set), this);
-+ gtk_box_pack_start(GTK_BOX(hbox1),colorbutton,false,false,0);
-+
-+ GtkWidget *hbox = gtk_hbox_new(false, 5);
-+ gtk_box_pack_start(GTK_BOX(vbox1),hbox,FALSE,FALSE, 0);
-+ label=gtk_label_new(NULL);
-+ gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Transparency:"));
-+ gtk_box_pack_start(GTK_BOX(hbox),label,FALSE,FALSE, 0);
-+ GtkWidget *hscale;
-+ hscale = gtk_hscale_new_with_range(0,80,1);
-+ gtk_label_set_mnemonic_widget(GTK_LABEL(label), hscale);
-+ int transparent=conf->get_int_at("floating_window/transparent");
-+ gtk_range_set_value(GTK_RANGE(hscale), transparent);
-+ g_signal_connect(G_OBJECT(hscale), "value-changed", G_CALLBACK(on_setup_floatwin_transparent_scale_changed), this);
-+ gtk_box_pack_start(GTK_BOX(hbox),hscale,TRUE,TRUE, 0);
-+}
-+#endif
-+
-+GtkWidget* PrefsDlg::create_notebook ()
-+{
-+ notebook = gtk_notebook_new();
-+ GtkNotebook *nb = GTK_NOTEBOOK(notebook);
-+#ifdef CONFIG_GPE
-+ gtk_notebook_set_scrollable(nb, true);
-+#else
-+ gtk_notebook_set_show_tabs(nb,false);
-+ gtk_notebook_set_show_border(nb,false);
-+ setup_logo_page ();
-+#endif
-+ setup_dictionary_scan_page ();
-+ setup_dictionary_font_page ();
-+ setup_dictionary_cache_page ();
-+ setup_dictionary_export_page ();
-+ setup_dictionary_sound_page ();
-+ setup_dict_article_rendering();
-+ setup_network_netdict();
-+ setup_mainwin_input_page ();
-+ setup_mainwin_options_page ();
-+ setup_mainwin_searchwebsite_page();
-+ setup_NotificationAreaIcon_options_page();
-+ setup_floatwin_options_page ();
-+#ifdef CONFIG_GPE
-+ gtk_notebook_set_current_page (nb, 0);
-+#else
-+ setup_floatwin_size_page ();
-+ gtk_notebook_set_current_page (nb, LOGO);
-+#endif
-+ return notebook;
-+}
-+
-+
-+PrefsDlg::PrefsDlg(GtkWindow *parent, GdkPixbuf *logo, const std::list<std::string>& key_combs_) :
-+ key_combs(key_combs_)
-+{
-+ parent_window=parent;
-+#ifndef CONFIG_GPE
-+ stardict_logo=logo;
-+#endif
-+
-+ window = NULL;
-+}
-+
-+bool PrefsDlg::ShowModal()
-+{
-+ window = gtk_dialog_new();
-+ gtk_window_set_transient_for(GTK_WINDOW(window), parent_window);
-+
-+ gtk_dialog_add_button(GTK_DIALOG(window),
-+ GTK_STOCK_HELP,
-+ GTK_RESPONSE_HELP);
-+
-+ gtk_dialog_add_button(GTK_DIALOG(window),
-+ GTK_STOCK_CLOSE,
-+ GTK_RESPONSE_CLOSE);
-+ gtk_dialog_set_default_response(GTK_DIALOG(window),
-+ GTK_RESPONSE_CLOSE);
-+ g_signal_connect(G_OBJECT(window), "response",
-+ G_CALLBACK(response_handler), this);
-+#ifndef CONFIG_GPE
-+ GtkWidget *hbox;
-+ hbox = gtk_hbox_new (FALSE, 18);
-+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 10);
-+ GtkWidget *r;
-+ r = gtk_vbox_new (FALSE, 6);
-+
-+ GtkWidget *label;
-+ label = gtk_label_new_with_mnemonic (_("Cat_egories:"));
-+ gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
-+ g_object_set (G_OBJECT (label), "xalign", 0.0, NULL);
-+ create_categories_tree();
-+
-+
-+ gtk_box_pack_start(GTK_BOX(r), label, FALSE, FALSE, 0);
-+ gtk_box_pack_start(GTK_BOX(r), categories_window, TRUE, TRUE, 0);
-+#endif
-+
-+ GtkWidget *l = create_notebook ();
-+
-+#ifdef CONFIG_GPE
-+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), l, true, true, 0);
-+#else
-+ gtk_box_pack_start (GTK_BOX (hbox), r, FALSE, FALSE, 0);
-+ gtk_box_pack_start (GTK_BOX (hbox), l, TRUE, TRUE, 0);
-+ gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), hbox, true, true, 0);
-+ gtk_label_set_mnemonic_widget (GTK_LABEL (label), categories_tree);
-+#endif
-+
-+ gtk_widget_show_all (GTK_DIALOG (window)->vbox);
-+ gtk_window_set_title (GTK_WINDOW (window), _("Preferences"));
-+
-+#ifndef CONFIG_GPE
-+ resize_categories_tree();
-+#endif
-+ gint result;
-+ while ((result = gtk_dialog_run(GTK_DIALOG(window)))==GTK_RESPONSE_HELP)
-+ ;
-+ if (result != GTK_RESPONSE_NONE) {
-+ const gchar *ch;
-+ ch = gtk_entry_get_text(eExportFile);
-+ if (ch[0])
-+ conf->set_string_at("dictionary/export_file", ch);
-+#ifndef _WIN32
-+ ch = gtk_entry_get_text(eTTSCommandline);
-+ if (ch[0]) {
-+ conf->set_string("/apps/stardict/preferences/dictionary/tts_program_cmdline", ch);
-+ gpAppFrame->oReadWord.tts_program_cmdline = ch;
-+ }
-+#endif
-+ const gchar *server;
-+ ch = gtk_entry_get_text(eStarDictServer);
-+ if (ch[0])
-+ server = ch;
-+ else
-+ server = _("dict.stardict.org");
-+ conf->set_string_at("network/server", server);
-+ int port;
-+ ch = gtk_entry_get_text(eStarDictServerPort);
-+ if (ch[0])
-+ port = atoi(ch);
-+ else
-+ port = 2628;
-+ conf->set_int_at("network/port", port);
-+ gpAppFrame->oStarDictClient.set_server(server, port);
-+#if defined(CONFIG_GTK) || defined(CONFIG_GPE)
-+ ch = gtk_entry_get_text(ePlayCommand);
-+ if (ch[0])
-+ conf->set_string_at("dictionary/play_command", ch);
-+#endif
-+ GtkTextBuffer *text_view_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tts_textview));
-+ GtkTextIter start_iter;
-+ GtkTextIter end_iter;
-+ gtk_text_buffer_get_start_iter(text_view_buffer, &start_iter);
-+ gtk_text_buffer_get_end_iter(text_view_buffer, &end_iter);
-+ gchar *text = gtk_text_buffer_get_text(text_view_buffer, &start_iter, &end_iter, FALSE);
-+ conf->set_string_at("dictionary/tts_path", text);
-+ gpAppFrame->oReadWord.LoadRealTtsPath(text);
-+ g_free(text);
-+ gtk_widget_destroy(GTK_WIDGET(window));
-+ window = NULL;
-+ return false;
-+ } else {
-+ return true;
-+ }
-+}
-+
-+void PrefsDlg::Close()
-+{
-+ if (window) {
-+ gtk_widget_destroy (window);
-+ window = NULL;
-+ }
-+}
-+
-+#ifndef CONFIG_GPE
-+void PrefsDlg::resize_categories_tree(void)
-+{
-+ //this is hack for prevet horizontaly scrolling
-+ //if you know how it make better, just write
-+ GtkRequisition rtv, rsw;
-+ gtk_widget_size_request(categories_tree, &rtv);
-+ gtk_widget_size_request(GTK_SCROLLED_WINDOW(categories_window)->vscrollbar, &rsw);
-+ gtk_widget_set_size_request(categories_window, rtv.width+rsw.width+25, -1);
-+}
-+#endif
-diff -Nur stardict-3.0.1.orig//src/readword.cpp stardict-3.0.1/src/readword.cpp
---- stardict-3.0.1.orig//src/readword.cpp 2007-07-10 02:16:04.000000000 -0500
-+++ stardict-3.0.1/src/readword.cpp 2010-05-24 00:53:36.380667202 -0500
-@@ -3,6 +3,7 @@
- #endif
-
- #include <cstring>
-+#include <cstdlib>
- #include <string>
-
- #include <glib/gi18n.h>
-diff -Nur stardict-3.0.1.orig//src/sigc++/signal.h stardict-3.0.1/src/sigc++/signal.h
---- stardict-3.0.1.orig//src/sigc++/signal.h 2007-07-10 02:16:01.000000000 -0500
-+++ stardict-3.0.1/src/sigc++/signal.h 2010-05-24 00:53:36.381666157 -0500
-@@ -18,7 +18,7 @@
- //Compilers, such as older versions of SUN Forte C++, that do not allow this also often
- //do not allow a typedef to have the same name as a class in the typedef's definition.
- //For Sun Forte CC 5.7 (SUN Workshop 10), comment this out to fix the build.
-- #define SIGC_TYPEDEF_REDEFINE_ALLOWED 1
-+// #define SIGC_TYPEDEF_REDEFINE_ALLOWED 1
- #endif
-
- namespace sigc {
-diff -Nur stardict-3.0.1.orig//src/utils.cpp stardict-3.0.1/src/utils.cpp
---- stardict-3.0.1.orig//src/utils.cpp 2007-10-21 21:25:02.000000000 -0500
-+++ stardict-3.0.1/src/utils.cpp 2010-05-24 00:53:36.381666157 -0500
-@@ -22,6 +22,8 @@
- # include "config.h"
- #endif
-
-+#include <cstring>
-+
- #include <glib.h>
- #include <glib/gi18n.h>
- #include <cstdlib>
-diff -Nur stardict-3.0.1.orig//src/utils.cpp~ stardict-3.0.1/src/utils.cpp~
---- stardict-3.0.1.orig//src/utils.cpp~ 1969-12-31 18:00:00.000000000 -0600
-+++ stardict-3.0.1/src/utils.cpp~ 2007-10-21 21:25:02.000000000 -0500
-@@ -0,0 +1,203 @@
-+/*
-+ * This file part of StarDict - A international dictionary for GNOME.
-+ * http://stardict.sourceforge.net
-+ * Copyright (C) 2005-2006 Evgeniy <dushistov@mail.ru>
-+ *
-+ * 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 3 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU Library 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.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+#include <glib.h>
-+#include <glib/gi18n.h>
-+#include <cstdlib>
-+#include <gtk/gtk.h>
-+
-+#ifdef CONFIG_GNOME
-+# include <libgnome/libgnome.h>
-+# include <libgnomeui/libgnomeui.h>
-+#elif defined(_WIN32)
-+# include <gdk/gdkwin32.h>
-+#endif
-+
-+#include "utils.h"
-+
-+
-+void ProcessGtkEvent()
-+{
-+ while (gtk_events_pending())
-+ gtk_main_iteration();
-+}
-+
-+std::string get_user_config_dir()
-+{
-+ const gchar *config_path_from_env = g_getenv("STARDICT_CONFIG_PATH");
-+ if (config_path_from_env)
-+ return config_path_from_env;
-+#ifdef _WIN32
-+ std::string res = g_get_user_config_dir();
-+ res += G_DIR_SEPARATOR_S "StarDict";
-+ return res;
-+#else
-+ std::string res;
-+ gchar *tmp = g_build_filename(g_get_home_dir(), ".stardict", NULL);
-+ res=tmp;
-+ g_free(tmp);
-+ return res;
-+#endif
-+}
-+
-+std::string combnum2str(gint comb_code)
-+{
-+ switch (comb_code) {
-+#ifdef _WIN32
-+ case 0:
-+ return "Shift";
-+ case 1:
-+ return "Alt";
-+ case 2:
-+ return "Ctrl";
-+ case 3:
-+ return "Ctrl+Alt";
-+#else
-+ case 0:
-+ return "Win";
-+ case 1:
-+ return "Shift";
-+ case 2:
-+ return "Alt";
-+ case 3:
-+ return "Ctrl";
-+ case 4:
-+ return "Ctrl+Alt";
-+ case 5:
-+ return "Ctrl+e";
-+ case 6:
-+ return "F1";
-+ case 7:
-+ return "F2";
-+ case 8:
-+ return "F3";
-+ case 9:
-+ return "F4";
-+#endif
-+ default:
-+ return "";
-+ }
-+}
-+
-+std::vector<std::string> split(const std::string& str, char sep)
-+{
-+ std::vector<std::string> res;
-+ std::string::size_type prev_pos=0, pos = 0;
-+ while ((pos=str.find(sep, prev_pos))!=std::string::npos) {
-+ res.push_back(std::string(str, prev_pos, pos-prev_pos));
-+ prev_pos=pos+1;
-+ }
-+ res.push_back(std::string(str, prev_pos, str.length()-prev_pos));
-+
-+ return res;
-+}
-+
-+GdkPixbuf *load_image_from_file(const std::string& filename)
-+{
-+ GError *err=NULL;
-+ GdkPixbuf *res=gdk_pixbuf_new_from_file(filename.c_str(), &err);
-+ if (!res) {
-+ GtkWidget *message_dlg =
-+ gtk_message_dialog_new(
-+ NULL,
-+ (GtkDialogFlags)(GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT),
-+ GTK_MESSAGE_ERROR,
-+ GTK_BUTTONS_OK,
-+ _("Can not load image. %s"), err->message);
-+
-+ gtk_dialog_set_default_response(GTK_DIALOG(message_dlg), GTK_RESPONSE_OK);
-+
-+ gtk_window_set_resizable(GTK_WINDOW(message_dlg), FALSE);
-+
-+ gtk_dialog_run(GTK_DIALOG(message_dlg));
-+ gtk_widget_destroy(message_dlg);
-+ g_error_free(err);
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ return res;
-+}
-+
-+static gchar * byte_to_hex(unsigned char nr) {
-+ gchar *result = NULL;
-+
-+ result = g_strdup_printf("%%%x%x", nr / 0x10, nr % 0x10);
-+ return result;
-+}
-+
-+char *common_encode_uri_string(const char *string)
-+{
-+ gchar *newURIString;
-+ gchar *hex, *tmp = NULL;
-+ int i, j, len, bytes;
-+
-+ /* the UTF-8 string is casted to ASCII to treat
-+ the characters bytewise and convert non-ASCII
-+ compatible chars to URI hexcodes */
-+ newURIString = g_strdup("");
-+ len = strlen(string);
-+ for(i = 0; i < len; i++) {
-+ if(g_ascii_isalnum(string[i]) || strchr("-_.!~*'()", (int)string[i]))
-+ tmp = g_strdup_printf("%s%c", newURIString, string[i]);
-+ else if(string[i] == ' ')
-+ tmp = g_strdup_printf("%s%%20", newURIString);
-+ else if((unsigned char)string[i] <= 127) {
-+ tmp = g_strdup_printf("%s%s", newURIString, hex = byte_to_hex(string[i]));g_free(hex);
-+ } else {
-+ bytes = 0;
-+ if(((unsigned char)string[i] >= 192) && ((unsigned char)string[i] <= 223))
-+ bytes = 2;
-+ else if(((unsigned char)string[i] > 223) && ((unsigned char)string[i] <= 239))
-+ bytes = 3;
-+ else if(((unsigned char)string[i] > 239) && ((unsigned char)string[i] <= 247))
-+ bytes = 4;
-+ else if(((unsigned char)string[i] > 247) && ((unsigned char)string[i] <= 251))
-+ bytes = 5;
-+ else if(((unsigned char)string[i] > 247) && ((unsigned char)string[i] <= 251))
-+ bytes = 6;
-+
-+ if(0 != bytes) {
-+ if((i + (bytes - 1)) > len) {
-+ g_warning(("Unexpected end of character sequence or corrupt UTF-8 encoding! Some characters were dropped!"));
-+ break;
-+ }
-+
-+ for(j=0; j < (bytes - 1); j++) {
-+ tmp = g_strdup_printf("%s%s", newURIString, hex = byte_to_hex((unsigned char)string[i++]));
-+ g_free(hex);
-+ g_free(newURIString);
-+ newURIString = tmp;
-+ }
-+ tmp = g_strdup_printf("%s%s", newURIString, hex = byte_to_hex((unsigned char)string[i]));
-+ g_free(hex);
-+ } else {
-+ /* sh..! */
-+ g_error("Internal error while converting UTF-8 chars to HTTP URI!");
-+ }
-+ }
-+ g_free(newURIString);
-+ newURIString = tmp;
-+ }
-+ return newURIString;
-+}
-diff -Nur stardict-3.0.1.orig//src/x11_iskeyspressed.hpp stardict-3.0.1/src/x11_iskeyspressed.hpp
---- stardict-3.0.1.orig//src/x11_iskeyspressed.hpp 2007-07-10 02:16:04.000000000 -0500
-+++ stardict-3.0.1/src/x11_iskeyspressed.hpp 2010-05-24 00:53:36.381666157 -0500
-@@ -1,6 +1,8 @@
- #ifndef _X11_ISKEYSPRESSED_HPP_
- #define _X11_ISKEYSPRESSED_HPP_
-
-+#include <memory>
-+
- #include <gdk/gdkx.h>
- #include <X11/keysym.h>
- #include <gtk/gtk.h>
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-dictdotcn-plugin/stardict_dictdotcn.cpp stardict-3.0.1/stardict-plugins/stardict-dictdotcn-plugin/stardict_dictdotcn.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-dictdotcn-plugin/stardict_dictdotcn.cpp 2007-10-10 04:28:29.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-dictdotcn-plugin/stardict_dictdotcn.cpp 2010-05-24 00:53:36.381666157 -0500
-@@ -1,6 +1,6 @@
- #include "stardict_dictdotcn.h"
- #include <glib/gi18n.h>
--#include <string>
-+#include <cstring>
- #include <list>
-
- #ifdef _WIN32
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-espeak-tts-plugin/stardict_espeak.cpp stardict-3.0.1/stardict-plugins/stardict-espeak-tts-plugin/stardict_espeak.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-espeak-tts-plugin/stardict_espeak.cpp 2007-09-19 03:27:18.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-espeak-tts-plugin/stardict_espeak.cpp 2010-05-24 00:53:36.382665737 -0500
-@@ -1,4 +1,5 @@
- #include "stardict_espeak.h"
-+#include <cstring>
- #include <espeak/speak_lib.h>
- #include <glib/gi18n.h>
-
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-gucharmap-plugin/stardict_gucharmap.cpp stardict-3.0.1/stardict-plugins/stardict-gucharmap-plugin/stardict_gucharmap.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-gucharmap-plugin/stardict_gucharmap.cpp 2007-08-31 02:10:41.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-gucharmap-plugin/stardict_gucharmap.cpp 2010-05-24 00:53:36.382665737 -0500
-@@ -1,7 +1,8 @@
- #include "stardict_gucharmap.h"
- #include <glib/gi18n.h>
- #include <gucharmap/gucharmap.h>
--#include <string>
-+#include <cstring>
-+#include <cstdlib>
-
- static char *build_dictdata(char type, const char *definition)
- {
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-html-parsedata-plugin/stardict_html_parsedata.cpp stardict-3.0.1/stardict-plugins/stardict-html-parsedata-plugin/stardict_html_parsedata.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-html-parsedata-plugin/stardict_html_parsedata.cpp 2007-09-13 02:51:55.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-html-parsedata-plugin/stardict_html_parsedata.cpp 2010-05-24 00:53:36.382665737 -0500
-@@ -1,4 +1,6 @@
- #include "stardict_html_parsedata.h"
-+#include <cstring>
-+#include <cstdlib>
- #include <glib/gi18n.h>
-
- #ifdef _WIN32
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-man-plugin/stardict_man.cpp stardict-3.0.1/stardict-plugins/stardict-man-plugin/stardict_man.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-man-plugin/stardict_man.cpp 2007-09-19 03:30:54.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-man-plugin/stardict_man.cpp 2010-05-24 00:53:36.382665737 -0500
-@@ -1,6 +1,6 @@
- #include "stardict_man.h"
- #include <glib/gi18n.h>
--#include <string>
-+#include <cstring>
-
- static const StarDictPluginSystemInfo *plugin_info = NULL;
- static bool need_prefix;
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-powerword-parsedata-plugin/stardict_powerword_parsedata.cpp stardict-3.0.1/stardict-plugins/stardict-powerword-parsedata-plugin/stardict_powerword_parsedata.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-powerword-parsedata-plugin/stardict_powerword_parsedata.cpp 2007-10-25 03:16:37.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-powerword-parsedata-plugin/stardict_powerword_parsedata.cpp 2010-05-24 00:53:36.382665737 -0500
-@@ -1,4 +1,5 @@
- #include "stardict_powerword_parsedata.h"
-+#include <cstring>
- #include <glib/gi18n.h>
-
- #ifdef _WIN32
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-qqwry-plugin/stardict_qqwry.cpp stardict-3.0.1/stardict-plugins/stardict-qqwry-plugin/stardict_qqwry.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-qqwry-plugin/stardict_qqwry.cpp 2007-11-02 03:41:26.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-qqwry-plugin/stardict_qqwry.cpp 2010-05-24 00:53:36.382665737 -0500
-@@ -1,7 +1,8 @@
- #include "stardict_qqwry.h"
- #include <glib/gi18n.h>
- #include <glib/gstdio.h>
--#include <string>
-+#include <cstring>
-+#include <cstdlib>
-
- #ifdef _WIN32
- #include <windows.h>
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-spell-plugin/stardict_spell.cpp stardict-3.0.1/stardict-plugins/stardict-spell-plugin/stardict_spell.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-spell-plugin/stardict_spell.cpp 2007-09-19 03:29:21.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-spell-plugin/stardict_spell.cpp 2010-05-24 00:53:36.383666084 -0500
-@@ -1,4 +1,5 @@
- #include "stardict_spell.h"
-+#include <cstring>
- #include <glib.h>
- #include <glib/gi18n.h>
- #include <enchant.h>
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-wiki-parsedata-plugin/stardict_wiki2xml.cpp stardict-3.0.1/stardict-plugins/stardict-wiki-parsedata-plugin/stardict_wiki2xml.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-wiki-parsedata-plugin/stardict_wiki2xml.cpp 2007-07-10 02:16:15.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-wiki-parsedata-plugin/stardict_wiki2xml.cpp 2010-05-24 00:53:36.383666084 -0500
-@@ -1,5 +1,6 @@
- #include "stardict_wiki2xml.h"
- #include "WIKI2XML.h"
-+#include <cstring>
- #include <glib.h>
-
- std::string wiki2xml(std::string &str)
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-wiki-parsedata-plugin/stardict_wiki_parsedata.cpp stardict-3.0.1/stardict-plugins/stardict-wiki-parsedata-plugin/stardict_wiki_parsedata.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-wiki-parsedata-plugin/stardict_wiki_parsedata.cpp 2007-08-31 01:41:21.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-wiki-parsedata-plugin/stardict_wiki_parsedata.cpp 2010-05-24 00:53:36.383666084 -0500
-@@ -1,5 +1,6 @@
- #include "stardict_wiki_parsedata.h"
- #include "stardict_wiki2xml.h"
-+#include <cstring>
- #include <glib/gi18n.h>
-
- #ifdef _WIN32
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-wordnet-plugin/court_widget.cpp stardict-3.0.1/stardict-plugins/stardict-wordnet-plugin/court_widget.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-wordnet-plugin/court_widget.cpp 2007-10-17 20:36:22.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-wordnet-plugin/court_widget.cpp 2010-05-24 00:53:36.383666084 -0500
-@@ -1,4 +1,5 @@
- #include "court_widget.h"
-+#include <cstring>
- #include <math.h>
- #include <list>
-
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-wordnet-plugin/stardict_wordnet.cpp stardict-3.0.1/stardict-plugins/stardict-wordnet-plugin/stardict_wordnet.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-wordnet-plugin/stardict_wordnet.cpp 2007-10-14 22:32:04.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-wordnet-plugin/stardict_wordnet.cpp 2010-05-24 00:53:36.383666084 -0500
-@@ -1,5 +1,6 @@
- #include "stardict_wordnet.h"
- #include "court_widget.h"
-+#include <cstring>
- #include <glib/gi18n.h>
-
- #ifdef _WIN32
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-wordnet-plugin/stardict_wordnet_parsedata.cpp stardict-3.0.1/stardict-plugins/stardict-wordnet-plugin/stardict_wordnet_parsedata.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-wordnet-plugin/stardict_wordnet_parsedata.cpp 2007-10-10 04:39:10.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-wordnet-plugin/stardict_wordnet_parsedata.cpp 2010-05-24 00:53:36.383666084 -0500
-@@ -1,4 +1,5 @@
- #include "stardict_wordnet_parsedata.h"
-+#include <cstring>
- #include <glib/gi18n.h>
-
- #ifdef _WIN32
-diff -Nur stardict-3.0.1.orig//stardict-plugins/stardict-xdxf-parsedata-plugin/stardict_xdxf_parsedata.cpp stardict-3.0.1/stardict-plugins/stardict-xdxf-parsedata-plugin/stardict_xdxf_parsedata.cpp
---- stardict-3.0.1.orig//stardict-plugins/stardict-xdxf-parsedata-plugin/stardict_xdxf_parsedata.cpp 2007-08-31 01:41:54.000000000 -0500
-+++ stardict-3.0.1/stardict-plugins/stardict-xdxf-parsedata-plugin/stardict_xdxf_parsedata.cpp 2010-05-24 00:53:36.384665734 -0500
-@@ -1,4 +1,5 @@
- #include "stardict_xdxf_parsedata.h"
-+#include <cstring>
- #include <glib/gi18n.h>
-
- #ifdef _WIN32
-diff -Nur stardict-3.0.1.orig//tests/t_config_file.cpp stardict-3.0.1/tests/t_config_file.cpp
---- stardict-3.0.1.orig//tests/t_config_file.cpp 2007-07-10 02:16:04.000000000 -0500
-+++ stardict-3.0.1/tests/t_config_file.cpp 2010-05-24 00:53:36.384665734 -0500
-@@ -8,6 +8,7 @@
- #include <cstring>
- #include <iterator>
- #include <iostream>
-+#include <memory>
- #include <gtk/gtk.h>
-
- #include "config_file.hpp"
-diff -Nur stardict-3.0.1.orig//tests/t_xml.cpp stardict-3.0.1/tests/t_xml.cpp
---- stardict-3.0.1.orig//tests/t_xml.cpp 2007-07-10 02:16:04.000000000 -0500
-+++ stardict-3.0.1/tests/t_xml.cpp 2010-05-24 00:53:36.384665734 -0500
-@@ -5,6 +5,7 @@
- #include <glib.h>
- #include <cstdlib>
- #include <string>
-+#include <cstring>
-
-
- static void xml_decode(const char *str, std::string& decoded)
diff --git a/misc/stardict/patches/stardict-3.0.1-gcc47.patch b/misc/stardict/patches/stardict-3.0.1-gcc47.patch
deleted file mode 100644
index ddd22f8191..0000000000
--- a/misc/stardict/patches/stardict-3.0.1-gcc47.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/src/sigc++/signal_base.h b/src/sigc++/signal_base.h
-index 582a8f4..0d77ac5 100644
---- a/src/sigc++/signal_base.h
-+++ b/src/sigc++/signal_base.h
-@@ -21,6 +21,7 @@
- #ifndef _SIGC_SIGNAL_BASE_H_
- #define _SIGC_SIGNAL_BASE_H_
-
-+#include <cstddef>
- #include <list>
- #include <sigc++config.h>
- #include <sigc++/type_traits.h>
-diff --git a/stardict-plugins/stardict-wordnet-plugin/scene.hpp b/stardict-plugins/stardict-wordnet-plugin/scene.hpp
-index 54003ca..270b2e2 100644
---- a/stardict-plugins/stardict-wordnet-plugin/scene.hpp
-+++ b/stardict-plugins/stardict-wordnet-plugin/scene.hpp
-@@ -9,6 +9,7 @@
- #include "partic.hpp"
- #include "spring.hpp"
-
-+#include <cstdlib>
- #include <vector>
- using namespace std;
-
diff --git a/misc/stardict/patches/stardict-transparent.patch b/misc/stardict/patches/stardict-transparent.patch
deleted file mode 100644
index 1f4c149d52..0000000000
--- a/misc/stardict/patches/stardict-transparent.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-Index: src/eggtrayicon.c
-===================================================================
---- src/eggtrayicon.c (revision 248)
-+++ src/eggtrayicon.c (working copy)
-@@ -66,6 +66,8 @@
-
- static void egg_tray_icon_realize (GtkWidget *widget);
- static void egg_tray_icon_unrealize (GtkWidget *widget);
-+static void egg_tray_icon_add (GtkContainer *container,
-+ GtkWidget *widget);
-
- #ifdef GDK_WINDOWING_X11
- static void egg_tray_icon_update_manager_window (EggTrayIcon *icon,
-@@ -113,6 +115,7 @@
- {
- GObjectClass *gobject_class = (GObjectClass *)klass;
- GtkWidgetClass *widget_class = (GtkWidgetClass *)klass;
-+ GtkContainerClass *container_class = (GtkContainerClass *)klass;
-
- parent_class = g_type_class_peek_parent (klass);
-
-@@ -121,6 +124,8 @@
- widget_class->realize = egg_tray_icon_realize;
- widget_class->unrealize = egg_tray_icon_unrealize;
-
-+ container_class->add = egg_tray_icon_add;
-+
- g_object_class_install_property (gobject_class,
- PROP_ORIENTATION,
- g_param_spec_enum ("orientation",
-@@ -159,8 +164,37 @@
- }
-
- #ifdef GDK_WINDOWING_X11
-+static gboolean
-+transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
-+{
-+ gdk_window_clear_area (widget->window, event->area.x, event->area.y,
-+ event->area.width, event->area.height);
-+ return FALSE;
-+}
-
- static void
-+make_transparent_again (GtkWidget *widget, GtkStyle *previous_style,
-+ gpointer user_data)
-+{
-+ gdk_window_set_back_pixmap(widget->window, NULL, TRUE);
-+}
-+
-+static void
-+make_transparent (GtkWidget *widget, gpointer user_data)
-+{
-+ if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
-+ return;
-+
-+ gtk_widget_set_app_paintable (widget, TRUE);
-+ gtk_widget_set_double_buffered (widget, FALSE);
-+ gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
-+ g_signal_connect (widget, "expose_event",
-+ G_CALLBACK (transparent_expose_event), NULL);
-+ g_signal_connect_after (widget, "style_set",
-+ G_CALLBACK (make_transparent_again), NULL);
-+}
-+
-+static void
- egg_tray_icon_get_orientation_property (EggTrayIcon *icon)
- {
- Display *xdisplay;
-@@ -238,10 +272,22 @@
- }
- return GDK_FILTER_CONTINUE;
- }
--
-+#else
-+static void
-+make_transparent (GtkWidget *widget, gpointer user_data)
-+{
-+}
- #endif
-
- static void
-+egg_tray_icon_add (GtkContainer *container, GtkWidget *widget)
-+{
-+ g_signal_connect (widget, "realize",
-+ G_CALLBACK (make_transparent), NULL);
-+ GTK_CONTAINER_CLASS (parent_class)->add (container, widget);
-+}
-+
-+static void
- egg_tray_icon_unrealize (GtkWidget *widget)
- {
- #ifdef GDK_WINDOWING_X11
-@@ -381,6 +427,8 @@
- if (GTK_WIDGET_CLASS (parent_class)->realize)
- GTK_WIDGET_CLASS (parent_class)->realize (widget);
-
-+ make_transparent (widget, NULL);
-+
- screen = gtk_widget_get_screen (widget);
- display = gdk_screen_get_display (screen);
- xdisplay = gdk_x11_display_get_xdisplay (display);
diff --git a/misc/stardict/stardict.SlackBuild b/misc/stardict/stardict.SlackBuild
index a5f01d5ca9..dc0b70a8ab 100644
--- a/misc/stardict/stardict.SlackBuild
+++ b/misc/stardict/stardict.SlackBuild
@@ -34,7 +34,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -54,8 +54,8 @@ OUTPUT=${OUTPUT:-/tmp}
DOCS="AUTHORS COPYING ChangeLog INSTALL README"
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -74,7 +74,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.bz2
+tar xf $CWD/$PRGNAM-$VERSION.tar.?z*
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
@@ -83,6 +83,14 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+sed -i 's/, enchant/, enchant-2/' dict/configure.ac
+sed -i '/AM_GCONF_SOURCE_2/d' dict/configure.ac
+sed -i '/GNOME_DOC_INIT/d' dict/configure.ac
+sed -i '/gnome-doc-utils.make/d' dict/help/Makefile.am
+
+./autogen.sh
+( cd dict ; ./autogen.sh )
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS -std=c++11" \
./configure \
@@ -94,6 +102,7 @@ CXXFLAGS="$SLKCFLAGS -std=c++11" \
--docdir=/usr/doc/$PRGNAM-$VERSION \
--disable-gucharmap \
--disable-festival \
+ --disable-flite \
--disable-espeak \
--disable-gnome-support \
--disable-schemas-install \
@@ -101,6 +110,7 @@ CXXFLAGS="$SLKCFLAGS -std=c++11" \
--disable-static \
--build=$ARCH-slackware-linux
+sed -e 's/ -shared / -Wl,-O1,--as-needed\0/g' -i {dict,lib,tools}/libtool
make
make install DESTDIR=$PKG
diff --git a/misc/stardict/stardict.info b/misc/stardict/stardict.info
index 52811dcb62..e626eca9e3 100644
--- a/misc/stardict/stardict.info
+++ b/misc/stardict/stardict.info
@@ -1,10 +1,10 @@
PRGNAM="stardict"
VERSION="3.0.6"
HOMEPAGE="http://stardict-4.sourceforge.net/"
-DOWNLOAD="http://sourceforge.net/projects/stardict-4/files/3.0.6/stardict-3.0.6.tar.bz2"
+DOWNLOAD="http://downloads.sourceforge.net/stardict-4/stardict-3.0.6.tar.bz2"
MD5SUM="93371b35482e6380e8bd4ba5d256b864"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES="rarian"
+REQUIRES="rarian gnome-common"
MAINTAINER="Ryan P.C. McQuen"
EMAIL="ryanpcmcquen@member.fsf.org"
diff --git a/misc/subsurface/README b/misc/subsurface/README
index f7624aa661..415be36263 100644
--- a/misc/subsurface/README
+++ b/misc/subsurface/README
@@ -1,7 +1,7 @@
-Subsurface is able to track single- and multi-tank dives using air, Nitrox or
-TriMix. It also allows logging of weights and exposure protection used, dive
-masters and dive buddies and enables the user to rate dives and provide
-additional dive notes.
+Subsurface is able to track single- and multi-tank dives using air,
+Nitrox or TriMix. It also allows logging of weights and exposure
+protection used, dive masters and dive buddies and enables the user to
+rate dives and provide additional dive notes.
With Subsurface the user can track dive locations including GPS
coordinates (which can also conveniently be entered using a map
@@ -18,7 +18,7 @@ installed on the system.
# FTDI="yes" ./subsurface.SlackBuild
-Note: To build with QWebEngine instead of QtWebKit then pass QWEBENGINE=yes
-to the slackbuild.
+Note: To build with QWebEngine instead of QtWebKit, pass QWEBENGINE=yes
+to the slackbuild:
# QWEBENGINE="yes" ./subsurface.SlackBuild
diff --git a/misc/subsurface/subsurface.SlackBuild b/misc/subsurface/subsurface.SlackBuild
index e27cdcd8e4..5aa202fbde 100644
--- a/misc/subsurface/subsurface.SlackBuild
+++ b/misc/subsurface/subsurface.SlackBuild
@@ -83,17 +83,11 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+sed -i '/^#include <QPainter>$/a #include <QPainterPath>' desktop-widgets/groupedlineedit.cpp
+
# Fix building against newer versions of libgit2
patch -p1 < $CWD/libgit2-version.patch
-# Ugly hack to avoid header collision between grantlee and grantlee-qt5.
-# https://mail.kde.org/pipermail/release-team/2015-August/008911.html
-sed -i 's|#include <grantlee_templates.h>|#include "grantlee_templates_local.h"|' \
- desktop-widgets/templatelayout.h
-sed -e 's|grantlee/|Grantlee5/grantlee/|' \
- /usr/include/Grantlee5/grantlee_templates.h \
- > grantlee_templates_local.h
-
# Fix the location detection of googlemaps
sed -i "s|../install-root|googlemaps-v.${GOOGLEMAPSVER}|" CMakeLists.txt
diff --git a/misc/sunwait/README b/misc/sunwait/README
index 84d5e02b45..ebc8c9e5e7 100644
--- a/misc/sunwait/README
+++ b/misc/sunwait/README
@@ -1,5 +1,5 @@
-Sunwait calculates sunrise or sunset times with civil, nautical, astronomical,
-and custom twilights. It is intended for use in home automation with Windows
-Task Scheduler or cron. The program can wait from invocation until the event
-specified on the command line occurs or it can return immediately indicating if
-it is day or night.
+Sunwait calculates sunrise or sunset times with civil, nautical,
+astronomical, and custom twilights. It is intended for use in home
+automation with Windows Task Scheduler or cron. The program can wait
+from invocation until the event specified on the command line occurs
+or it can return immediately indicating if it is day or night.
diff --git a/misc/swege/README b/misc/swege/README
new file mode 100644
index 0000000000..e62ec2e133
--- /dev/null
+++ b/misc/swege/README
@@ -0,0 +1,23 @@
+swege is a Static WEbsite GEnerator written in C. It leverages the
+discount library for generating a website from a set of Markdown files.
+
+You can obtain a template project from /usr/share/swege-*/example.
+
+Copy the example directory to a location of choice:
+`cp -r /usr/share/swege-*/example ~/mycoolsite`
+
+Enter your directory, edit swege.ini and run swege:
+`cd ~/mycoolsite && $EDITOR swege.ini && swege`
+
+For FAQ, and other information read the project README.md, can be
+found in /usr/share/swege-*/repository-README.md.
+
+-----------------------------------------------------------------------
+
+You have to write two files: the header, and the footer. These get
+added to the top, and the bottom of the rest of the pages of your
+website.
+
+All the Markdown (*.md) files, prior to being copied into the output
+folder, are translated into HTML during "compilation". The rest of the
+files are simply copied to the output folder.
diff --git a/misc/swege/slack-desc b/misc/swege/slack-desc
new file mode 100644
index 0000000000..b40ad4817e
--- /dev/null
+++ b/misc/swege/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+swege: swege (Static WEbsite GEnerator)
+swege:
+swege: Bloat free static website generator written in C99.
+swege:
+swege:
+swege:
+swege:
+swege:
+swege:
+swege: https://github.com/sakhmatd/swege
+swege:
diff --git a/misc/swege/swege.SlackBuild b/misc/swege/swege.SlackBuild
new file mode 100644
index 0000000000..7a08976ec0
--- /dev/null
+++ b/misc/swege/swege.SlackBuild
@@ -0,0 +1,91 @@
+#!/bin/bash
+
+# Slackware build script for swege
+
+# Copyright 2022 Ivan Kovmir <ikovmir@uninstance.cc>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd "$(dirname "$0")" ; CWD=$(pwd)
+
+PRGNAM=swege
+VERSION=${VERSION:-2.0.0}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$(uname -m)" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$(uname -m) ;;
+ esac
+fi
+
+if [ -n "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP="${TMP:-/tmp/SBo}"
+SRC="$TMP/$PRGNAM-$VERSION"
+PKG="$TMP/package-$PRGNAM"
+OUTPUT="${OUTPUT:-/tmp}"
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+else
+ SLKCFLAGS="-O2"
+fi
+
+set -e
+
+rm -rf "$PKG"
+mkdir -p "$TMP" "$PKG" "$OUTPUT"
+cd "$TMP"
+rm -rf "$PRGNAM-$VERSION"
+tar xvf "$CWD/$PRGNAM-$VERSION.tar.gz"
+cd "$PRGNAM-$VERSION"
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+INSTALL_PREFIX="/usr"
+
+CFLAGS="$SLKCFLAGS" make
+DESTDIR="$PKG" PREFIX="$INSTALL_PREFIX" make install
+strip -s "$PKG$INSTALL_PREFIX/bin/$PRGNAM"
+
+mkdir -p "$PKG/install"
+mkdir -p "$PKG/usr/doc/$PRGNAM-$VERSION"
+mkdir -p "$PKG/usr/share/$PRGNAM-$VERSION"
+cp "$CWD/$PRGNAM.SlackBuild" "$PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild"
+cp "$CWD/README" "$PKG/usr/doc/$PRGNAM-$VERSION/README"
+cp "$CWD/slack-desc" "$PKG/install/slack-desc"
+
+# Copy useful things directly from the repository folder.
+cp "$SRC/README.md" "$PKG/usr/share/$PRGNAM-$VERSION/repository-README.md"
+cp "$SRC/LICENSE" "$PKG/usr/share/$PRGNAM-$VERSION/LICENSE"
+cp -r "$SRC/example" "$PKG/usr/share/$PRGNAM-$VERSION/example"
+
+cd "$PKG"
+/sbin/makepkg -l y -c n "$OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
diff --git a/misc/swege/swege.info b/misc/swege/swege.info
new file mode 100644
index 0000000000..8b80e32ee9
--- /dev/null
+++ b/misc/swege/swege.info
@@ -0,0 +1,10 @@
+PRGNAM="swege"
+VERSION="2.0.0"
+HOMEPAGE="https://github.com/sakhmatd/swege"
+DOWNLOAD="https://github.com/sakhmatd/swege/archive/2.0.0/swege-2.0.0.tar.gz"
+MD5SUM="49cf816b1ce1c581de6f3d4cf030dd76"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="discount"
+MAINTAINER="Ivan Kovmir"
+EMAIL="i@kovmir.eu"
diff --git a/misc/tal/README b/misc/tal/README
index 12a15e5f08..e3b1b5b806 100644
--- a/misc/tal/README
+++ b/misc/tal/README
@@ -1,6 +1,20 @@
+tal (trailer alignment filter)
+
tal is a filter that reads in lines from standard input. The lines are
sent to standard output with common trailing characters aligned so that
they all begin and end on the same column of text. This can be used to
repair 'broken boxes' or align the backslashes on long macro definitions
in C programs. But tal will work on any kind of common ending and is
especially useful as a filter for the vim text editor.
+
+Example: tal turns this:
+
+ /* foo */
+ /* bar */
+ /* blah blah blah */
+
+...into this:
+
+ /* foo */
+ /* bar */
+ /* blah blah blah */
diff --git a/misc/tal/tal.SlackBuild b/misc/tal/tal.SlackBuild
index 5e6c0df77e..de0560177b 100644
--- a/misc/tal/tal.SlackBuild
+++ b/misc/tal/tal.SlackBuild
@@ -1,32 +1,24 @@
#!/bin/bash
# Slackware build script for tal
+
+# Copyright 2022-2023 B. Watson <urchlay@slackware.uk>
# Copyright 2018 Donald Cooley South Haven, Indiana USA
-# All rights reserved
-# Written by Peter Wang <novalazy@gmail.com>
-
-# Redistribution and use of this script, with or without modification, is
-# permitted provided that the following conditions are met:
-#
-# 1. Redistributions of this script must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
-# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# Written by Peter Wang <email removed>
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20230222 bkw: BUILD=3
+# - finally update EMAIL and MAINTAINER in .info file (derp).
+# - make sure $PKG/usr/bin exists before trying to install there.
+# - fix compile warnings.
+# - add example to README.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=tal
VERSION=${VERSION:-1.9}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -38,9 +30,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -73,27 +62,36 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-
-make CFLAGS="$SLKCFLAGS -ansi" tal
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+# 20230223 bkw: fix a potential bug: uninitialized variable.
+# Honestly this isn't much of a fix: if you have files called foo and
+# bar, and you run "tal foo bar baz" (which is an error, it doesn't
+# take 3 filenames), the outfile_existed variable is supposed to
+# prevent tal from deleting bar if it already existed. Which it
+# does. But instead it truncates bar to 0 bytes, which is actually
+# worse than deleting it IMO. However, I'm leaving the logic as-is.
+# This just makes it always work as the author intended.
+sed -i '/int outfile_existed/s,;, = 0;,' tal.c
+
+# 20230222 bkw: WTF was the -ansi flag being passed? All it did
+# was cause strdup()'s prototype to disappear (implicit declaration
+# warning, plus int-to-pointer cast warnings).
+make CFLAGS="-Wall $SLKCFLAGS" tal
mkdir -p $PKG/usr/bin
-cp -a tal $PKG/usr/bin
-strip --strip-unneeded $PKG/usr/bin/tal
+install -s -m0755 $PRGNAM $PKG/usr/bin
mkdir -p $PKG/usr/man/man1
gzip -9c tal.1 > $PKG/usr/man/man1/tal.1.gz
-# INSTALL contains a vim tip so let's keep it.
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- INSTALL LICENSE \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+# INSTALL contains a vim tip so let's extract it.
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+sed -n '/^For use with vim/,$p' INSTALL > $PKGDOC/vimtip.txt
+cp -a LICENSE $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/tal/tal.info b/misc/tal/tal.info
index 7f54583344..f98ef40057 100644
--- a/misc/tal/tal.info
+++ b/misc/tal/tal.info
@@ -6,5 +6,5 @@ MD5SUM="a22e53f5f0d701a408e98e480311700b"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Donald Cooley"
-EMAIL="chytraeu@sdf.org"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/tegaki-zinnia-japanese/tegaki-zinnia-japanese.SlackBuild b/misc/tegaki-zinnia-japanese/tegaki-zinnia-japanese.SlackBuild
index cddd1609e6..ad911b181d 100644
--- a/misc/tegaki-zinnia-japanese/tegaki-zinnia-japanese.SlackBuild
+++ b/misc/tegaki-zinnia-japanese/tegaki-zinnia-japanese.SlackBuild
@@ -23,25 +23,22 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
+# 20220222 bkw: Modified by SlackBuilds.org, BUILD=2:
+# - fix build when TMP is set to something other than /tmp (srsly?!)
+# - ARCH=noarch
+# - just copy the files where they go instead of screwing around with
+# sedding a Makefile so 'make install' works.
+
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=tegaki-zinnia-japanese
VERSION=${VERSION:-0.3}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-if [ -z "$ARCH" ]; then
- case "$( uname -m )" in
- i?86) ARCH=i486 ;;
- arm*) ARCH=arm ;;
- *) ARCH=$( uname -m ) ;;
- esac
-fi
+ARCH=noarch
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -51,20 +48,6 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
@@ -74,17 +57,11 @@ rm -rf $PRGNAM-$VERSION
unzip $CWD/$PRGNAM-$VERSION.zip
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
- -o -perm 511 \) -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
- -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+chmod 644 *
-#prepare
-sed -i 's|installpath=/usr/local/|installpath=/tmp/SBo/package-tegaki-zinnia-japanese/usr/|g' \
- ./Makefile
-make
-make install DESTDIR=$PKG
+DIR=$PKG/usr/share/tegaki/models/zinnia/
+mkdir -p $DIR
+cp -a handwriting-ja.m* $DIR
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING VERSION README.txt $PKG/usr/doc/$PRGNAM-$VERSION
diff --git a/misc/tidyp/tidyp.SlackBuild b/misc/tidyp/tidyp.SlackBuild
index 91b70177bc..29ac057118 100644
--- a/misc/tidyp/tidyp.SlackBuild
+++ b/misc/tidyp/tidyp.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=tidyp
VERSION=${VERSION:-1.04}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -105,6 +105,8 @@ cp -a \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/tinytldr/README b/misc/tinytldr/README
new file mode 100644
index 0000000000..0d4abd291c
--- /dev/null
+++ b/misc/tinytldr/README
@@ -0,0 +1,7 @@
+Command line client for https://tldr.sh/
+
+untldr works fully offline, do not forget to run `tldr -u` to fetch the
+pages.
+
+`tldr <page_name>` to view a page.
+`tldr -h` to view all the options.
diff --git a/misc/tinytldr/slack-desc b/misc/tinytldr/slack-desc
new file mode 100644
index 0000000000..73826056d5
--- /dev/null
+++ b/misc/tinytldr/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|' on
+# the right side marks the last column you can put a character in. You must make
+# exactly 11 lines for the formatting to be correct. It's also customary to
+# leave one space after the ':'.
+
+ |-----handy-ruler------------------------------------------------------|
+tinytldr: tinytldr (tldr.sh command line client)
+tinytldr:
+tinytldr: Minimalist https://tldr.sh command line client in C99.
+tinytldr:
+tinytldr:
+tinytldr:
+tinytldr:
+tinytldr:
+tinytldr:
+tinytldr: https://github.com/kovmir/tinytldr
+tinytldr:
diff --git a/misc/tinytldr/tinytldr.SlackBuild b/misc/tinytldr/tinytldr.SlackBuild
new file mode 100644
index 0000000000..091be31896
--- /dev/null
+++ b/misc/tinytldr/tinytldr.SlackBuild
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+# Slackware build script for untldr
+
+# Copyright 2022-2023 Ivan Kovmir <i@kovmir.eu>
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd "$(dirname "$0")" ; CWD=$(pwd)
+
+PRGNAM=tinytldr
+BINNAM=tldr
+VERSION=${VERSION:-1.1.3}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$(uname -m)" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$(uname -m) ;;
+ esac
+fi
+
+if [ -n "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP="${TMP:-/tmp/SBo}"
+SRC="$TMP/$PRGNAM-$VERSION"
+PKG="$TMP/package-$PRGNAM"
+OUTPUT="${OUTPUT:-/tmp}"
+
+set -e
+
+rm -rf "$PKG"
+mkdir -p "$TMP" "$PKG" "$OUTPUT"
+cd "$TMP"
+rm -rf $PRGNAM-"$VERSION"
+tar xvf "$CWD"/$PRGNAM-"$VERSION".tar.gz
+cd $PRGNAM-"$VERSION"
+chown -R root:root .
+chmod -R u+w,go+r-w,a-s .
+
+make
+DESTDIR="$PKG" PREFIX="/usr" make install
+strip -s "$PKG/usr/bin/$BINNAM"
+
+mkdir -p "$PKG/install"
+mkdir -p "$PKG/usr/doc/$PRGNAM-$VERSION"
+mkdir -p "$PKG/usr/share/$PRGNAM-$VERSION"
+cp "$CWD/$PRGNAM.SlackBuild" "$PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild"
+cp "$CWD/README" "$PKG/usr/doc/$PRGNAM-$VERSION/README"
+cp "$CWD/slack-desc" "$PKG/install/slack-desc"
+
+# Copy certain things directly from the repository.
+cp "$SRC/README.md" "$PKG/usr/share/$PRGNAM-$VERSION/repository-README.md"
+cp "$SRC/LICENSE" "$PKG/usr/share/$PRGNAM-$VERSION/LICENSE"
+
+cd "$PKG"
+/sbin/makepkg -l y -c n "$OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
diff --git a/misc/tinytldr/tinytldr.info b/misc/tinytldr/tinytldr.info
new file mode 100644
index 0000000000..7aeb06a983
--- /dev/null
+++ b/misc/tinytldr/tinytldr.info
@@ -0,0 +1,10 @@
+PRGNAM="tinytldr"
+VERSION="1.1.3"
+HOMEPAGE="https://github.com/kovmir/tinytldr#readme"
+DOWNLOAD="https://github.com/kovmir/tinytldr/archive/v1.1.3/tinytldr-1.1.3.tar.gz"
+MD5SUM="bc9a494d0cabe66fdb56044eb98e3d40"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Ivan Kovmir"
+EMAIL="i@kovmir.eu"
diff --git a/misc/toilet/toilet.SlackBuild b/misc/toilet/toilet.SlackBuild
index 04386e0345..3e1fcad392 100644
--- a/misc/toilet/toilet.SlackBuild
+++ b/misc/toilet/toilet.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/torrentinfo/README b/misc/torrentinfo/README
index b7fc920a00..bf2763df72 100644
--- a/misc/torrentinfo/README
+++ b/misc/torrentinfo/README
@@ -1,4 +1,5 @@
-TorrentInfo is a command line script that parses .torrent files and displays
-the information contained within them. Currently, it can display a summary of
-the whole torrent, information on each file within the torrent, and a full
-hierarchical dump of the torrent file's contents.
+TorrentInfo is a command line script that parses .torrent files
+and displays the information contained within them. Currently, it
+can display a summary of the whole torrent, information on each file
+within the torrent, and a full hierarchical dump of the torrent file's
+contents.
diff --git a/misc/torrentinfo/torrentinfo.info b/misc/torrentinfo/torrentinfo.info
index ee09e6ad08..93b5cd76b2 100644
--- a/misc/torrentinfo/torrentinfo.info
+++ b/misc/torrentinfo/torrentinfo.info
@@ -1,7 +1,7 @@
PRGNAM="torrentinfo"
VERSION="1.8.6"
HOMEPAGE="https://github.com/Fuuzetsu/torrentinfo"
-DOWNLOAD="https://github.com/Fuuzetsu/torrentinfo/archive/v1.8.6.tar.gz"
+DOWNLOAD="https://github.com/Fuuzetsu/torrentinfo/archive/v1.8.6/torrentinfo-1.8.6.tar.gz"
MD5SUM="1fbc54b39cc091db1db77f7574a702b3"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/txt2regex/txt2regex.SlackBuild b/misc/txt2regex/txt2regex.SlackBuild
index 6d7164854f..f97cee81e1 100644
--- a/misc/txt2regex/txt2regex.SlackBuild
+++ b/misc/txt2regex/txt2regex.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for txt2regex
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
@@ -15,9 +15,6 @@ TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
ARCH=noarch
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/txt2regex/txt2regex.info b/misc/txt2regex/txt2regex.info
index ff487ac5a3..5397fc7fd6 100644
--- a/misc/txt2regex/txt2regex.info
+++ b/misc/txt2regex/txt2regex.info
@@ -1,10 +1,10 @@
PRGNAM="txt2regex"
VERSION="0.9"
-HOMEPAGE="http://aurelio.net/projects/txt2regex/"
+HOMEPAGE="https://aurelio.net/projects/txt2regex/"
DOWNLOAD="https://github.com/aureliojargas/txt2regex/archive/v0.9/txt2regex-0.9.tar.gz"
-MD5SUM="7066adc50e55300f5bcad276cf65b852"
+MD5SUM="7374c32ea208939ead6e8235ad23b6fb"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/txt2tags/txt2tags.SlackBuild b/misc/txt2tags/txt2tags.SlackBuild
index ea959bc735..1cd087aaa0 100644
--- a/misc/txt2tags/txt2tags.SlackBuild
+++ b/misc/txt2tags/txt2tags.SlackBuild
@@ -2,41 +2,40 @@
# Slackware Build script for txt2tags
-# Copyright (c) 2009, eviljames <storgeek [at] gmail [dot] com>
-#
-# Permission to use, copy, modify, and/or distribute this software for any
-# purpose with or without fee is hereby granted, provided that the above
-# copyright notice and this permission notice appear in all copies.
-#
-# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
-# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
-# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
-# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
-# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-#
-# Modified by the SlackBuilds.org project
+# Originally written 2009, eviljames <storgeek [at] gmail [dot] com>
+# Now maintained by B. Watson <urchlay@slackware.uk>
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+# 20231120 bkw: update for v3.9.
+# 20230711 bkw: update for v3.8.
+# 20220110 bkw:
+# - take over maintenance.
+# - update for v3.7.
+
+# Note: the old version had a lot of things that are missing from
+# the 3.x branch. See https://github.com/txt2tags/txt2tags/ for
+# details. The 3.x branch has the sole advantage of being written in
+# python 3. Since this is only included on SBo as a dependency for
+# xdgmenumaker, I don't care... but maybe someone might want to do a
+# txt2tags-legacy2 build if they need it.
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=txt2tags
-VERSION=${VERSION:-r1172}
+VERSION=${VERSION:-3.9}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -46,20 +45,6 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "i686" ]; then
- SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
-elif [ "$ARCH" = "x86_64" ]; then
- SLKCFLAGS="-O2 -fPIC"
- LIBDIRSUFFIX="64"
-else
- SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
-fi
-
set -e
rm -rf $PKG
@@ -69,42 +54,25 @@ rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.?z*
cd $PRGNAM-$VERSION
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
- -exec chmod 755 {} \; -o \
- \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
- -exec chmod 644 {} \;
-
-python setup.py install --root=$PKG
-
-mkdir -p $PKG/usr/man/man1
-gzip -9 -c doc/English/manpage.man > $PKG/usr/man/man1/$PRGNAM.1.gz
-# Install the available translations
-for i in pt de fr es zh eu ca it; do mkdir -p $PKG/usr/man/$i/man1; done
-gzip -9 -c doc/Portuguese/manpage-pt.man > $PKG/usr/man/pt/man1/$PRGNAM.1.gz
-gzip -9 -c doc/German/manpage-de.man > $PKG/usr/man/de/man1/$PRGNAM.1.gz
-gzip -9 -c doc/French/manpage-fr.man > $PKG/usr/man/fr/man1/$PRGNAM.1.gz
-gzip -9 -c doc/Spanish/manpage-es.man > $PKG/usr/man/es/man1/$PRGNAM.1.gz
-gzip -9 -c doc/Chinese/manpage-zh.man > $PKG/usr/man/zh/man1/$PRGNAM.1.gz
-gzip -9 -c doc/Basque/manpage-eu.man > $PKG/usr/man/eu/man1/$PRGNAM.1.gz
-gzip -9 -c doc/Catalan/manpage-ca.man > $PKG/usr/man/ca/man1/$PRGNAM.1.gz
-gzip -9 -c doc/Italian/manpage-it.man > $PKG/usr/man/it/man1/$PRGNAM.1.gz
-
-mkdir -p $PKG/usr/share/applications
-install -m 0644 dist/$PRGNAM.desktop $PKG/usr/share/applications/$PRGNAM.desktop
-mkdir -p $PKG/usr/share/pixmaps
-install -m 0644 $CWD/$PRGNAM.png $PKG/usr/share/pixmaps/$PRGNAM.png
-
-mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a \
- AUTHORS COPYING ChangeLog README extras samples test \
- doc/English/txt2tags-quickref.pdf doc/English/userguide.pdf \
- $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
+
+python3 setup.py install --root=$PKG
+
+export PATH=$PATH:$PKG/usr/bin
+export PYTHONPATH=$PKG/$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"):$PYTHONPATH
+cd docs
+sh build-docs.sh
+rm */*.t2t *.sh
+cd -
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKGDOC
+cp -a COPYING *.md extras samples test docs/* $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
-cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/txt2tags/txt2tags.info b/misc/txt2tags/txt2tags.info
index afbd3baa7a..1ed23960af 100644
--- a/misc/txt2tags/txt2tags.info
+++ b/misc/txt2tags/txt2tags.info
@@ -1,10 +1,10 @@
PRGNAM="txt2tags"
-VERSION="r1172"
+VERSION="3.9"
HOMEPAGE="https://txt2tags.org"
-DOWNLOAD="http://ponce.cc/slackware/sources/repo/txt2tags-r1172.tar.xz"
-MD5SUM="13dc51b155824cdd9ae2ada885a503fd"
+DOWNLOAD="https://github.com/txt2tags/txt2tags/archive/3.9/txt2tags-3.9.tar.gz"
+MD5SUM="f0479f60e64708af9ea09a381bc8d6f8"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Didier Spaier"
-EMAIL="didier at slint dot fr"
+MAINTAINER="B. Watson"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/txt2tags/txt2tags.png b/misc/txt2tags/txt2tags.png
deleted file mode 100644
index 5ff00fcb7d..0000000000
--- a/misc/txt2tags/txt2tags.png
+++ /dev/null
Binary files differ
diff --git a/misc/utimer/utimer-0.4-fno-common.patch b/misc/utimer/utimer-0.4-fno-common.patch
new file mode 100644
index 0000000000..a8386fe8e2
--- /dev/null
+++ b/misc/utimer/utimer-0.4-fno-common.patch
@@ -0,0 +1,29 @@
+--- a/src/utimer.h
++++ b/src/utimer.h
+@@ -66,9 +66,9 @@
+ #define TIMER_PRINT_RATE_MSEC 79
+ #define TIMER_CHECK_RATE_MSEC 500
+
+-GMainLoop *loop;
+-gboolean paused;
+-struct termios savedttystate;
+-Config ut_config;
++extern GMainLoop *loop;
++extern gboolean paused;
++extern struct termios savedttystate;
++extern Config ut_config;
+
+ #endif /* UTIMER_H */
+--- a/src/utils.c
++++ b/src/utils.c
+@@ -36,6 +36,10 @@
+ #include "utils.h"
+ #include "utimer.h"
+
++GMainLoop *loop;
++gboolean paused;
++struct termios savedttystate;
++Config ut_config;
+
+ gulong ul_add (gulong a, gulong b)
+ {
diff --git a/misc/utimer/utimer-0.4-locale.patch b/misc/utimer/utimer-0.4-locale.patch
new file mode 100644
index 0000000000..68acdd471a
--- /dev/null
+++ b/misc/utimer/utimer-0.4-locale.patch
@@ -0,0 +1,10 @@
+--- a/src/utimer.h
++++ b/src/utimer.h
+@@ -35,6 +35,7 @@
+ #include <stdlib.h>
+ #include <glib.h>
+ #include <glib/gi18n-lib.h>
++#include <locale.h>
+
+ #include "utils.h"
+ #include "timer.h"
diff --git a/misc/utimer/utimer.SlackBuild b/misc/utimer/utimer.SlackBuild
index a5aab681ea..3d69312a36 100644
--- a/misc/utimer/utimer.SlackBuild
+++ b/misc/utimer/utimer.SlackBuild
@@ -54,6 +54,9 @@ cd $TMP
rm -rf $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
cd $PRGNAM-$VERSION
+# some patches from gentoo
+patch -p1 < $CWD/utimer-0.4-fno-common.patch
+patch -p1 < $CWD/utimer-0.4-locale.patch
chown -R root:root .
find -L . \
\( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 -o -perm 511 \) \
diff --git a/misc/vdpauinfo/vdpauinfo.SlackBuild b/misc/vdpauinfo/vdpauinfo.SlackBuild
index 81400fa51b..c04cc6ef14 100644
--- a/misc/vdpauinfo/vdpauinfo.SlackBuild
+++ b/misc/vdpauinfo/vdpauinfo.SlackBuild
@@ -25,14 +25,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=vdpauinfo
-VERSION=${VERSION:-1.0}
+VERSION=${VERSION:-1.4}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/vdpauinfo/vdpauinfo.info b/misc/vdpauinfo/vdpauinfo.info
index 72e040a866..525be22797 100644
--- a/misc/vdpauinfo/vdpauinfo.info
+++ b/misc/vdpauinfo/vdpauinfo.info
@@ -1,10 +1,10 @@
PRGNAM="vdpauinfo"
-VERSION="1.0"
-HOMEPAGE="https://cgit.freedesktop.org/~aplattner/vdpauinfo"
-DOWNLOAD="https://people.freedesktop.org/~aplattner/vdpau/vdpauinfo-1.0.tar.gz"
-MD5SUM="4eba3e7bf5062b9c245276860493804f"
+VERSION="1.4"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/VDPAU/"
+DOWNLOAD="https://gitlab.freedesktop.org/vdpau/vdpauinfo/uploads/8f047eac351672cc4316724edb6ad2b2/vdpauinfo-1.4.tar.gz"
+MD5SUM="b0d43317b6bfbf4d55be07f5ad5c085f"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="Edward W. Koenig"
-EMAIL="kingbeowulf@gmail.com"
+EMAIL="kingbeowulf@linuxgalaxy.org"
diff --git a/misc/vttest/vttest.SlackBuild b/misc/vttest/vttest.SlackBuild
index fd495d69ca..e2443ec8b4 100644
--- a/misc/vttest/vttest.SlackBuild
+++ b/misc/vttest/vttest.SlackBuild
@@ -2,10 +2,14 @@
# Slackware build script for vttest
-# Written by B. Watson (yalhcru@gmail.com)
+# Written by B. Watson (urchlay@slackware.uk)
# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+# 20240314 bkw: update for 2.7.20240218.
+# 20231120 bkw: update for 2.7.20230924.
+# 20230908 bkw: update for 2.7.20230201.
+# 20230103 bkw: update for 2.7.20221229.
# 20210220 bkw: update for 2.7.20210210.
# 20201025 bkw: update for 2.7.20200920.
# 20200316 bkw: update for 2.7.20200303.
@@ -16,7 +20,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=vttest
-VERSION=${VERSION:-2.7.20210210}
+VERSION=${VERSION:-2.7.20240218}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -29,9 +33,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/vttest/vttest.info b/misc/vttest/vttest.info
index 9f00527391..661cc3ac47 100644
--- a/misc/vttest/vttest.info
+++ b/misc/vttest/vttest.info
@@ -1,10 +1,10 @@
PRGNAM="vttest"
-VERSION="2.7.20210210"
-HOMEPAGE="http://invisible-island.net/vttest/"
-DOWNLOAD="ftp://ftp.invisible-island.net/vttest/vttest-20210210.tgz"
-MD5SUM="21c7493640a7912ea746b3eb0689f2a7"
+VERSION="2.7.20240218"
+HOMEPAGE="https://invisible-island.net/vttest/"
+DOWNLOAD="https://invisible-mirror.net/archives/vttest/vttest-20240218.tgz"
+MD5SUM="1e1cbd3619feb138c5c8faa8ebc599d7"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/wcd/wcd.SlackBuild b/misc/wcd/wcd.SlackBuild
index c7054210d0..df3f6041b7 100644
--- a/misc/wcd/wcd.SlackBuild
+++ b/misc/wcd/wcd.SlackBuild
@@ -2,28 +2,20 @@
# Slackware build script for wcd
-# Originally written by:
-# Ryan P.C. McQuen <email removed>
+# Originally written by Ryan P.C. McQuen <email removed>
+# Now maintained by B. Watson <urchlay@slackware.uk>
-# Now maintained by B. Watson <yalhcru@gmail.com>
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version, with the following exception:
-# the text of the GPL license may be omitted.
+# 20231120 bkw: updated for v6.0.5.
+# 20230103 bkw: updated for v6.0.5_beta3. again, no code changes,
+# only translations.
-# 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. Compiling,
-# interpreting, executing or merely reading the text of the program
-# may result in lapses of consciousness and/or very being, up to and
-# including the end of all existence and the Universe as we know it.
-# See the GNU General Public License for more details.
-
-# You may have received a copy of the GNU General Public License along
-# with this program (most likely, a file named COPYING). If not, see
-# <https://www.gnu.org/licenses/>.
+# 20210910 bkw:
+# - updated for v6.0.4_beta2. there are no code changes in the beta,
+# only the documentation and translations have been updated, so
+# it's a safe upgrade that won't break anything.
+# - relicense as WTFPL with permission from original author.
# 20191201 bkw: updated for v6.0.3.
# 20180612 bkw: updated for v6.0.2.
@@ -33,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=wcd
-VERSION=${VERSION:-6.0.3}
+VERSION=${VERSION:-6.0.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -46,9 +38,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -60,12 +49,17 @@ OUTPUT=${OUTPUT:-/tmp}
set -e
+TARVER=${VERSION/_/-}
+
+DOCDIR=/usr/doc/$PRGNAM-$VERSION
+PKGDOC=$PKG/$DOCDIR
+
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
-cd $PRGNAM-$VERSION
+rm -rf $PRGNAM-$TARVER
+tar xvf $CWD/$PRGNAM-$TARVER.tar.gz
+cd $PRGNAM-$TARVER
chown -R root:root .
find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
\! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
@@ -86,34 +80,30 @@ fi
cd src
-RPM_OPT_FLAGS="$SLKCFLAGS" \
- make all
+make RPM_OPT_FLAGS="$SLKCFLAGS" EXT=""
+
make \
- prefix=$PKG/usr \
- docdir=$PKG/usr/doc/$PRGNAM-$VERSION \
- mandir=$PKG/usr/man \
+ INSTALL_PROGRAM="install -m 0755 -s" \
+ DESTDIR=$PKG \
+ EXT="" \
+ prefix=/usr \
+ docdir=$DOCDIR \
+ mandir=/usr/man \
install
-# remove .exe so command is executable
-mv $PKG/usr/bin/wcd.exe $PKG/usr/bin/wcd
-
# Put _all_ man pages under usr/man
mv $PKG/usr/share/man/* $PKG/usr/man
rmdir $PKG/usr/share/man
-find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
- | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
-
-find $PKG/usr/man -type f -exec gzip -9 {} \;
-for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
+gzip -9 $PKG/usr/man/{*,}/man1/*.1
# profile.d scripts, installed executable (like mc does).
mkdir -p $PKG/etc/profile.d/
install -m0755 -oroot -groot \
$CWD/$PRGNAM.sh $CWD/$PRGNAM.csh $PKG/etc/profile.d/
-cp -a ../doc/INSTALL.txt $PKG/usr/doc/$PRGNAM-$VERSION
-cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$PRGNAM.SlackBuild
+rm -f $PKGDOC/{INSTALL,UNIX}.txt # remove compile instructions (useless)
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/wcd/wcd.info b/misc/wcd/wcd.info
index e69dd930eb..c663d860fd 100644
--- a/misc/wcd/wcd.info
+++ b/misc/wcd/wcd.info
@@ -1,10 +1,10 @@
PRGNAM="wcd"
-VERSION="6.0.3"
-HOMEPAGE="http://waterlan.home.xs4all.nl/"
-DOWNLOAD="http://waterlan.home.xs4all.nl/wcd/wcd-6.0.3.tar.gz"
-MD5SUM="833dec747e810aacc060f7ef50fade85"
+VERSION="6.0.5"
+HOMEPAGE="https://waterlan.home.xs4all.nl/wcd.html"
+DOWNLOAD="https://waterlan.home.xs4all.nl/wcd/wcd-6.0.5.tar.gz"
+MD5SUM="f5fdbbf5e26cc76d43cf3ae3458df77e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/weather/README b/misc/weather/README
index 49d9c5c14f..c7cf1a169a 100644
--- a/misc/weather/README
+++ b/misc/weather/README
@@ -1,20 +1,23 @@
-This command-line utility is intended to provide quick access to current
-weather conditions and forecasts. Presently, it is capable of returning
-data for localities throughout the USA by retrieving and formatting decoded
-METARs (Meteorological Aerodrome Reports) from NOAA (the USA National Oceanic
-and Atmospheric Administration) and forecasts from NWS (the USA National
-Weather Service). The tool is written to function in the same spirit as
-other command-line informational utilities like cal(1), calendar(1) and
-dict(1). It can retrieve arbitrary weather data via specific command-line
-switches (station ID, city, state), or aliases can be configured system wide
-and on a per-user basis. It can be freely used and redistributed under the
-terms of a BSD-like License.
+This command-line utility is intended to provide quick access to
+current weather conditions and forecasts. Presently, it is capable
+of returning data for localities throughout the USA by retrieving
+and formatting decoded METARs (Meteorological Aerodrome Reports)
+from NOAA (the USA National Oceanic and Atmospheric Administration)
+and forecasts from NWS (the USA National Weather Service). The tool
+is written to function in the same spirit as other command-line
+informational utilities like cal(1), calendar(1) and dict(1). It can
+retrieve arbitrary weather data via specific command-line switches
+(station ID, city, state), or aliases can be configured system wide
+and on a per-user basis. It can be freely used and redistributed
+under the terms of a BSD-like License.
*SPECIAL NOTE*
-This will copy the existing "/usr/bin/weather" script on the system (which
-is part of the "expect" package in Slackware) to "/usr/bin/weather.expect"
-while installing the one in this package as "/usr/bin/weather.weather" and
-creating a symlink to it from /usr/bin/weather. If you remove this package
-later for whatever reason, then you will need to either reinstall Slackware's
-"expect" package, fix the symlink, or remove the symlink and rename the
+
+This will copy the existing "/usr/bin/weather" script on the
+system (which is part of the "expect" package in Slackware) to
+"/usr/bin/weather.expect" while installing the one in this package
+as "/usr/bin/weather.weather" and creating a symlink to it from
+/usr/bin/weather. If you remove this package later for whatever
+reason, then you will need to either reinstall Slackware's "expect"
+package, fix the symlink, or remove the symlink and rename the
"/usr/bin/weather.expect" file back to "/usr/bin/weather"
diff --git a/misc/weather/doinst.sh b/misc/weather/doinst.sh
index 04a38d4744..daa63450b0 100644
--- a/misc/weather/doinst.sh
+++ b/misc/weather/doinst.sh
@@ -19,15 +19,6 @@ elif [ ! -e usr/bin/weather.expect -a -e usr/bin/weather ]; then
# the existing /usr/bin/weather, which is assumed to come from the
# stock expect package
cp -a usr/bin/weather usr/bin/weather.expect
-fi
-
-config etc/weatherrc.new
-
-if [ -x /usr/bin/update-desktop-database ]; then
- /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
-fi
-
-if [ -x /usr/bin/update-mime-database ]; then
- /usr/bin/update-mime-database usr/share/mime >/dev/null 2>&1
fi
+config etc/weatherrc.new
diff --git a/misc/weather/weather.SlackBuild b/misc/weather/weather.SlackBuild
index 16807b9dea..0c4d2d8347 100644
--- a/misc/weather/weather.SlackBuild
+++ b/misc/weather/weather.SlackBuild
@@ -20,7 +20,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
diff --git a/misc/wl-clipboard/README b/misc/wl-clipboard/README
new file mode 100644
index 0000000000..cada436a91
--- /dev/null
+++ b/misc/wl-clipboard/README
@@ -0,0 +1,3 @@
+wl-clipboard implements two command-line Wayland clipboard utilities,
+wl-copy and wl-paste, that let you easily copy data between the
+clipboard and Unix pipes, sockets, files and so on.
diff --git a/misc/scim-chewing/slack-desc b/misc/wl-clipboard/slack-desc
index 8795e8e671..862f1050cd 100644
--- a/misc/scim-chewing/slack-desc
+++ b/misc/wl-clipboard/slack-desc
@@ -6,14 +6,14 @@
# customary to leave one space after the ':' except on otherwise blank lines.
|-----handy-ruler------------------------------------------------------|
-scim-chewing: scim-chewing (New Chewing IMEngine for SCIM)
-scim-chewing:
-scim-chewing: New Chewing Input Method is an Traditional Chinese intelligent
-scim-chewing: phonetic input method.
-scim-chewing: It requires libchewing installed first.
-scim-chewing:
-scim-chewing:
-scim-chewing:
-scim-chewing: Home Page: http://chewing.csie.net/
-scim-chewing:
-scim-chewing:
+wl-clipboard: wl-clipboard (Wayland clipboard utilities)
+wl-clipboard:
+wl-clipboard: wl-clipboard implements two command-line Wayland clipboard
+wl-clipboard: utilities, wl-copy and wl-paste, that let you easily copy data
+wl-clipboard: between the clipboard and Unix pipes, sockets, files and so on.
+wl-clipboard:
+wl-clipboard:
+wl-clipboard:
+wl-clipboard:
+wl-clipboard: https://github.com/bugaevc/wl-clipboard
+wl-clipboard:
diff --git a/misc/igal2/igal2.SlackBuild b/misc/wl-clipboard/wl-clipboard.SlackBuild
index c72a85234d..0417d09cd8 100644
--- a/misc/igal2/igal2.SlackBuild
+++ b/misc/wl-clipboard/wl-clipboard.SlackBuild
@@ -1,8 +1,8 @@
#!/bin/bash
-# Slackware build script for igal2
+# Slackware build script for wl-clipboard
-# Copyright 2012-2021 Petar Petrov slackalaxy@gmail.com
+# Copyright 2022 Bob Funk Winnipeg, Canada
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -24,19 +24,20 @@
cd $(dirname $0) ; CWD=$(pwd)
-PRGNAM=igal2
-VERSION=${VERSION:-2.3}
+PRGNAM=wl-clipboard
+VERSION=${VERSION:-2.1.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-SRCNAM=igal
-
-ARCH=noarch
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -46,13 +47,27 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
set -e
rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
-rm -rf $SRCNAM-$VERSION
-tar xvf $CWD/$SRCNAM-$VERSION.tar.gz
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.?z
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
@@ -61,24 +76,24 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# We'll put these in the doc directory later
-sed -i "s:/usr/local:/usr:g" Makefile
-sed -i "s:(DATADIR)/man/man1:(PREFIX)/man/man1:g" Makefile
-sed -i "s:(PREFIX)/lib/igal:(PREFIX)/share/$PRGNAM:" Makefile
-sed -i "s:README::" Makefile
-sed -i "s:ChangeLog::" Makefile
-sed -i "s:COPYING::" Makefile
-
-# Path fix
-sed -i "s:/usr/local:/usr:g" igal2
-sed -i "s:/usr/local:/usr:g" utilities/*
-
-make install DESTDIR=$PKG
-
-cp -a utilities $PKG/usr/share/$PRGNAM
-
-# This is in /usr/share/igal2/utilities
-rm $PKG/usr/bin/$PRGNAM.sh
+mkdir build
+cd build
+ CFLAGS="$SLKCFLAGS" \
+ CXXFLAGS="$SLKCFLAGS" \
+ meson .. \
+ --buildtype=release \
+ --infodir=/usr/info \
+ --libdir=/usr/lib${LIBDIRSUFFIX} \
+ --localstatedir=/var \
+ --mandir=/usr/man \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ -Dstrip=true
+ "${NINJA:=ninja}"
+ DESTDIR=$PKG $NINJA install
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
@@ -88,7 +103,7 @@ for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; r
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a \
- ChangeLog COPYING README \
+ COPYING README.md \
$PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/misc/wl-clipboard/wl-clipboard.info b/misc/wl-clipboard/wl-clipboard.info
new file mode 100644
index 0000000000..fe8b02e624
--- /dev/null
+++ b/misc/wl-clipboard/wl-clipboard.info
@@ -0,0 +1,10 @@
+PRGNAM="wl-clipboard"
+VERSION="2.1.0"
+HOMEPAGE="https://github.com/bugaevc/wl-clipboard"
+DOWNLOAD="https://github.com/bugaevc/wl-clipboard/archive/v2.1.0/wl-clipboard-2.1.0.tar.gz"
+MD5SUM="e39e266bca009d00a9ab99c29eb41ebc"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="Bob Funk"
+EMAIL="bobfunk11@gmail.com"
diff --git a/misc/wmbday/wmbday.SlackBuild b/misc/wmbday/wmbday.SlackBuild
index 5ed0c8dc2a..10c82dcb13 100644
--- a/misc/wmbday/wmbday.SlackBuild
+++ b/misc/wmbday/wmbday.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/wmbday/wmbday.info b/misc/wmbday/wmbday.info
index 5b0348f51d..55abe94f94 100644
--- a/misc/wmbday/wmbday.info
+++ b/misc/wmbday/wmbday.info
@@ -1,7 +1,7 @@
PRGNAM="wmbday"
VERSION="0.3.1"
-HOMEPAGE="http://freecode.com/projects/wmbday"
-DOWNLOAD="http://ftp.nsysu.edu.tw/FreeBSD/ports/local-distfiles/uqs/wmbday-0.3.1.tar.gz"
+HOMEPAGE="http://freshmeat.sourceforge.net/projects/wmbday"
+DOWNLOAD="https://slackware.uk/sbosrcarch/by-md5/7/b/7ba1394ea2eb65cdf08dea52349d27f8/wmbday-0.3.1.tar.gz"
MD5SUM="7ba1394ea2eb65cdf08dea52349d27f8"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/xapian-omega/slack-desc b/misc/xapian-omega/slack-desc
index cb7e513a92..2b24abcdc7 100644
--- a/misc/xapian-omega/slack-desc
+++ b/misc/xapian-omega/slack-desc
@@ -15,5 +15,5 @@ xapian-omega: The default configuration file is /etc/xapian-omega.conf. This dif
xapian-omega: from the upstream Xapian Omega default of /etc/omega.conf to avoid
xapian-omega: clashing with other applications that use /etc/omega.conf.
xapian-omega:
-xapian-omega: Homepage: http://www.xapian.org/
+xapian-omega: Homepage: https://xapian.org/
xapian-omega:
diff --git a/misc/xapian-omega/xapian-omega.SlackBuild b/misc/xapian-omega/xapian-omega.SlackBuild
index 11025dbd3e..ce0a22c646 100644
--- a/misc/xapian-omega/xapian-omega.SlackBuild
+++ b/misc/xapian-omega/xapian-omega.SlackBuild
@@ -28,7 +28,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xapian-omega
-VERSION=${VERSION:-1.2.12}
+VERSION=${VERSION:-1.4.18}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -37,7 +37,7 @@ HTTPD_DIR=${HTTPD_DIR:-/srv/httpd}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -55,8 +55,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -75,7 +75,7 @@ rm -rf $PKG
mkdir -p $TMP $PKG $OUTPUT
cd $TMP
rm -rf $PRGNAM-$VERSION
-tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
cd $PRGNAM-$VERSION
chown -R root:root .
find -L . \
diff --git a/misc/xapian-omega/xapian-omega.info b/misc/xapian-omega/xapian-omega.info
index d5f9b61c4a..1b0b26b435 100644
--- a/misc/xapian-omega/xapian-omega.info
+++ b/misc/xapian-omega/xapian-omega.info
@@ -1,8 +1,8 @@
PRGNAM="xapian-omega"
-VERSION="1.2.12"
-HOMEPAGE="http://www.xapian.org/"
-DOWNLOAD="http://oligarchy.co.uk/xapian/1.2.12/xapian-omega-1.2.12.tar.gz"
-MD5SUM="7eed3c1e9e6acb703d6587ed9a038265"
+VERSION="1.4.18"
+HOMEPAGE="https://xapian.org/"
+DOWNLOAD="https://oligarchy.co.uk/xapian/1.4.18/xapian-omega-1.4.18.tar.xz"
+MD5SUM="a17d54d17eb5b40482901821f0f3d785"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/xbanish/README b/misc/xbanish/README
index bb5e957055..ddec3e8b6c 100644
--- a/misc/xbanish/README
+++ b/misc/xbanish/README
@@ -7,3 +7,5 @@ the X11 session.
One can easily start this automatically by putting "/usr/bin/xbanish &"
in ~/.xinitrc or some other WM/DE-specific startup file.
+
+See also: accessibility/unclutter and accessibility/unclutter-xfixes.
diff --git a/misc/xbanish/xbanish.SlackBuild b/misc/xbanish/xbanish.SlackBuild
index 10dbdd3b1f..49a9bb1ebd 100644
--- a/misc/xbanish/xbanish.SlackBuild
+++ b/misc/xbanish/xbanish.SlackBuild
@@ -28,6 +28,7 @@
# Build script for xbanish
+# 20220610 bkw: update for v1.8
# 20200720 bkw: update for v1.7
# 20200129 bkw:
# - take over maintenance
@@ -38,7 +39,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xbanish
-VERSION=${VERSION:-1.7}
+VERSION=${VERSION:-1.8}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -51,9 +52,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
diff --git a/misc/xbanish/xbanish.info b/misc/xbanish/xbanish.info
index 2a4b8bdfdd..6183327f9d 100644
--- a/misc/xbanish/xbanish.info
+++ b/misc/xbanish/xbanish.info
@@ -1,10 +1,10 @@
PRGNAM="xbanish"
-VERSION="1.7"
+VERSION="1.8"
HOMEPAGE="https://github.com/jcs/xbanish"
-DOWNLOAD="https://github.com/jcs/xbanish/archive/v1.7/xbanish-1.7.tar.gz"
-MD5SUM="08c0702576d6b2434f62ba06e1a3a32d"
+DOWNLOAD="https://github.com/jcs/xbanish/archive/v1.8/xbanish-1.8.tar.gz"
+MD5SUM="d4279515b2fbd898d37b0d869a4f7973"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
MAINTAINER="B. Watson"
-EMAIL="yalhcru@gmail.com"
+EMAIL="urchlay@slackware.uk"
diff --git a/misc/xca/xca.SlackBuild b/misc/xca/xca.SlackBuild
index 414875b193..1775ecd946 100644
--- a/misc/xca/xca.SlackBuild
+++ b/misc/xca/xca.SlackBuild
@@ -25,7 +25,7 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xca
-VERSION=${VERSION:-2.3.0}
+VERSION=${VERSION:-2.4.0}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
diff --git a/misc/xca/xca.info b/misc/xca/xca.info
index f72a4d1e53..afcb26075a 100644
--- a/misc/xca/xca.info
+++ b/misc/xca/xca.info
@@ -1,8 +1,8 @@
PRGNAM="xca"
-VERSION="2.3.0"
+VERSION="2.4.0"
HOMEPAGE="https://hohnstaedt.de/xca"
-DOWNLOAD="https://github.com/chris2511/xca/releases/download/RELEASE.2.3.0/xca-2.3.0.tar.gz"
-MD5SUM="9c57ca1f231c0623e81e20c6f7b5f348"
+DOWNLOAD="https://github.com/chris2511/xca/releases/download/RELEASE.2.4.0/xca-2.4.0.tar.gz"
+MD5SUM="c17d65a86134a69001d14c34729f46b5"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/xcape/xcape.SlackBuild b/misc/xcape/xcape.SlackBuild
index 02b4c9d1c1..0ca4987f0f 100644
--- a/misc/xcape/xcape.SlackBuild
+++ b/misc/xcape/xcape.SlackBuild
@@ -7,14 +7,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xcape
-VERSION=${VERSION:-1.1}
+VERSION=${VERSION:-1.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -32,8 +32,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
ARCHQUADLET=""
elif [ "$ARCH" = "i686" ]; then
@@ -68,7 +68,7 @@ find -L . \
# Use "-j1" to avoid some warnings
make -j1 LIBDIR=/usr/lib${LIBDIRSUFFIX}
-make install LIBDIR=/usr/lib${LIBDIRSUFFIX} DESTDIR=$PKG MANDIR=/man
+make install LIBDIR=/usr/lib${LIBDIRSUFFIX} DESTDIR=$PKG MANDIR=/man/man1
find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
| cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
diff --git a/misc/xcape/xcape.info b/misc/xcape/xcape.info
index da6615f666..acf57aa39b 100644
--- a/misc/xcape/xcape.info
+++ b/misc/xcape/xcape.info
@@ -1,8 +1,8 @@
PRGNAM="xcape"
-VERSION="1.1"
+VERSION="1.2"
HOMEPAGE="https://github.com/alols/xcape"
-DOWNLOAD="https://github.com/alols/xcape/archive/v1.1.tar.gz"
-MD5SUM="d2a5ffcdc4e8fe4d44955a17f109a9d1"
+DOWNLOAD="https://github.com/alols/xcape/archive/v1.2/xcape-1.2.tar.gz"
+MD5SUM="f3716ba4efb97a46a823a562be4a4be6"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
diff --git a/misc/xcb-imdkit/README b/misc/xcb-imdkit/README
new file mode 100644
index 0000000000..a9aaa69367
--- /dev/null
+++ b/misc/xcb-imdkit/README
@@ -0,0 +1,8 @@
+xcb-imdkit is an implementation of the xim protocol in xcb. Compared
+with the implementation of IMDkit with Xlib, and xim inside Xlib, it
+has a smaller memory footprint, better performance, and is safer on
+malformed clients. And not to say it's all asynchronous and it works
+with xcb.
+
+To build this project, you need: libxcb, xcb-util, xcb-util-keysym,
+which are all included in a full Slackware installation.
diff --git a/misc/xcb-imdkit/slack-desc b/misc/xcb-imdkit/slack-desc
new file mode 100644
index 0000000000..73fec52ff7
--- /dev/null
+++ b/misc/xcb-imdkit/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.
+# Line up the first '|' above the ':' following the base package name, and
+# the '|' on the right side marks the last column you can put a character in.
+# You must make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':' except on otherwise blank lines.
+
+ |-----handy-ruler------------------------------------------------------|
+xcb-imdkit: xcb-imdkit (implementation of the xim protocol in xcb)
+xcb-imdkit:
+xcb-imdkit: xcb-imdkit is an implementation of the xim protocol in xcb. Compared
+xcb-imdkit: with the implementation of IMDkit with Xlib, and xim inside Xlib, it
+xcb-imdkit: has a smaller memory footprint, better performance, and is safer on
+xcb-imdkit: malformed clients. And not to say it's all asynchronous and it works
+xcb-imdkit: with xcb.
+xcb-imdkit:
+xcb-imdkit: Homepage: https://github.com/fcitx/xcb-imdkit
+xcb-imdkit:
+xcb-imdkit:
diff --git a/misc/xcb-imdkit/xcb-imdkit.SlackBuild b/misc/xcb-imdkit/xcb-imdkit.SlackBuild
new file mode 100644
index 0000000000..c5365ebbef
--- /dev/null
+++ b/misc/xcb-imdkit/xcb-imdkit.SlackBuild
@@ -0,0 +1,103 @@
+#!/bin/bash
+
+# Copyright 2022 Wen-Wei Kao (ltlnx), Taichung, Taiwan
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=xcb-imdkit
+VERSION=${VERSION:-1.0.7}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+if [ -z "$ARCH" ]; then
+ case "$( uname -m )" in
+ i?86) ARCH=i586 ;;
+ arm*) ARCH=arm ;;
+ *) ARCH=$( uname -m ) ;;
+ esac
+fi
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+ LIBDIRSUFFIX=""
+elif [ "$ARCH" = "x86_64" ]; then
+ SLKCFLAGS="-O2 -fPIC"
+ LIBDIRSUFFIX="64"
+else
+ SLKCFLAGS="-O2"
+ LIBDIRSUFFIX=""
+fi
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.xz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find -L . \
+ \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \
+ -o -perm 511 \) -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
+ -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+
+mkdir -p build
+cd build
+ cmake \
+ -DCMAKE_CXX_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_C_FLAGS="${SLKCFLAGS}" \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR=lib${LIBDIRSUFFIX} ..
+ make
+ make install/strip DESTDIR=$PKG
+cd ..
+
+rm -f $PKG/{,usr/}lib${LIBDIRSUFFIX}/*.la
+
+find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | grep ELF \
+ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true
+
+find $PKG -name perllocal.pod -o -name ".packlist" -o -name "*.bs" | xargs rm -f || true
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a LICENSES/* README* $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/xcb-imdkit/xcb-imdkit.info b/misc/xcb-imdkit/xcb-imdkit.info
new file mode 100644
index 0000000000..a7e9a757cb
--- /dev/null
+++ b/misc/xcb-imdkit/xcb-imdkit.info
@@ -0,0 +1,10 @@
+PRGNAM="xcb-imdkit"
+VERSION="1.0.7"
+HOMEPAGE="https://github.com/fcitx/xcb-imdkit"
+DOWNLOAD="https://download.fcitx-im.org/fcitx5/xcb-imdkit/xcb-imdkit-1.0.7.tar.xz"
+MD5SUM="e6b16dffa6fafd0e6980a122c9821167"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES=""
+MAINTAINER="ltlnx"
+EMAIL="ltlnx@disroot.org"
diff --git a/misc/xdelta/README b/misc/xdelta/README
index 6624fddcd9..c7ae24e886 100644
--- a/misc/xdelta/README
+++ b/misc/xdelta/README
@@ -1,9 +1,10 @@
xdelta - Binary delta generator
-Xdelta is a program designed to compute changes between files. These changes
-(deltas) are similar to the output of the "diff" program in that they may be
-used to store and transmit only the changes between files. However, unlike
-diff(1), the output of xdelta is not expressed in a human-readable format.
+Xdelta is a program designed to compute changes between files. These
+changes (deltas) are similar to the output of the "diff" program in
+that they may be used to store and transmit only the changes between
+files. However, unlike diff(1), the output of xdelta is not expressed
+in a human-readable format.
-Xdelta uses a fast, linear algorithm and performs well on both binary and
-text files.
+Xdelta uses a fast, linear algorithm and performs well on both binary
+and text files.
diff --git a/misc/xdelta/xdelta.SlackBuild b/misc/xdelta/xdelta.SlackBuild
index 0c52dca411..9395f77a50 100644
--- a/misc/xdelta/xdelta.SlackBuild
+++ b/misc/xdelta/xdelta.SlackBuild
@@ -8,7 +8,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=xdelta
VERSION=${VERSION:-1.1.4}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -89,6 +89,8 @@ cp -a AUTHORS COPYING INSTALL NEWS README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
chmod 0644 $PKG/usr/doc/$PRGNAM-$VERSION/*
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/xdelta/xdelta.info b/misc/xdelta/xdelta.info
index 360e2dbdea..d3e9c8069d 100644
--- a/misc/xdelta/xdelta.info
+++ b/misc/xdelta/xdelta.info
@@ -1,7 +1,7 @@
PRGNAM="xdelta"
VERSION="1.1.4"
HOMEPAGE="http://xdelta.org/"
-DOWNLOAD="http://ftp.osuosl.org/pub/gentoo/distfiles/xdelta-1.1.4.tar.gz"
+DOWNLOAD="http://ftp.osuosl.org/pub/gentoo/distfiles/fe/xdelta-1.1.4.tar.gz"
MD5SUM="1b896c01ebf0e353b7e3c3071b05f496"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/xvnkb/xvnkb.SlackBuild b/misc/xvnkb/xvnkb.SlackBuild
index aa9e358baf..cad3c23f9b 100644
--- a/misc/xvnkb/xvnkb.SlackBuild
+++ b/misc/xvnkb/xvnkb.SlackBuild
@@ -32,7 +32,7 @@ PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/xwinwrap/README b/misc/xwinwrap/README
index 9b89481bda..46f7844dba 100644
--- a/misc/xwinwrap/README
+++ b/misc/xwinwrap/README
@@ -1,2 +1,2 @@
-XWinWrap is an app that allows users of xgl to replace a desktop background
-with a movie or screensaver.
+XWinWrap is an app that allows users of xgl to replace a desktop
+background with a movie or screensaver.
diff --git a/misc/xwinwrap/xwinwrap.SlackBuild b/misc/xwinwrap/xwinwrap.SlackBuild
index deafe8f9a5..fb35d68560 100644
--- a/misc/xwinwrap/xwinwrap.SlackBuild
+++ b/misc/xwinwrap/xwinwrap.SlackBuild
@@ -30,28 +30,25 @@ BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
-if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
- echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
- exit 0
-fi
-
TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
fi
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
diff --git a/misc/xwinwrap/xwinwrap.info b/misc/xwinwrap/xwinwrap.info
index bf9aac1a34..10dc630e9e 100644
--- a/misc/xwinwrap/xwinwrap.info
+++ b/misc/xwinwrap/xwinwrap.info
@@ -1,7 +1,7 @@
PRGNAM="xwinwrap"
VERSION="0.3"
HOMEPAGE="https://launchpad.net/xwinwrap"
-DOWNLOAD="http://ftp.nsysu.edu.tw/FreeBSD/ports/local-distfiles/vg/xwinwrap-0.3.tar.bz2"
+DOWNLOAD="http://mirror.its.dal.ca/freebsd/distfiles/xwinwrap-0.3.tar.bz2"
MD5SUM="028e54d47747d50b6e7eee4167fbb06a"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
diff --git a/misc/yapet/doinst.sh b/misc/yapet/doinst.sh
new file mode 100644
index 0000000000..5fb28930db
--- /dev/null
+++ b/misc/yapet/doinst.sh
@@ -0,0 +1,3 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
diff --git a/misc/yapet/gcc6.patch b/misc/yapet/gcc6.patch
deleted file mode 100644
index a57e0c93c1..0000000000
--- a/misc/yapet/gcc6.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- yapet-1.0/yapet/cfg.h 2014-02-23 10:18:41.000000000 -0700
-+++ yapet-1.0/yapet/cfg.h 2016-04-14 07:06:49.665672169 -0700
-@@ -163,7 +163,7 @@
- locked = false;
- }
-
-- void is_locked() const {
-+ bool is_locked() const {
- return locked;
- }
-
diff --git a/misc/yapet/yapet.SlackBuild b/misc/yapet/yapet.SlackBuild
index db87d312d3..fca88e49d0 100644
--- a/misc/yapet/yapet.SlackBuild
+++ b/misc/yapet/yapet.SlackBuild
@@ -25,14 +25,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=yapet
-VERSION=${VERSION:-1.0}
+VERSION=${VERSION:-2.5}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -50,8 +50,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -79,9 +79,6 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
-# From upstream
-patch -p1 < $CWD/gcc6.patch
-
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -104,6 +101,7 @@ cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/yapet/yapet.info b/misc/yapet/yapet.info
index fd177d8e29..9fcb99e482 100644
--- a/misc/yapet/yapet.info
+++ b/misc/yapet/yapet.info
@@ -1,10 +1,10 @@
PRGNAM="yapet"
-VERSION="1.0"
-HOMEPAGE="https://www.guengel.ch/myapps/yapet/"
-DOWNLOAD="https://www.guengel.ch/myapps/yapet/downloads/yapet-1.0.tar.bz2"
-MD5SUM="a3cf3c274abefdbee15acd74dbdbb1ee"
+VERSION="2.5"
+HOMEPAGE="https://yapet.guengel.ch/"
+DOWNLOAD="https://yapet.guengel.ch/downloads/yapet-2.5.tar.bz2"
+MD5SUM="4016dbb2a1826691ce76d68b6116efab"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
-REQUIRES=""
+REQUIRES="cppunit"
MAINTAINER="Eric Mulvaney"
EMAIL="eric.mulvaney@gmail.com"
diff --git a/misc/yara/README b/misc/yara/README
index 22fe5340a1..2056ac136e 100644
--- a/misc/yara/README
+++ b/misc/yara/README
@@ -1,11 +1,11 @@
YARA - a malware identification and classification tool
-YARA is a tool aimed at helping malware researchers to identify and classify
-malware samples. With YARA you can create descriptions of malware families
-based on textual or binary patterns contained on samples of those families.
-Each description consists of a set of strings and a Boolean expression which
-determines its logic.
+YARA is a tool aimed at helping malware researchers to identify and
+classify malware samples. With YARA you can create descriptions of
+malware families based on textual or binary patterns contained on
+samples of those families. Each description consists of a set of
+strings and a Boolean expression which determines its logic.
-YARA is multi-platform, running on Windows, Linux and Mac OS X, and can be used
-through its command-line interface or from your own Python scripts with the
-yara-python extension.
+YARA is multi-platform, running on Windows, Linux and Mac OS X, and
+can be used through its command-line interface or from your own Python
+scripts with the yara-python extension.
diff --git a/misc/yara/slack-desc b/misc/yara/slack-desc
index 0cf53200c9..641b82c9d8 100644
--- a/misc/yara/slack-desc
+++ b/misc/yara/slack-desc
@@ -16,4 +16,4 @@ yara: strings and a Boolean expression which determines its logic.
yara:
yara: YARA is multi-platform, running on Windows, Linux and Mac OS X.
yara:
-yara: http://code.google.com/p/yara-project/
+yara: https://virustotal.github.io/yara
diff --git a/misc/yara/yara.SlackBuild b/misc/yara/yara.SlackBuild
index a9c3348439..2e7be8cf1d 100644
--- a/misc/yara/yara.SlackBuild
+++ b/misc/yara/yara.SlackBuild
@@ -21,11 +21,13 @@
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+# Updated to v4.3.2 July 2023 Barry J. Grundy
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=yara
-VERSION=${VERSION:-3.5.0}
+VERSION=${VERSION:-4.3.2}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -50,8 +52,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -101,9 +103,11 @@ find $PKG/usr/man -type f -exec gzip -9 {} \;
for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a sample.file README.md AUTHORS CONTRIBUTORS COPYING $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a sample.file sample.rules README.md AUTHORS $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/yara/yara.info b/misc/yara/yara.info
index 3e853af859..69f773d2f7 100644
--- a/misc/yara/yara.info
+++ b/misc/yara/yara.info
@@ -1,10 +1,10 @@
PRGNAM="yara"
-VERSION="3.5.0"
-HOMEPAGE="https://github.com/VirusTotal/yara/releases"
-DOWNLOAD="https://github.com/VirusTotal/yara/archive/v3.5.0/yara-3.5.0.tar.gz"
-MD5SUM="7a3248719771ece845f2ef94b09732f2"
+VERSION="4.3.2"
+HOMEPAGE="https://virustotal.github.io/yara"
+DOWNLOAD="https://github.com/VirusTotal/yara/archive/v4.3.2/yara-4.3.2.tar.gz"
+MD5SUM="cace2a274542e9c611c90b92b406a188"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES=""
-MAINTAINER="Vegard Haugland"
-EMAIL="vegard@haugland.at"
+MAINTAINER="Barry J. Grundy"
+EMAIL="bgrundy AT linuxleo.com"
diff --git a/misc/ydpdict/ydpdict.SlackBuild b/misc/ydpdict/ydpdict.SlackBuild
index d4f7832e44..287c7a7d30 100644
--- a/misc/ydpdict/ydpdict.SlackBuild
+++ b/misc/ydpdict/ydpdict.SlackBuild
@@ -8,14 +8,14 @@
cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ydpdict
-VERSION=${VERSION:-1.0.2}
+VERSION=${VERSION:-1.0.3}
BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
- i?86) ARCH=i486 ;;
+ i?86) ARCH=i586 ;;
arm*) ARCH=arm ;;
*) ARCH=$( uname -m ) ;;
esac
@@ -33,8 +33,8 @@ TMP=${TMP:-/tmp/SBo}
PKG=$TMP/package-$PRGNAM
OUTPUT=${OUTPUT:-/tmp}
-if [ "$ARCH" = "i486" ]; then
- SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+if [ "$ARCH" = "i586" ]; then
+ SLKCFLAGS="-O2 -march=i586 -mtune=i686"
LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
@@ -63,6 +63,8 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+./autogen.sh
+
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
./configure \
@@ -75,8 +77,6 @@ CXXFLAGS="$SLKCFLAGS" \
--disable-static \
--build=$ARCH-slackware-linux
-patch -p0 < $CWD/ydpdict.patch
-
make
make install DESTDIR=$PKG
@@ -91,7 +91,7 @@ for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; r
mv $PKG/etc/ydpdict.conf $PKG/etc/ydpdict.conf.new
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
-cp -a COPYING README $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a COPYING README.md $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
diff --git a/misc/ydpdict/ydpdict.info b/misc/ydpdict/ydpdict.info
index 38d6266e12..902ac6ac2c 100644
--- a/misc/ydpdict/ydpdict.info
+++ b/misc/ydpdict/ydpdict.info
@@ -1,8 +1,8 @@
PRGNAM="ydpdict"
-VERSION="1.0.2"
-HOMEPAGE="http://toxygen.net/ydpdict/"
-DOWNLOAD="http://toxygen.net/ydpdict/ydpdict-1.0.2.tar.gz"
-MD5SUM="339be2191e94f0af5abcd037c3ef368a"
+VERSION="1.0.3"
+HOMEPAGE="https://github.com/wojtekka/ydpdict"
+DOWNLOAD="https://github.com/wojtekka/ydpdict/archive/1.0.3/ydpdict-1.0.3.tar.gz"
+MD5SUM="8af97ad2598a5e339c778fa949349b12"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libydpdict"
diff --git a/misc/ykpers/README b/misc/ykpers/README
index 606e3c3d76..6c2f96c4ad 100644
--- a/misc/ykpers/README
+++ b/misc/ykpers/README
@@ -1,12 +1,13 @@
-ykpers (yubikey-personalization) is a library and command-line tool to perform
-personalization of Yubico YubiKeys and is a reference implementation for
-YubiKey configuration.
+ykpers (yubikey-personalization) is a library and command-line tool
+to perform personalization of Yubico YubiKeys and is a reference
+implementation for YubiKey configuration.
-For challenge-response mode to work as a normal user, you will have to create
-a 'yubikey' group and add your user to it. The recommended GID is 288. You can
-create this by doing the following:
-groupadd -g 288 yubikey
+For challenge-response mode to work as a normal user, you will have
+to create a 'yubikey' group and add your user to it. The recommended
+GID is 288. You can create this by doing the following: groupadd -g
+288 yubikey
+
+You can use the plugdev group (or another group) if you like, by passing
+a group name to the script:
-You can use the plugdev group (or another group) if you like, by passing a
-group name to the script:
GROUPNAME=plugdev ./ykpers.SlackBuild
diff --git a/misc/ykpers/ykpers.SlackBuild b/misc/ykpers/ykpers.SlackBuild
index d885969555..ceb96b89f9 100644
--- a/misc/ykpers/ykpers.SlackBuild
+++ b/misc/ykpers/ykpers.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ykpers
VERSION=${VERSION:-1.20.0}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -117,6 +117,8 @@ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a AUTHORS COPYING ChangeLog INSTALL NEWS README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
diff --git a/misc/yubioath-desktop/doinst.sh b/misc/yubioath-desktop/doinst.sh
new file mode 100644
index 0000000000..5fb28930db
--- /dev/null
+++ b/misc/yubioath-desktop/doinst.sh
@@ -0,0 +1,3 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications >/dev/null 2>&1
+fi
diff --git a/misc/yubioath-desktop/yubioath-desktop.SlackBuild b/misc/yubioath-desktop/yubioath-desktop.SlackBuild
index 6ca4593c42..2b0fd0e736 100644
--- a/misc/yubioath-desktop/yubioath-desktop.SlackBuild
+++ b/misc/yubioath-desktop/yubioath-desktop.SlackBuild
@@ -96,6 +96,7 @@ cp $CWD/$PRGNAM-$VERSION-linux.AppImage $PKG/usr/bin/$PRGNAM
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE
diff --git a/misc/zinnia/zinnia.SlackBuild b/misc/zinnia/zinnia.SlackBuild
index d8673c1171..28fd135e0b 100644
--- a/misc/zinnia/zinnia.SlackBuild
+++ b/misc/zinnia/zinnia.SlackBuild
@@ -27,7 +27,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=zinnia
VERSION=${VERSION:-0.06}
-BUILD=${BUILD:-1}
+BUILD=${BUILD:-2}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -102,6 +102,8 @@ mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a COPYING INSTALL README $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+rm -f $PKG/usr/lib*/*.la
+
mkdir -p $PKG/install
cat $CWD/slack-desc > $PKG/install/slack-desc